[PATCH] meson: do not emit modules with no enabled sources

Rohitashv Kumar <[email protected]>
Newsgroups gmane.comp.emulators.qemu
Message-ID <[email protected]>
From: Rohitashv Kumar <[email protected]>

With modular builds, the system/block module loop adds the common
boilerplate (modulecommon) to every registered module and emits a
shared_module unconditionally.  A module whose device sources are all
disabled by the configuration then still produces a shared object
containing nothing but the boilerplate: an empty stub that provides no
devices and only complicates packaging.

This happens when a module is registered under a broader condition than
the one gating its sources, e.g. hw-display-virtio-gpu-pci (registered on
CONFIG_VIRTIO_PCI, sources need CONFIG_VIRTIO_GPU) in a build without
virtio-gpu, or hw-s390x-virtio-gpu-ccw (registered unconditionally,
source needs CONFIG_VIRTIO_CCW) in a build without an s390x target.

The target_modules loop already skips modules whose applied source set is
empty; make the system/block loop consistent and do the same.

Signed-off-by: Rohitashv Kumar <[email protected]>
---
 meson.build | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/meson.build b/meson.build
index 49a5baf5..557edd71 100644
--- a/meson.build
+++ b/meson.build
@@ -3903,6 +3903,9 @@ foreach d, list : modules
     if enable_modules
       module_ss.add(modulecommon)
       module_ss = module_ss.apply(config_all_devices, strict: false)
+      if module_ss.sources() == []
+        continue
+      endif
       sl = static_library(d + '-' + m, [genh, module_ss.sources()],
                           dependencies: module_ss.dependencies(), pic: true)
       if d == 'block'
-- 
2.47.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.