blob: 05fccc4c409a30d105c3b9131b65141ff3eff0cd [file] [log] [blame]
Raef Coles958aeef2020-10-08 12:12:58 +01001#-------------------------------------------------------------------------------
David Hufb4a8b72022-01-13 16:46:02 +08002# Copyright (c) 2020-2022, Arm Limited. All rights reserved.
Chris Brand636ab482022-05-19 15:55:37 -07003# Copyright (c) 2021-2022 Cypress Semiconductor Corporation (an Infineon company)
4# or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
Raef Coles958aeef2020-10-08 12:12:58 +01005#
6# SPDX-License-Identifier: BSD-3-Clause
7#
8#-------------------------------------------------------------------------------
9
10function(tfm_invalid_config)
11 if (${ARGV})
12 string (REPLACE ";" " " ARGV_STRING "${ARGV}")
Minos Galanakisf216e2b2020-11-09 17:12:01 +000013 string (REPLACE "STREQUAL" "=" ARGV_STRING "${ARGV_STRING}")
14 string (REPLACE "GREATER" ">" ARGV_STRING "${ARGV_STRING}")
15 string (REPLACE "LESS" "<" ARGV_STRING "${ARGV_STRING}")
16 string (REPLACE "VERSION_LESS" "<" ARGV_STRING "${ARGV_STRING}")
17 string (REPLACE "EQUAL" "=" ARGV_STRING "${ARGV_STRING}")
18 string (REPLACE "IN_LIST" "in" ARGV_STRING "${ARGV_STRING}")
Raef Coles958aeef2020-10-08 12:12:58 +010019
20 message(FATAL_ERROR "INVALID CONFIG: ${ARGV_STRING}")
21 endif()
22endfunction()
23
Kevin Peng386374c2021-11-04 14:36:17 +080024set (VALID_ISOLATION_LEVELS 1 2 3)
Mingyang Sunc9d24712020-10-23 15:06:34 +080025
Kevin Peng386374c2021-11-04 14:36:17 +080026tfm_invalid_config(NOT TFM_ISOLATION_LEVEL IN_LIST VALID_ISOLATION_LEVELS)
Roman Mazurakff8e5072022-09-14 00:08:48 +030027tfm_invalid_config(TFM_ISOLATION_LEVEL EQUAL 3 AND NOT PLATFORM_HAS_ISOLATION_L3_SUPPORT)
Kevin Peng386374c2021-11-04 14:36:17 +080028tfm_invalid_config(TFM_ISOLATION_LEVEL GREATER 1 AND PSA_FRAMEWORK_HAS_MM_IOVEC)
Raef Coles958aeef2020-10-08 12:12:58 +010029
Chris Brand56b4d0c2021-12-17 16:15:58 -080030tfm_invalid_config(TFM_MULTI_CORE_TOPOLOGY AND TFM_NS_MANAGE_NSID)
Mark Horvathdadc1ea2021-03-12 15:39:25 +010031tfm_invalid_config(TFM_PLAT_SPECIFIC_MULTI_CORE_COMM AND NOT TFM_MULTI_CORE_TOPOLOGY)
David Hu372b45c2022-11-16 10:06:28 +080032# Multi-core platform with mailbox partition cannot fully work with SFN backend yet.
33tfm_invalid_config(TFM_PARTITION_NS_AGENT_MAILBOX AND CONFIG_TFM_SPM_BACKEND_SFN)
Raef Coles958aeef2020-10-08 12:12:58 +010034
Chris Brand30106ba2022-01-13 13:48:50 -080035tfm_invalid_config(TFM_ISOLATION_LEVEL EQUAL 3 AND CONFIG_TFM_STACK_WATERMARKS)
36
David Hu12f25872021-08-23 14:55:46 +080037tfm_invalid_config((TFM_S_REG_TEST OR TFM_NS_REG_TEST) AND TEST_PSA_API)
Raef Coles958aeef2020-10-08 12:12:58 +010038
Øyvind Rønningstad72004712021-03-11 15:55:28 +010039tfm_invalid_config(SUITE STREQUAL "IPC" AND NOT TEST_PSA_API STREQUAL "IPC")
40
Raef Coles958aeef2020-10-08 12:12:58 +010041tfm_invalid_config(TEST_PSA_API STREQUAL "CRYPTO" AND NOT TFM_PARTITION_CRYPTO)
42tfm_invalid_config(TEST_PSA_API STREQUAL "INITIAL_ATTESTATION" AND NOT TFM_PARTITION_INITIAL_ATTESTATION)
43tfm_invalid_config(TEST_PSA_API STREQUAL "INTERNAL_TRUSTED_STORAGE" AND NOT TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
44tfm_invalid_config(TEST_PSA_API STREQUAL "PROTECTED_STORAGE" AND NOT TFM_PARTITION_PROTECTED_STORAGE)
45tfm_invalid_config(TEST_PSA_API STREQUAL "STORAGE" AND NOT TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
46tfm_invalid_config(TEST_PSA_API STREQUAL "STORAGE" AND NOT TFM_PARTITION_PROTECTED_STORAGE)
47
David Vincze8608bdb2022-02-11 12:04:54 +010048########################## BL1 #################################################
49
50tfm_invalid_config((BL1 AND PLATFORM_DEFAULT_BL1 AND CONFIG_TFM_BOOT_STORE_MEASUREMENTS) AND NOT TFM_PARTITION_MEASURED_BOOT)
51
David Vincze0c515de2020-11-25 19:02:57 +010052########################## BL2 #################################################
53
54get_property(MCUBOOT_STRATEGY_LIST CACHE MCUBOOT_UPGRADE_STRATEGY PROPERTY STRINGS)
shejia0184440112021-07-07 10:49:09 +080055tfm_invalid_config(BL2 AND (NOT MCUBOOT_UPGRADE_STRATEGY IN_LIST MCUBOOT_STRATEGY_LIST))
David Vincze0c515de2020-11-25 19:02:57 +010056
Tintu Thomaseab1b472022-03-21 14:27:58 +000057# Maximum number of MCUBoot images supported by TF-M NV counters and ROTPKs
58tfm_invalid_config(MCUBOOT_IMAGE_NUMBER GREATER 4)
Raef Coles91fadb92021-06-18 09:20:50 +010059
David Vincze8c95d2a2022-01-19 10:11:58 +010060tfm_invalid_config((BL2 AND CONFIG_TFM_BOOT_STORE_MEASUREMENTS AND NOT CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS) AND NOT MCUBOOT_DATA_SHARING)
David Vincze8608bdb2022-02-11 12:04:54 +010061tfm_invalid_config((NOT (TFM_PARTITION_FIRMWARE_UPDATE OR CONFIG_TFM_BOOT_STORE_MEASUREMENTS)) AND MCUBOOT_DATA_SHARING)
David Vincze8c95d2a2022-01-19 10:11:58 +010062
Michel Jaouen24c3dd02021-08-12 15:32:13 +020063get_property(MCUBOOT_ALIGN_VAL_LIST CACHE MCUBOOT_ALIGN_VAL PROPERTY STRINGS)
64tfm_invalid_config(BL2 AND (NOT MCUBOOT_ALIGN_VAL IN_LIST MCUBOOT_ALIGN_VAL_LIST))
65
Tamas Ban3a7cb3c2020-11-25 15:45:04 +000066####################### Code sharing ###########################################
67
Mark Horvathc97eb922022-09-12 11:17:37 +020068set(TFM_CODE_SHARING_PLATFORM_LISTS arm/mps2/an521 arm/musca_b1) # Without crypto hw acceleration
Tamas Ban3a7cb3c2020-11-25 15:45:04 +000069tfm_invalid_config(NOT TFM_CODE_SHARING STREQUAL "OFF" AND NOT TFM_PLATFORM IN_LIST TFM_CODE_SHARING_PLATFORM_LISTS)
70tfm_invalid_config(NOT TFM_CODE_SHARING STREQUAL "OFF" AND CRYPTO_HW_ACCELERATOR)
Dávid Házi302f81d2022-10-17 20:42:44 +020071tfm_invalid_config(NOT TFM_CODE_SHARING STREQUAL "OFF" AND NOT C_COMPILER_ID:IAR)
Summer Qin2cd2ab72020-04-22 14:55:00 +080072
Raef Coles148b9472021-06-18 08:48:17 +010073########################## Platform ############################################
74
75tfm_invalid_config(OTP_NV_COUNTERS_RAM_EMULATION AND NOT (PLATFORM_DEFAULT_OTP OR PLATFORM_DEFAULT_NV_COUNTERS))
Michel Jaouend0fd8d92021-10-14 09:22:41 +020076tfm_invalid_config(PLATFORM_DEFAULT_NV_COUNTERS AND NOT PLATFORM_DEFAULT_OTP_WRITEABLE)
Sebastian Bøe7ad5d852022-11-03 13:51:21 +010077tfm_invalid_config(TFM_DUMMY_PROVISIONING AND (PLATFORM_DEFAULT_OTP AND NOT PLATFORM_DEFAULT_OTP_WRITEABLE))
Raef Coles249aba92022-06-16 10:20:29 +010078tfm_invalid_config(TFM_NS_NV_COUNTER_AMOUNT GREATER 3)
Raef Coles148b9472021-06-18 08:48:17 +010079
Sherry Zhang07b42412021-01-07 14:19:41 +080080####################### Firmware Update Parttion ###############################
81
David Hu79bb75c2022-08-02 18:04:51 +080082tfm_invalid_config(NOT PLATFORM_HAS_FIRMWARE_UPDATE_SUPPORT AND TFM_PARTITION_FIRMWARE_UPDATE)
Sherry Zhang07b42412021-01-07 14:19:41 +080083tfm_invalid_config(TFM_PARTITION_FIRMWARE_UPDATE AND NOT TFM_PARTITION_PLATFORM)
84tfm_invalid_config((MCUBOOT_UPGRADE_STRATEGY STREQUAL "DIRECT_XIP" OR MCUBOOT_UPGRADE_STRATEGY STREQUAL "RAM_LOAD") AND TFM_PARTITION_FIRMWARE_UPDATE)
85tfm_invalid_config(TFM_PARTITION_FIRMWARE_UPDATE AND NOT MCUBOOT_DATA_SHARING)
Tamas Banb881bea2020-11-04 16:18:36 +000086
Chris Brand636ab482022-05-19 15:55:37 -070087####################### Protected Storage Parttion ###############################
88
89tfm_invalid_config(TFM_PARTITION_PROTECTED_STORAGE AND NOT TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
Chris Brand9ea9ac72022-06-27 09:01:21 -070090# PS only uses the platform partition when PS_ROLLBACK_PROTECTION is ON, but
David Vinczea6f501e2021-06-14 10:42:30 +020091# the dependency in the manifest file means the dependency is unconditional
Chris Brand9ea9ac72022-06-27 09:01:21 -070092tfm_invalid_config(TFM_PARTITION_PROTECTED_STORAGE AND NOT TFM_PARTITION_PLATFORM)
Joakim Andersson760ce612021-12-30 15:06:19 +010093tfm_invalid_config(PS_ROLLBACK_PROTECTION AND TFM_PLATFORM_NV_COUNTER_MODULE_DISABLED)
Chris Brand636ab482022-05-19 15:55:37 -070094tfm_invalid_config(PS_ROLLBACK_PROTECTION AND NOT PS_ENCRYPTION)
Sherry Zhangbcb1aa32022-09-21 13:23:05 +080095tfm_invalid_config(PS_ENCRYPTION AND (PS_CRYPTO_AEAD_ALG STREQUAL "PSA_ALG_GCM" OR PS_CRYPTO_AEAD_ALG STREQUAL "PSA_ALG_CCM") AND NOT PS_ROLLBACK_PROTECTION)
Chris Brand636ab482022-05-19 15:55:37 -070096
Tamas Banb881bea2020-11-04 16:18:36 +000097########################## FIH #################################################
98
99get_property(TFM_FIH_PROFILE_LIST CACHE TFM_FIH_PROFILE PROPERTY STRINGS)
100tfm_invalid_config(NOT TFM_FIH_PROFILE IN_LIST TFM_FIH_PROFILE_LIST)
David Hue056d182021-03-29 15:14:01 +0800101
Joakim Andersson7f572ff2022-08-09 16:50:36 +0200102########################### TF-M initial attestation #####################################
103
104tfm_invalid_config(ATTEST_INCLUDE_TEST_CODE AND NOT (TEST_NS_ATTESTATION OR TEST_S_ATTESTATION))
105
Summer Qin9347dc72021-07-12 18:57:57 +0800106########################### TF-M crypto ########################################
107
Anton Komlev1416f152022-10-25 15:19:42 +0100108if (${TFM_PARTITION_CRYPTO})
109 tfm_invalid_config(CRYPTO_NV_SEED AND CRYPTO_HW_ACCELERATOR)
110 tfm_invalid_config(NOT CRYPTO_NV_SEED AND NOT CRYPTO_HW_ACCELERATOR)
111endif()
shejia01bfd37122021-06-03 13:31:51 +0800112
Chris Brand636ab482022-05-19 15:55:37 -0700113######################## TF-M Profile config check #############################
David Hu1feb4b12022-02-23 17:22:07 +0800114
115tfm_invalid_config(TFM_PROFILE STREQUAL "profile_small" AND CONFIG_TFM_SPM_BACKEND_IPC)
116
shejia01bfd37122021-06-03 13:31:51 +0800117########################### Test check config ##################################
118
David Hu12f25872021-08-23 14:55:46 +0800119if(TFM_S_REG_TEST OR TFM_NS_REG_TEST)
David Hu3d2121f2021-08-23 18:00:26 +0800120 include(${TFM_TEST_PATH}/config/check_config.cmake)
shejia01bfd37122021-06-03 13:31:51 +0800121endif()
Feder Liang55194382021-11-22 16:45:33 +0800122
123###################### Compiler check for FP support ###########################
124
125include(config/cp_check.cmake)
Chris Brand9edf0812022-07-05 14:18:42 -0700126
127###################### Platform-specific checks ################################
128
129if (EXISTS ${CMAKE_SOURCE_DIR}/platform/ext/target/${TFM_PLATFORM}/check_config.cmake)
130 include(platform/ext/target/${TFM_PLATFORM}/check_config.cmake)
131endif()