On 5/13/22 10:35, Daniel P. Berrangé wrote:
The tests is an area where we still have too much taking place in
Makefiles, as opposed to meson. Can we put a rule in
tests/meson.build to trigger the ven creation ? Gets us closer to
being able to run ninja without using make as a wrapper.
I don't think this is or even should be a goal, because we have multiple
projects under the QEMU tree:
- the QEMU binaries proper (emulators, tools, etc.)
- the firmware (pc-bios/{vof,s390-ccw,optionrom} with sources, the rest
as submodules)
- tests/tcg
Each of these has its own build system and it's not possible to unify
them under a single meson-based build:
- tests/tcg supports cross compilation for a different target, and
pc-bios/ firmware will soon follow suit (which is why these directories
haven't been converted to Meson, even though patches exist)
- firmware outside pc-bios/ consists of many external projects each with
its own build system; right now it is not even buildable except by magic
invocations that no one really knows
On top of this, there's support for building Docker images for
cross-compilation which obviously doesn't fit the Meson usecases either.
In other words, Meson is the build system for QEMU *executables* (and
that's why tests for the QEMU executables are being moved from configure
to meson), but not for QEMU as a whole.
So I don't expect configure and Make to disappear. Meson is great at
building a C program as big as QEMU; but QEMU is not just a C program,
and isolating the C parts into Meson lets Make handle the rest of the
complexity better than before, for example with cross compiled firmware
support.
Likewise, we're now using "meson test" for "make check" and a custom
runner for "make check-block"; but perhaps one day Avocado could replace
both runners via custom Avocado resolvers (basically JSON emitters
similar to Meson introspection data). That of course depends on whether
Avocado has feature parity with "meson test".
Paolo