blob: 9483add59965e53dd22cb4923efc457dce2ff00e [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
# Mask ROM Linker Parameters
#
# See sw/device/exts/common/flash_link.ld for additional info about these
# parameters.
rom_linkfile = files(['mask_rom.ld'])
rom_link_args = [
'-Wl,-L,@0@'.format(meson.source_root()),
'-Wl,-T,@0@/@1@'.format(meson.source_root(), rom_linkfile[0]),
# 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,
name_suffix: 'elf',
link_depends: rom_link_deps,
dependencies: [
device_lib,
mask_rom_lib,
],
)
mask_rom_embedded = custom_target(
'mask_rom_' + device_name,
command: make_embedded_target_command,
depend_files: [make_embedded_target_depend_files,],
input: mask_rom_elf,
output: make_embedded_target_outputs,
build_by_default: true,
)
mask_rom_scrambled = custom_target(
'mask_rom_scrambled_' + device_name,
command: scramble_image_command,
depend_files: scramble_image_depend_files,
input: mask_rom_elf,
output: scramble_image_outputs,
build_by_default: true,
)
custom_target(
'mask_rom_export_' + device_name,
command: export_target_command,
depend_files: [export_target_depend_files,],
input: [
mask_rom_elf,
mask_rom_embedded,
mask_rom_scrambled,
],
output: 'mask_rom_export_' + device_name,
build_always_stale: true,
build_by_default: true,
)
endforeach