blob: 2a08ed3961059070dffa5bd4de0dd32e74fdb384 [file] [log] [blame]
#-------------------------------------------------------------------------------
# Copyright (c) 2020-2023, Arm Limited. All rights reserved.
# Copyright (c) 2022-2023 Cypress Semiconductor Corporation (an Infineon company)
# or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
#
# 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 #########################################
install(FILES ${INTERFACE_INC_DIR}/psa/client.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 ${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
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/crypto_extra.h
${INTERFACE_INC_DIR}/psa/crypto_compat.h
${INTERFACE_INC_DIR}/psa/crypto.h
${INTERFACE_INC_DIR}/psa/crypto_client_struct.h
${INTERFACE_INC_DIR}/psa/crypto_platform.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})
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
DESTINATION ${INSTALL_INTERFACE_SRC_DIR}/multi_core)
endif()
if (TFM_PARTITION_NS_AGENT_TZ)
install(FILES ${INTERFACE_SRC_DIR}/tfm_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_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)
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}
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
endif()
# unconditionally install all necessary files for optional signing
install(FILES $<TARGET_OBJECTS:signing_layout_s>
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
if(MCUBOOT_IMAGE_NUMBER GREATER 1)
install(FILES $<TARGET_OBJECTS:signing_layout_ns>
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
endif()
install(FILES ${MCUBOOT_KEY_NS} ${MCUBOOT_KEY_S}
DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
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_config_default.cmake
${CMAKE_SOURCE_DIR}/config/cp_check.cmake
DESTINATION ${INSTALL_CONFIG_DIR})
###################### Install NS platform sources #############################
install(CODE "MESSAGE(\"----- Installing platform NS -----\")")
install(DIRECTORY ${PLATFORM_DIR}/ext/cmsis
DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext)
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
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
DESTINATION ${INSTALL_CMAKE_DIR})