131 lines
3.9 KiB
CMake
Executable File
131 lines
3.9 KiB
CMake
Executable File
armino_build_get_property(target ARMINO_SOC)
|
|
|
|
if(NOT "${target}" STREQUAL "bk7236")
|
|
return()
|
|
endif()
|
|
|
|
set(incs)
|
|
set(srcs)
|
|
|
|
if (CONFIG_TFM)
|
|
list(APPEND srcs
|
|
tfm_ns_interface.c
|
|
tfm/interface/src/tfm_psa_ns_api.c
|
|
)
|
|
list(APPEND incs
|
|
tfm/interface/include
|
|
tfm/secure_fw/include
|
|
${CMAKE_BINARY_DIR}/armino/tfm/generated/interface/include
|
|
)
|
|
endif()
|
|
|
|
if (CONFIG_TFM_SYSTEM_CLOCK)
|
|
list(APPEND srcs
|
|
tfm/interface/src/tfm_system_clock_ipc_api.c
|
|
)
|
|
endif()
|
|
|
|
if (CONFIG_TFM_FWU)
|
|
list(APPEND srcs
|
|
tfm/interface/src/tfm_firmware_update_ipc_api.c
|
|
)
|
|
endif()
|
|
|
|
if (CONFIG_TFM_CRYPTO)
|
|
list(APPEND srcs
|
|
tfm/interface/src/tfm_crypto_ipc_api.c
|
|
)
|
|
endif()
|
|
|
|
if (CONFIG_TFM_PS)
|
|
list(APPEND srcs
|
|
tfm/interface/src/tfm_ps_ipc_api.c
|
|
)
|
|
endif()
|
|
|
|
|
|
armino_component_register(SRCS "${srcs}"
|
|
INCLUDE_DIRS "${incs}"
|
|
REQUIRES partitions)
|
|
|
|
if (CONFIG_TFM)
|
|
armino_build_get_property(partition_hdr_dir PARTITIONS_HDR_DIR)
|
|
set(armino_dir ${COMPONENT_DIR}/../..)
|
|
set(tfm_dir ${COMPONENT_DIR}/tfm)
|
|
set(tfm_platform beken/${target})
|
|
set(tfm_toolchain_path ${CONFIG_TOOLCHAIN_PATH})
|
|
set(tfm_build_dir ${CMAKE_BINARY_DIR}/armino/tfm)
|
|
set(tfm_install_dir ${CMAKE_BINARY_DIR}/tfm_install)
|
|
|
|
include(ExternalProject)
|
|
ExternalProject_Add(tfm_project
|
|
SOURCE_DIR ${tfm_dir}
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_IN_SOURCE 1
|
|
CMAKE_ARGS
|
|
BUILD_COMMAND
|
|
cmake
|
|
-G Ninja
|
|
-B ${tfm_build_dir}
|
|
-DCMAKE_PREFIX_PATH=${tfm_toolchain_path}
|
|
-DCMAKE_INSTALL_PREFIX=${tfm_install_dir}
|
|
-DARMINO_SDK_PATH=${armino_path}
|
|
-DTFM_PLATFORM=${tfm_platform}
|
|
-DTFM_TOOLCHAIN_FILE=toolchain_GNUARM.cmake
|
|
-DCMAKE_BUILD_TYPE=${CONFIG_TFM_BUILD_TYPE}
|
|
-DTEST_S=${CONFIG_TFM_TEST_S}
|
|
-DTEST_NS=${CONFIG_TFM_TEST_NS}
|
|
-DUSER=$ENV{USER}
|
|
-DBL2=${CONFIG_TFM_BL2}
|
|
-DTFM_PROFILE=profile_medium
|
|
-DFPGA=${CONFIG_TFM_FPGA}
|
|
-DOTP_NV_COUNTERS_RAM_EMULATION=${CONFIG_OTP_NV_COUNTERS_RAM_EMULATION}
|
|
-DPLATFORM_DEFAULT_OTP_WRITEABLE=${CONFIG_PLATFORM_DEFAULT_OTP_WRITEABLE}
|
|
-DMCUBOOT_LOG_LEVEL=${CONFIG_TFM_BL2_LOG_LEVEL}
|
|
-DPARTITION_HDR_DIR=${partition_hdr_dir}
|
|
-DMCUBOOT_UPGRADE_STRATEGY=${CONFIG_BL2_UPGRADE_STRATEGY}
|
|
-DTFM_AON_PMU_LL_NSC=${CONFIG_TFM_AON_PMU_LL_NSC}
|
|
-DTFM_SYS_LL_NSC=${CONFIG_TFM_SYS_LL_NSC}
|
|
-DCONFIG_TFM_BK7236_V5=${CONFIG_TFM_BK7236_V5}
|
|
-DBL2_DOWNLOAD=${CONFIG_TFM_BL2_DOWNLOAD}
|
|
-DBL2_SECURE_DEBUG=${CONFIG_TFM_SECURE_DEBUG}
|
|
-DCONFIG_REG_ACCESS_NSC=${CONFIG_TFM_REG_ACCESS_NSC}
|
|
-DCONFIG_MPC_NSC=${CONFIG_TFM_MPC_NSC}
|
|
-DCONFIG_FLASH_NSC=${CONFIG_TFM_FLASH_NSC}
|
|
-DCONFIG_DUBHE_KEY_LADDER_NSC=${CONFIG_TFM_DUBHE_KEY_LADDER_NSC}
|
|
-DCONFIG_OTP_NSC=${CONFIG_TFM_OTP_NSC}
|
|
-DCONFIG_INT_TARGET_NSC=${CONFIG_TFM_INT_TARGET_NSC}
|
|
-DCONFIG_TFM_MPU=${CONFIG_TFM_MPU}
|
|
-DCONFIG_TFM_PANIC_DEAD_LOOP=${CONFIG_TFM_PANIC_DEAD_LOOP}
|
|
-DCONFIG_XIP_NO_VERSION=${CONFIG_XIP_NO_VERSION}
|
|
-DCONFIG_BL2_VALIDATE_ENABLED_BY_EFUSE=${CONFIG_BL2_VALIDATE_ENABLED_BY_EFUSE}
|
|
-DCONFIG_BL2_SKIP_VALIDATE=${CONFIG_BL2_SKIP_VALIDATE}
|
|
-DCONFIG_BL2_WDT=${CONFIG_BL2_WDT}
|
|
-DCONFIG_PM_NSC=${CONFIG_PM_NSC}
|
|
-DCONFIG_AES_GCM_NSC=${CONFIG_TFM_AES_GCM_NSC}
|
|
-DCONFIG_STARTUP_PERFORMANCE=${CONFIG_STARTUP_PERFORMANCE}
|
|
-DCONFIG_TFM_RAM_SIZE=${CONFIG_CPU0_SPE_RAM_SIZE}
|
|
-DCONFIG_TFM_HEAP_SIZE=${CONFIG_TFM_HEAP_SIZE}
|
|
-DCONFIG_BL2_WDT_PERIOD=${CONFIG_BL2_WDT_PERIOD}
|
|
-DCONFIG_INITIAL_ATTESTATION=${CONFIG_INITIAL_ATTESTATION}
|
|
-DCONFIG_TFM_CRYPTO_IOVEC_BUFFER_SIZE=${CONFIG_TFM_CRYPTO_IOVEC_BUFFER_SIZE}
|
|
&& cd ${tfm_build_dir}
|
|
&& ninja -- install
|
|
BUILD_BYPRODUCTS ${tfm_build_dir}/secure_fw/libtfm_s_veneers.a
|
|
BUILD_ALWAYS 1
|
|
INSTALL_COMMAND ""
|
|
)
|
|
|
|
add_dependencies(${COMPONENT_LIB} tfm_project)
|
|
add_library(lib_tfm STATIC IMPORTED GLOBAL)
|
|
add_dependencies(lib_tfm tfm_project)
|
|
if (CONFIG_TFM_SYSTEM_CLOCK OR CONFIG_TFM_FWU)
|
|
set_target_properties(lib_tfm PROPERTIES IMPORTED_LOCATION ${tfm_build_dir}/secure_fw/libtfm_s_veneers.a)
|
|
target_link_libraries(${COMPONENT_LIB} PUBLIC lib_tfm)
|
|
target_compile_definitions(${COMPONENT_LIB}
|
|
PRIVATE
|
|
TFM_PSA_API
|
|
)
|
|
endif()
|
|
endif()
|