On Fri, Dec 09, 2022 at 12:23:39PM +0100, Paolo Bonzini wrote: > The final bout of conversions removes the remaining compiler tests > for emulators, applies a few cleanups that are enabled by version 0.63 > of Meson, and updates the documentation. > > Committing this however requires first a libvirt-ci update, in order to > enable using Python 3.8/3.9 on CentOS 8 and SLES 15. I am still working > on it but the review can start early for these patches. > > A final comparison for the effort has a net negative of around 4000 > lines of code, despite the growth of QEMU itself in the meanwhile: > > before after > -------------------------------------------------------------------------- > 8647 configure 4240 meson.build > 1296 Makefile 1970 configure > 985 tests/Makefile.include 337 Makefile > 440 rules.mak 224 scripts/meson-buildoptions.py > 379 scripts/tap-driver.pl 171 tests/Makefile.include > 287 Makefile.target 129 scripts/nsis.py > 263 tests/tcg/configure.sh 113 scripts/mtest2make.py > 129 scripts/create_config 48 scripts/undefsym.py > ~5500 various Makefile fragments ~6500 various meson.build files > -------------------------------------------------------------------------- > 17926 total 13732 total
So after applying this series, at least on Fedora, I barely needed configure at all, in so muc as the following successfully built AFAICT: $ mkdir build $ cat > build/config-host.mak <<EOF all: GIT=git GIT_SUBMODULES=ui/keycodemapdb tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc GIT_SUBMODULES_ACTION=update CONFIG_POSIX=y CONFIG_LINUX=y SRC_PATH=/home/berrange/src/virt/qemu TARGET_DIRS=x86_64-softmmu CONFIG_PLUGIN=y HAVE_GDB_BIN=/usr/bin/gdb ENGINE=podman ROMS=pc-bios/optionrom MAKE=make PYTHON=/usr/bin/python3 -B GENISOIMAGE=/usr/bin/genisoimage MESON=/usr/bin/meson NINJA=/usr/bin/ninja PKG_CONFIG= CC=cc EXESUF= TCG_TESTS_TARGETS= x86_64-softmmu EOF $ meson build $ ninja -C build Out of the things in config-host.mak there, a few meson already knows, like CC, SRC_PATH, 50% would be just a meson find_program() command, a couple would need meson args (eg TARGET_DIRS), and some just look redundant, eg CONFIG_LINUX largely duplicates __linux__, and CONFIG_POSIX is effectively !_WIN32. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|