blob: cd3d8087992458c8f8d3942478853ecdc3915e0f [file] [log] [blame]
Raef Colesa1f504c2020-07-10 09:58:55 +01001#-------------------------------------------------------------------------------
Kevin Penga2b68022023-01-13 13:54:05 +08002# Copyright (c) 2020-2023, Arm Limited. All rights reserved.
BohdanHunkof871df02023-02-03 14:36:41 +02003# Copyright (c) 2022-2023 Cypress Semiconductor Corporation (an Infineon company)
Chris Brandcae20262022-06-23 12:05:33 -07004# or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
Raef Colesa1f504c2020-07-10 09:58:55 +01005#
6# SPDX-License-Identifier: BSD-3-Clause
7#
8#-------------------------------------------------------------------------------
9
Raef Colesa1f504c2020-07-10 09:58:55 +010010install(DIRECTORY ${CMAKE_BINARY_DIR}/bin/
Anton Komlev3dd98632023-09-20 16:26:30 +010011 DESTINATION bin
Raef Coles035c83b2020-09-29 10:32:52 +010012)
13
David Hub24aead2020-10-17 19:46:19 +080014# export veneer lib
Chris Brandca819022022-07-19 09:25:15 -070015if (CONFIG_TFM_USE_TRUSTZONE)
Raef Coles25fc1752020-11-24 12:04:42 +000016 install(FILES ${CMAKE_BINARY_DIR}/secure_fw/s_veneers.o
Raef Coles4fed4632020-12-08 12:56:47 +000017 DESTINATION ${INSTALL_INTERFACE_LIB_DIR})
David Hub24aead2020-10-17 19:46:19 +080018endif()
19
Raef Coles035c83b2020-09-29 10:32:52 +010020####################### export headers #########################################
21
22install(FILES ${INTERFACE_INC_DIR}/psa/client.h
23 ${INTERFACE_INC_DIR}/psa/error.h
Raef Coles4fed4632020-12-08 12:56:47 +000024 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010025
Raef Coles035c83b2020-09-29 10:32:52 +010026install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa_manifest/sid.h
Raef Coles4fed4632020-12-08 12:56:47 +000027 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa_manifest)
Raef Coles035c83b2020-09-29 10:32:52 +010028
Kevin Peng27cf4de2023-10-26 16:04:46 +080029install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/config_impl.h
30 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
31
Kevin Peng0e340ea2023-08-15 17:51:44 +080032install(FILES ${INTERFACE_INC_DIR}/tfm_veneers.h
Raef Coles035c83b2020-09-29 10:32:52 +010033 ${INTERFACE_INC_DIR}/tfm_ns_interface.h
Raef Coles4fed4632020-12-08 12:56:47 +000034 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010035
Sherry Zhnag482b88b2021-08-19 17:51:47 +080036install(FILES ${INTERFACE_INC_DIR}/tfm_ns_client_ext.h
37 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010038
David Hu895cdc32023-01-16 19:19:25 +080039install(FILES ${CMAKE_SOURCE_DIR}/secure_fw/include/config_tfm.h
40 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
David Hu6d1a9b62023-02-22 16:54:04 +080041install(FILES ${CMAKE_SOURCE_DIR}/config/config_base.h
42 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
David Hu895cdc32023-01-16 19:19:25 +080043
Summer Qin566e03b2022-10-08 17:27:42 +080044install(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)
Xinyu Zhang93899d02021-05-11 10:48:52 +080048
Chris Brandfbf3f462022-06-23 15:27:20 -070049if (TFM_PARTITION_NS_AGENT_MAILBOX)
David Hu04969a42020-06-14 21:25:35 +080050 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
David Hucb915812021-12-27 14:22:04 +080053 ${INTERFACE_INC_DIR}/multi_core/tfm_ns_mailbox_test.h
David Hu186a1292021-09-13 09:05:52 +080054 ${CMAKE_BINARY_DIR}/generated/interface/include/tfm_mailbox_config.h
David Hu71f6dcc2023-10-18 11:52:21 +080055 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/multi_core)
Chris Brandfbf3f462022-06-23 15:27:20 -070056endif()
57
Mark Horvathfbc2c502022-09-09 16:16:07 +020058if (TFM_PARTITION_PROTECTED_STORAGE)
Raef Coles035c83b2020-09-29 10:32:52 +010059 install(FILES ${INTERFACE_INC_DIR}/psa/protected_storage.h
Raef Coles4fed4632020-12-08 12:56:47 +000060 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
David Hudc8cb9e2021-11-10 12:45:59 +080061 install(FILES ${INTERFACE_INC_DIR}/tfm_ps_defs.h
62 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010063endif()
64
Mark Horvathfbc2c502022-09-09 16:16:07 +020065if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
Raef Coles035c83b2020-09-29 10:32:52 +010066 install(FILES ${INTERFACE_INC_DIR}/psa/internal_trusted_storage.h
67 ${INTERFACE_INC_DIR}/psa/storage_common.h
Raef Coles4fed4632020-12-08 12:56:47 +000068 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
David Hudc8cb9e2021-11-10 12:45:59 +080069 install(FILES ${INTERFACE_INC_DIR}/tfm_its_defs.h
70 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010071endif()
72
Mark Horvathfbc2c502022-09-09 16:16:07 +020073if (TFM_PARTITION_CRYPTO)
Raef Coles035c83b2020-09-29 10:32:52 +010074 install(FILES ${INTERFACE_INC_DIR}/psa/crypto_extra.h
75 ${INTERFACE_INC_DIR}/psa/crypto_compat.h
76 ${INTERFACE_INC_DIR}/psa/crypto.h
77 ${INTERFACE_INC_DIR}/psa/crypto_client_struct.h
Xinyu Zhangfce20372023-04-10 14:43:47 +080078 ${INTERFACE_INC_DIR}/psa/crypto_platform.h
Raef Coles035c83b2020-09-29 10:32:52 +010079 ${INTERFACE_INC_DIR}/psa/crypto_sizes.h
80 ${INTERFACE_INC_DIR}/psa/crypto_struct.h
81 ${INTERFACE_INC_DIR}/psa/crypto_types.h
82 ${INTERFACE_INC_DIR}/psa/crypto_values.h
Raef Coles4fed4632020-12-08 12:56:47 +000083 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010084 install(FILES ${INTERFACE_INC_DIR}/tfm_crypto_defs.h
Raef Coles4fed4632020-12-08 12:56:47 +000085 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010086endif()
87
Mark Horvathfbc2c502022-09-09 16:16:07 +020088if (TFM_PARTITION_INITIAL_ATTESTATION)
David Hu9191b612023-06-08 12:02:39 +080089 install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa/initial_attestation.h
Raef Coles4fed4632020-12-08 12:56:47 +000090 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
David Hudc8cb9e2021-11-10 12:45:59 +080091 install(FILES ${INTERFACE_INC_DIR}/tfm_attest_defs.h
David Hu32bd6152022-09-27 13:10:36 +080092 ${INTERFACE_INC_DIR}/tfm_attest_iat_defs.h
David Hudc8cb9e2021-11-10 12:45:59 +080093 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010094endif()
95
Mark Horvathfbc2c502022-09-09 16:16:07 +020096if(TFM_PARTITION_PLATFORM)
Raef Coles035c83b2020-09-29 10:32:52 +010097 install(FILES ${INTERFACE_INC_DIR}/tfm_platform_api.h
Raef Coles4fed4632020-12-08 12:56:47 +000098 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010099endif()
100
Sherry Zhang07b42412021-01-07 14:19:41 +0800101if(TFM_PARTITION_FIRMWARE_UPDATE)
102 install(FILES ${INTERFACE_INC_DIR}/psa/update.h
Sherry Zhang73126e52022-02-15 14:27:49 +0800103 ${CMAKE_BINARY_DIR}/generated/interface/include/psa/fwu_config.h
Sherry Zhang07b42412021-01-07 14:19:41 +0800104 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
105 install(FILES ${INTERFACE_INC_DIR}/tfm_fwu_defs.h
106 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
107endif()
108
David Hu32bd6152022-09-27 13:10:36 +0800109if(PLATFORM_DEFAULT_CRYPTO_KEYS)
110 install(DIRECTORY ${INTERFACE_INC_DIR}/crypto_keys
111 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
112endif()
113
Raef Coles035c83b2020-09-29 10:32:52 +0100114####################### export sources #########################################
115
Chris Brandfbf3f462022-06-23 15:27:20 -0700116if (TFM_PARTITION_NS_AGENT_MAILBOX)
David Hu04969a42020-06-14 21:25:35 +0800117 install(FILES ${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox.c
118 ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_ns_api.c
119 ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_psa_ns_api.c
David Hud5973452020-11-26 16:47:46 +0800120 ${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_thread.c
David Hu32bd6152022-09-27 13:10:36 +0800121 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}/multi_core)
Chris Brandfbf3f462022-06-23 15:27:20 -0700122endif()
David Huf07f3f12021-04-06 18:03:33 +0800123
Chris Brandfbf3f462022-06-23 15:27:20 -0700124if (TFM_PARTITION_NS_AGENT_TZ)
125 install(FILES ${INTERFACE_SRC_DIR}/tfm_psa_ns_api.c
126 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
127endif()
128
BohdanHunkof871df02023-02-03 14:36:41 +0200129 install(DIRECTORY ${INTERFACE_INC_DIR}/os_wrapper
130 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
131
Chris Brandfbf3f462022-06-23 15:27:20 -0700132if (CONFIG_TFM_USE_TRUSTZONE)
BohdanHunkof871df02023-02-03 14:36:41 +0200133 install(DIRECTORY ${INTERFACE_SRC_DIR}/os_wrapper
David Huf07f3f12021-04-06 18:03:33 +0800134 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100135endif()
136
Mark Horvathfbc2c502022-09-09 16:16:07 +0200137if (TFM_PARTITION_PROTECTED_STORAGE)
Summer Qind23bbb32022-10-18 15:30:06 +0800138 install(FILES ${INTERFACE_SRC_DIR}/tfm_ps_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800139 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100140endif()
141
Mark Horvathfbc2c502022-09-09 16:16:07 +0200142if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
Summer Qind23bbb32022-10-18 15:30:06 +0800143 install(FILES ${INTERFACE_SRC_DIR}/tfm_its_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800144 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100145endif()
146
Mark Horvathfbc2c502022-09-09 16:16:07 +0200147if (TFM_PARTITION_CRYPTO)
Summer Qind23bbb32022-10-18 15:30:06 +0800148 install(FILES ${INTERFACE_SRC_DIR}/tfm_crypto_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800149 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100150endif()
151
Mark Horvathfbc2c502022-09-09 16:16:07 +0200152if (TFM_PARTITION_INITIAL_ATTESTATION)
Summer Qind23bbb32022-10-18 15:30:06 +0800153 install(FILES ${INTERFACE_SRC_DIR}/tfm_attest_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800154 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100155endif()
156
Mark Horvathfbc2c502022-09-09 16:16:07 +0200157if(TFM_PARTITION_PLATFORM)
Summer Qind23bbb32022-10-18 15:30:06 +0800158 install(FILES ${INTERFACE_SRC_DIR}/tfm_platform_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800159 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100160endif()
Raef Colesb6814d52020-12-08 13:15:40 +0000161
162
163##################### Export image signing information #########################
164
Raef Colesb6814d52020-12-08 13:15:40 +0000165if(BL2)
166 install(DIRECTORY bl2/ext/mcuboot/scripts
Anton Komlevaee4b612023-05-14 17:38:36 +0100167 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}
168 PATTERN "scripts/*.py"
169 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
170 GROUP_EXECUTE GROUP_READ
171 PATTERN "scripts/wrapper/*.py"
172 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
173 GROUP_EXECUTE GROUP_READ)
174
175 install(DIRECTORY ${MCUBOOT_PATH}/scripts/imgtool
176 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/scripts)
Raef Colesb6814d52020-12-08 13:15:40 +0000177
178 if (MCUBOOT_ENC_IMAGES)
179 install(FILES ${MCUBOOT_KEY_ENC}
Alamy Liu2c13c032021-01-20 09:55:50 -0800180 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
Raef Colesb6814d52020-12-08 13:15:40 +0000181 endif()
182
Anton Komlevaee4b612023-05-14 17:38:36 +0100183 # unconditionally install all necessary files for optional signing
184 install(FILES $<TARGET_OBJECTS:signing_layout_s>
185 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
186
187 if(MCUBOOT_IMAGE_NUMBER GREATER 1)
188 install(FILES $<TARGET_OBJECTS:signing_layout_ns>
189 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
Raef Colesb6814d52020-12-08 13:15:40 +0000190 endif()
Anton Komlevaee4b612023-05-14 17:38:36 +0100191
192 install(FILES ${MCUBOOT_KEY_NS} ${MCUBOOT_KEY_S}
193 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
Raef Colesb6814d52020-12-08 13:15:40 +0000194endif()
Sherry Zhang07b42412021-01-07 14:19:41 +0800195
196if(TFM_PARTITION_FIRMWARE_UPDATE)
Summer Qind23bbb32022-10-18 15:30:06 +0800197 install(FILES ${INTERFACE_SRC_DIR}/tfm_fwu_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800198 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Sherry Zhang07b42412021-01-07 14:19:41 +0800199endif()
Chris Brand9edf0812022-07-05 14:18:42 -0700200
Jianliang Shenbd624ed2023-10-24 15:42:59 +0800201######################### Export common configurations #########################
202
203install(FILES ${CMAKE_SOURCE_DIR}/config/cp_config_default.cmake
204 ${CMAKE_SOURCE_DIR}/config/cp_check.cmake
205 DESTINATION ${INSTALL_CONFIG_DIR})
206
Anton Komlevaee4b612023-05-14 17:38:36 +0100207###################### Install NS platform sources #############################
David Hu895cdc32023-01-16 19:19:25 +0800208
Anton Komlevaee4b612023-05-14 17:38:36 +0100209install(CODE "MESSAGE(\"----- Installing platform NS -----\")")
210
David Hu66bd9a02023-10-18 22:34:19 +0800211install(DIRECTORY ${PLATFORM_DIR}/ext/cmsis
212 DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext)
213
214if(PLATFORM_DEFAULT_UART_STDOUT)
215 install(FILES ${PLATFORM_DIR}/ext/common/uart_stdout.c
216 ${PLATFORM_DIR}/ext/common/uart_stdout.h
217 DESTINATION ${INSTALL_PLATFORM_NS_DIR}/ext/common)
218endif()
Anton Komlevaee4b612023-05-14 17:38:36 +0100219
David Hu71f6dcc2023-10-18 11:52:21 +0800220install(DIRECTORY ${PLATFORM_DIR}/include
221 DESTINATION ${INSTALL_PLATFORM_NS_DIR})
222
Anton Komlevaee4b612023-05-14 17:38:36 +0100223install(FILES ${CMAKE_SOURCE_DIR}/cmake/spe-CMakeLists.cmake
Anton Komlev3dd98632023-09-20 16:26:30 +0100224 DESTINATION ${CMAKE_INSTALL_PREFIX}
Anton Komlevaee4b612023-05-14 17:38:36 +0100225 RENAME CMakeLists.txt)
226
David Huc28b9b22023-10-14 15:33:16 +0800227install(FILES ${PLATFORM_DIR}/ns/toolchain_ns_GNUARM.cmake
228 ${PLATFORM_DIR}/ns/toolchain_ns_ARMCLANG.cmake
Anton Komlevaee4b612023-05-14 17:38:36 +0100229 DESTINATION ${INSTALL_CMAKE_DIR})
230
Anton Komlevaee4b612023-05-14 17:38:36 +0100231install(FILES
232 ${CMAKE_SOURCE_DIR}/lib/fih/inc/fih.h
233 ${PLATFORM_DIR}/include/tfm_plat_ns.h
234 DESTINATION ${INSTALL_PLATFORM_NS_DIR}/include)
235
236if (TARGET psa_crypto_config)
237# FIXIT: This is a temporal patch to reduce the change scope and simplify review.
238# In the future we shall decouple this target from tfm_config becuase
239# "psa_crypto_config" target exists not in all configurations.
240# Functionally "psa_crypto_config" provides only include path for Crypto accelerator.
241install(TARGETS tfm_config psa_crypto_config psa_interface
Anton Komlev3dd98632023-09-20 16:26:30 +0100242 DESTINATION ${CMAKE_INSTALL_PREFIX}
Anton Komlevaee4b612023-05-14 17:38:36 +0100243 EXPORT tfm-config
244 )
245else()
246 install(TARGETS tfm_config psa_interface
Anton Komlev3dd98632023-09-20 16:26:30 +0100247 DESTINATION ${CMAKE_INSTALL_PREFIX}
Anton Komlevaee4b612023-05-14 17:38:36 +0100248 EXPORT tfm-config
249 )
250endif()
251
252target_include_directories(psa_interface
253 INTERFACE
254 $<INSTALL_INTERFACE:interface/include>
255 )
256
257install(EXPORT tfm-config
258 FILE spe_export.cmake
259 DESTINATION ${INSTALL_CMAKE_DIR})
260
261configure_file(${CMAKE_SOURCE_DIR}/config/spe_config.cmake.in
262 ${INSTALL_CMAKE_DIR}/spe_config.cmake @ONLY)