Now that target configuration can be applied to lib{system, user}_ss,
there is no reason to keep that separate from the existing {system,
user}_ss.
We extract existing system/user code common common libraries to
lib{system, user}.
To not break existing meson files, we alias libsystem_ss to system_ss
and libuser_ss to user_ss, so we can do the cleanup in next commit.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
meson.build | 38 +++++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/meson.build b/meson.build
index fadee0f29fa..98b97fd7ba3 100644
--- a/meson.build
+++ b/meson.build
@@ -3712,14 +3712,14 @@ io_ss = ss.source_set()
qmp_ss = ss.source_set()
qom_ss = ss.source_set()
system_ss = ss.source_set()
-libsystem_ss = ss.source_set()
+libsystem_ss = system_ss
specific_fuzz_ss = ss.source_set()
specific_ss = ss.source_set()
rust_devices_ss = ss.source_set()
stub_ss = ss.source_set()
trace_ss = ss.source_set()
user_ss = ss.source_set()
-libuser_ss = ss.source_set()
+libuser_ss = user_ss
util_ss = ss.source_set()
# accel modules
@@ -4098,21 +4098,19 @@ common_ss.add(hwcore)
system_ss.add(authz, blockdev, chardev, crypto, io, qmp)
common_ss.add(qom, qemuutil)
-common_ss.add_all(when: 'CONFIG_SYSTEM_ONLY', if_true: [system_ss])
-common_ss.add_all(when: 'CONFIG_USER_ONLY', if_true: user_ss)
-
libuser = static_library('user',
- libuser_ss.all_sources() + genh,
+ user_ss.all_sources() + genh,
c_args: ['-DCONFIG_USER_ONLY',
'-DCOMPILING_SYSTEM_VS_USER'],
- dependencies: libuser_ss.all_dependencies(),
+ include_directories: common_user_inc,
+ dependencies: user_ss.all_dependencies(),
build_by_default: false)
libsystem = static_library('system',
- libsystem_ss.all_sources() + genh,
+ system_ss.all_sources() + genh,
c_args: ['-DCONFIG_SOFTMMU',
'-DCOMPILING_SYSTEM_VS_USER'],
- dependencies: libsystem_ss.all_dependencies(),
+ dependencies: system_ss.all_dependencies(),
build_by_default: false)
# Note that this library is never used directly (only through extract_objects)
@@ -4121,7 +4119,6 @@ libsystem = static_library('system',
common_all = static_library('common',
build_by_default: false,
sources: common_ss.all_sources() + genh,
- include_directories: common_user_inc,
implicit_include_directories: false,
dependencies: common_ss.all_dependencies())
@@ -4135,10 +4132,20 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
inc = [common_user_inc + target_inc]
target_common = common_ss.apply(config_target, strict: false)
+ target_system = system_ss.apply(config_target, strict: false)
+ target_user = user_ss.apply(config_target, strict: false)
common_deps = []
+ system_deps = []
+ user_deps = []
foreach dep: target_common.dependencies()
common_deps += dep.partial_dependency(compile_args: true, includes: true)
endforeach
+ foreach dep: target_system.dependencies()
+ system_deps += dep.partial_dependency(compile_args: true, includes: true)
+ endforeach
+ foreach dep: target_user.dependencies()
+ user_deps += dep.partial_dependency(compile_args: true, includes: true)
+ endforeach
# prevent common code to access cpu compile time definition,
# but still allow access to cpu.h
@@ -4154,7 +4161,7 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
sources: src.all_sources() + genh,
include_directories: inc,
c_args: target_system_c_args,
- dependencies: src.all_dependencies() + common_deps)
+ dependencies: src.all_dependencies() + common_deps + system_deps)
hw_common_arch_libs += {target_base_arch: lib}
endif
endif
@@ -4168,7 +4175,8 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
sources: src.all_sources() + genh,
include_directories: inc,
c_args: target_c_args,
- dependencies: src.all_dependencies() + common_deps)
+ dependencies: src.all_dependencies() + common_deps +
+ system_deps + user_deps)
target_common_arch_libs += {target_base_arch: lib}
endif
endif
@@ -4182,7 +4190,7 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
sources: src.all_sources() + genh,
include_directories: inc,
c_args: target_system_c_args,
- dependencies: src.all_dependencies() + common_deps)
+ dependencies: src.all_dependencies() + common_deps + system_deps)
target_common_system_arch_libs += {target_base_arch: lib}
endif
endif
@@ -4358,12 +4366,12 @@ foreach target : target_dirs
objects = [common_all.extract_objects(target_common.sources())]
arch_deps += target_common.dependencies()
if target_type == 'system'
- src = libsystem_ss.apply(config_target, strict: false)
+ src = system_ss.apply(config_target, strict: false)
objects += libsystem.extract_objects(src.sources())
arch_deps += src.dependencies()
endif
if target_type == 'user'
- src = libuser_ss.apply(config_target, strict: false)
+ src = user_ss.apply(config_target, strict: false)
objects += libuser.extract_objects(src.sources())
arch_deps += src.dependencies()
endif
--
2.47.2
On 5/16/25 07:27, Pierrick Bouvier wrote:
> Now that target configuration can be applied to lib{system, user}_ss,
> there is no reason to keep that separate from the existing {system,
> user}_ss.
The reason would be that previously you wouldn't have
-DCOMPILING_SYSTEM_VS_USER defined for the files in system_ss/user_ss.
I don't think it's a problem, because it's usually clear if a file is
common QEMU infrastructure or specific to system emulation; but it's
worth mentioning it in the commit message.
Paolo
> c_args: ['-DCONFIG_USER_ONLY',
> '-DCOMPILING_SYSTEM_VS_USER'],
> - dependencies: libuser_ss.all_dependencies(),
> + include_directories: common_user_inc,
> + dependencies: user_ss.all_dependencies(),
> build_by_default: false)
>
> libsystem = static_library('system',
> - libsystem_ss.all_sources() + genh,
> + system_ss.all_sources() + genh,
> c_args: ['-DCONFIG_SOFTMMU',
> '-DCOMPILING_SYSTEM_VS_USER'],
> - dependencies: libsystem_ss.all_dependencies(),
> + dependencies: system_ss.all_dependencies(),
> build_by_default: false)
>
> # Note that this library is never used directly (only through extract_objects)
> @@ -4121,7 +4119,6 @@ libsystem = static_library('system',
> common_all = static_library('common',
> build_by_default: false,
> sources: common_ss.all_sources() + genh,
> - include_directories: common_user_inc,
> implicit_include_directories: false,
> dependencies: common_ss.all_dependencies())
>
> @@ -4135,10 +4132,20 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
> inc = [common_user_inc + target_inc]
>
> target_common = common_ss.apply(config_target, strict: false)
> + target_system = system_ss.apply(config_target, strict: false)
> + target_user = user_ss.apply(config_target, strict: false)
> common_deps = []
> + system_deps = []
> + user_deps = []
> foreach dep: target_common.dependencies()
> common_deps += dep.partial_dependency(compile_args: true, includes: true)
> endforeach
> + foreach dep: target_system.dependencies()
> + system_deps += dep.partial_dependency(compile_args: true, includes: true)
> + endforeach
> + foreach dep: target_user.dependencies()
> + user_deps += dep.partial_dependency(compile_args: true, includes: true)
> + endforeach
>
> # prevent common code to access cpu compile time definition,
> # but still allow access to cpu.h
> @@ -4154,7 +4161,7 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
> sources: src.all_sources() + genh,
> include_directories: inc,
> c_args: target_system_c_args,
> - dependencies: src.all_dependencies() + common_deps)
> + dependencies: src.all_dependencies() + common_deps + system_deps)
> hw_common_arch_libs += {target_base_arch: lib}
> endif
> endif
> @@ -4168,7 +4175,8 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
> sources: src.all_sources() + genh,
> include_directories: inc,
> c_args: target_c_args,
> - dependencies: src.all_dependencies() + common_deps)
> + dependencies: src.all_dependencies() + common_deps +
> + system_deps + user_deps)
> target_common_arch_libs += {target_base_arch: lib}
> endif
> endif
> @@ -4182,7 +4190,7 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
> sources: src.all_sources() + genh,
> include_directories: inc,
> c_args: target_system_c_args,
> - dependencies: src.all_dependencies() + common_deps)
> + dependencies: src.all_dependencies() + common_deps + system_deps)
> target_common_system_arch_libs += {target_base_arch: lib}
> endif
> endif
> @@ -4358,12 +4366,12 @@ foreach target : target_dirs
> objects = [common_all.extract_objects(target_common.sources())]
> arch_deps += target_common.dependencies()
> if target_type == 'system'
> - src = libsystem_ss.apply(config_target, strict: false)
> + src = system_ss.apply(config_target, strict: false)
> objects += libsystem.extract_objects(src.sources())
> arch_deps += src.dependencies()
> endif
> if target_type == 'user'
> - src = libuser_ss.apply(config_target, strict: false)
> + src = user_ss.apply(config_target, strict: false)
> objects += libuser.extract_objects(src.sources())
> arch_deps += src.dependencies()
> endif
On 5/17/25 8:04 AM, Paolo Bonzini wrote:
> On 5/16/25 07:27, Pierrick Bouvier wrote:
>> Now that target configuration can be applied to lib{system, user}_ss,
>> there is no reason to keep that separate from the existing {system,
>> user}_ss.
>
> The reason would be that previously you wouldn't have
> -DCOMPILING_SYSTEM_VS_USER defined for the files in system_ss/user_ss.
> I don't think it's a problem, because it's usually clear if a file is
> common QEMU infrastructure or specific to system emulation; but it's
> worth mentioning it in the commit message.
>
Yes, sure, I'll add it.
Indeed, it's not changing much, just unpoisoining CONFIG_USER_ONLY and
CONFIG_SOFTMMU.
The only difference this change make is that existing system/user files
now can eventually use those defines, which should be harmless as they
were not using them before.
> Paolo
>
>> c_args: ['-DCONFIG_USER_ONLY',
>> '-DCOMPILING_SYSTEM_VS_USER'],
>> - dependencies: libuser_ss.all_dependencies(),
>> + include_directories: common_user_inc,
>> + dependencies: user_ss.all_dependencies(),
>> build_by_default: false)
>>
>> libsystem = static_library('system',
>> - libsystem_ss.all_sources() + genh,
>> + system_ss.all_sources() + genh,
>> c_args: ['-DCONFIG_SOFTMMU',
>> '-DCOMPILING_SYSTEM_VS_USER'],
>> - dependencies: libsystem_ss.all_dependencies(),
>> + dependencies: system_ss.all_dependencies(),
>> build_by_default: false)
>>
>> # Note that this library is never used directly (only through extract_objects)
>> @@ -4121,7 +4119,6 @@ libsystem = static_library('system',
>> common_all = static_library('common',
>> build_by_default: false,
>> sources: common_ss.all_sources() + genh,
>> - include_directories: common_user_inc,
>> implicit_include_directories: false,
>> dependencies: common_ss.all_dependencies())
>>
>> @@ -4135,10 +4132,20 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
>> inc = [common_user_inc + target_inc]
>>
>> target_common = common_ss.apply(config_target, strict: false)
>> + target_system = system_ss.apply(config_target, strict: false)
>> + target_user = user_ss.apply(config_target, strict: false)
>> common_deps = []
>> + system_deps = []
>> + user_deps = []
>> foreach dep: target_common.dependencies()
>> common_deps += dep.partial_dependency(compile_args: true, includes: true)
>> endforeach
>> + foreach dep: target_system.dependencies()
>> + system_deps += dep.partial_dependency(compile_args: true, includes: true)
>> + endforeach
>> + foreach dep: target_user.dependencies()
>> + user_deps += dep.partial_dependency(compile_args: true, includes: true)
>> + endforeach
>>
>> # prevent common code to access cpu compile time definition,
>> # but still allow access to cpu.h
>> @@ -4154,7 +4161,7 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
>> sources: src.all_sources() + genh,
>> include_directories: inc,
>> c_args: target_system_c_args,
>> - dependencies: src.all_dependencies() + common_deps)
>> + dependencies: src.all_dependencies() + common_deps + system_deps)
>> hw_common_arch_libs += {target_base_arch: lib}
>> endif
>> endif
>> @@ -4168,7 +4175,8 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
>> sources: src.all_sources() + genh,
>> include_directories: inc,
>> c_args: target_c_args,
>> - dependencies: src.all_dependencies() + common_deps)
>> + dependencies: src.all_dependencies() + common_deps +
>> + system_deps + user_deps)
>> target_common_arch_libs += {target_base_arch: lib}
>> endif
>> endif
>> @@ -4182,7 +4190,7 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
>> sources: src.all_sources() + genh,
>> include_directories: inc,
>> c_args: target_system_c_args,
>> - dependencies: src.all_dependencies() + common_deps)
>> + dependencies: src.all_dependencies() + common_deps + system_deps)
>> target_common_system_arch_libs += {target_base_arch: lib}
>> endif
>> endif
>> @@ -4358,12 +4366,12 @@ foreach target : target_dirs
>> objects = [common_all.extract_objects(target_common.sources())]
>> arch_deps += target_common.dependencies()
>> if target_type == 'system'
>> - src = libsystem_ss.apply(config_target, strict: false)
>> + src = system_ss.apply(config_target, strict: false)
>> objects += libsystem.extract_objects(src.sources())
>> arch_deps += src.dependencies()
>> endif
>> if target_type == 'user'
>> - src = libuser_ss.apply(config_target, strict: false)
>> + src = user_ss.apply(config_target, strict: false)
>> objects += libuser.extract_objects(src.sources())
>> arch_deps += src.dependencies()
>> endif
>
© 2016 - 2025 Red Hat, Inc.