There are situations in which you might want to build QEMU without
building the full test suite, which in some configurations can take a
considerable amount of time to build. This is especially true when using
LTO with clang. For example:
$ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects'
'--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu
[...]
$ time make -j8
[...]
[3078/3078] Linking target tests/qtest/qos-test
real 6m43.250s
user 101m15.967s
sys 4m3.813s
$ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects'
'--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-
softmmu --disable-tests
[...]
$ time make -j8
[...]
[2024/2024] Linking target qemu-system-x86_64
real 3m14.277s
user 33m13.174s
sys 1m36.642s
Add a toggle to optionally disable building tests.
Signed-off-by: Florian Schmidt <[email protected]>
---
meson.build | 2 +-
meson_options.txt | 2 ++
scripts/meson-buildoptions.sh | 3 +++
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 49a5baf5b5..ad728c26ec 100644
--- a/meson.build
+++ b/meson.build
@@ -4605,7 +4605,7 @@ subdir('docs')
subdir('pyvenv')
# Tests are disabled on emscripten because they rely on host features
that aren't
# supported by emscripten (e.g. fork and unix socket).
-if host_os != 'emscripten'
+if get_option('tests').allowed() and host_os != 'emscripten'
subdir('tests')
endif
if gtk.found()
diff --git a/meson_options.txt b/meson_options.txt
index a07cb47d35..68333ca402 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '',
# on the configure script command line. After adding an option
# here make sure to run "make update-buildoptions".
+option('tests', type: 'feature', value: 'auto',
+ description: 'Build the test suite')
option('docs', type : 'feature', value : 'auto',
description: 'Documentations build support')
option('fuzzing', type : 'boolean', value: false,
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index c003985047..3fec13a336 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -194,6 +194,7 @@ meson_options_help() {
printf "%s\n" ' spice-protocol Spice protocol support'
printf "%s\n" ' stack-protector compiler-provided stack protection'
printf "%s\n" ' tcg TCG support'
+ printf "%s\n" ' tests build test suite'
printf "%s\n" ' tools build support utilities that come
with QEMU'
printf "%s\n" ' tpm TPM support'
printf "%s\n" ' u2f U2F emulation support'
@@ -515,6 +516,8 @@ _meson_option_parse() {
--enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;;
--disable-tcg-interpreter) printf "%s" -Dtcg_interpreter=false ;;
--tls-priority=*) quote_sh "-Dtls_priority=$2" ;;
+ --enable-tests) printf "%s" -Dtests=enabled ;;
+ --disable-tests) printf "%s" -Dtests=disabled ;;
--enable-tools) printf "%s" -Dtools=enabled ;;
--disable-tools) printf "%s" -Dtools=disabled ;;
--enable-tpm) printf "%s" -Dtpm=enabled ;;