[sca] Add a dictionary to meson.build for building multiple SCA programs
Signed-off-by: Alphan Ulusoy <alphan@google.com>
diff --git a/sw/device/sca/meson.build b/sw/device/sca/meson.build
index 7a046e1..07cd182 100644
--- a/sw/device/sca/meson.build
+++ b/sw/device/sca/meson.build
@@ -4,63 +4,83 @@
subdir('lib')
-foreach device_name, device_lib : sw_lib_arch_core_devices
- aes_serial_elf = executable(
- 'aes_serial_' + device_name,
- sources: ['aes_serial.c'],
- name_suffix: 'elf',
- dependencies: [
- device_lib,
- riscv_crt,
- sw_lib_dif_aes,
- sw_lib_mmio,
- sw_lib_runtime_hart,
- sw_lib_runtime_log,
- sw_sca_lib_prng,
- sw_sca_lib_sca,
- sw_sca_lib_simple_serial,
- ],
- )
+# Dictionary for SCA programs.
+sca_programs = {
+ # 'program_name': {
+ # 'dependency': dependency_name,
+ # },
+}
- target_name = 'aes_serial_@0@_' + device_name
+aes_serial = declare_dependency(
+ sources: ['aes_serial.c'],
+ dependencies: [
+ sw_lib_dif_aes,
+ ],
+)
+sca_programs += {
+ 'aes_serial': {
+ 'dependency': aes_serial,
+ },
+}
- aes_serial_dis = custom_target(
- target_name.format('dis'),
- input: aes_serial_elf,
- kwargs: elf_to_dis_custom_target_args,
- )
+foreach sca_program_name, sca_program_info: sca_programs
+ foreach device_name, device_lib : sw_lib_arch_core_devices
+ sca_program_elf = executable(
+ '@0@_@1@'.format(sca_program_name, device_name),
+ name_suffix: 'elf',
+ dependencies: [
+ device_lib,
+ riscv_crt,
+ sw_lib_mmio,
+ sw_lib_runtime_hart,
+ sw_lib_runtime_log,
+ sw_sca_lib_prng,
+ sw_sca_lib_sca,
+ sw_sca_lib_simple_serial,
+ sca_program_info['dependency'],
+ ]
+ )
- aes_serial_bin = custom_target(
- target_name.format('bin'),
- input: aes_serial_elf,
- kwargs: elf_to_bin_custom_target_args,
- )
+ target_name = sca_program_name + '_@0@_' + device_name
- aes_serial_vmem32 = custom_target(
- target_name.format('vmem32'),
- input: aes_serial_bin,
- kwargs: bin_to_vmem32_custom_target_args,
- )
+ sca_program_dis = custom_target(
+ target_name.format('dis'),
+ input: sca_program_elf,
+ kwargs: elf_to_dis_custom_target_args,
+ )
- aes_serial_vmem64 = custom_target(
- target_name.format('vmem64'),
- input: aes_serial_bin,
- kwargs: bin_to_vmem64_custom_target_args,
- )
+ sca_program_bin = custom_target(
+ target_name.format('bin'),
+ input: sca_program_elf,
+ kwargs: elf_to_bin_custom_target_args,
+ )
- custom_target(
- target_name.format('export'),
- command: export_target_command,
- depend_files: [export_target_depend_files,],
- input: [
- aes_serial_elf,
- aes_serial_dis,
- aes_serial_bin,
- aes_serial_vmem32,
- aes_serial_vmem64,
- ],
- output: target_name.format('export'),
- build_always_stale: true,
- build_by_default: true,
- )
+ sca_program_vmem32 = custom_target(
+ target_name.format('vmem32'),
+ input: sca_program_bin,
+ kwargs: bin_to_vmem32_custom_target_args,
+ )
+
+ sca_program_vmem64 = custom_target(
+ target_name.format('vmem64'),
+ input: sca_program_bin,
+ kwargs: bin_to_vmem64_custom_target_args,
+ )
+
+ custom_target(
+ target_name.format('export'),
+ command: export_target_command,
+ depend_files: [export_target_depend_files,],
+ input: [
+ sca_program_elf,
+ sca_program_dis,
+ sca_program_bin,
+ sca_program_vmem32,
+ sca_program_vmem64,
+ ],
+ output: target_name.format('export'),
+ build_always_stale: true,
+ build_by_default: true,
+ )
+ endforeach
endforeach