blob: 4c0e80edd3c1f1ff045e653bbb56862c6d8dcb4f [file] [log] [blame]
Raef Coles9ec67e62020-07-10 09:40:35 +01001#-------------------------------------------------------------------------------
Summer Qinf07cc312022-01-05 16:52:54 +08002# Copyright (c) 2020-2022, Arm Limited. All rights reserved.
Raef Coles9ec67e62020-07-10 09:40:35 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
Raef Coles69817322020-10-19 14:14:14 +01008set(TFM_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/toolchain_GNUARM.cmake CACHE FILEPATH "Path to TFM compiler toolchain file")
Jimmy Brisson1f9b7c82021-12-14 10:53:36 -06009set(TFM_MEMORY_USAGE_QUIET OFF CACHE BOOL "Disable the memory usage report")
Jimmy Brisson496d1c42021-06-23 10:33:07 -050010set(TFM_BUILD_LOG_VERBOSE ON CACHE BOOL "Enable much of the printing during the build")
Øyvind Rønningstada9d5eac2021-01-22 14:21:25 +010011set(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.")
Raef Coles69817322020-10-19 14:14:14 +010012set(CROSS_COMPILE arm-none-eabi CACHE STRING "Cross-compilation triplet")
13
Raef Colesf0ba05b2021-11-25 09:57:17 +000014set(BL2 ON CACHE BOOL "Whether to build BL2")
Raef Coles9ec67e62020-07-10 09:40:35 +010015set(NS ON CACHE BOOL "Whether to build NS app")
16
17set(TEST_S OFF CACHE BOOL "Whether to build S regression tests")
18set(TEST_NS OFF CACHE BOOL "Whether to build NS regression tests")
19set(TEST_PSA_API "" CACHE STRING "Which (if any) of the PSA API tests should be compiled")
20
Kevin Peng23a583c2021-09-08 22:33:33 +080021# TFM_LIB_MODEL is the only user configuration for Library Model selection.
22# TFM_PSA_API becomes an internal variable. Please do NOT use it in build command line.
23set(TFM_LIB_MODEL OFF CACHE BOOL "Use secure library model instead of PSA API (IPC model)")
Raef Coles9ec67e62020-07-10 09:40:35 +010024set(TFM_ISOLATION_LEVEL 1 CACHE STRING "Isolation level")
Kevin Peng386374c2021-11-04 14:36:17 +080025set(PSA_FRAMEWORK_HAS_MM_IOVEC OFF CACHE BOOL "Enable MM-IOVEC")
Raef Coles9ec67e62020-07-10 09:40:35 +010026set(TFM_PROFILE "" CACHE STRING "Profile to use")
Tamas Banb881bea2020-11-04 16:18:36 +000027set(TFM_FIH_PROFILE OFF CACHE STRING "Fault injection hardening profile [OFF, LOW, MEDIUM, HIGH]")
Sherry Zhang86a71c62022-01-12 18:19:02 +080028set(CONFIG_TFM_CONN_HANDLE_MAX_NUM 8 CACHE STRING "The maximal number of secure services that are connected or requested at the same time")
Kevin Peng76c0c162022-02-09 22:49:06 +080029set(CONFIG_TFM_SPM_BACKEND "IPC" CACHE STRING "The SPM backend [IPC, SFN]")
Raef Coles9ec67e62020-07-10 09:40:35 +010030
Sherry Zhnag482b88b2021-08-19 17:51:47 +080031# An NSPE client_id is provided by the NSPE OS via the SPM or directly by the SPM.
32# When `TFM_NS_MANAGE_NSID` is `ON`, TF-M supports NSPE OS providing NSPE client_id.
33set(TFM_NS_MANAGE_NSID OFF CACHE BOOL "Support NSPE OS providing NSPE client_id")
Raef Coles9ec67e62020-07-10 09:40:35 +010034
35set(TFM_EXTRA_CONFIG_PATH "" CACHE PATH "Path to extra cmake config file")
Kevin Peng38800662021-07-14 10:28:23 +080036
37set(TFM_MANIFEST_LIST ${CMAKE_SOURCE_DIR}/tools/tfm_manifest_list.yaml CACHE FILEPATH "TF-M native Secure Partition manifests list file")
David Hub2694202021-07-15 14:58:39 +080038set(TFM_EXTRA_MANIFEST_LIST_FILES "" CACHE FILEPATH "Extra manifest list file(s), used to list extra Secure Partition manifests.")
Raef Coles9ec67e62020-07-10 09:40:35 +010039set(TFM_EXTRA_GENERATED_FILE_LIST_PATH "" CACHE PATH "Path to extra generated file list. Appended to stardard TFM generated file list.")
David Hub2694202021-07-15 14:58:39 +080040set(TFM_EXTRA_PARTITION_PATHS "" CACHE PATH "List of extra Secure Partitions directories. An extra Secure Parition folder contains source code, CMakeLists.txt and manifest files")
Raef Coles9ec67e62020-07-10 09:40:35 +010041
Shawn Shanfffd7ee2020-11-23 18:07:54 +080042set(TFM_SPM_LOG_LEVEL TFM_SPM_LOG_LEVEL_INFO CACHE STRING "Set default SPM log level as INFO level")
Shawn Shan9ea2f802020-11-19 11:04:39 +080043set(TFM_PARTITION_LOG_LEVEL TFM_PARTITION_LOG_LEVEL_INFO CACHE STRING "Set default Secure Partition log level as INFO level")
Shawn Shan6f33aad2020-10-16 15:30:17 +080044
Tamas Banf8b0b2d2020-10-26 13:03:13 +000045set(TFM_CODE_SHARING OFF CACHE PATH "Enable code sharing between MCUboot and secure firmware")
46set(TFM_CODE_SHARING_PATH "" CACHE PATH "Path to repo which shares code with secure firmware")
47
Raef Colesa198a442020-11-24 11:42:53 +000048set(TFM_INSTALL_PATH ${CMAKE_BINARY_DIR}/install CACHE PATH "Path to which to install TF-M files")
49
Sebastian Bøeb73f1762021-10-28 14:23:13 +020050set(TFM_DEBUG_SYMBOLS ON CACHE BOOL "Add debug symbols. Note that setting CMAKE_BUILD_TYPE to Debug or RelWithDebInfo will also add debug symbols.")
51set(TFM_CODE_COVERAGE OFF CACHE BOOL "Whether to build the binary for lcov tools")
Karl Zhangf897e9e2021-01-08 17:52:53 +080052
Summer Qin2a299592022-02-07 17:37:10 +080053set(CONFIG_TFM_PARTITION_META OFF CACHE BOOL "Use Partition Metadata Pointer")
Summer Qin2cd2ab72020-04-22 14:55:00 +080054
Summer Qind8395932021-02-25 14:56:49 +080055set(TFM_PXN_ENABLE OFF CACHE BOOL "Use Privileged execute never (PXN)")
56
Øyvind Rønningstadf2c8dad2021-01-15 15:33:33 +010057set(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.")
58
Feder Liang55194382021-11-22 16:45:33 +080059set(CONFIG_TFM_FP "soft" CACHE STRING "FP ABI type in SPE and NSPE: soft-Software ABI, hard-Hardware ABI")
60set(CONFIG_TFM_LAZY_STACKING OFF CACHE BOOL "Enable/disable lazy stacking")
Feder Liangd4dbaa92021-09-07 15:34:46 +080061
Raef Coles9ec67e62020-07-10 09:40:35 +010062############################ Platform ##########################################
63
64set(TFM_MULTI_CORE_TOPOLOGY OFF CACHE BOOL "Whether to build for a dual-cpu architecture")
David Hu8b526d42020-11-27 20:59:52 +080065set(NUM_MAILBOX_QUEUE_SLOT 1 CACHE BOOL "Number of mailbox queue slots")
Mark Horvathdadc1ea2021-03-12 15:39:25 +010066set(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")
David Hu60863942020-10-14 14:49:19 +080067
Raef Coles9ec67e62020-07-10 09:40:35 +010068set(DEBUG_AUTHENTICATION CHIP_DEFAULT CACHE STRING "Debug authentication setting. [CHIP_DEFAULT, NONE, NS_ONLY, FULL")
69set(SECURE_UART1 OFF CACHE BOOL "Enable secure UART1")
70
71set(CRYPTO_HW_ACCELERATOR OFF CACHE BOOL "Whether to enable the crypto hardware accelerator on supported platforms")
Raef Coles9ec67e62020-07-10 09:40:35 +010072
Raef Coles148b9472021-06-18 08:48:17 +010073set(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")
74
Raef Coles33ff1532021-06-18 09:18:08 +010075set(PLATFORM_DEFAULT_ATTEST_HAL ON CACHE BOOL "Use default attest hal implementation.")
76set(PLATFORM_DEFAULT_NV_COUNTERS ON CACHE BOOL "Use default nv counter implementation.")
77set(PLATFORM_DEFAULT_CRYPTO_KEYS ON CACHE BOOL "Use default crypto keys implementation.")
78set(PLATFORM_DEFAULT_ROTPK ON CACHE BOOL "Use default root of trust public key.")
79set(PLATFORM_DEFAULT_IAK ON CACHE BOOL "Use default initial attestation_key.")
80set(PLATFORM_DEFAULT_UART_STDOUT ON CACHE BOOL "Use default uart stdout implementation.")
81set(PLATFORM_DEFAULT_NV_SEED ON CACHE BOOL "Use default NV seed implementation.")
Raef Coles148b9472021-06-18 08:48:17 +010082set(PLATFORM_DEFAULT_OTP ON CACHE BOOL "Use trusted on-chip flash to implement OTP memory")
Michel Jaouend0fd8d92021-10-14 09:22:41 +020083set(PLATFORM_DEFAULT_OTP_WRITEABLE ON CACHE BOOL "Use OTP memory with write support")
Raef Colesaefbe082021-06-18 08:53:43 +010084set(PLATFORM_DEFAULT_PROVISIONING ON CACHE BOOL "Use default provisioning implementation")
85
86set(TFM_DUMMY_PROVISIONING ON CACHE BOOL "Provision with dummy values. NOT to be used in production")
Satish Kumarfab99222021-07-22 16:32:15 +010087set(PLATFORM_IS_FVP FALSE CACHE BOOL "Whether to enable FVP or FPGA build of the platform.")
Raef Coles9ec67e62020-07-10 09:40:35 +010088
Satish Kumare945bc22021-07-31 08:26:27 +010089set(PLATFORM_PSA_ADAC_SECURE_DEBUG FALSE CACHE BOOL "Whether to use psa-adac secure debug.")
90set(PLATFORM_PSA_ADAC_SOURCE_PATH "DOWNLOAD" CACHE PATH "Path to source dir of psa-adac.")
91set(PLATFORM_PSA_ADAC_VERSION "427923cc0152578d536fb2065154d5d0dd874910" CACHE STRING "The version of psa-adac to use.")
92
Raef Colesf0ba05b2021-11-25 09:57:17 +000093set(BL2_HEADER_SIZE 0x000 CACHE STRING "BL2 Header size")
94set(BL2_TRAILER_SIZE 0x000 CACHE STRING "BL2 Trailer size")
95
Raef Coles9ec67e62020-07-10 09:40:35 +010096############################ Partitions ########################################
Jimmy Brisson006bd9c2021-12-14 10:38:57 -060097set(CONFIG_TFM_PARTITION_QUIET OFF CACHE BOOL "Disable printing of partition configuration during build")
Raef Coles9ec67e62020-07-10 09:40:35 +010098set(TFM_PARTITION_PROTECTED_STORAGE ON CACHE BOOL "Enable Protected Storage partition")
Jamie Fox865778b2020-10-23 19:52:51 +010099set(PS_CREATE_FLASH_LAYOUT ON CACHE BOOL "Create flash FS if it doesn't exist for Protected Storage partition")
Raef Coles9ec67e62020-07-10 09:40:35 +0100100set(PS_ENCRYPTION ON CACHE BOOL "Enable encryption for Protected Storage partition")
101set(PS_RAM_FS OFF CACHE BOOL "Enable emulated RAM FS for platforms that don't have flash for Protected Storage partition")
102set(PS_ROLLBACK_PROTECTION ON CACHE BOOL "Enable rollback protection for Protected Storage partition")
Jamie Fox34a7a232020-10-20 16:19:09 +0100103set(PS_VALIDATE_METADATA_FROM_FLASH ON CACHE BOOL "Validate filesystem metadata every time it is read from flash")
Jamie Fox865778b2020-10-23 19:52:51 +0100104set(PS_MAX_ASSET_SIZE "2048" CACHE STRING "The maximum asset size to be stored in the Protected Storage area")
105set(PS_NUM_ASSETS "10" CACHE STRING "The maximum number of assets to be stored in the Protected Storage area")
106set(PS_CRYPTO_AEAD_ALG PSA_ALG_GCM CACHE STRING "The AEAD algorithm to use for authenticated encryption in Protected Storage")
Raef Coles9ec67e62020-07-10 09:40:35 +0100107
108set(TFM_PARTITION_INTERNAL_TRUSTED_STORAGE ON CACHE BOOL "Enable Internal Trusted Storage partition")
Jamie Fox865778b2020-10-23 19:52:51 +0100109set(ITS_CREATE_FLASH_LAYOUT ON CACHE BOOL "Create flash FS if it doesn't exist for Internal Trusted Storage partition")
110set(ITS_RAM_FS OFF CACHE BOOL "Enable emulated RAM FS for platforms that don't have flash for Internal Trusted Storage partition")
Jamie Fox34a7a232020-10-20 16:19:09 +0100111set(ITS_VALIDATE_METADATA_FROM_FLASH ON CACHE BOOL "Validate filesystem metadata every time it is read from flash")
Jamie Fox865778b2020-10-23 19:52:51 +0100112set(ITS_MAX_ASSET_SIZE "512" CACHE STRING "The maximum asset size to be stored in the Internal Trusted Storage area")
113set(ITS_NUM_ASSETS "10" CACHE STRING "The maximum number of assets to be stored in the Internal Trusted Storage area")
Raef Coles9ec67e62020-07-10 09:40:35 +0100114set(ITS_BUF_SIZE "" CACHE STRING "Size of the ITS internal data transfer buffer (defaults to ITS_MAX_ASSET_SIZE if not set)")
115
116set(TFM_PARTITION_CRYPTO ON CACHE BOOL "Enable Crypto partition")
Soby Mathew4739c732020-10-07 12:11:05 +0100117# CRYPTO_ENGINE_BUF_SIZE needs to be >8KB for EC signing by attest module.
Summer Qine8412b42020-10-15 14:20:21 +0800118set(CRYPTO_ENGINE_BUF_SIZE 0x2080 CACHE STRING "Heap size for the crypto backend")
Soby Mathew4739c732020-10-07 12:11:05 +0100119set(CRYPTO_CONC_OPER_NUM 8 CACHE STRING "The max number of concurrent operations that can be active (allocated) at any time in Crypto")
Ioannis Glaropoulos829aa752021-06-15 12:37:02 +0200120set(CRYPTO_RNG_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto random number generator module")
Soby Mathew4739c732020-10-07 12:11:05 +0100121set(CRYPTO_KEY_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto Key module")
122set(CRYPTO_AEAD_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto AEAD module")
123set(CRYPTO_MAC_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto MAC module")
124set(CRYPTO_HASH_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto Hash module")
125set(CRYPTO_CIPHER_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto Cipher module")
David Hu0c250bc2021-05-12 10:55:53 +0800126set(CRYPTO_ASYM_SIGN_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto asymmetric key signature module")
127set(CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto asymmetric key encryption module")
Håkon Øye Amundsen112e48d2021-01-19 15:41:10 +0100128set(CRYPTO_KEY_DERIVATION_MODULE_DISABLED FALSE CACHE BOOL "Disable PSA Crypto key derivation module")
Soby Mathew4739c732020-10-07 12:11:05 +0100129set(CRYPTO_IOVEC_BUFFER_SIZE 5120 CACHE STRING "Default size of the internal scratch buffer used for PSA FF IOVec allocations")
Raef Coles618fc152021-06-18 09:26:46 +0100130set(CRYPTO_NV_SEED ON CACHE BOOL "Use stored NV seed to provide entropy")
Raef Coles9ec67e62020-07-10 09:40:35 +0100131
132set(TFM_PARTITION_INITIAL_ATTESTATION ON CACHE BOOL "Enable Initial Attestation partition")
133set(SYMMETRIC_INITIAL_ATTESTATION OFF CACHE BOOL "Use symmetric crypto for inital attestation")
134set(ATTEST_INCLUDE_OPTIONAL_CLAIMS ON CACHE BOOL "Include optional claims in initial attestation token")
135set(ATTEST_INCLUDE_COSE_KEY_ID OFF CACHE BOOL "Include COSE key-id in initial attestation token")
136
137set(TFM_PARTITION_PLATFORM ON CACHE BOOL "Enable Platform partition")
138
Kevin Peng23a583c2021-09-08 22:33:33 +0800139set(TFM_PARTITION_AUDIT_LOG OFF CACHE BOOL "Enable Audit Log partition")
Raef Coles9ec67e62020-07-10 09:40:35 +0100140
Kevin Peng91449432021-10-18 15:08:05 +0800141set(TFM_PARTITION_PSA_PROXY OFF CACHE BOOL "Enable PSA Proxy partition")
142
Mark Horvathb9ac0d52020-09-09 10:48:22 +0200143set(FORWARD_PROT_MSG OFF CACHE BOOL "Whether to forward all PSA RoT messages to a Secure Enclave")
Sherry Zhang07b42412021-01-07 14:19:41 +0800144set(TFM_PARTITION_FIRMWARE_UPDATE OFF CACHE BOOL "Enable firmware update partition")
Sherry Zhang539ade42021-05-19 15:14:27 +0800145set(TFM_FWU_BOOTLOADER_LIB "mcuboot" CACHE STRING "Bootloader configure file for Firmware Update partition")
Mark Horvathb9ac0d52020-09-09 10:48:22 +0200146
Raef Coles9ec67e62020-07-10 09:40:35 +0100147################################## Dependencies ################################
148
149set(MBEDCRYPTO_PATH "DOWNLOAD" CACHE PATH "Path to Mbed Crypto (or DOWNLOAD to fetch automatically")
Summer Qinf07cc312022-01-05 16:52:54 +0800150set(MBEDCRYPTO_VERSION "mbedtls-3.1.0" CACHE STRING "The version of Mbed Crypto to use")
Øyvind Rønningstad6d3f3df2021-02-10 18:25:56 +0100151set(MBEDCRYPTO_GIT_REMOTE "https://github.com/ARMmbed/mbedtls.git" CACHE STRING "The URL (or path) to retrieve MbedTLS from.")
Raef Coles9ec67e62020-07-10 09:40:35 +0100152set(MBEDCRYPTO_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Build type of Mbed Crypto library")
Håkon Øye Amundsen8ab569b2021-11-04 13:59:04 +0000153set(TFM_MBEDCRYPTO_CONFIG_PATH
154 "${CMAKE_SOURCE_DIR}/lib/ext/mbedcrypto/mbedcrypto_config/tfm_mbedcrypto_config_default.h" CACHE PATH
155 "Config to use for Mbed Crypto. For increased flexibility when pointing to a file, set the type \
156of this setting to 'STRING' by passing the :<type> portion when specifying the setting value in \
157the command line. E.g. '-DTFM_MBEDCRYPTO_CONFIG_PATH:STRING=some_file_which_is_generated.h' \
158This can be useful if the config file is generated and placed inside a directory already added \
159to the include path of mbedtls.")
Raef Coles9ec67e62020-07-10 09:40:35 +0100160set(TFM_MBEDCRYPTO_PLATFORM_EXTRA_CONFIG_PATH "" CACHE PATH "Config to append to standard Mbed Crypto config, used by platforms to cnfigure feature support")
161
David Vincze7e1c5a42021-07-28 23:41:35 +0200162set(MCUBOOT_PATH "DOWNLOAD" CACHE PATH "Path to MCUboot (or DOWNLOAD to fetch automatically")
Sherry Zhang0cec47c2021-11-02 13:38:56 +0800163set(MCUBOOT_VERSION "v1.8.0" CACHE STRING "The version of MCUboot to use")
Raef Coles9ec67e62020-07-10 09:40:35 +0100164
165set(PSA_ARCH_TESTS_PATH "DOWNLOAD" CACHE PATH "Path to PSA arch tests (or DOWNLOAD to fetch automatically")
Summer Qin1065ec12021-11-11 11:27:15 +0800166set(PSA_ARCH_TESTS_VERSION "v21.10_API1.3_ADAC_ALPHA-1" CACHE STRING "The version of PSA arch tests to use")
David Vincze0c515de2020-11-25 19:02:57 +0100167
168################################################################################
169################################################################################
170
171# Specifying the accepted values for certain configuration options to facilitate
172# their later validation.
173
Tamas Banb881bea2020-11-04 16:18:36 +0000174########################## FIH #################################################
175
176set_property(CACHE TFM_FIH_PROFILE PROPERTY STRINGS "OFF;LOW;MEDIUM;HIGH")
Feder Liangd4dbaa92021-09-07 15:34:46 +0800177
178########################## FP #################################################
179
Feder Liang55194382021-11-22 16:45:33 +0800180set_property(CACHE CONFIG_TFM_FP PROPERTY STRINGS "soft;hard")