blob: f5d1e3d48a8d0a5c4b4fffeaee49d4b703947981 [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
# ROM_EXT ePMP library
sw_silicon_creator_rom_ext_epmp = declare_dependency(
link_with: static_library(
'sw_silicon_creator_rom_ext_epmp',
sources: [
'rom_ext_epmp.c',
],
dependencies: [
sw_silicon_creator_lib_epmp,
],
)
)
# ROM_EXT boot policy.
sw_silicon_creator_rom_ext_boot_policy = declare_dependency(
link_with: static_library(
'sw_silicon_creator_rom_ext_boot_policy',
sources: [
'rom_ext_boot_policy.c',
],
dependencies: [
sw_silicon_creator_lib_manifest,
],
),
)
test('sw_silicon_creator_rom_ext_boot_policy_unittest', executable(
'sw_silicon_creator_rom_ext_boot_policy_unittest',
sources: [
'rom_ext_boot_policy_unittest.cc',
'rom_ext_boot_policy.c',
],
dependencies: [
sw_vendor_gtest,
],
native: true,
c_args: ['-DOT_OFF_TARGET_TEST'],
cpp_args: ['-DOT_OFF_TARGET_TEST'],
),
suite: 'rom_ext',
)
# Mask ROM Linker Parameters
#
# See `sw/device/lib/testing/test_framework/ottf.ld` for additional info
# about these parameters.
rom_ext_linkfile_slot_a = files(['rom_ext_slot_a.ld'])
rom_ext_linkfile_slot_b = files(['rom_ext_slot_b.ld'])
rom_ext_link_info = {
'rom_ext_slot_a' :
[
# Link arguments for slot A.
[
'-Wl,-L,@0@'.format(meson.source_root()),
'-Wl,-T,@0@/@1@'.format(meson.source_root(), rom_ext_linkfile_slot_a[0]),
] + embedded_target_extra_link_args,
# Link dependency file for slot A.
[
rom_ext_linkfile_slot_a,
],
],
'rom_ext_slot_b' :
[
# Link arguments for slot B.
[
'-Wl,-L,@0@'.format(meson.source_root()),
'-Wl,-T,@0@/@1@'.format(meson.source_root(), rom_ext_linkfile_slot_b[0]),
] + embedded_target_extra_link_args,
# Link dependency file for slot B.
[
rom_ext_linkfile_slot_b,
],
],
}
rom_ext_slot_libs = {}
foreach slot, slot_link_args : rom_ext_link_info
rom_ext_slot_libs += {
slot: declare_dependency(
sources: [
'rom_ext_start.S',
],
link_args: slot_link_args[0],
dependencies: [
freestanding_headers,
sw_silicon_creator_lib_base_sec_mmio,
sw_silicon_creator_lib_driver_flash_ctrl,
sw_silicon_creator_lib_driver_hmac,
sw_silicon_creator_lib_driver_otp,
sw_silicon_creator_lib_driver_pinmux,
sw_silicon_creator_lib_driver_uart,
sw_silicon_creator_lib_fake_deps,
sw_silicon_creator_lib_log,
sw_silicon_creator_lib_shutdown,
sw_silicon_creator_lib_manifest_section,
sw_silicon_creator_mask_rom_sigverify,
sw_silicon_creator_rom_ext_epmp,
sw_silicon_creator_rom_ext_boot_policy,
sw_lib_crt,
],
link_with: static_library(
slot + '_rom_ext_lib',
sources: [
'rom_ext.c',
],
link_depends: [slot_link_args[1]],
)
)
}
endforeach
foreach device_name, device_lib : sw_lib_arch_core_devices
foreach slot, slot_lib : rom_ext_slot_libs
rom_ext_elf = executable(
slot + '_' + device_name,
name_suffix: 'elf',
dependencies: [
device_lib,
slot_lib,
],
)
target_name = slot + '_@0@_' + device_name
rom_ext_dis = custom_target(
target_name.format('dis'),
input: rom_ext_elf,
kwargs: elf_to_dis_custom_target_args,
)
rom_ext_bin = custom_target(
target_name.format('bin'),
input: rom_ext_elf,
kwargs: elf_to_bin_custom_target_args,
)
targets_to_export = [
rom_ext_elf,
rom_ext_dis,
rom_ext_bin,
]
foreach key_name, key_info : signing_keys
signed_target_name = '_'.join(['rom_ext', slot, key_name, 'signed', '@0@', device_name])
rom_ext_signed_bin = custom_target(
signed_target_name.format('bin'),
input: rom_ext_bin,
output: '@BASENAME@.@0@.signed.bin'.format(key_name),
command: [
rom_ext_signer_export.full_path(),
'rom_ext',
'@INPUT@',
key_info['path'],
rom_ext_elf.full_path(),
'@OUTPUT@',
],
depends: rom_ext_signer_export,
build_by_default: true,
)
rom_ext_signed_vmem32 = custom_target(
signed_target_name.format('vmem32'),
input: rom_ext_signed_bin,
kwargs: bin_to_vmem32_custom_target_args,
)
rom_ext_signed_vmem64 = custom_target(
signed_target_name.format('vmem64'),
input: rom_ext_signed_bin,
kwargs: bin_to_vmem64_custom_target_args,
)
rom_ext_signed_scr_vmem64 = custom_target(
signed_target_name.format('scrambled'),
input: rom_ext_signed_vmem64,
output: flash_image_outputs,
command: flash_image_command,
depend_files: flash_image_depend_files,
build_by_default: true,
)
targets_to_export += [
rom_ext_signed_bin,
rom_ext_signed_vmem32,
rom_ext_signed_vmem64,
rom_ext_signed_scr_vmem64,
]
endforeach
custom_target(
target_name.format('export'),
command: export_target_command,
depend_files: [export_target_depend_files,],
input: targets_to_export,
output: target_name.format('export'),
build_always_stale: true,
build_by_default: true,
)
endforeach
endforeach