1#------------------------------------------------------------------------------- 2# SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors 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#------------------------------------------------------------------------------- 9cmake_minimum_required(VERSION 3.21) 10 11add_library(platform_s STATIC) 12add_library(platform_region_defs INTERFACE) 13add_library(platform_common_interface INTERFACE) 14 15if (BL2) 16 add_library(platform_bl2 STATIC) 17endif() 18 19if (BL1 AND PLATFORM_DEFAULT_BL1) 20 add_library(platform_bl1_1 STATIC) 21 add_library(platform_bl1_2 STATIC) 22 add_library(platform_bl1_1_interface INTERFACE) 23endif() 24 25if (TFM_PARTITION_CRYPTO) 26 add_library(platform_crypto_keys STATIC) 27endif() 28 29set(PLATFORM_DIR ${CMAKE_CURRENT_LIST_DIR} CACHE PATH "Path to platform directory") 30 31add_subdirectory(ext/target/${TFM_PLATFORM} target) 32 33#====================== CMSIS stack override interface ========================# 34 35# NS linker scripts using the default CMSIS style naming conventions, while the 36# secure and bl2 linker scripts remain untouched (region.h compatibility). 37# To be compatible with the untouched files (which using ARMCLANG naming style), 38# we have to override __INITIAL_SP and __STACK_LIMIT labels. 39 40set(CMSIS_OVERRIDE_HEADER "${CMAKE_CURRENT_LIST_DIR}/include/cmsis_override.h") 41add_library(cmsis_stack_override INTERFACE) 42target_compile_options(cmsis_stack_override 43 INTERFACE 44 "$<$<C_COMPILER_ID:GNU>:SHELL:-include ${CMSIS_OVERRIDE_HEADER}>" 45 "$<$<AND:$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>,$<C_COMPILER_ID:IAR>>:SHELL:--preinclude ${CMSIS_OVERRIDE_HEADER}>" 46 "$<$<C_COMPILER_ID:Clang>:SHELL:-include ${CMSIS_OVERRIDE_HEADER}>" 47) 48 49#========================= Platform Common interface ==========================# 50 51target_include_directories(platform_common_interface 52 INTERFACE 53 ext 54 ext/common 55 ext/driver 56 include 57) 58 59#========================= Platform Secure ====================================# 60 61target_include_directories(platform_s 62 PUBLIC 63 $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_CURRENT_SOURCE_DIR}/ext/accelerator/interface> 64) 65 66target_sources(platform_s 67 PRIVATE 68 $<$<AND:$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>,$<BOOL:${PLATFORM_DEFAULT_PS_HAL}>>:${CMAKE_CURRENT_SOURCE_DIR}/ext/common/tfm_hal_ps.c> 69 $<$<AND:$<BOOL:${TFM_PARTITION_INTERNAL_TRUSTED_STORAGE}>,$<BOOL:${PLATFORM_DEFAULT_ITS_HAL}>>:${CMAKE_CURRENT_SOURCE_DIR}/ext/common/tfm_hal_its.c> 70 $<$<BOOL:${PLATFORM_DEFAULT_SYSTEM_RESET_HALT}>:${CMAKE_CURRENT_SOURCE_DIR}/ext/common/tfm_hal_reset_halt.c> 71 $<$<BOOL:${PLATFORM_DEFAULT_UART_STDOUT}>:${CMAKE_CURRENT_SOURCE_DIR}/ext/common/uart_stdout.c> 72 $<$<BOOL:${TFM_SPM_LOG_RAW_ENABLED}>:ext/common/tfm_hal_spm_logdev_peripheral.c> 73 $<$<BOOL:${TFM_EXCEPTION_INFO_DUMP}>:ext/common/exception_info.c> 74 $<$<BOOL:${PLATFORM_DEFAULT_ATTEST_HAL}>:ext/common/template/attest_hal.c> 75 $<$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>:ext/common/template/nv_counters.c> 76 $<$<BOOL:${PLATFORM_DEFAULT_ROTPK}>:ext/common/template/tfm_rotpk.c> 77 $<$<BOOL:${PLATFORM_DEFAULT_NV_SEED}>:ext/common/template/crypto_nv_seed.c> 78 $<$<BOOL:${PLATFORM_DEFAULT_SHARED_MEASUREMENT_DATA}>:ext/common/template/tfm_shared_measurement_data.c> 79 $<$<OR:$<AND:$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>,$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>>,$<BOOL:${PLATFORM_DEFAULT_OTP}>>:ext/common/template/flash_otp_nv_counters_backend.c> 80 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:ext/common/template/otp_flash.c> 81 $<$<BOOL:${PLATFORM_DEFAULT_PROVISIONING}>:ext/common/provisioning.c> 82 $<$<OR:$<BOOL:${TEST_S_FPU}>,$<BOOL:${TEST_NS_FPU}>>:${CMAKE_SOURCE_DIR}/platform/ext/common/test_interrupt.c> 83 $<$<BOOL:${TFM_SANITIZE}>:ext/common/tfm_sanitize_handlers.c> 84 ./ext/common/tfm_fatal_error.c 85) 86 87# If this is not added to the tfm_s it will not correctly override the weak 88# default handlers declared in assemebly, and will instead be discarded as they 89# are not in use. 90target_sources(tfm_s 91 PRIVATE 92 ext/common/faults.c 93) 94 95target_link_libraries(platform_s 96 PUBLIC 97 platform_common_interface 98 platform_region_defs 99 tfm_fih_headers 100 cmsis_stack_override 101 cmsis 102 tfm_log_headers 103 tfm_helper_lib 104 $<$<BOOL:${CONFIG_TFM_BACKTRACE_ON_CORE_PANIC}>:tfm_log_unpriv> 105 $<$<BOOL:${CONFIG_TFM_BACKTRACE_ON_CORE_PANIC}>:tfm_log> 106 $<$<BOOL:${CONFIG_TFM_BACKTRACE_ON_CORE_PANIC}>:tfm_backtrace> 107 $<$<BOOL:${TFM_PARTITION_DTPM_CLIENT}>:eventlog> 108 PRIVATE 109 tfm_config 110 tfm_spm_defs 111 $<$<BOOL:${TFM_PARTITION_CRYPTO}>:platform_crypto_keys> 112 $<$<BOOL:${PLATFORM_DEFAULT_ATTEST_HAL}>:tfm_sprt> 113 $<$<BOOL:${TFM_PARTITION_CRYPTO}>:crypto_service_mbedcrypto> 114 $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:tfm_attestation_defs> 115 $<$<NOT:$<STREQUAL:${TFM_FIH_PROFILE},OFF>>:tfm_fih> 116 tfm_log 117 psa_crypto_library_config 118) 119 120target_compile_definitions(platform_s 121 PUBLIC 122 LOG_LEVEL=${TFM_SPM_LOG_LEVEL} 123 $<$<BOOL:${TFM_SPM_LOG_RAW_ENABLED}>:TFM_SPM_LOG_RAW_ENABLED> 124 $<$<BOOL:${CONFIG_TFM_BACKTRACE_ON_CORE_PANIC}>:CONFIG_TFM_BACKTRACE_ON_CORE_PANIC> 125 $<$<BOOL:${CONFIG_TFM_BACKTRACE_ON_CORE_PANIC}>:LOG_LEVEL=LOG_LEVEL_ERROR> 126 $<$<BOOL:${CONFIG_TFM_BACKTRACE_ON_CORE_PANIC}>:LOG_LEVEL_UNPRIV=LOG_LEVEL_ERROR> 127 $<$<BOOL:${OTP_NV_COUNTERS_RAM_EMULATION}>:OTP_NV_COUNTERS_RAM_EMULATION=1> 128 $<$<BOOL:${TFM_EXCEPTION_INFO_DUMP}>:TFM_EXCEPTION_INFO_DUMP> 129 $<$<OR:$<VERSION_GREATER:${TFM_ISOLATION_LEVEL},1>,$<STREQUAL:"${TEST_PSA_API}","IPC">>:CONFIG_TFM_ENABLE_MEMORY_PROTECT> 130 $<$<STREQUAL:${CONFIG_TFM_FLOAT_ABI},hard>:CONFIG_TFM_FLOAT_ABI=2> 131 $<$<STREQUAL:${CONFIG_TFM_FLOAT_ABI},soft>:CONFIG_TFM_FLOAT_ABI=0> 132 $<$<BOOL:${CONFIG_TFM_LAZY_STACKING}>:CONFIG_TFM_LAZY_STACKING> 133 $<$<BOOL:${CONFIG_TFM_DISABLE_CP10CP11}>:CONFIG_TFM_DISABLE_CP10CP11> 134 $<$<BOOL:${CONFIG_TFM_ENABLE_CP10CP11}>:CONFIG_TFM_ENABLE_CP10CP11> 135 $<$<BOOL:${PLATFORM_DEFAULT_CRYPTO_KEYS}>:PLATFORM_DEFAULT_CRYPTO_KEYS> 136 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:PLATFORM_DEFAULT_OTP> 137 $<$<BOOL:${PLATFORM_DEFAULT_ROTPK}>:PLATFORM_DEFAULT_ROTPK> 138 $<$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>:PLATFORM_DEFAULT_NV_COUNTERS> 139 $<$<AND:$<BOOL:${TFM_LOG_FATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_SPM_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_FATAL_ERRORS> 140 $<$<AND:$<BOOL:${TFM_LOG_NONFATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_SPM_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_NONFATAL_ERRORS> 141 PRIVATE 142 $<$<BOOL:${SYMMETRIC_INITIAL_ATTESTATION}>:SYMMETRIC_INITIAL_ATTESTATION> 143 $<$<BOOL:${TFM_DUMMY_PROVISIONING}>:TFM_DUMMY_PROVISIONING> 144 $<$<BOOL:${PLATFORM_DEFAULT_OTP_WRITEABLE}>:OTP_WRITEABLE> 145) 146 147target_compile_options(platform_s 148 PUBLIC 149 ${COMPILER_CP_FLAG} 150 $<$<BOOL:${TFM_SANITIZE}>:-fsanitize=${TFM_SANITIZE}> 151) 152 153#========================= Platform Crypto Keys ===============================# 154 155 156if(TFM_PARTITION_CRYPTO) 157 target_sources(platform_crypto_keys 158 PRIVATE 159 $<$<BOOL:${PLATFORM_DEFAULT_CRYPTO_KEYS}>:ext/common/template/crypto_keys.c> 160 ) 161 162 target_link_libraries(platform_crypto_keys 163 PRIVATE 164 crypto_service_mbedcrypto 165 tfm_psa_rot_partition_crypto 166 platform_region_defs 167 tfm_config 168 ) 169 170 target_include_directories(platform_crypto_keys 171 PRIVATE 172 $<$<BOOL:${PLATFORM_DEFAULT_CRYPTO_KEYS}>:${CMAKE_SOURCE_DIR}/interface/include/crypto_keys> 173 ${CMAKE_BINARY_DIR}/generated/interface/include 174 ) 175 176 target_compile_definitions(platform_crypto_keys 177 PRIVATE 178 $<$<BOOL:${SYMMETRIC_INITIAL_ATTESTATION}>:SYMMETRIC_INITIAL_ATTESTATION> 179 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:PLATFORM_DEFAULT_OTP> 180 $<$<BOOL:${TEST_S_ATTESTATION}>:TEST_S_ATTESTATION> 181 $<$<BOOL:${TEST_NS_ATTESTATION}>:TEST_NS_ATTESTATION> 182 ) 183 184 target_compile_options(platform_crypto_keys 185 PUBLIC 186 ${COMPILER_CP_FLAG} 187 ) 188endif() 189 190#========================= Platform BL2 =======================================# 191if(BL2) 192 #TODO import policy 193 target_include_directories(platform_bl2 194 PUBLIC 195 $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_CURRENT_SOURCE_DIR}/ext/accelerator/interface> 196 ${MCUBOOT_PATH}/boot/bootutil/include 197 ${CMAKE_SOURCE_DIR}/bl2/ext/mcuboot/include 198 ) 199 200 target_sources(platform_bl2 201 PRIVATE 202 ext/common/boot_hal_bl2.c 203 $<$<BOOL:${PLATFORM_DEFAULT_UART_STDOUT}>:${CMAKE_CURRENT_SOURCE_DIR}/ext/common/uart_stdout.c> 204 $<$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>:ext/common/template/nv_counters.c> 205 $<$<BOOL:${PLATFORM_DEFAULT_ROTPK}>:ext/common/template/tfm_rotpk.c> 206 $<$<OR:$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>,$<BOOL:${PLATFORM_DEFAULT_OTP}>>:ext/common/template/flash_otp_nv_counters_backend.c> 207 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:ext/common/template/otp_flash.c> 208 $<$<BOOL:${PLATFORM_DEFAULT_SHARED_MEASUREMENT_DATA}>:ext/common/template/tfm_shared_measurement_data.c> 209 $<$<BOOL:${BL2_SANITIZE}>:ext/common/tfm_sanitize_handlers.c> 210 ./ext/common/tfm_fatal_error.c 211 ./ext/common/tfm_assert.c 212 ) 213 214 target_link_libraries(platform_bl2 215 PUBLIC 216 platform_common_interface 217 platform_region_defs 218 cmsis_stack_override 219 cmsis 220 tfm_log_headers 221 tfm_helper_lib 222 PRIVATE 223 bl2_crypto 224 bl2_hal 225 tfm_log 226 tfm_vprintf 227 mcuboot_config 228 $<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<NOT:$<BOOL:${CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS}>>>:tfm_boot_status> 229 ) 230 231 target_compile_definitions(platform_bl2 232 PUBLIC 233 BL2 234 MCUBOOT_${MCUBOOT_UPGRADE_STRATEGY} 235 $<$<BOOL:${MCUBOOT_DIRECT_XIP_REVERT}>:MCUBOOT_DIRECT_XIP_REVERT> 236 $<$<BOOL:${MCUBOOT_ROTPK_SIGN_POLICY}>:MCUBOOT_ROTPK_SIGN_POLICY> 237 $<$<BOOL:${SYMMETRIC_INITIAL_ATTESTATION}>:SYMMETRIC_INITIAL_ATTESTATION> 238 MCUBOOT_FIH_PROFILE_${MCUBOOT_FIH_PROFILE} 239 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:PLATFORM_DEFAULT_OTP> 240 $<$<BOOL:${OTP_NV_COUNTERS_RAM_EMULATION}>:OTP_NV_COUNTERS_RAM_EMULATION=1> 241 $<$<BOOL:${TFM_DUMMY_PROVISIONING}>:TFM_DUMMY_PROVISIONING> 242 $<$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>:PLATFORM_DEFAULT_NV_COUNTERS> 243 $<$<BOOL:${PLATFORM_DEFAULT_OTP_WRITEABLE}>:OTP_WRITEABLE> 244 $<$<BOOL:${PLATFORM_DEFAULT_ROTPK}>:PLATFORM_DEFAULT_ROTPK> 245 $<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<NOT:$<BOOL:${CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS}>>>:TFM_MEASURED_BOOT_API> 246 $<$<AND:$<BOOL:${TFM_LOG_FATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_BL2_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_FATAL_ERRORS> 247 $<$<AND:$<BOOL:${TFM_LOG_FATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_BL2_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_NONFATAL_ERRORS> 248 LOG_LEVEL=${TFM_BL2_LOG_LEVEL} 249 ) 250 251 target_compile_options(platform_bl2 252 PUBLIC 253 ${BL2_COMPILER_CP_FLAG} 254 $<$<BOOL:${BL2_SANITIZE}>:-fsanitize=${BL2_SANITIZE}> 255 ) 256 257 # If BL2 uses builtin keys, then it requires to access platform 258 # related functionalities from the platform_bl2 to retrieve keys 259 target_link_libraries(bl2_crypto 260 PRIVATE 261 $<$<BOOL:${MCUBOOT_BUILTIN_KEY}>:platform_bl2> 262 ) 263endif() 264 265#========================= Platform BL1_1 =====================================# 266 267if(BL1 AND PLATFORM_DEFAULT_BL1) 268 target_include_directories(platform_bl1_1_interface 269 INTERFACE 270 . 271 include 272 ) 273 274 target_link_libraries(platform_bl1_1_interface 275 INTERFACE 276 platform_region_defs 277 platform_common_interface 278 cmsis_stack_override 279 cmsis 280 tfm_helper_lib 281 ) 282 283 target_compile_definitions(platform_bl1_1_interface 284 INTERFACE 285 $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:CRYPTO_HW_ACCELERATOR> 286 LOG_LEVEL=${TFM_BL1_LOG_LEVEL} 287 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:PLATFORM_DEFAULT_OTP> 288 $<$<BOOL:${OTP_NV_COUNTERS_RAM_EMULATION}>:OTP_NV_COUNTERS_RAM_EMULATION=1> 289 $<$<BOOL:${TFM_DUMMY_PROVISIONING}>:TFM_DUMMY_PROVISIONING> 290 $<$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>:PLATFORM_DEFAULT_NV_COUNTERS> 291 $<$<BOOL:${PLATFORM_DEFAULT_OTP_WRITEABLE}>:OTP_WRITEABLE> 292 $<$<BOOL:${TFM_BL1_MEMORY_MAPPED_FLASH}>:TFM_BL1_MEMORY_MAPPED_FLASH> 293 $<$<BOOL:${TFM_BL1_2_IN_OTP}>:TFM_BL1_2_IN_OTP> 294 $<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<NOT:$<BOOL:${CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS}>>>:TFM_MEASURED_BOOT_API> 295 $<$<AND:$<BOOL:${TFM_LOG_FATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_BL1_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_FATAL_ERRORS> 296 $<$<AND:$<BOOL:${TFM_LOG_NONFATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_BL1_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_NONFATAL_ERRORS> 297 $<$<BOOL:${TFM_BL1_EMBED_ROTPK_IN_IMAGE}>:TFM_BL1_EMBED_ROTPK_IN_IMAGE> 298 $<$<BOOL:${TFM_BL1_MAX_SIGNERS}>:TFM_BL1_MAX_SIGNERS=${TFM_BL1_MAX_SIGNERS}> 299 ) 300 301 target_compile_options(platform_bl1_1 302 PUBLIC 303 $<$<BOOL:${BL1_1_SANITIZE}>:-fsanitize=${BL1_1_SANITIZE}> 304 ${BL1_COMPILER_CP_FLAG} 305 ) 306 307 target_link_options(platform_bl1_1 308 PUBLIC 309 ${BL1_LINKER_CP_OPTION} 310 ) 311 312 target_sources(platform_bl1_1 313 PRIVATE 314 ext/common/boot_hal_bl1_1.c 315 ext/common/uart_stdout.c 316 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:ext/common/template/flash_otp_nv_counters_backend.c> 317 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:ext/common/template/otp_flash.c> 318 $<$<BOOL:${PLATFORM_DEFAULT_SHARED_MEASUREMENT_DATA}>:ext/common/template/tfm_shared_measurement_data.c> 319 $<$<OR:$<BOOL:${BL1_1_SANITIZE}>,$<BOOL:${TFM_BL1_2_SANITIZE}>>:ext/common/tfm_sanitize_handlers.c> 320 ./ext/common/tfm_fatal_error.c 321 ./ext/common/tfm_assert.c 322 ) 323 324 target_link_libraries(platform_bl1_1 325 PUBLIC 326 platform_bl1_1_interface 327 bl1_1_shared_lib_interface 328 platform_region_defs 329 PRIVATE 330 tfm_fih 331 tfm_log 332 tfm_vprintf 333 tfm_fih_headers 334 tfm_boot_status 335 ) 336endif() 337 338#========================= Platform BL1_2 =====================================# 339 340if(BL1 AND PLATFORM_DEFAULT_BL1) 341 target_include_directories(platform_bl1_2 342 PRIVATE 343 . 344 include 345 ext/driver 346 ) 347 348 target_link_libraries(platform_bl1_2 349 INTERFACE 350 platform_region_defs 351 platform_common_interface 352 cmsis_stack_override 353 cmsis 354 ) 355 356 target_compile_definitions(platform_bl1_2 357 INTERFACE 358 $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:CRYPTO_HW_ACCELERATOR> 359 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:PLATFORM_DEFAULT_OTP> 360 $<$<BOOL:${OTP_NV_COUNTERS_RAM_EMULATION}>:OTP_NV_COUNTERS_RAM_EMULATION=1> 361 $<$<BOOL:${TFM_DUMMY_PROVISIONING}>:TFM_DUMMY_PROVISIONING> 362 $<$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>:PLATFORM_DEFAULT_NV_COUNTERS> 363 $<$<BOOL:${PLATFORM_DEFAULT_OTP_WRITEABLE}>:OTP_WRITEABLE> 364 $<$<BOOL:${TFM_BL1_MEMORY_MAPPED_FLASH}>:TFM_BL1_MEMORY_MAPPED_FLASH> 365 $<$<BOOL:${TFM_BL1_2_IN_OTP}>:TFM_BL1_2_IN_OTP> 366 $<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<NOT:$<BOOL:${CONFIG_TFM_BOOT_STORE_ENCODED_MEASUREMENTS}>>>:TFM_MEASURED_BOOT_API> 367 $<$<AND:$<BOOL:${TFM_LOG_FATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_BL1_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_FATAL_ERRORS> 368 $<$<AND:$<BOOL:${TFM_LOG_NONFATAL_ERRORS}>,$<NOT:$<STREQUAL:${TFM_BL1_LOG_LEVEL},"LOG_LEVEL_NONE">>>:LOG_NONFATAL_ERRORS> 369 ) 370 371 target_sources(platform_bl1_2 372 PRIVATE 373 ext/common/boot_hal_bl1_2.c 374 $<$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>:ext/common/template/nv_counters.c> 375 $<$<OR:$<BOOL:${PLATFORM_DEFAULT_NV_COUNTERS}>,$<BOOL:${PLATFORM_DEFAULT_OTP}>>:ext/common/template/flash_otp_nv_counters_backend.c> 376 $<$<BOOL:${PLATFORM_DEFAULT_OTP}>:ext/common/template/otp_flash.c> 377 $<$<BOOL:${PLATFORM_DEFAULT_SHARED_MEASUREMENT_DATA}>:ext/common/template/tfm_shared_measurement_data.c> 378 ) 379 380 target_link_libraries(platform_bl1_2 381 PUBLIC 382 platform_bl1_1_interface 383 tfm_helper_lib 384 PRIVATE 385 tfm_fih 386 tfm_fih_headers 387 tfm_log 388 tfm_vprintf 389 tfm_boot_status 390 platform_region_defs 391 bl1_1_shared_lib_interface 392 ) 393 394 target_compile_options(platform_bl1_2 395 PUBLIC 396 $<$<BOOL:${BL1_2_SANITIZE}>:-fsanitize=${BL1_2_SANITIZE}> 397 ${BL1_COMPILER_CP_FLAG} 398 ) 399 400 target_link_options(platform_bl1_2 401 PUBLIC 402 ${BL1_LINKER_CP_OPTION} 403 ) 404endif() 405 406#========================= Platform region defs ===============================# 407 408if(NOT ${MCUBOOT_SIGNATURE_TYPE} STREQUAL "") 409 string(REGEX MATCH "[0-9]*$" SIG_LEN ${MCUBOOT_SIGNATURE_TYPE}) 410 string(REGEX MATCH "^[A-Z]*" SIG_TYPE ${MCUBOOT_SIGNATURE_TYPE}) 411endif() 412 413#TODO maybe just link the other platforms to this 414target_compile_definitions(platform_region_defs 415 INTERFACE 416 $<$<BOOL:${BL1}>:BL1> 417 $<$<BOOL:${BL2}>:BL2> 418 BL2_HEADER_SIZE=${BL2_HEADER_SIZE} 419 BL2_TRAILER_SIZE=${BL2_TRAILER_SIZE} 420 $<$<BOOL:${PLATFORM_DEFAULT_BL1}>:PLATFORM_DEFAULT_BL1> 421 $<$<BOOL:${SECURE_UART1}>:SECURE_UART1> 422 DAUTH_${DEBUG_AUTHENTICATION} 423 $<$<BOOL:${MCUBOOT_IMAGE_NUMBER}>:MCUBOOT_IMAGE_NUMBER=${MCUBOOT_IMAGE_NUMBER}> 424 $<$<BOOL:${MCUBOOT_BUILTIN_KEY}>:MCUBOOT_BUILTIN_KEY> 425 $<$<STREQUAL:${SIG_TYPE},RSA>:MCUBOOT_SIGN_RSA> 426 $<$<STREQUAL:${SIG_TYPE},RSA>:MCUBOOT_SIGN_RSA_LEN=${SIG_LEN}> 427 $<$<STREQUAL:${SIG_TYPE},EC>:MCUBOOT_SIGN_EC${SIG_LEN}> 428 $<$<STREQUAL:${MCUBOOT_EXECUTION_SLOT},2>:LINK_TO_SECONDARY_PARTITION> 429 $<$<BOOL:${TEST_PSA_API}>:PSA_API_TEST_${TEST_PSA_API}> 430 $<$<BOOL:${TFM_CODE_SHARING}>:CODE_SHARING> 431 $<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:ENABLE_HEAP> 432 PLATFORM_NS_NV_COUNTERS=${TFM_NS_NV_COUNTER_AMOUNT} 433 $<$<BOOL:${TFM_HALT_ON_FATAL_ERRORS}>:HALT_ON_FATAL_ERROR> 434 $<$<BOOL:${TFM_LOG_ERR_FILE_AND_LINE}>:FATAL_ERR_LOG_FILE_AND_LINE> 435 $<$<BOOL:${PLATFORM_DEFAULT_BL1_TEST_EXECUTION}>:PLATFORM_DEFAULT_BL1_TEST_EXECUTION> 436 $<$<BOOL:${PLATFORM_DEFAULT_BL1_1_TESTS}>:PLATFORM_DEFAULT_BL1_1_TESTS> 437 $<$<BOOL:${PLATFORM_DEFAULT_BL1_2_TESTS}>:PLATFORM_DEFAULT_BL1_2_TESTS> 438 $<$<BOOL:${TFM_BL1_2_IMAGE_ENCRYPTION}>:TFM_BL1_2_IMAGE_ENCRYPTION> 439 $<$<BOOL:${TFM_BL1_2_EMBED_ROTPK_IN_IMAGE}>:TFM_BL1_2_EMBED_ROTPK_IN_IMAGE> 440 $<$<BOOL:${TFM_BL1_2_IMAGE_ENCRYPTION}>:TFM_BL1_2_IMAGE_ENCRYPTION> 441 $<$<BOOL:${TFM_BL1_2_SIGNER_AMOUNT}>:TFM_BL1_2_SIGNER_AMOUNT=${TFM_BL1_2_SIGNER_AMOUNT}> 442 $<$<BOOL:${TFM_BL1_2_ECDSA_CURVE}>:TFM_BL1_2_ECDSA_CURVE=TFM_BL1_CURVE_${TFM_BL1_2_ECDSA_CURVE}> 443 $<$<BOOL:${TFM_BL1_2_MEASUREMENT_HASH_ALG}>:TFM_BL1_2_MEASUREMENT_HASH_ALG=TFM_BL1_HASH_ALG_${TFM_BL1_2_MEASUREMENT_HASH_ALG}> 444 $<$<BOOL:${TFM_BL1_2_MEASUREMENT_HASH_ALG}>:TFM_BL1_ENABLE_${TFM_BL1_2_ROTPK_HASH_ALG}> 445 $<$<BOOL:${TFM_BL1_2_ROTPK_HASH_ALG}>:TFM_BL1_ENABLE_${TFM_BL1_2_ROTPK_HASH_ALG}> 446 $<$<BOOL:${TFM_BL1_2_ROTPK_HASH_ALG}>:TFM_BL1_2_ROTPK_HASH_ALG=RSE_ROTPK_HASH_ALG_${TFM_BL1_2_ROTPK_HASH_ALG}> 447 $<$<BOOL:${MCUBOOT_ROTPK_HASH_ALG}>:MCUBOOT_ROTPK_HASH_ALG=RSE_ROTPK_HASH_ALG_${MCUBOOT_ROTPK_HASH_ALG}> 448 $<$<BOOL:${TFM_BL1_1_MEASUREMENT_HASH_ALG}>:TFM_BL1_1_MEASUREMENT_HASH_ALG=TFM_BL1_HASH_ALG_${TFM_BL1_1_MEASUREMENT_HASH_ALG}> 449 $<$<BOOL:${TFM_BL1_1_MEASUREMENT_HASH_ALG}>:TFM_BL1_ENABLE_${TFM_BL1_1_ROTPK_HASH_ALG}> 450 $<$<BOOL:${MCUBOOT_HW_KEY}>:MCUBOOT_HW_KEY> 451 $<$<BOOL:${TFM_PXN_ENABLE}>:TFM_PXN_ENABLE> 452 $<$<BOOL:${PLATFORM_DEFAULT_MEASUREMENT_SLOTS}>:PLATFORM_DEFAULT_MEASUREMENT_SLOTS> 453) 454 455target_include_directories(platform_region_defs 456 INTERFACE 457 ${CMAKE_CURRENT_LIST_DIR}/ext/common 458 $<$<BOOL:${BL1}>:${BL1_1_CONFIG_DIR}> 459 $<$<BOOL:${BL1}>:${BL1_2_CONFIG_DIR}> 460) 461 462target_link_libraries(platform_region_defs 463 INTERFACE 464 tfm_config 465) 466