1#------------------------------------------------------------------------------- 2# Copyright (c) 2020-2024, Arm Limited. All rights reserved. 3# Copyright (c) 2022 Cypress Semiconductor Corporation (an Infineon company) 4# or an affiliate of Cypress Semiconductor Corporation. All rights reserved. 5# 6# SPDX-License-Identifier: BSD-3-Clause 7# 8#------------------------------------------------------------------------------- 9 10#################################################################################################### 11# These configurations below are not included in Kconfig configuration system. 12 13set(TFM_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/toolchain_GNUARM.cmake CACHE FILEPATH "Path to TFM compiler toolchain file") 14set(TFM_PLATFORM "" CACHE STRING "Platform to build TF-M for. Must be either a relative path from [TF-M]/platform/ext/target, or an absolute path.") 15set(CROSS_COMPILE arm-none-eabi CACHE STRING "Cross-compilation triplet") 16 17set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/api_ns CACHE PATH "Install prefix") 18 19set(INTERFACE_INC_DIR ${CMAKE_SOURCE_DIR}/interface/include) 20set(INTERFACE_SRC_DIR ${CMAKE_SOURCE_DIR}/interface/src) 21 22set(INSTALL_INTERFACE_INC_DIR ${CMAKE_INSTALL_PREFIX}/interface/include) 23set(INSTALL_INTERFACE_SRC_DIR ${CMAKE_INSTALL_PREFIX}/interface/src) 24set(INSTALL_INTERFACE_LIB_DIR ${CMAKE_INSTALL_PREFIX}/interface/lib) 25set(INSTALL_IMAGE_SIGNING_DIR ${CMAKE_INSTALL_PREFIX}/image_signing) 26set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/cmake) 27set(INSTALL_CONFIG_DIR ${CMAKE_INSTALL_PREFIX}/config) 28set(INSTALL_PLATFORM_NS_DIR ${CMAKE_INSTALL_PREFIX}/platform) 29 30set(TFM_DEBUG_SYMBOLS ON CACHE BOOL "Add debug symbols. Note that setting CMAKE_BUILD_TYPE to Debug or RelWithDebInfo will also add debug symbols.") 31set(TFM_CODE_COVERAGE OFF CACHE BOOL "Whether to build the binary for lcov tools") 32 33set(TFM_TESTS_REVISION_CHECKS ON CACHE BOOL "Whether to perform checks on the tf-m-tests repository revision.") 34 35set(PROJECT_CONFIG_HEADER_FILE "" CACHE FILEPATH "User defined header file for TF-M config") 36 37# External libraries source and version 38set(MBEDCRYPTO_PATH "DOWNLOAD" CACHE PATH "Path to Mbed Crypto (or DOWNLOAD to fetch automatically") 39set(MBEDCRYPTO_FORCE_PATCH OFF CACHE BOOL "Always apply MBed Crypto patches") 40set(MBEDCRYPTO_VERSION "mbedtls-3.6.0" CACHE STRING "The version of Mbed Crypto to use") 41set(MBEDCRYPTO_GIT_REMOTE "https://github.com/Mbed-TLS/mbedtls.git" CACHE STRING "The URL (or path) to retrieve MbedTLS from.") 42 43set(MCUBOOT_PATH "DOWNLOAD" CACHE PATH "Path to MCUboot (or DOWNLOAD to fetch automatically") 44set(MCUBOOT_VERSION "v2.1.0" CACHE STRING "The version of MCUboot to use") 45 46set(PLATFORM_PSA_ADAC_SECURE_DEBUG FALSE CACHE BOOL "Whether to use psa-adac secure debug.") 47set(PLATFORM_PSA_ADAC_SOURCE_PATH "DOWNLOAD" CACHE PATH "Path to source dir of psa-adac.") 48set(PLATFORM_PSA_ADAC_VERSION "5f5490cebe66" CACHE STRING "The version of psa-adac to use.") 49 50set(PLATFORM_IS_FVP FALSE CACHE BOOL "Whether to enable FVP or FPGA build of the platform.") 51 52set(CODE_SHARING_OUTPUT_FILE_SUFFIX "_shared_symbols.axf" CACHE STRING "Suffix to use for code-sharing output files") 53set(CODE_SHARING_INPUT_FILE_SUFFIX "_shared_symbols.axf" CACHE STRING "Suffix to use for code-sharing input files") 54 55#################################################################################################### 56# These configurations below are also referred by Kconfig configuration system, 57# together with TF-M Header File Config System options. 58 59set(BL1 OFF CACHE BOOL "Whether to build BL1") 60set(BL2 ON CACHE BOOL "Whether to build BL2") 61set(NS_EVALUATION_APP_PATH "" CACHE PATH "Path to TFM NS Evaluation Application") 62 63set(TFM_ISOLATION_LEVEL 1 CACHE STRING "Isolation level") 64set(PSA_FRAMEWORK_HAS_MM_IOVEC OFF CACHE BOOL "Enable MM-IOVEC") 65set(TFM_PROFILE "" CACHE STRING "Profile to use") 66set(TFM_FIH_PROFILE OFF CACHE STRING "Fault injection hardening profile [OFF, LOW, MEDIUM, HIGH]") 67set(CONFIG_TFM_SPM_BACKEND "SFN" CACHE STRING "The SPM backend [IPC, SFN]") 68 69# An NSPE client_id is provided by the NSPE OS via the SPM or directly by the SPM. 70# When `TFM_NS_MANAGE_NSID` is `ON`, TF-M supports NSPE OS providing NSPE client_id. 71set(TFM_NS_MANAGE_NSID OFF CACHE BOOL "Support NSPE OS providing NSPE client_id") 72 73set(TFM_EXTRA_CONFIG_PATH "" CACHE PATH "Path to extra cmake config file") 74 75set(TFM_MANIFEST_LIST ${CMAKE_SOURCE_DIR}/tools/tfm_manifest_list.yaml CACHE FILEPATH "TF-M native Secure Partition manifests list file") 76 77set(TFM_CODE_SHARING OFF CACHE PATH "Enable code sharing between MCUboot and secure firmware") 78set(CONFIG_TFM_BOOT_STORE_MEASUREMENTS ON CACHE BOOL "Store measurement values from all the boot stages. Used for initial attestation token.") 79set(CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS ON CACHE BOOL "Enable storing of encoded measurements in boot.") 80 81set(TFM_PXN_ENABLE OFF CACHE BOOL "Use Privileged execute never (PXN)") 82 83set(TFM_EXCEPTION_INFO_DUMP OFF CACHE BOOL "On fatal errors in the secure firmware, capture info about the exception. Print the info if the SPM log level is sufficient.") 84set(TFM_LOG_FATAL_ERRORS OFF CACHE BOOL "Log fatal errors when they occur to aid debugging") 85set(TFM_LOG_NONFATAL_ERRORS OFF CACHE BOOL "Log non-fatal errors when they occur to aid debugging") 86set(TFM_HALT_ON_FATAL_ERRORS OFF CACHE BOOL "On fatal errors in the secure firmware, halt immediately to allow debugging") 87set(TFM_LOG_ERR_FILE_AND_LINE OFF CACHE BOOL "Log file name and line numbers of fatal and non-fatal errors") 88 89set(CONFIG_TFM_HALT_ON_CORE_PANIC OFF CACHE BOOL "On fatal errors in the secure firmware, halt instead of rebooting.") 90 91set(CONFIG_TFM_STACK_WATERMARKS OFF CACHE BOOL "Whether to pre-fill partition stacks with a set value to help determine stack usage") 92 93############################ Platform ########################################## 94 95set(NUM_MAILBOX_QUEUE_SLOT 1 CACHE BOOL "Number of mailbox queue slots") 96set(TFM_PLAT_SPECIFIC_MULTI_CORE_COMM OFF CACHE BOOL "Whether to use a platform specific inter-core communication instead of mailbox in dual-cpu topology") 97 98set(DEBUG_AUTHENTICATION CHIP_DEFAULT CACHE STRING "Debug authentication setting. [CHIP_DEFAULT, NONE, NS_ONLY, FULL") 99set(SECURE_UART1 OFF CACHE BOOL "Enable secure UART1") 100 101set(CRYPTO_HW_ACCELERATOR OFF CACHE BOOL "Whether to enable the crypto hardware accelerator on supported platforms") 102 103set(OTP_NV_COUNTERS_RAM_EMULATION OFF CACHE BOOL "Enable OTP/NV_COUNTERS emulation in RAM. Has no effect on non-default implementations of the OTP and NV_COUNTERS") 104set(TFM_NS_NV_COUNTER_AMOUNT 0 CACHE STRING "How many NS NV counters are enabled") 105 106set(PLATFORM_DEFAULT_BL1 ON CACHE STRING "Whether to use default BL1 or platform-specific one") 107 108set(PLATFORM_DEFAULT_ATTEST_HAL ON CACHE BOOL "Use default attest hal implementation.") 109set(PLATFORM_DEFAULT_NV_COUNTERS ON CACHE BOOL "Use default nv counter implementation.") 110set(PLATFORM_DEFAULT_CRYPTO_KEYS ON CACHE BOOL "Use default crypto keys implementation.") 111set(PLATFORM_DEFAULT_ROTPK ON CACHE BOOL "Use default root of trust public key.") 112set(PLATFORM_DEFAULT_IAK ON CACHE BOOL "Use default initial attestation_key.") 113set(PLATFORM_DEFAULT_UART_STDOUT ON CACHE BOOL "Use default uart stdout implementation.") 114set(PLATFORM_DEFAULT_NV_SEED ON CACHE BOOL "Use default NV seed implementation.") 115set(PLATFORM_DEFAULT_OTP ON CACHE BOOL "Use trusted on-chip flash to implement OTP memory") 116set(PLATFORM_DEFAULT_OTP_WRITEABLE ON CACHE BOOL "Use OTP memory with write support") 117set(PLATFORM_DEFAULT_PROVISIONING ON CACHE BOOL "Use default provisioning implementation") 118set(PLATFORM_DEFAULT_SYSTEM_RESET_HALT ON CACHE BOOL "Use default system reset/halt implementation") 119set(PLATFORM_DEFAULT_IMAGE_SIGNING ON CACHE BOOL "Use default image signing implementation") 120 121set(TFM_DUMMY_PROVISIONING ON CACHE BOOL "Provision with dummy values. NOT to be used in production") 122 123set(BL1_HEADER_SIZE 0x000 CACHE STRING "BL1 Header size") 124set(BL1_TRAILER_SIZE 0x000 CACHE STRING "BL1 Trailer size") 125 126set(BL2_HEADER_SIZE 0x000 CACHE STRING "BL2 Header size") 127set(BL2_TRAILER_SIZE 0x000 CACHE STRING "BL2 Trailer size") 128 129############################ Partitions ######################################## 130set(TFM_PARTITION_PROTECTED_STORAGE OFF CACHE BOOL "Enable Protected Storage partition") 131set(PS_ENCRYPTION ON CACHE BOOL "Enable encryption for Protected Storage partition") 132set(PS_CRYPTO_AEAD_ALG PSA_ALG_GCM CACHE STRING "The AEAD algorithm to use for authenticated encryption in Protected Storage") 133 134set(TFM_PARTITION_INTERNAL_TRUSTED_STORAGE OFF CACHE BOOL "Enable Internal Trusted Storage partition") 135set(ITS_ENCRYPTION OFF CACHE BOOL "Enable authenticated encryption of ITS files using platform specific APIs") 136 137set(TFM_PARTITION_CRYPTO OFF CACHE BOOL "Enable Crypto partition") 138set(CRYPTO_TFM_BUILTIN_KEYS_DRIVER ON CACHE BOOL "Whether to allow crypto service to store builtin keys. Without this, ALL builtin keys must be stored in a platform-specific location") 139 140set(TFM_PARTITION_INITIAL_ATTESTATION OFF CACHE BOOL "Enable Initial Attestation partition") 141set(SYMMETRIC_INITIAL_ATTESTATION OFF CACHE BOOL "Use symmetric crypto for inital attestation") 142set(ATTEST_INCLUDE_TEST_CODE OFF CACHE BOOL "Include minimal development tests in the initial attestation regression test suite") 143set(ATTEST_KEY_BITS 256 CACHE STRING "The size of the initial attestation key in bits") 144set(PSA_INITIAL_ATTEST_MAX_TOKEN_SIZE 0x250 CACHE STRING "The maximum possible size of a token") 145 146set(TFM_PARTITION_PLATFORM OFF CACHE BOOL "Enable Platform partition") 147 148############################ Mbedcrypto configurations ######################### 149 150set(MBEDCRYPTO_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Build type of Mbed Crypto library") 151set(TFM_MBEDCRYPTO_CONFIG_PATH 152 "${CMAKE_SOURCE_DIR}/lib/ext/mbedcrypto/mbedcrypto_config/tfm_mbedcrypto_config_default.h" CACHE PATH 153 "Config to use for Mbed Crypto. For increased flexibility when pointing to a file, set the type \ 154of this setting to 'STRING' by passing the :<type> portion when specifying the setting value in \ 155the command line. E.g. '-DTFM_MBEDCRYPTO_CONFIG_PATH:STRING=some_file_which_is_generated.h' \ 156This can be useful if the config file is generated and placed inside a directory already added \ 157to the include path of mbedtls.") 158set(TFM_MBEDCRYPTO_PSA_CRYPTO_CONFIG_PATH "${CMAKE_SOURCE_DIR}/lib/ext/mbedcrypto/mbedcrypto_config/crypto_config_default.h" CACHE PATH "Config to use psa crypto setting for Mbed Crypto.") 159set(TFM_MBEDCRYPTO_PLATFORM_EXTRA_CONFIG_PATH "" CACHE PATH "Config to append to standard Mbed Crypto config, used by platforms to cnfigure feature support") 160 161########################## TF-M performance #################################### 162 163set(CONFIG_TFM_ENABLE_PROFILING OFF CACHE BOOL "Enable profiling for TF-M") 164 165########################## MCUBoot signing ##################################### 166 167if (CONFIG_TFM_BOOT_STORE_MEASUREMENTS AND CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS) 168 set(MCUBOOT_MEASURED_BOOT ON) 169else() 170 set(MCUBOOT_MEASURED_BOOT OFF) 171endif() 172 173########################## TF-M Runtime Sanitization ########################### 174 175set(BL1_1_SANITIZE OFF CACHE STRING "Enable a runtime sanitizer for BL1_1") 176set(BL1_2_SANITIZE OFF CACHE STRING "Enable a runtime sanitizer for BL1_2") 177set(BL2_SANITIZE OFF CACHE STRING "Enable a runtime sanitizer for BL2") 178set(TFM_SANITIZE OFF CACHE STRING "Enable a runtime sanitizer for the TF-M runtime") 179 180################################################################################ 181 182# Specifying the accepted values for certain configuration options to facilitate 183# their later validation. 184 185########################## FIH ################################################# 186 187set_property(CACHE TFM_FIH_PROFILE PROPERTY STRINGS "OFF;LOW;MEDIUM;HIGH") 188 189########################## TF-M Runtime Sanitization ########################### 190 191set(SANITIZE_OPTIONS "undefined;shift;shift-exponent;shift-base; integer-divide-by-zero;unreachable;vla-bound; null;return;signed-integer-overflow;bounds; bounds-strict;alignment;object-size; float-divide-by-zero;float-cast-overflow; nonnull-attribute;returns-nonnull-attribute; bool;enum;vptr;pointer-overflow;builtin") 192 193set_property(CACHE BL1_1_SANITIZE PROPERTY STRINGS ${SANITIZE_OPTIONS}) 194set_property(CACHE BL1_2_SANITIZE PROPERTY STRINGS ${SANITIZE_OPTIONS}) 195set_property(CACHE BL2_SANITIZE PROPERTY STRINGS ${SANITIZE_OPTIONS}) 196set_property(CACHE TFM_SANITIZE PROPERTY STRINGS ${SANITIZE_OPTIONS}) 197