aboutsummaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-05-04 10:20:46 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2023-05-08 19:04:52 +0200
commitef709860ea12ec59c4cd7373bd2fd7a4e50143ee (patch)
tree3b94cb4f6db108611bedce7a1d8f71b661a672c9 /meson.build
parent23b2a3be999bd53cfac63325b8bc02a205f1fe5b (diff)
downloadqemu-ef709860ea12ec59c4cd7373bd2fd7a4e50143ee.zip
qemu-ef709860ea12ec59c4cd7373bd2fd7a4e50143ee.tar.gz
qemu-ef709860ea12ec59c4cd7373bd2fd7a4e50143ee.tar.bz2
meson: leave unnecessary modules out of the build
meson.build files choose whether to build modules based on foo.found() expressions. If a feature is enabled (e.g. --enable-gtk), these expressions are true even if the code is not used by any emulator, and this results in an unexpected difference between modular and non-modular builds. For non-modular builds, the files are not included in any binary, and therefore the source files are never processed. For modular builds, however, all .so files are unconditionally built by default, and therefore a normal "make" tries to build them. However, the corresponding trace-*.h files are absent due to this conditional: if have_system trace_events_subdirs += [ ... 'ui', ... ] endif which was added to avoid wasting time running tracetool on unused trace-events files. This causes a compilation failure; fix it by skipping module builds entirely if (depending on the module directory) have_block or have_system are false. Reported-by: Michael Tokarev <mjt@tls.msk.ru> Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build4
1 files changed, 4 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index 229eb58..27782f8 100644
--- a/meson.build
+++ b/meson.build
@@ -3217,6 +3217,10 @@ modinfo_files = []
block_mods = []
softmmu_mods = []
foreach d, list : modules
+ if not (d == 'block' ? have_block : have_system)
+ continue
+ endif
+
foreach m, module_ss : list
if enable_modules and targetos != 'windows'
module_ss = module_ss.apply(config_all, strict: false)