meson: move shared_module() calls where modules are already walked

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2024-05-24 10:27:21 +02:00
parent 1a2d52c7fc
commit fae7a427c7

View File

@ -3602,6 +3602,7 @@ modinfo_files = []
block_mods = [] block_mods = []
system_mods = [] system_mods = []
emulator_modules = []
foreach d, list : modules foreach d, list : modules
if not (d == 'block' ? have_block : have_system) if not (d == 'block' ? have_block : have_system)
continue continue
@ -3609,14 +3610,20 @@ foreach d, list : modules
foreach m, module_ss : list foreach m, module_ss : list
if enable_modules if enable_modules
module_ss.add(modulecommon)
module_ss = module_ss.apply(config_all_devices, strict: false) module_ss = module_ss.apply(config_all_devices, strict: false)
sl = static_library(d + '-' + m, [genh, module_ss.sources()], sl = static_library(d + '-' + m, [genh, module_ss.sources()],
dependencies: [modulecommon, module_ss.dependencies()], pic: true) dependencies: module_ss.dependencies(), pic: true)
if d == 'block' if d == 'block'
block_mods += sl block_mods += sl
else else
system_mods += sl system_mods += sl
endif endif
emulator_modules += shared_module(sl.name(),
name_prefix: '',
link_whole: sl,
install: true,
install_dir: qemu_moddir)
if module_ss.sources() != [] if module_ss.sources() != []
# FIXME: Should use sl.extract_all_objects(recursive: true) as # FIXME: Should use sl.extract_all_objects(recursive: true) as
# input. Sources can be used multiple times but objects are # input. Sources can be used multiple times but objects are
@ -3642,6 +3649,7 @@ endforeach
foreach d, list : target_modules foreach d, list : target_modules
foreach m, module_ss : list foreach m, module_ss : list
if enable_modules if enable_modules
module_ss.add(modulecommon)
foreach target : target_dirs foreach target : target_dirs
if target.endswith('-softmmu') if target.endswith('-softmmu')
config_target = config_target_mak[target] config_target = config_target_mak[target]
@ -3654,11 +3662,16 @@ foreach d, list : target_modules
module_name = d + '-' + m + '-' + config_target['TARGET_NAME'] module_name = d + '-' + m + '-' + config_target['TARGET_NAME']
sl = static_library(module_name, sl = static_library(module_name,
[genh, target_module_ss.sources()], [genh, target_module_ss.sources()],
dependencies: [modulecommon, target_module_ss.dependencies()], dependencies: target_module_ss.dependencies(),
include_directories: target_inc, include_directories: target_inc,
c_args: c_args, c_args: c_args,
pic: true) pic: true)
system_mods += sl system_mods += sl
emulator_modules += shared_module(sl.name(),
name_prefix: '',
link_whole: sl,
install: true,
install_dir: qemu_moddir)
# FIXME: Should use sl.extract_all_objects(recursive: true) too. # FIXME: Should use sl.extract_all_objects(recursive: true) too.
modinfo_files += custom_target(module_name + '.modinfo', modinfo_files += custom_target(module_name + '.modinfo',
output: module_name + '.modinfo', output: module_name + '.modinfo',
@ -3692,6 +3705,10 @@ if enable_modules
hw_arch[arch].add(modinfo_dep) hw_arch[arch].add(modinfo_dep)
endif endif
endforeach endforeach
if emulator_modules.length() > 0
alias_target('modules', emulator_modules)
endif
endif endif
nm = find_program('nm') nm = find_program('nm')
@ -3785,19 +3802,6 @@ common_ss.add(hwcore)
# Targets # # Targets #
########### ###########
emulator_modules = []
foreach m : block_mods + system_mods
emulator_modules += shared_module(m.name(),
build_by_default: true,
name_prefix: '',
link_whole: m,
install: true,
install_dir: qemu_moddir)
endforeach
if emulator_modules.length() > 0
alias_target('modules', emulator_modules)
endif
system_ss.add(authz, blockdev, chardev, crypto, io, qmp) system_ss.add(authz, blockdev, chardev, crypto, io, qmp)
common_ss.add(qom, qemuutil) common_ss.add(qom, qemuutil)