blob: 73e7b426bfb4e24a1dfb4a2d104c9343a3aaf003 [file] [log] [blame]
#-------------------------------------------------------------------------------
# Copyright (c) 2021-2024, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
find_package(Python3)
add_subdirectory(lib)
add_subdirectory(shared_lib)
add_executable(bl1_1)
set_target_properties(bl1_1
PROPERTIES
SUFFIX ".axf"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
add_convert_to_bin_target(bl1_1)
target_link_options(bl1_1
PRIVATE
$<$<C_COMPILER_ID:GNU>:-Wl,-Map=${CMAKE_BINARY_DIR}/bin/bl1_1.map>
$<$<C_COMPILER_ID:ARMClang>:--map>
$<$<C_COMPILER_ID:IAR>:--map\;${CMAKE_BINARY_DIR}/bin/bl1_1.map>
)
target_compile_options(bl1_1
PUBLIC
${BL1_COMPILER_CP_FLAG}
)
target_link_options(bl1_1
PUBLIC
${BL1_LINKER_CP_OPTION}
)
target_sources(bl1_1
PRIVATE
main.c
$<$<BOOL:${CONFIG_GNU_SYSCALL_STUB_ENABLED}>:${CMAKE_SOURCE_DIR}/platform/ext/common/syscalls_stub.c>
)
target_link_libraries(bl1_1
PRIVATE
bl1_1_lib
bl1_1_shared_lib
platform_bl1_1
$<$<BOOL:${TEST_BL1_1}>:bl1_1_tests>
)
target_compile_definitions(bl1_1
PRIVATE
$<$<BOOL:${TEST_BL1_1}>:TEST_BL1_1>
$<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<NOT:$<BOOL:${CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS}>>>:TFM_MEASURED_BOOT_API>
)
target_share_symbols(bl1_1 ${BL1_SHARED_SYMBOLS_PATH})
################################################################################
add_library(signing_layout_bl1_2 OBJECT signing_layout.c)
target_compile_options(signing_layout_bl1_2
PRIVATE
$<$<C_COMPILER_ID:GNU>:-E\;-xc>
$<$<C_COMPILER_ID:ARMClang>:-E\;-xc>
$<$<C_COMPILER_ID:IAR>:--preprocess=ns\;$<TARGET_OBJECTS:signing_layout_bl1_2>>
)
target_link_libraries(signing_layout_bl1_2
PRIVATE
platform_region_defs
)
################################################################################
get_target_property(bin_dir bl1_2 RUNTIME_OUTPUT_DIRECTORY)
add_custom_target(bl1_2_padded_bin
ALL
SOURCES bl1_2_padded.bin ${bin_dir}/bl1_2_padded.bin
SOURCES bl1_2_padded_hash.bin ${bin_dir}/bl1_2_padded_hash.bin
)
add_custom_command(OUTPUT bl1_2_padded.bin bl1_2_padded_hash.bin
OUTPUT ${bin_dir}/bl1_2_padded.bin ${bin_dir}/bl1_2_padded_hash.bin
DEPENDS $<TARGET_FILE_DIR:bl1_2>/bl1_2.bin bl1_2_bin signing_layout_bl1_2
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/create_bl1_2_img.py
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/create_bl1_2_img.py
--input_file $<TARGET_FILE_DIR:bl1_2>/bl1_2.bin
--img_output_file bl1_2_padded.bin
--hash_output_file bl1_2_padded_hash.bin
--signing_layout_file $<TARGET_OBJECTS:signing_layout_bl1_2>
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/bl1_2_padded.bin $<TARGET_FILE_DIR:bl1_2>
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/bl1_2_padded_hash.bin $<TARGET_FILE_DIR:bl1_2>
)
################################################################################
if (TFM_BL1_DEFAULT_PROVISIONING)
add_custom_target(bl1_provisioning_bundle
ALL
SOURCES bl1_provisioning_bundle.bin
)
add_custom_command(OUTPUT bl1_provisioning_bundle.bin
DEPENDS ${TFM_BL2_ENCRYPTION_KEY_PATH}
DEPENDS ${TFM_GUK_PATH}
DEPENDS $<TARGET_FILE_DIR:bl1_2>/bl1_2_padded_hash.bin
DEPENDS $<TARGET_FILE_DIR:bl2>/bl2_signed_hash.bin
DEPENDS $<TARGET_FILE_DIR:bl1_2>/bl1_2_padded.bin
bl1_2_padded_bin bl2_signed_bin
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/create_provisioning_bundle.py
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/create_provisioning_bundle.py
--bl2_encryption_key_input_file ${TFM_BL2_ENCRYPTION_KEY_PATH}
--bl2_signing_key_input_file ${TFM_BL2_SIGNING_KEY_PATH}
--guk_input_file ${TFM_GUK_PATH}
--bl1_2_padded_hash_input_file $<TARGET_FILE_DIR:bl1_2>/bl1_2_padded_hash.bin
--bl2_signed_hash_input_file $<TARGET_FILE_DIR:bl2>/bl2_signed_hash.bin
--bl1_2_input_file $<TARGET_FILE_DIR:bl1_2>/bl1_2_padded.bin
--bundle_output_file bl1_provisioning_bundle.bin
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/bl1_provisioning_bundle.bin $<TARGET_FILE_DIR:bl1_1>
)
endif()