blob: ff0761f8a364e171de692b96b3225ba1e944c2b0 [file] [log] [blame]
#-------------------------------------------------------------------------------
# SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
install(DIRECTORY ${CMAKE_BINARY_DIR}/bin/
DESTINATION bin
)
# export veneer lib
if (CONFIG_TFM_USE_TRUSTZONE)
install(FILES ${CMAKE_BINARY_DIR}/secure_fw/s_veneers.o
DESTINATION ${INSTALL_INTERFACE_LIB_DIR})
endif()
####################### export headers #########################################
if (BL1 AND PLATFORM_DEFAULT_BL1)
install(DIRECTORY ${BL1_1_CONFIG_DIR}/
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/bl1_1_config)
install(DIRECTORY ${BL1_2_CONFIG_DIR}/
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/bl1_2_config)
endif()
install(FILES ${INTERFACE_INC_DIR}/psa/api_broker.h
${INTERFACE_INC_DIR}/psa/client.h
${INTERFACE_INC_DIR}/hybrid_platform/api_broker_defs.h
${INTERFACE_INC_DIR}/psa/error.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa_manifest/sid.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa_manifest)
install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/config_impl.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(FILES ${INTERFACE_INC_DIR}/tfm_veneers.h
${INTERFACE_INC_DIR}/tfm_ns_interface.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(FILES ${INTERFACE_INC_DIR}/tfm_ns_client_ext.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/secure_fw/include/config_tfm.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/config/config_base.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/secure_fw/spm/include/tfm_hybrid_platform.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(FILES ${INTERFACE_INC_DIR}/tfm_psa_call_pack.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa/framework_feature.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
if (TFM_PARTITION_NS_AGENT_MAILBOX)
install(FILES ${INTERFACE_INC_DIR}/multi_core/tfm_multi_core_api.h
${INTERFACE_INC_DIR}/multi_core/tfm_ns_mailbox.h
${INTERFACE_INC_DIR}/multi_core/tfm_mailbox.h
${INTERFACE_INC_DIR}/multi_core/tfm_ns_mailbox_test.h
${CMAKE_BINARY_DIR}/generated/interface/include/tfm_mailbox_config.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/multi_core)
endif()
if (TFM_PARTITION_PROTECTED_STORAGE)
install(FILES ${INTERFACE_INC_DIR}/psa/protected_storage.h
${INTERFACE_INC_DIR}/psa/storage_common.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
install(FILES ${INTERFACE_INC_DIR}/tfm_ps_defs.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
endif()
if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
install(FILES ${INTERFACE_INC_DIR}/psa/internal_trusted_storage.h
${INTERFACE_INC_DIR}/psa/storage_common.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
install(FILES ${INTERFACE_INC_DIR}/tfm_its_defs.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
endif()
if (TFM_PARTITION_CRYPTO)
install(FILES ${INTERFACE_INC_DIR}/psa/README.rst
${INTERFACE_INC_DIR}/psa/build_info.h
${INTERFACE_INC_DIR}/psa/crypto.h
${INTERFACE_INC_DIR}/psa/crypto_adjust_auto_enabled.h
${INTERFACE_INC_DIR}/psa/crypto_adjust_config_dependencies.h
${INTERFACE_INC_DIR}/psa/crypto_adjust_config_key_pair_types.h
${INTERFACE_INC_DIR}/psa/crypto_adjust_config_synonyms.h
${INTERFACE_INC_DIR}/psa/crypto_builtin_composites.h
${INTERFACE_INC_DIR}/psa/crypto_builtin_key_derivation.h
${INTERFACE_INC_DIR}/psa/crypto_builtin_primitives.h
${INTERFACE_INC_DIR}/psa/crypto_compat.h
${INTERFACE_INC_DIR}/psa/crypto_driver_common.h
${INTERFACE_INC_DIR}/psa/crypto_driver_contexts_composites.h
${INTERFACE_INC_DIR}/psa/crypto_driver_contexts_key_derivation.h
${INTERFACE_INC_DIR}/psa/crypto_driver_contexts_primitives.h
${INTERFACE_INC_DIR}/psa/crypto_extra.h
${INTERFACE_INC_DIR}/psa/crypto_legacy.h
${INTERFACE_INC_DIR}/psa/crypto_platform.h
${INTERFACE_INC_DIR}/psa/crypto_se_driver.h
${INTERFACE_INC_DIR}/psa/crypto_sizes.h
${INTERFACE_INC_DIR}/psa/crypto_struct.h
${INTERFACE_INC_DIR}/psa/crypto_types.h
${INTERFACE_INC_DIR}/psa/crypto_values.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
install(FILES ${INTERFACE_INC_DIR}/tfm_crypto_defs.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
install(DIRECTORY ${INTERFACE_INC_DIR}/mbedtls
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
endif()
if (TFM_PARTITION_INITIAL_ATTESTATION)
install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa/initial_attestation.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
install(FILES ${INTERFACE_INC_DIR}/tfm_attest_defs.h
${INTERFACE_INC_DIR}/tfm_attest_iat_defs.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
endif()
if(TFM_PARTITION_PLATFORM)
install(FILES ${INTERFACE_INC_DIR}/tfm_platform_api.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
endif()
if(TFM_PARTITION_FIRMWARE_UPDATE)
install(FILES ${INTERFACE_INC_DIR}/psa/update.h
${CMAKE_BINARY_DIR}/generated/interface/include/psa/fwu_config.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
install(FILES ${INTERFACE_INC_DIR}/tfm_fwu_defs.h
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
endif()
if(PLATFORM_DEFAULT_CRYPTO_KEYS)
install(DIRECTORY ${INTERFACE_INC_DIR}/crypto_keys
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
endif()
####################### export sources #########################################
if (TFM_PARTITION_NS_AGENT_MAILBOX)
install(FILES ${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox.c
${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_ns_api.c
${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_psa_ns_api.c
${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_thread.c
${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_common.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR}/multi_core)
endif()
if (TFM_PARTITION_NS_AGENT_TZ)
install(FILES ${INTERFACE_SRC_DIR}/tfm_tz_psa_ns_api.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
install(DIRECTORY ${INTERFACE_INC_DIR}/os_wrapper
DESTINATION ${INSTALL_INTERFACE_INC_DIR})
if (CONFIG_TFM_USE_TRUSTZONE)
install(DIRECTORY ${INTERFACE_SRC_DIR}/os_wrapper
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
if (TFM_HYBRID_PLATFORM_API_BROKER)
install(DIRECTORY ${INTERFACE_SRC_DIR}/hybrid_platform
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
if (TFM_PARTITION_PROTECTED_STORAGE)
install(FILES ${INTERFACE_SRC_DIR}/tfm_ps_api.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
install(FILES ${INTERFACE_SRC_DIR}/tfm_its_api.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
if (TFM_PARTITION_CRYPTO)
install(FILES ${INTERFACE_SRC_DIR}/tfm_crypto_api.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
if (TFM_PARTITION_INITIAL_ATTESTATION)
install(FILES ${INTERFACE_SRC_DIR}/tfm_attest_api.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
if(TFM_PARTITION_PLATFORM)
install(FILES ${INTERFACE_SRC_DIR}/tfm_platform_api.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
##################### Export image signing information #########################
if(BL2 AND PLATFORM_DEFAULT_IMAGE_SIGNING)
install(DIRECTORY bl2/ext/mcuboot/scripts
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}
PATTERN "scripts/*.py"
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
GROUP_EXECUTE GROUP_READ
PATTERN "scripts/wrapper/*.py"
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
GROUP_EXECUTE GROUP_READ)
install(DIRECTORY ${MCUBOOT_PATH}/scripts/imgtool
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/scripts)
if (MCUBOOT_ENC_IMAGES)
install(FILES ${MCUBOOT_KEY_ENC}
RENAME image_enc_key.pem
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
endif()
install(FILES $<TARGET_OBJECTS:signing_layout_s>
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
install(FILES ${MCUBOOT_KEY_S}
RENAME image_s_signing_private_key.pem
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
# Specify the MCUBOOT_KEY_S path for NS build
set(MCUBOOT_INSTALL_KEY_S
${INSTALL_IMAGE_SIGNING_DIR}/keys/image_s_signing_private_key.pem)
install(FILES $<TARGET_FILE_DIR:bl2>/image_s_signing_public_key.pem
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
if(MCUBOOT_IMAGE_NUMBER GREATER 1)
install(FILES $<TARGET_OBJECTS:signing_layout_ns>
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
install(FILES ${MCUBOOT_KEY_NS}
RENAME image_ns_signing_private_key.pem
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
# Specify the MCUBOOT_KEY_NS path for NS build
set(MCUBOOT_INSTALL_KEY_NS
${INSTALL_IMAGE_SIGNING_DIR}/keys/image_ns_signing_private_key.pem)
install(FILES $<TARGET_FILE_DIR:bl2>/image_ns_signing_public_key.pem
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
endif()
endif()
if(TFM_PARTITION_FIRMWARE_UPDATE)
install(FILES ${INTERFACE_SRC_DIR}/tfm_fwu_api.c
DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
endif()
######################### Export common configurations #########################
install(FILES ${CMAKE_SOURCE_DIR}/config/cp_check.cmake
DESTINATION ${INSTALL_CONFIG_DIR})
################### Read recommended tf-m-tests version ########################
include(${CMAKE_SOURCE_DIR}/lib/ext/tf-m-tests/read_version.cmake)
###################### Install NS platform sources #############################
install(CODE "MESSAGE(\"----- Installing platform NS -----\")")
install(DIRECTORY $<BUILD_INTERFACE:${CMSIS_PATH}/CMSIS/Core/Include>
$<BUILD_INTERFACE:${CMSIS_PATH}/CMSIS/Driver/Include>
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/cmsis)
if(PLATFORM_DEFAULT_UART_STDOUT)
install(FILES ${PLATFORM_DIR}/ext/common/uart_stdout.c
${PLATFORM_DIR}/ext/common/uart_stdout.h
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/common)
endif()
install(DIRECTORY ${PLATFORM_DIR}/include
DESTINATION ${INSTALL_PLATFORM_NS_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/cmake/spe-CMakeLists.cmake
DESTINATION ${CMAKE_INSTALL_PREFIX}
RENAME CMakeLists.txt)
install(FILES ${PLATFORM_DIR}/ns/toolchain_ns_GNUARM.cmake
${PLATFORM_DIR}/ns/toolchain_ns_ARMCLANG.cmake
${PLATFORM_DIR}/ns/toolchain_ns_IARARM.cmake
${PLATFORM_DIR}/ns/toolchain_ns_CLANG.cmake
DESTINATION ${INSTALL_CMAKE_DIR})
install(FILES
${CMAKE_SOURCE_DIR}/lib/fih/inc/fih.h
${PLATFORM_DIR}/include/tfm_plat_ns.h
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/include)
if (TARGET psa_crypto_config)
# FIXIT: This is a temporal patch to reduce the change scope and simplify review.
# In the future we shall decouple this target from tfm_config becuase
# "psa_crypto_config" target exists not in all configurations.
# Functionally "psa_crypto_config" provides only include path for Crypto accelerator.
install(TARGETS tfm_config psa_crypto_config psa_interface
DESTINATION ${CMAKE_INSTALL_PREFIX}
EXPORT tfm-config
)
else()
install(TARGETS tfm_config psa_interface
DESTINATION ${CMAKE_INSTALL_PREFIX}
EXPORT tfm-config
)
endif()
target_include_directories(psa_interface
INTERFACE
$<INSTALL_INTERFACE:interface/include>
)
install(EXPORT tfm-config
FILE spe_export.cmake
DESTINATION ${INSTALL_CMAKE_DIR})
configure_file(${CMAKE_SOURCE_DIR}/config/spe_config.cmake.in
${INSTALL_CMAKE_DIR}/spe_config.cmake @ONLY)
# Toolchain utils
install(FILES
cmake/set_extensions.cmake
cmake/mcpu_features.cmake
DESTINATION ${INSTALL_CMAKE_DIR})