diff mbox series

[3/4] modules: target-specific module build infrastructure

Message ID 20210610101553.943689-4-kraxel@redhat.com (mailing list archive)
State New, archived
Headers show
Series modules: add support for target-specific modules. | expand

Commit Message

Gerd Hoffmann June 10, 2021, 10:15 a.m. UTC
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 meson.build | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index 9823c5889140..a22c26850429 100644
--- a/meson.build
+++ b/meson.build
@@ -1781,6 +1781,7 @@  user_ss = ss.source_set()
 util_ss = ss.source_set()
 
 modules = {}
+target_modules = {}
 hw_arch = {}
 target_arch = {}
 target_softmmu_arch = {}
@@ -2052,6 +2053,31 @@  foreach d, list : modules
   endforeach
 endforeach
 
+foreach d, list : target_modules
+  foreach m, module_ss : list
+    if enable_modules and targetos != 'windows'
+      foreach target : target_dirs
+        config_target = config_target_mak[target]
+        config_target += config_host
+        target_inc = [include_directories('target' / config_target['TARGET_BASE_ARCH'])]
+        c_args = ['-DNEED_CPU_H',
+                  '-DCONFIG_TARGET="@0@-config-target.h"'.format(target),
+                  '-DCONFIG_DEVICES="@0@-config-devices.h"'.format(target)]
+        target_module_ss = module_ss.apply(config_target, strict: false)
+        sl = static_library(target + '-' + d + '-' + m,
+                            [genh, target_module_ss.sources()],
+                            dependencies: [modulecommon, target_module_ss.dependencies()],
+                            include_directories: target_inc,
+                            c_args: c_args,
+                            pic: true)
+        softmmu_mods += sl
+      endforeach
+    else
+      specific_ss.add_all(module_ss)
+    endif
+  endforeach
+endforeach
+
 nm = find_program('nm')
 undefsym = find_program('scripts/undefsym.py')
 block_syms = custom_target('block.syms', output: 'block.syms',