1#------------------------------------------------------------------------------- 2# Copyright (c) 2020-2024, Arm Limited. All rights reserved. 3# Copyright (c) 2022-2023 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 10install(DIRECTORY ${CMAKE_BINARY_DIR}/bin/ 11 DESTINATION bin 12) 13 14# export veneer lib 15if (CONFIG_TFM_USE_TRUSTZONE) 16 install(FILES ${CMAKE_BINARY_DIR}/secure_fw/s_veneers.o 17 DESTINATION ${INSTALL_INTERFACE_LIB_DIR}) 18endif() 19 20####################### export headers ######################################### 21 22install(FILES ${INTERFACE_INC_DIR}/psa/client.h 23 ${INTERFACE_INC_DIR}/psa/error.h 24 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa) 25 26install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa_manifest/sid.h 27 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa_manifest) 28 29install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/config_impl.h 30 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 31 32install(FILES ${INTERFACE_INC_DIR}/tfm_veneers.h 33 ${INTERFACE_INC_DIR}/tfm_ns_interface.h 34 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 35 36install(FILES ${INTERFACE_INC_DIR}/tfm_ns_client_ext.h 37 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 38 39install(FILES ${CMAKE_SOURCE_DIR}/secure_fw/include/config_tfm.h 40 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 41install(FILES ${CMAKE_SOURCE_DIR}/config/config_base.h 42 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 43 44install(FILES ${INTERFACE_INC_DIR}/tfm_psa_call_pack.h 45 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 46install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa/framework_feature.h 47 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa) 48 49if (TFM_PARTITION_NS_AGENT_MAILBOX) 50 install(FILES ${INTERFACE_INC_DIR}/multi_core/tfm_multi_core_api.h 51 ${INTERFACE_INC_DIR}/multi_core/tfm_ns_mailbox.h 52 ${INTERFACE_INC_DIR}/multi_core/tfm_mailbox.h 53 ${INTERFACE_INC_DIR}/multi_core/tfm_ns_mailbox_test.h 54 ${CMAKE_BINARY_DIR}/generated/interface/include/tfm_mailbox_config.h 55 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/multi_core) 56endif() 57 58if (TFM_PARTITION_PROTECTED_STORAGE) 59 install(FILES ${INTERFACE_INC_DIR}/psa/protected_storage.h 60 ${INTERFACE_INC_DIR}/psa/storage_common.h 61 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa) 62 install(FILES ${INTERFACE_INC_DIR}/tfm_ps_defs.h 63 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 64endif() 65 66if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE) 67 install(FILES ${INTERFACE_INC_DIR}/psa/internal_trusted_storage.h 68 ${INTERFACE_INC_DIR}/psa/storage_common.h 69 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa) 70 install(FILES ${INTERFACE_INC_DIR}/tfm_its_defs.h 71 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 72endif() 73 74if (TFM_PARTITION_CRYPTO) 75 install(FILES ${INTERFACE_INC_DIR}/psa/README.rst 76 ${INTERFACE_INC_DIR}/psa/build_info.h 77 ${INTERFACE_INC_DIR}/psa/crypto.h 78 ${INTERFACE_INC_DIR}/psa/crypto_adjust_auto_enabled.h 79 ${INTERFACE_INC_DIR}/psa/crypto_adjust_config_dependencies.h 80 ${INTERFACE_INC_DIR}/psa/crypto_adjust_config_key_pair_types.h 81 ${INTERFACE_INC_DIR}/psa/crypto_adjust_config_synonyms.h 82 ${INTERFACE_INC_DIR}/psa/crypto_builtin_composites.h 83 ${INTERFACE_INC_DIR}/psa/crypto_builtin_key_derivation.h 84 ${INTERFACE_INC_DIR}/psa/crypto_builtin_primitives.h 85 ${INTERFACE_INC_DIR}/psa/crypto_compat.h 86 ${INTERFACE_INC_DIR}/psa/crypto_driver_common.h 87 ${INTERFACE_INC_DIR}/psa/crypto_driver_contexts_composites.h 88 ${INTERFACE_INC_DIR}/psa/crypto_driver_contexts_key_derivation.h 89 ${INTERFACE_INC_DIR}/psa/crypto_driver_contexts_primitives.h 90 ${INTERFACE_INC_DIR}/psa/crypto_extra.h 91 ${INTERFACE_INC_DIR}/psa/crypto_legacy.h 92 ${INTERFACE_INC_DIR}/psa/crypto_platform.h 93 ${INTERFACE_INC_DIR}/psa/crypto_se_driver.h 94 ${INTERFACE_INC_DIR}/psa/crypto_sizes.h 95 ${INTERFACE_INC_DIR}/psa/crypto_struct.h 96 ${INTERFACE_INC_DIR}/psa/crypto_types.h 97 ${INTERFACE_INC_DIR}/psa/crypto_values.h 98 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa) 99 install(FILES ${INTERFACE_INC_DIR}/tfm_crypto_defs.h 100 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 101 install(DIRECTORY ${INTERFACE_INC_DIR}/mbedtls 102 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 103endif() 104 105if (TFM_PARTITION_INITIAL_ATTESTATION) 106 install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa/initial_attestation.h 107 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa) 108 install(FILES ${INTERFACE_INC_DIR}/tfm_attest_defs.h 109 ${INTERFACE_INC_DIR}/tfm_attest_iat_defs.h 110 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 111endif() 112 113if(TFM_PARTITION_PLATFORM) 114 install(FILES ${INTERFACE_INC_DIR}/tfm_platform_api.h 115 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 116endif() 117 118if(TFM_PARTITION_FIRMWARE_UPDATE) 119 install(FILES ${INTERFACE_INC_DIR}/psa/update.h 120 ${CMAKE_BINARY_DIR}/generated/interface/include/psa/fwu_config.h 121 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa) 122 install(FILES ${INTERFACE_INC_DIR}/tfm_fwu_defs.h 123 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 124endif() 125 126if(PLATFORM_DEFAULT_CRYPTO_KEYS) 127 install(DIRECTORY ${INTERFACE_INC_DIR}/crypto_keys 128 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 129endif() 130 131####################### export sources ######################################### 132 133if (TFM_PARTITION_NS_AGENT_MAILBOX) 134 install(FILES ${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox.c 135 ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_ns_api.c 136 ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_psa_ns_api.c 137 ${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_thread.c 138 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}/multi_core) 139endif() 140 141if (TFM_PARTITION_NS_AGENT_TZ) 142 install(FILES ${INTERFACE_SRC_DIR}/tfm_tz_psa_ns_api.c 143 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 144endif() 145 146install(DIRECTORY ${INTERFACE_INC_DIR}/os_wrapper 147 DESTINATION ${INSTALL_INTERFACE_INC_DIR}) 148 149if (CONFIG_TFM_USE_TRUSTZONE) 150 install(DIRECTORY ${INTERFACE_SRC_DIR}/os_wrapper 151 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 152endif() 153 154if (TFM_PARTITION_PROTECTED_STORAGE) 155 install(FILES ${INTERFACE_SRC_DIR}/tfm_ps_api.c 156 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 157endif() 158 159if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE) 160 install(FILES ${INTERFACE_SRC_DIR}/tfm_its_api.c 161 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 162endif() 163 164if (TFM_PARTITION_CRYPTO) 165 install(FILES ${INTERFACE_SRC_DIR}/tfm_crypto_api.c 166 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 167endif() 168 169if (TFM_PARTITION_INITIAL_ATTESTATION) 170 install(FILES ${INTERFACE_SRC_DIR}/tfm_attest_api.c 171 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 172endif() 173 174if(TFM_PARTITION_PLATFORM) 175 install(FILES ${INTERFACE_SRC_DIR}/tfm_platform_api.c 176 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 177endif() 178 179##################### Export image signing information ######################### 180 181if(BL2 AND PLATFORM_DEFAULT_IMAGE_SIGNING) 182 install(DIRECTORY bl2/ext/mcuboot/scripts 183 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR} 184 PATTERN "scripts/*.py" 185 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ 186 GROUP_EXECUTE GROUP_READ 187 PATTERN "scripts/wrapper/*.py" 188 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ 189 GROUP_EXECUTE GROUP_READ) 190 191 install(DIRECTORY ${MCUBOOT_PATH}/scripts/imgtool 192 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/scripts) 193 194 if (MCUBOOT_ENC_IMAGES) 195 install(FILES ${MCUBOOT_KEY_ENC} 196 RENAME image_enc_key.pem 197 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys) 198 endif() 199 200 install(FILES $<TARGET_OBJECTS:signing_layout_s> 201 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files) 202 install(FILES ${MCUBOOT_KEY_S} 203 RENAME image_s_signing_private_key.pem 204 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys) 205 # Specify the MCUBOOT_KEY_S path for NS build 206 set(MCUBOOT_INSTALL_KEY_S 207 ${INSTALL_IMAGE_SIGNING_DIR}/keys/image_s_signing_private_key.pem) 208 install(FILES $<TARGET_FILE_DIR:bl2>/image_s_signing_public_key.pem 209 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys) 210 211 if(MCUBOOT_IMAGE_NUMBER GREATER 1) 212 install(FILES $<TARGET_OBJECTS:signing_layout_ns> 213 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files) 214 install(FILES ${MCUBOOT_KEY_NS} 215 RENAME image_ns_signing_private_key.pem 216 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys) 217 # Specify the MCUBOOT_KEY_NS path for NS build 218 set(MCUBOOT_INSTALL_KEY_NS 219 ${INSTALL_IMAGE_SIGNING_DIR}/keys/image_ns_signing_private_key.pem) 220 install(FILES $<TARGET_FILE_DIR:bl2>/image_ns_signing_public_key.pem 221 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys) 222 endif() 223endif() 224 225if(TFM_PARTITION_FIRMWARE_UPDATE) 226 install(FILES ${INTERFACE_SRC_DIR}/tfm_fwu_api.c 227 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}) 228endif() 229 230######################### Export common configurations ######################### 231 232install(FILES ${CMAKE_SOURCE_DIR}/config/cp_check.cmake 233 DESTINATION ${INSTALL_CONFIG_DIR}) 234 235################### Read recommended tf-m-tests version ######################## 236 237include(${CMAKE_SOURCE_DIR}/lib/ext/tf-m-tests/read_version.cmake) 238 239###################### Install NS platform sources ############################# 240 241install(CODE "MESSAGE(\"----- Installing platform NS -----\")") 242 243install(DIRECTORY $<BUILD_INTERFACE:${CMSIS_PATH}/CMSIS/Core/Include> 244 DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/cmsis) 245 246if(PLATFORM_DEFAULT_UART_STDOUT) 247 install(FILES ${PLATFORM_DIR}/ext/common/uart_stdout.c 248 ${PLATFORM_DIR}/ext/common/uart_stdout.h 249 DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/common) 250endif() 251 252install(DIRECTORY ${PLATFORM_DIR}/include 253 DESTINATION ${INSTALL_PLATFORM_NS_DIR}) 254 255install(FILES ${CMAKE_SOURCE_DIR}/cmake/spe-CMakeLists.cmake 256 DESTINATION ${CMAKE_INSTALL_PREFIX} 257 RENAME CMakeLists.txt) 258 259install(FILES ${PLATFORM_DIR}/ns/toolchain_ns_GNUARM.cmake 260 ${PLATFORM_DIR}/ns/toolchain_ns_ARMCLANG.cmake 261 ${PLATFORM_DIR}/ns/toolchain_ns_IARARM.cmake 262 DESTINATION ${INSTALL_CMAKE_DIR}) 263 264install(FILES 265 ${CMAKE_SOURCE_DIR}/lib/fih/inc/fih.h 266 ${PLATFORM_DIR}/include/tfm_plat_ns.h 267 DESTINATION ${INSTALL_PLATFORM_NS_DIR}/include) 268 269if (TARGET psa_crypto_config) 270# FIXIT: This is a temporal patch to reduce the change scope and simplify review. 271# In the future we shall decouple this target from tfm_config becuase 272# "psa_crypto_config" target exists not in all configurations. 273# Functionally "psa_crypto_config" provides only include path for Crypto accelerator. 274install(TARGETS tfm_config psa_crypto_config psa_interface 275 DESTINATION ${CMAKE_INSTALL_PREFIX} 276 EXPORT tfm-config 277 ) 278else() 279 install(TARGETS tfm_config psa_interface 280 DESTINATION ${CMAKE_INSTALL_PREFIX} 281 EXPORT tfm-config 282 ) 283endif() 284 285target_include_directories(psa_interface 286 INTERFACE 287 $<INSTALL_INTERFACE:interface/include> 288 ) 289 290install(EXPORT tfm-config 291 FILE spe_export.cmake 292 DESTINATION ${INSTALL_CMAKE_DIR}) 293 294configure_file(${CMAKE_SOURCE_DIR}/config/spe_config.cmake.in 295 ${INSTALL_CMAKE_DIR}/spe_config.cmake @ONLY) 296 297# Toolchain utils 298install(FILES cmake/set_extensions.cmake 299 DESTINATION ${INSTALL_CMAKE_DIR}) 300