On 4/17/25 17:50, Philippe Mathieu-Daudé wrote:
If a file defining the binary TargetInfo structure is available,
link with it. Otherwise keep using the stub. Implement such
structure for arm-softmmu.
Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>
---
meson.build | 7 ++++++-
configs/targets/arm-softmmu.c | 22 ++++++++++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
create mode 100644 configs/targets/arm-softmmu.c
diff --git a/meson.build b/meson.build
index 168b07b5887..da24cc2ba41 100644
--- a/meson.build
+++ b/meson.build
@@ -3809,7 +3809,6 @@ specific_ss.add(files('page-target.c',
'page-vary-target.c'))
common_ss.add(files('target_info.c'))
system_ss.add(files('target_info-qom.c'))
-specific_ss.add(files('target_info-stub.c'))
subdir('backends')
subdir('disas')
@@ -4272,6 +4271,12 @@ foreach target : target_dirs
arch_srcs += gdbstub_xml
endif
+ target_info_c = meson.project_source_root() / 'configs' / 'targets' / target + '.c'
+ if not fs.exists(target_info_c)
+ target_info_c = meson.project_source_root() / 'target_info-stub.c'
+ endif
+ arch_srcs += target_info_c
+
t = target_arch[target_base_arch].apply(config_target, strict: false)
arch_srcs += t.sources()
arch_deps += t.dependencies()
While this works, it would be better with a dictionary, so it follows
the style of existing meson.build.
As well, two advantages:
- we can move configs somewhere else in case we decide to split them in
every folder later
- We avoid calling fs.exists for every target, but it should not really
change anything to configure step time.
---
diff --git a/meson.build b/meson.build
index 81afa63853e..7fca3c5c4dc 100644
--- a/meson.build
+++ b/meson.build
@@ -3228,6 +3228,7 @@ config_devices_mak_list = []
config_devices_h = {}
config_target_h = {}
config_target_mak = {}
+target_info = {}
disassemblers = {
'alpha' : ['CONFIG_ALPHA_DIS'],
@@ -3823,9 +3824,9 @@ specific_ss.add(files('page-target.c',
'page-vary-target.c'))
common_ss.add(files('target_info.c'))
system_ss.add(files('target_info-qom.c'))
-specific_ss.add(files('target_info-stub.c'))
subdir('backends')
+subdir('configs/targets')
subdir('disas')
subdir('migration')
subdir('monitor')
@@ -4286,6 +4287,12 @@ foreach target : target_dirs
arch_srcs += gdbstub_xml
endif
+ if target in target_info
+ arch_srcs += target_info[target]
+ else
+ arch_srcs += files('target_info-stub.c')
+ endif
+
t = target_arch[target_base_arch].apply(config_target, strict: false)
arch_srcs += t.sources()
arch_deps += t.dependencies()
diff --git a/configs/targets/meson.build b/configs/targets/meson.build
new file mode 100644
index 00000000000..140386e932c
--- /dev/null
+++ b/configs/targets/meson.build
@@ -0,0 +1,3 @@
+foreach target : ['arm-softmmu', 'aarch64-softmmu']
+ target_info += {target : files(target + '.c')}
+endforeach