On 2025/05/22 19:31, Alex Bennée wrote:
Akihiko Odaki <akihiko.od...@daynix.com> writes:
On 2025/05/22 1:42, Alex Bennée wrote:
The user can run a subset of the tcg tests directly, e.g.:
make run-tcg-tests-hexagon-linux-user
but in this case we fail if there has not been a full build to
ensure
all the test-plugins are there. Fix the dependency to ensure we always
will build them before running tests.
Signed-off-by: Alex Bennée <alex.ben...@linaro.org>
---
tests/Makefile.include | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 23fb722d42..7f7f62cbf6 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -46,7 +46,7 @@ $(foreach TARGET,$(TCG_TESTS_TARGETS), \
$(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak))
.PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%)
-$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%:
$(BUILD_DIR)/tests/tcg/config-%.mak
+$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%:
$(BUILD_DIR)/tests/tcg/config-%.mak test-plugins
I don't think this is going to work.
test-plugins will invoke run-ninja, which is defined as follows:
run-ninja: config-host.mak
ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
+$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \
$(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
$(ninja-cmd-goals) should contain test-plugins, but it doesn't if I
understand it correctly.
It certainly does:
➜ rm -rf tests/tcg/plugins/
🕙11:31:03 alex@draig:qemu.git/builds/all on HEAD (61e51c3) (REBASING 5/26)
[$?]
➜ make test-plugins
/home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/meson introspect --targets --tests
--benchmarks | /home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/python3 -B
scripts/mtest2make.py > Makefile.mtest
[1/14] Compiling C object tests/tcg/plugins/libbb.so.p/bb.c.o
[2/14] Linking target tests/tcg/plugins/libbb.so
[3/14] Compiling C object tests/tcg/plugins/libempty.so.p/empty.c.o
[4/14] Linking target tests/tcg/plugins/libempty.so
[5/14] Compiling C object tests/tcg/plugins/libinline.so.p/inline.c.o
[6/14] Linking target tests/tcg/plugins/libinline.so
[7/14] Compiling C object tests/tcg/plugins/libinsn.so.p/insn.c.o
[8/14] Linking target tests/tcg/plugins/libinsn.so
[9/14] Compiling C object tests/tcg/plugins/libmem.so.p/mem.c.o
[10/14] Linking target tests/tcg/plugins/libmem.so
[11/14] Compiling C object tests/tcg/plugins/libreset.so.p/reset.c.o
[12/14] Linking target tests/tcg/plugins/libreset.so
[13/14] Compiling C object tests/tcg/plugins/libsyscall.so.p/syscall.c.o
[14/14] Linking target tests/tcg/plugins/libsyscall.so
ninja-cmd-goals is defined as follows:
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))
If you run "make test-plugins", $(ninja-cmd-goals) will contain
"test-plugins" because $(MAKECMDGOALS) will be "test-plugins". It won't
if you run "make run-tcg-tests-hexagon-linux-user".
Regards,
Akihiko Odaki