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

Reply via email to