On 7/16/2026 2:32 AM, Alex Bennée wrote: > Pierrick Bouvier <[email protected]> writes: > >> On 7/15/2026 10:36 AM, Alex Bennée wrote: >>> Pierrick Bouvier <[email protected]> writes: >>> >>>> It's now built-in meson, which offers targets check-tcg and check-tcg-*. >>>> >>>> Tested-by: Alex Bennée <[email protected]> >>>> Signed-off-by: Pierrick Bouvier <[email protected]> >>>> --- >>>> tests/Makefile.include | 68 ++---------------------------------------- >>>> 1 file changed, 2 insertions(+), 66 deletions(-) >>>> >>>> diff --git a/tests/Makefile.include b/tests/Makefile.include >>>> index 494d0109f26..9f82552ab54 100644 >>>> --- a/tests/Makefile.include >>>> +++ b/tests/Makefile.include >>>> @@ -19,9 +19,7 @@ check-help: >>>> ifneq ($(filter $(all-check-targets), check-softfloat),) >>>> @echo " $(MAKE) check-softfloat Run FPU emulation tests" >>>> @echo " $(MAKE) check-tcg Run TCG tests" >>>> - @echo " $(MAKE) run-tcg-tests-TARGET Run TCG tests for a given >>>> target" >>>> - @echo >>>> - @echo "The variable TCG_TEST_FILTER will select the subset of matching >>>> tests." >>>> + @echo " $(MAKE) check-tcg-TARGET Run TCG tests for a given >>>> target" >>>> endif >>>> @echo >>>> @echo " $(MAKE) check-report.junit.xml Generates an aggregated >>>> XML test report" >>>> @@ -40,67 +38,6 @@ export SRC_PATH >>>> >>>> SPEED = quick >>>> >>>> - >>>> -# TCG_TESTS_WITH_COMPILERS represents the test targets we have cross >>>> compiler >>>> -# support for, CONFIGURED_TCG_TARGETS it what meson has finally >>>> -# configured having rejected stuff we can't build. >>>> -CONFIGURED_TCG_TARGETS=$(patsubst %-config-target.h, %, $(wildcard >>>> *-config-target.h)) >>>> - >>>> -# This is the intersection of what tests we can build and is configured >>>> -TCG_TESTS_TARGETS=$(filter $(CONFIGURED_TCG_TARGETS), >>>> $(TCG_TESTS_WITH_COMPILERS)) >>>> - >>>> -# Per guest TCG tests >>>> -BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, >>>> $(TCG_TESTS_TARGETS)) >>>> -CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, >>>> $(TCG_TESTS_TARGETS)) >>>> -DISTCLEAN_TCG_TARGET_RULES=$(patsubst %,distclean-tcg-tests-%, >>>> $(TCG_TESTS_TARGETS)) >>>> -RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TCG_TESTS_TARGETS)) >>>> - >>>> -$(foreach TARGET,$(TCG_TESTS_TARGETS), \ >>>> - $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: >>>> config-host.mak)) >>>> - >>>> -# $1 = the stem (e.g., arm-softmmu or x86_64-linux-user) >>>> -get-qemu-bin = $(if $(findstring softmmu,$1),qemu-system-$(subst >>>> -softmmu,,$1),qemu-$(subst -linux-user,,$1)) >>>> - >>>> -$(foreach TARGET,$(TCG_TESTS_TARGETS), \ >>>> - $(eval .ninja-goals.run-tcg-tests-$(TARGET) += $(call >>>> get-qemu-bin,$(TARGET)))) >>>> - >>>> -.PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%) >>>> -$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: >>>> $(BUILD_DIR)/tests/tcg/config-%.mak >>>> - $(call quiet-command, \ >>>> - $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS), \ >>>> - "BUILD","$* guest-tests") >>>> - >>>> -.PHONY: $(TCG_TESTS_TARGETS:%=run-tcg-tests-%) >>>> -$(TCG_TESTS_TARGETS:%=run-tcg-tests-%): run-tcg-tests-%: build-tcg-tests-% >>>> - $(call quiet-command, \ >>>> - $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS) SPEED=$(SPEED) >>>> TCG_TEST_FILTER=$(TCG_TEST_FILTER) run, \ >>>> - "RUN", "$* guest-tests") >>>> - >>>> -.PHONY: $(TCG_TESTS_TARGETS:%=clean-tcg-tests-%) >>>> -$(TCG_TESTS_TARGETS:%=clean-tcg-tests-%): clean-tcg-tests-%: >>>> - $(call quiet-command, \ >>>> - $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS) clean, \ >>>> - "CLEAN", "$* guest-tests") >>>> - >>>> -.PHONY: $(TCG_TESTS_TARGETS:%=distclean-tcg-tests-%) >>>> -$(TCG_TESTS_TARGETS:%=distclean-tcg-tests-%): distclean-tcg-tests-%: >>>> - $(call quiet-command, \ >>>> - $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS) distclean, \ >>>> - "CLEAN", "$* guest-tests") >>>> - >>>> -.PHONY: build-tcg >>>> -build-tcg: $(BUILD_TCG_TARGET_RULES) >>>> - >>>> -.PHONY: check-tcg >>>> -.ninja-goals.check-tcg = all test-plugins >>>> -check-tcg: $(RUN_TCG_TARGET_RULES) >>>> - >>>> -.PHONY: clean-tcg >>>> -clean-tcg: $(CLEAN_TCG_TARGET_RULES) >>> >>> We still need a clean-tcg or similar rule to force a rebuild of the >>> tests without killing the whole build dir. >>> >> >> It was needed before, since we only had partial dependencies. >> But now considering that all dependencies are correctly tracked, what's >> the use case? >> - If a test is mtime modified, it rebuilds the test. >> - If a dockerfile is mtime modified, associated tests are rebuilt. >> - If docker.py is modified, it will rebuild tests transitively. >> - If cflags are modified, test will be rebuilt also. >> - All input of a test (.h, .c, ...) are all tracked. >> - If user installs a cross compiler or remove podman/docker, next meson >> configuration will identify this and rebuild all associated tests. >> >> In case you find a missing dep, we just need to add it in meson. clean >> is not needed anymore. > > OK I was testing the changing of the cross compiler and I noticed its > not reported in the config summary if we have the fallback to > podman/docker. > > I suspect the logic here: > > # snarf the cross-compilation information for tests > summary_info = {} > have_cross = false > foreach target: target_dirs > tcg_mak = meson.current_build_dir() / 'tests/tcg' / target / > 'config-target.mak' > if fs.exists(tcg_mak) > config_cross_tcg = keyval.load(tcg_mak) > if 'CC' in config_cross_tcg > summary_info += {config_cross_tcg['TARGET_NAME']: > config_cross_tcg['CC']} > have_cross = true > endif > endif > endforeach > if have_cross > summary(summary_info, bool_yn: true, section: 'Cross compilers') > endif > > needs to be cleaned up. >
Thanks for reporting it, I didn't even notice this part of the code existed to be honest. Indeed, it needs to be updated, and it should be easy to present the same information from what we did during the test configuration. I'll add it in next version. >> >>>> - >>>> -.PHONY: distclean-tcg >>>> -distclean-tcg: $(DISTCLEAN_TCG_TARGET_RULES) >>>> - >>>> # Build up our target list from the filtered list of ninja targets >>>> TARGETS=$(patsubst libqemu-%.a, %, $(filter libqemu-%.a, >>>> $(ninja-targets))) >>>> >>>> @@ -128,7 +65,6 @@ check-build: run-ninja >>>> check-clean: >>>> rm -rf $(BUILD_DIR)/tests/functional >>>> >>>> -clean: check-clean clean-tcg >>>> -distclean: distclean-tcg >>>> +clean: check-clean > > I wonder if check-clean is redundant as well now if the functional test > dependencies are properly encoded. > It's not really used for dependencies issues (tests/functional has no meson built binaries), but just to clean tests/functional folder, which may contain logs, scratch files, and other things leftover from those tests. I would keep it for now as it doesn't hurt. >>>> >>>> endif >>> > Regards, Pierrick
