This series replaces TCG tests makefiles with meson, with the goal of having something more readable and maintainable in the long term. Also it closes the gap that tcg tests had with the rest of tests, by integrating them with meson directly.
It covers all existing tests for all architectures, including user/system/multiarch-user/multiarch-system. It implements all requirements listed on original thread [1]. [1] https://lore.kernel.org/qemu-devel/[email protected]/ We also have for free: - correct and complete dependencies for any test, including: scripts, c.inc, headers, reference files and binaries/plugins. - catch test declaration issues at configure time vs test time. - proper data types for variables instead of string expansion with make. Series first introduce the meson machinery needed in tests/tcg/meson.build, step by step. Then it adds support for all existing archs. Finally, we remove Makefiles and configure bits, and add documentation. Usage: ``` make check-tcg make check-tcg-aarch64-linux-user make check-tcg-aarch64-softmmu make tcg-tests ninja tcg-tests ninja clean ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose ``` v5 -- - remove Makefiles incrementally to ease review, as suggested by Philippe - default timeout 120 (matching Makefile default) v4 -- - rebase on top of master (Makefiles + Dockerfile changes) - full CI pass on GitLab - update documentation for tcg-tests - check host cross cc is working (handle fedora cross compiler without runtime or headers) - rename cc_docker_arch to cc_docker_host_arch - add test added since v3: aarch64/fprcvt - enable tricore system tests (was missing -kernel parameter) - add xtensaeb system tests - remove dependency from s390x/console.c to roms/SLOF submodule, which allows to compile those tests without requiring the submodule. - fix meson warnings (min version for test with external program in args + s/source_root/project_source_root/) - skip failing test gdb-prot-none on GitLab CI v3 -- - add all architectures - reduce number of plugins tests (only add one test for each plugin from multiarch pool) - add depends for executable - allow to depend on a custom target for generated headers (x86_64 mmx, avx) - add new tests added since last version for aarch64 (mte + gpc) - refactor series to keep all arch files at end - add docker host architecture selection v2 -- - s/mispell/misspell - moved comment about why we remove 'lib' prefix for plugins - if user declare a wrong entry in a dictionary, list possible keys - build tests by default (with 'all' target), as long as cross compiler is natively installed, to avoid triggering a container build. - reword some comments based on reviewers feedback - always declare all tests and avoid "per config" errors (no 'if' in arch files) - move compiler feature and gdb version checks directly in tests/tcg/meson.build - add support for cross containers - add top target 'tcg-tests' to rebuild all tests Pierrick Bouvier (98): tests/tcg/multiarch/system/memory.c: remove unused variable tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as input tests/tcg/multiarch/plugin: rename check-plugin-output to regex-compare meson: bump minimal version to 1.6.0 tests/tcg: introduce meson.build tests/tcg/meson.build: introduce exe_name tests/tcg/meson.build: introduce test_name tests/tcg/meson.build: introduce cflags tests/tcg/meson.build: introduce qemu_args tests/tcg/meson.build: introduce env_var tests/tcg/plugins: build list of test_plugins tests/tcg/meson.build: introduce plugin_test tests/tcg/meson.build: test gdb support and introduce gdb_arch tests/tcg/meson.build: introduce gdb_test tests/tcg/meson.build: introduce wrapper tests/tcg/meson.build: introduce expected_output tests/tcg/meson.build: add wrapper run_and_check_forbidden_output tests/tcg/meson.build: add wrapper run_with_input tests/tcg/meson.build: add wrapper record_replay tests/tcg/meson.build: add wrapper check_plugin_output tests/tcg/meson.build: add logic to skip tests tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version tests/tcg/meson.build: move gdb_arch support check tests/tcg/meson.build: let test infrastructure detect compiler tests/docker/docker.py: return error code if probe fails tests/docker/docker.py: remove "Image is up to date" info tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_host_arch tests/tcg/meson.build: check host cross cc is working tests/tcg/meson.build: introduce depends tests/tcg/meson.build: add top-level 'tcg-tests' target tests/tcg/Makefile: skip user/system tests if target Makefile is not present tests/tcg/multiarch/gdbstub/prot-none.py: deactivate on gitlab CI tests/tcg/multiarch: declare user tests tests/tcg/multiarch: declare system tests tests/tcg/meson.build: add generic plugin tests tests/tcg/arm/fcvt.c: use raw opcode for FPRCVT tests/tcg/aarch64: user tests tests/tcg/aarch64/system/gpc-test.c: remove unused variables tests/tcg/aarch64: system tests tests/tcg/aarch64_be: user tests tests/tcg/alpha: add float reference files tests/tcg/alpha: user tests tests/tcg/alpha: system tests tests/tcg/arm: user tests tests/tcg/arm: system tests tests/tcg/hexagon/overflow.c: add missing include tests/tcg/hexagon: user tests tests/tcg/multiarch/sha1.c: fix big endian implementation tests/tcg/hppa: add float reference files tests/tcg/hppa: user tests tests/tcg/i386: add missing float reference files tests/tcg/i386: user tests tests/tcg/i386: system tests tests/tcg/loongarch64: user tests tests/tcg/loongarch64: system tests tests/tcg/m68k: add float reference files tests/tcg/m68k: user tests scripts/probe-gdb-support.py: add mapping for mips architecture tests/tcg/mips: add float reference files test/tcg/mips: user tests tests/tcg/mips64: add float reference files tests/tcg/mips64: user tests tests/tcg/mips64el: add float reference files tests/tcg/mips64el: user tests tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain tests/tcg/or1k/test_addic.c: remove unused variables tests/tcg/or1k/test_muli.c: remove set but unused variable tests/tcg/or1k: add float reference files plugins/api.c: identify or1k pc register and mark it as read only tests/tcg/or1k: user tests tests/tcg/ppc64: add float reference files tests/tcg/ppc64: remove dependency on qemu/compiler.h tests/tcg/ppc64: user tests tests/tcg/ppc64le: add missing float reference file tests/tcg/ppc64le: user tests tests/tcg/riscv64: add float reference files tests/tcg/riscv64: user tests tests/tcg/riscv64: system tests tests/tcg/s390x/head64.S: declare _exit symbol after main tests/tcg/s390x: add float reference files tests/tcg/s390x: user tests tests/tcg/s390x/console.c: directly implement memcpy and memset tests/tcg/s390x: system tests tests/tcg/sh4: add float reference files tests/tcg/sh4: user tests tests/tcg/tricore: system tests tests/tcg/x86_64: add missing float reference file tests/tcg/x86_64: user tests tests/tcg/x86_64: system tests tests/tcg/xtensa/crt.S: align .text section tests/docker/dockerfiles/debian-xtensa-cross.docker: add test_kc705_be toolchain for xtensaeb tests/tcg/xtensa: system tests tests/tcg/xtensa: xtensaeb system tests tests: remove tcg tests machinery tests/tcg: remove remaining Makefiles configure: remove --cross-cc* options docs/devel/testing/: update documentation configure | 473 --------- docs/devel/build-system.rst | 4 +- docs/devel/testing/main.rst | 55 +- meson.build | 4 +- plugins/api.c | 2 + pythondeps.toml | 2 +- scripts/probe-gdb-support.py | 1 + .../packagefiles/anyhow-1-rs/meson.build | 2 +- .../arbitrary-int-1-rs/meson.build | 2 +- .../packagefiles/attrs-0.2-rs/meson.build | 2 +- .../packagefiles/bilge-0.2-rs/meson.build | 2 +- .../bilge-impl-0.2-rs/meson.build | 2 +- .../packagefiles/either-1-rs/meson.build | 2 +- .../packagefiles/foreign-0.3-rs/meson.build | 2 +- .../packagefiles/glib-sys-0.21-rs/meson.build | 2 +- .../itertools-0.11-rs/meson.build | 2 +- .../packagefiles/libc-0.2-rs/meson.build | 2 +- .../packagefiles/probe-0.5-rs/meson.build | 2 +- .../proc-macro-error-1-rs/meson.build | 2 +- .../proc-macro-error-attr-1-rs/meson.build | 2 +- .../packagefiles/proc-macro2-1-rs/meson.build | 2 +- .../packagefiles/quote-1-rs/meson.build | 2 +- subprojects/packagefiles/syn-2-rs/meson.build | 2 +- .../unicode-ident-1-rs/meson.build | 2 +- tests/Makefile.include | 68 +- tests/docker/docker.py | 4 +- .../dockerfiles/debian-all-test-cross.docker | 14 +- .../dockerfiles/debian-xtensa-cross.docker | 4 +- tests/lcitool/refresh | 14 +- tests/meson.build | 2 +- tests/tcg/Makefile.target | 281 ----- tests/tcg/aarch64/Makefile.softmmu-target | 147 --- tests/tcg/aarch64/Makefile.target | 210 ---- tests/tcg/aarch64/meson.build | 207 ++++ tests/tcg/aarch64/system/gpc-test.c | 5 - tests/tcg/aarch64/system/meson.build | 108 ++ tests/tcg/aarch64_be/Makefile.target | 17 - tests/tcg/aarch64_be/meson.build | 22 + tests/tcg/alpha/Makefile.softmmu-target | 34 - tests/tcg/alpha/Makefile.target | 18 - tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/alpha/float_convs.ref | 748 +++++++++++++ tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++ tests/tcg/alpha/meson.build | 55 + tests/tcg/alpha/system/meson.build | 46 + tests/tcg/arm/Makefile.softmmu-target | 80 -- tests/tcg/arm/Makefile.target | 87 -- tests/tcg/arm/fcvt.c | 6 +- tests/tcg/arm/meson.build | 80 ++ tests/tcg/arm/system/meson.build | 66 ++ tests/tcg/hexagon/Makefile.target | 146 --- tests/tcg/hexagon/meson.build | 111 ++ tests/tcg/hexagon/overflow.c | 1 + tests/tcg/hppa/Makefile.target | 14 - tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/hppa/float_convs.ref | 748 +++++++++++++ tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++ tests/tcg/hppa/meson.build | 22 + tests/tcg/i386/Makefile.softmmu-target | 37 - tests/tcg/i386/Makefile.target | 102 -- tests/tcg/i386/float_convd.conf | 988 ------------------ tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/i386/float_madds.ref | 768 ++++++++++++++ tests/tcg/i386/meson.build | 58 + tests/tcg/i386/system/meson.build | 48 + tests/tcg/loongarch64/Makefile.softmmu-target | 33 - tests/tcg/loongarch64/Makefile.target | 20 - tests/tcg/loongarch64/meson.build | 32 + tests/tcg/loongarch64/system/meson.build | 47 + tests/tcg/m68k/Makefile.target | 7 - tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/m68k/float_convs.ref | 748 +++++++++++++ tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++ tests/tcg/m68k/meson.build | 23 + tests/tcg/meson.build | 462 ++++++++ tests/tcg/minilib/Makefile.target | 21 - tests/tcg/mips/Makefile.target | 19 - tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/mips/float_convs.ref | 748 +++++++++++++ tests/tcg/mips/float_madds.ref | 768 ++++++++++++++ tests/tcg/mips/meson.build | 25 + tests/tcg/mips64/Makefile.target | 20 - tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/mips64/float_convs.ref | 748 +++++++++++++ tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++ tests/tcg/mips64/meson.build | 27 + tests/tcg/mips64el/Makefile.target | 8 - tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++ tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++ tests/tcg/mips64el/meson.build | 14 + tests/tcg/multiarch/Makefile.target | 224 ---- tests/tcg/multiarch/gdbstub/prot-none.py | 11 +- tests/tcg/multiarch/meson.build | 149 +++ .../multiarch/plugin/check-plugin-output.sh | 36 - tests/tcg/multiarch/plugin/regex-compare.sh | 28 + tests/tcg/multiarch/sha1.c | 4 +- tests/tcg/multiarch/sha1.ref | 1 + .../multiarch/system/Makefile.softmmu-target | 81 -- tests/tcg/multiarch/system/memory.c | 3 +- tests/tcg/multiarch/system/meson.build | 53 + tests/tcg/or1k/Makefile | 71 -- tests/tcg/or1k/float_convd.ref | 247 +++++ tests/tcg/or1k/float_convs.ref | 187 ++++ tests/tcg/or1k/float_madds.ref | 192 ++++ tests/tcg/or1k/meson.build | 72 ++ tests/tcg/or1k/test_addic.c | 2 +- tests/tcg/or1k/test_muli.c | 5 +- tests/tcg/plugins/meson.build | 11 +- tests/tcg/ppc64/Makefile.target | 63 -- tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++ tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++ tests/tcg/ppc64/meson.build | 56 + tests/tcg/ppc64/vector.c | 11 +- tests/tcg/ppc64/vsx_f2i_nan.c | 7 +- tests/tcg/ppc64le/Makefile.target | 7 - tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/ppc64le/meson.build | 14 + tests/tcg/riscv64/Makefile.softmmu-target | 45 - tests/tcg/riscv64/Makefile.target | 20 - tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++ tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++ tests/tcg/riscv64/meson.build | 38 + tests/tcg/riscv64/system/meson.build | 38 + tests/tcg/s390x/Makefile.softmmu-target | 57 - tests/tcg/s390x/Makefile.target | 127 --- tests/tcg/s390x/console.c | 30 +- tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++ tests/tcg/s390x/float_convs.ref | 748 +++++++++++++ tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++ tests/tcg/s390x/head64.S | 2 + tests/tcg/s390x/meson.build | 140 +++ tests/tcg/s390x/system/meson.build | 90 ++ tests/tcg/scripts/check_plugin_output.sh | 25 + tests/tcg/scripts/record_replay.sh | 16 + .../scripts/run_and_check_forbidden_output.sh | 19 + tests/tcg/scripts/run_and_diff.sh | 15 + tests/tcg/scripts/run_with_input.sh | 12 + tests/tcg/sh4/Makefile.target | 18 - tests/tcg/sh4/float_convd.ref | 494 +++++++++ tests/tcg/sh4/float_convs.ref | 374 +++++++ tests/tcg/sh4/float_madds.ref | 384 +++++++ tests/tcg/sh4/meson.build | 25 + tests/tcg/test_cc.c | 7 + tests/tcg/tricore/Makefile.softmmu-target | 53 - tests/tcg/tricore/meson.build | 57 + tests/tcg/x86_64/Makefile.softmmu-target | 44 - tests/tcg/x86_64/Makefile.target | 40 - tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++ tests/tcg/x86_64/meson.build | 83 ++ tests/tcg/x86_64/system/meson.build | 62 ++ tests/tcg/xtensa/Makefile.softmmu-target | 46 - tests/tcg/xtensa/crt.S | 1 + tests/tcg/xtensa/meson.build | 110 ++ tests/tcg/xtensaeb/Makefile.softmmu-target | 5 - 157 files changed, 30640 insertions(+), 3855 deletions(-) delete mode 100644 tests/tcg/Makefile.target delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target delete mode 100644 tests/tcg/aarch64/Makefile.target create mode 100644 tests/tcg/aarch64/meson.build create mode 100644 tests/tcg/aarch64/system/meson.build delete mode 100644 tests/tcg/aarch64_be/Makefile.target create mode 100644 tests/tcg/aarch64_be/meson.build delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target delete mode 100644 tests/tcg/alpha/Makefile.target create mode 100644 tests/tcg/alpha/float_convd.ref create mode 100644 tests/tcg/alpha/float_convs.ref create mode 100644 tests/tcg/alpha/float_madds.ref create mode 100644 tests/tcg/alpha/meson.build create mode 100644 tests/tcg/alpha/system/meson.build delete mode 100644 tests/tcg/arm/Makefile.softmmu-target delete mode 100644 tests/tcg/arm/Makefile.target create mode 100644 tests/tcg/arm/meson.build create mode 100644 tests/tcg/arm/system/meson.build delete mode 100644 tests/tcg/hexagon/Makefile.target create mode 100644 tests/tcg/hexagon/meson.build delete mode 100644 tests/tcg/hppa/Makefile.target create mode 100644 tests/tcg/hppa/float_convd.ref create mode 100644 tests/tcg/hppa/float_convs.ref create mode 100644 tests/tcg/hppa/float_madds.ref create mode 100644 tests/tcg/hppa/meson.build delete mode 100644 tests/tcg/i386/Makefile.softmmu-target delete mode 100644 tests/tcg/i386/Makefile.target delete mode 100644 tests/tcg/i386/float_convd.conf create mode 100644 tests/tcg/i386/float_convd.ref create mode 100644 tests/tcg/i386/float_madds.ref create mode 100644 tests/tcg/i386/meson.build create mode 100644 tests/tcg/i386/system/meson.build delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target delete mode 100644 tests/tcg/loongarch64/Makefile.target create mode 100644 tests/tcg/loongarch64/meson.build create mode 100644 tests/tcg/loongarch64/system/meson.build delete mode 100644 tests/tcg/m68k/Makefile.target create mode 100644 tests/tcg/m68k/float_convd.ref create mode 100644 tests/tcg/m68k/float_convs.ref create mode 100644 tests/tcg/m68k/float_madds.ref create mode 100644 tests/tcg/m68k/meson.build create mode 100644 tests/tcg/meson.build delete mode 100644 tests/tcg/minilib/Makefile.target delete mode 100644 tests/tcg/mips/Makefile.target create mode 100644 tests/tcg/mips/float_convd.ref create mode 100644 tests/tcg/mips/float_convs.ref create mode 100644 tests/tcg/mips/float_madds.ref create mode 100644 tests/tcg/mips/meson.build delete mode 100644 tests/tcg/mips64/Makefile.target create mode 100644 tests/tcg/mips64/float_convd.ref create mode 100644 tests/tcg/mips64/float_convs.ref create mode 100644 tests/tcg/mips64/float_madds.ref create mode 100644 tests/tcg/mips64/meson.build delete mode 100644 tests/tcg/mips64el/Makefile.target create mode 100644 tests/tcg/mips64el/float_convd.ref create mode 100644 tests/tcg/mips64el/float_convs.ref create mode 100644 tests/tcg/mips64el/float_madds.ref create mode 100644 tests/tcg/mips64el/meson.build delete mode 100644 tests/tcg/multiarch/Makefile.target create mode 100644 tests/tcg/multiarch/meson.build delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh create mode 100644 tests/tcg/multiarch/sha1.ref delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target create mode 100644 tests/tcg/multiarch/system/meson.build delete mode 100644 tests/tcg/or1k/Makefile create mode 100644 tests/tcg/or1k/float_convd.ref create mode 100644 tests/tcg/or1k/float_convs.ref create mode 100644 tests/tcg/or1k/float_madds.ref create mode 100644 tests/tcg/or1k/meson.build delete mode 100644 tests/tcg/ppc64/Makefile.target create mode 100644 tests/tcg/ppc64/float_convd.ref create mode 100644 tests/tcg/ppc64/float_convs.ref create mode 100644 tests/tcg/ppc64/float_madds.ref create mode 100644 tests/tcg/ppc64/meson.build delete mode 100644 tests/tcg/ppc64le/Makefile.target create mode 100644 tests/tcg/ppc64le/float_convd.ref create mode 100644 tests/tcg/ppc64le/meson.build delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target delete mode 100644 tests/tcg/riscv64/Makefile.target create mode 100644 tests/tcg/riscv64/float_convd.ref create mode 100644 tests/tcg/riscv64/float_convs.ref create mode 100644 tests/tcg/riscv64/float_madds.ref create mode 100644 tests/tcg/riscv64/meson.build create mode 100644 tests/tcg/riscv64/system/meson.build delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target delete mode 100644 tests/tcg/s390x/Makefile.target create mode 100644 tests/tcg/s390x/float_convd.ref create mode 100644 tests/tcg/s390x/float_convs.ref create mode 100644 tests/tcg/s390x/float_madds.ref create mode 100644 tests/tcg/s390x/meson.build create mode 100644 tests/tcg/s390x/system/meson.build create mode 100755 tests/tcg/scripts/check_plugin_output.sh create mode 100755 tests/tcg/scripts/record_replay.sh create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh create mode 100755 tests/tcg/scripts/run_and_diff.sh create mode 100755 tests/tcg/scripts/run_with_input.sh delete mode 100644 tests/tcg/sh4/Makefile.target create mode 100644 tests/tcg/sh4/float_convd.ref create mode 100644 tests/tcg/sh4/float_convs.ref create mode 100644 tests/tcg/sh4/float_madds.ref create mode 100644 tests/tcg/sh4/meson.build create mode 100644 tests/tcg/test_cc.c delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target create mode 100644 tests/tcg/tricore/meson.build delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target delete mode 100644 tests/tcg/x86_64/Makefile.target create mode 100644 tests/tcg/x86_64/float_madds.ref create mode 100644 tests/tcg/x86_64/meson.build create mode 100644 tests/tcg/x86_64/system/meson.build delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target create mode 100644 tests/tcg/xtensa/meson.build delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target -- 2.47.3
