meson: Introduce top-level libuser_ss and libsystem_ss

We already have two subdirectories for which we need
to build files twice, for user vs system modes.
Move this handling to the top level.

This cannot be combined with user_ss or system_ss,
because the formulation has not been extended to support
configuration symbols.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2025-03-12 14:33:07 -07:00
parent d4c9cab37f
commit 5983a20a0b
3 changed files with 32 additions and 45 deletions

View file

@ -4,32 +4,16 @@
# types such as hwaddr. # types such as hwaddr.
# #
# We need to build the core gdb code via a library to be able to tweak
# cflags so:
gdb_user_ss = ss.source_set()
gdb_system_ss = ss.source_set()
# We build two versions of gdbstub, one for each mode # We build two versions of gdbstub, one for each mode
gdb_user_ss.add(files('gdbstub.c', 'user.c')) libuser_ss.add(files(
gdb_system_ss.add(files('gdbstub.c', 'system.c')) 'gdbstub.c',
'user.c'
))
gdb_user_ss = gdb_user_ss.apply({}) libsystem_ss.add(files(
gdb_system_ss = gdb_system_ss.apply({}) 'gdbstub.c',
'system.c'
libgdb_user = static_library('gdb_user', ))
gdb_user_ss.sources() + genh,
c_args: '-DCONFIG_USER_ONLY',
build_by_default: false)
libgdb_system = static_library('gdb_system',
gdb_system_ss.sources() + genh,
build_by_default: false)
gdb_user = declare_dependency(objects: libgdb_user.extract_all_objects(recursive: false))
user_ss.add(gdb_user)
gdb_system = declare_dependency(objects: libgdb_system.extract_all_objects(recursive: false))
system_ss.add(gdb_system)
common_ss.add(files('syscalls.c')) common_ss.add(files('syscalls.c'))

View file

@ -3662,12 +3662,14 @@ io_ss = ss.source_set()
qmp_ss = ss.source_set() qmp_ss = ss.source_set()
qom_ss = ss.source_set() qom_ss = ss.source_set()
system_ss = ss.source_set() system_ss = ss.source_set()
libsystem_ss = ss.source_set()
specific_fuzz_ss = ss.source_set() specific_fuzz_ss = ss.source_set()
specific_ss = ss.source_set() specific_ss = ss.source_set()
rust_devices_ss = ss.source_set() rust_devices_ss = ss.source_set()
stub_ss = ss.source_set() stub_ss = ss.source_set()
trace_ss = ss.source_set() trace_ss = ss.source_set()
user_ss = ss.source_set() user_ss = ss.source_set()
libuser_ss = ss.source_set()
util_ss = ss.source_set() util_ss = ss.source_set()
# accel modules # accel modules
@ -4045,6 +4047,26 @@ common_ss.add(qom, qemuutil)
common_ss.add_all(when: 'CONFIG_SYSTEM_ONLY', if_true: [system_ss]) common_ss.add_all(when: 'CONFIG_SYSTEM_ONLY', if_true: [system_ss])
common_ss.add_all(when: 'CONFIG_USER_ONLY', if_true: user_ss) common_ss.add_all(when: 'CONFIG_USER_ONLY', if_true: user_ss)
libuser_ss = libuser_ss.apply({})
libuser = static_library('user',
libuser_ss.sources() + genh,
c_args: '-DCONFIG_USER_ONLY',
dependencies: libuser_ss.dependencies(),
build_by_default: false)
libuser = declare_dependency(objects: libuser.extract_all_objects(recursive: false),
dependencies: libuser_ss.dependencies())
common_ss.add(when: 'CONFIG_USER_ONLY', if_true: libuser)
libsystem_ss = libsystem_ss.apply({})
libsystem = static_library('system',
libsystem_ss.sources() + genh,
c_args: '-DCONFIG_SOFTMMU',
dependencies: libsystem_ss.dependencies(),
build_by_default: false)
libsystem = declare_dependency(objects: libsystem.extract_all_objects(recursive: false),
dependencies: libsystem_ss.dependencies())
common_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_true: libsystem)
# Note that this library is never used directly (only through extract_objects) # Note that this library is never used directly (only through extract_objects)
# and is not built by default; therefore, source files not used by the build # and is not built by default; therefore, source files not used by the build
# configuration will be in build.ninja, but are never built by default. # configuration will be in build.ninja, but are never built by default.

View file

@ -27,24 +27,5 @@ if host_os == 'linux'
tcg_ss.add(files('perf.c')) tcg_ss.add(files('perf.c'))
endif endif
tcg_ss = tcg_ss.apply({}) libuser_ss.add_all(tcg_ss)
libsystem_ss.add_all(tcg_ss)
libtcg_user = static_library('tcg_user',
tcg_ss.sources() + genh,
dependencies: tcg_ss.dependencies(),
c_args: '-DCONFIG_USER_ONLY',
build_by_default: false)
tcg_user = declare_dependency(objects: libtcg_user.extract_all_objects(recursive: false),
dependencies: tcg_ss.dependencies())
user_ss.add(tcg_user)
libtcg_system = static_library('tcg_system',
tcg_ss.sources() + genh,
dependencies: tcg_ss.dependencies(),
c_args: '-DCONFIG_SOFTMMU',
build_by_default: false)
tcg_system = declare_dependency(objects: libtcg_system.extract_all_objects(recursive: false),
dependencies: tcg_ss.dependencies())
system_ss.add(tcg_system)