On 5/16/25 07:27, Pierrick Bouvier wrote:
@@ -4131,12 +4137,17 @@ common_all = static_library('common',
hw_common_arch_libs = {}
target_common_arch_libs = {}
target_common_system_arch_libs = {}
-foreach target : target_dirs
+foreach target_base_arch, config_base_arch : config_base_arch_mak
config_target = config_target_mak[target]
- target_base_arch = config_target['TARGET_BASE_ARCH']
Each target_base_arch is now processed only once. Therefore, all the
"if target_base_arch not in ..." tests can be removed.
target_inc = [include_directories('target' / target_base_arch)]
inc = [common_user_inc + target_inc]
sources: src.all_sources() + genh,
include_directories: inc,
c_args: target_system_c_args,
- dependencies: src.all_dependencies())
+ dependencies: src.all_dependencies() + common_deps)
hw_common_arch_libs += {target_base_arch: lib}
endif
endif
...
@@ -4179,7 +4190,7 @@ foreach target : target_dirs
sources: src.all_sources() + genh,
include_directories: inc,
c_args: target_system_c_args,
- dependencies: src.all_dependencies())
+ dependencies: src.all_dependencies() + common_deps)
target_common_system_arch_libs += {target_base_arch: lib}
endif
endif
There is no need for two separate libraries, since hw_* and
target_system_* use the same flags. You can do something like
system_src = []
if target_base_arch in hw_common_arch
system_src += hw_common_arch[target_base_arch].all_sources()
system_deps += hw_common_arch[target_base_arch].all_dependencies()
endif
if target_base_arch in target_common_system_arch
system_src += target_common_system_arch[target_base_arch].all_sources()
system_deps +=
target_common_system_arch[target_base_arch].all_dependencies()
endif
if system_src.length() > 0
...
endif
to build the two arrays of sources and dependencies.
If you reduce the libraries from 3 to 2, you could call them 'common_' +
target_base_arch and 'system_' + target_base_arch. That's more similar
to the existing libcommon and libsystem.
Paolo