[sw, mask_rom] Split MaskROM generation into binary and base library
This is a first step of switching to running on-device tests via
Silicon Creator (MaskROM + ROM_EXT) code.
This change prepares for the next step - adding a "null" MaskROM
implementation, similar to what has been done in:
d2bbbe117d6c92be7715172401892d21910d73bb
Signed-off-by: Silvestrs Timofejevs <silvestrst@lowrisc.org>
diff --git a/sw/device/mask_rom/meson.build b/sw/device/mask_rom/meson.build
index c72a159..74178d9 100644
--- a/sw/device/mask_rom/meson.build
+++ b/sw/device/mask_rom/meson.build
@@ -10,26 +10,38 @@
rom_link_args = [
'-Wl,-L,@0@'.format(meson.source_root()),
'-Wl,-T,@0@/@1@'.format(meson.source_root(), rom_linkfile[0]),
- embedded_target_extra_link_args
+ # Flatten the array, otherwise `mask_rom_lib` generation fails.
+ ''.join(embedded_target_extra_link_args),
]
rom_link_deps = [rom_linkfile]
+# MaskROM library.
+mask_rom_lib = declare_dependency(
+ sources: [
+ 'mask_rom_start.S',
+ ],
+ link_args: rom_link_args,
+ dependencies: [
+ freestanding_headers,
+ rom_ext_manifest_parser,
+ sw_lib_crt,
+ sw_lib_pinmux,
+ ],
+ link_with: static_library(
+ 'mask_rom_lib',
+ sources: ['mask_rom.c'],
+ link_depends: [rom_linkfile],
+ )
+)
+
+# Production MaskROM images
foreach device_name, device_lib : sw_lib_arch_core_devices
mask_rom_elf = executable(
'mask_rom_' + device_name,
- sources: [
- 'mask_rom_start.S',
- 'mask_rom.c',
- ],
name_suffix: 'elf',
- link_args: rom_link_args,
link_depends: rom_link_deps,
dependencies: [
- chip_info_h,
- device_lib,
- rom_ext_manifest_parser,
- sw_lib_pinmux,
- sw_lib_crt,
+ mask_rom_lib,
],
)