blob: 46d378272f795a8f58c3ae3c63eb6e52c160e444 [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 Komlevaee4b612023-05-14 17:38:36 +010011 DESTINATION outputs
Raef Coles035c83b2020-09-29 10:32:52 +010012)
13
14set(INTERFACE_INC_DIR ${CMAKE_SOURCE_DIR}/interface/include)
15set(INTERFACE_SRC_DIR ${CMAKE_SOURCE_DIR}/interface/src)
Raef Coles4fed4632020-12-08 12:56:47 +000016
17set(INSTALL_INTERFACE_INC_DIR ${TFM_INSTALL_PATH}/interface/include)
18set(INSTALL_INTERFACE_SRC_DIR ${TFM_INSTALL_PATH}/interface/src)
19set(INSTALL_INTERFACE_LIB_DIR ${TFM_INSTALL_PATH}/interface/lib)
Anton Komlevaee4b612023-05-14 17:38:36 +010020set(INSTALL_PLATFORM_NS_DIR ${TFM_INSTALL_PATH}/platform)
21set(INSTALL_CMAKE_DIR ${TFM_INSTALL_PATH}/cmake)
Raef Coles035c83b2020-09-29 10:32:52 +010022
David Hub24aead2020-10-17 19:46:19 +080023# export veneer lib
Chris Brandca819022022-07-19 09:25:15 -070024if (CONFIG_TFM_USE_TRUSTZONE)
Raef Coles25fc1752020-11-24 12:04:42 +000025 install(FILES ${CMAKE_BINARY_DIR}/secure_fw/s_veneers.o
Raef Coles4fed4632020-12-08 12:56:47 +000026 DESTINATION ${INSTALL_INTERFACE_LIB_DIR})
David Hub24aead2020-10-17 19:46:19 +080027endif()
28
Raef Coles035c83b2020-09-29 10:32:52 +010029####################### export headers #########################################
30
31install(FILES ${INTERFACE_INC_DIR}/psa/client.h
32 ${INTERFACE_INC_DIR}/psa/error.h
Raef Coles4fed4632020-12-08 12:56:47 +000033 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010034
Raef Coles035c83b2020-09-29 10:32:52 +010035install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa_manifest/sid.h
Raef Coles4fed4632020-12-08 12:56:47 +000036 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa_manifest)
Raef Coles035c83b2020-09-29 10:32:52 +010037
Kevin Peng0e340ea2023-08-15 17:51:44 +080038install(FILES ${INTERFACE_INC_DIR}/tfm_veneers.h
Raef Coles035c83b2020-09-29 10:32:52 +010039 ${INTERFACE_INC_DIR}/tfm_ns_interface.h
Raef Coles4fed4632020-12-08 12:56:47 +000040 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010041
Sherry Zhnag482b88b2021-08-19 17:51:47 +080042install(FILES ${INTERFACE_INC_DIR}/tfm_ns_client_ext.h
43 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010044
David Hu895cdc32023-01-16 19:19:25 +080045install(FILES ${CMAKE_SOURCE_DIR}/secure_fw/include/config_tfm.h
46 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
David Hu6d1a9b62023-02-22 16:54:04 +080047install(FILES ${CMAKE_SOURCE_DIR}/config/config_base.h
48 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
David Hu895cdc32023-01-16 19:19:25 +080049
Summer Qin566e03b2022-10-08 17:27:42 +080050install(FILES ${INTERFACE_INC_DIR}/tfm_psa_call_pack.h
51 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
52install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa/framework_feature.h
53 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Xinyu Zhang93899d02021-05-11 10:48:52 +080054
Chris Brandfbf3f462022-06-23 15:27:20 -070055if (TFM_PARTITION_NS_AGENT_MAILBOX)
David Hu04969a42020-06-14 21:25:35 +080056 install(FILES ${INTERFACE_INC_DIR}/multi_core/tfm_multi_core_api.h
57 ${INTERFACE_INC_DIR}/multi_core/tfm_ns_mailbox.h
58 ${INTERFACE_INC_DIR}/multi_core/tfm_mailbox.h
David Hucb915812021-12-27 14:22:04 +080059 ${INTERFACE_INC_DIR}/multi_core/tfm_ns_mailbox_test.h
David Hu186a1292021-09-13 09:05:52 +080060 ${CMAKE_BINARY_DIR}/generated/interface/include/tfm_mailbox_config.h
Raef Coles4fed4632020-12-08 12:56:47 +000061 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Chris Brandfbf3f462022-06-23 15:27:20 -070062endif()
63
Mark Horvathfbc2c502022-09-09 16:16:07 +020064if (TFM_PARTITION_PROTECTED_STORAGE)
Raef Coles035c83b2020-09-29 10:32:52 +010065 install(FILES ${INTERFACE_INC_DIR}/psa/protected_storage.h
Raef Coles4fed4632020-12-08 12:56:47 +000066 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
David Hudc8cb9e2021-11-10 12:45:59 +080067 install(FILES ${INTERFACE_INC_DIR}/tfm_ps_defs.h
68 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010069endif()
70
Mark Horvathfbc2c502022-09-09 16:16:07 +020071if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
Raef Coles035c83b2020-09-29 10:32:52 +010072 install(FILES ${INTERFACE_INC_DIR}/psa/internal_trusted_storage.h
73 ${INTERFACE_INC_DIR}/psa/storage_common.h
Raef Coles4fed4632020-12-08 12:56:47 +000074 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
David Hudc8cb9e2021-11-10 12:45:59 +080075 install(FILES ${INTERFACE_INC_DIR}/tfm_its_defs.h
76 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010077endif()
78
Mark Horvathfbc2c502022-09-09 16:16:07 +020079if (TFM_PARTITION_CRYPTO)
Raef Coles035c83b2020-09-29 10:32:52 +010080 install(FILES ${INTERFACE_INC_DIR}/psa/crypto_extra.h
81 ${INTERFACE_INC_DIR}/psa/crypto_compat.h
82 ${INTERFACE_INC_DIR}/psa/crypto.h
83 ${INTERFACE_INC_DIR}/psa/crypto_client_struct.h
Xinyu Zhangfce20372023-04-10 14:43:47 +080084 ${INTERFACE_INC_DIR}/psa/crypto_platform.h
Raef Coles035c83b2020-09-29 10:32:52 +010085 ${INTERFACE_INC_DIR}/psa/crypto_sizes.h
86 ${INTERFACE_INC_DIR}/psa/crypto_struct.h
87 ${INTERFACE_INC_DIR}/psa/crypto_types.h
88 ${INTERFACE_INC_DIR}/psa/crypto_values.h
Raef Coles4fed4632020-12-08 12:56:47 +000089 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010090 install(FILES ${INTERFACE_INC_DIR}/tfm_crypto_defs.h
Raef Coles4fed4632020-12-08 12:56:47 +000091 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010092endif()
93
Mark Horvathfbc2c502022-09-09 16:16:07 +020094if (TFM_PARTITION_INITIAL_ATTESTATION)
David Hu9191b612023-06-08 12:02:39 +080095 install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa/initial_attestation.h
Raef Coles4fed4632020-12-08 12:56:47 +000096 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
David Hudc8cb9e2021-11-10 12:45:59 +080097 install(FILES ${INTERFACE_INC_DIR}/tfm_attest_defs.h
David Hu32bd6152022-09-27 13:10:36 +080098 ${INTERFACE_INC_DIR}/tfm_attest_iat_defs.h
David Hudc8cb9e2021-11-10 12:45:59 +080099 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100100endif()
101
Mark Horvathfbc2c502022-09-09 16:16:07 +0200102if(TFM_PARTITION_PLATFORM)
Raef Coles035c83b2020-09-29 10:32:52 +0100103 install(FILES ${INTERFACE_INC_DIR}/tfm_platform_api.h
Raef Coles4fed4632020-12-08 12:56:47 +0000104 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100105endif()
106
Sherry Zhang07b42412021-01-07 14:19:41 +0800107if(TFM_PARTITION_FIRMWARE_UPDATE)
108 install(FILES ${INTERFACE_INC_DIR}/psa/update.h
Sherry Zhang73126e52022-02-15 14:27:49 +0800109 ${CMAKE_BINARY_DIR}/generated/interface/include/psa/fwu_config.h
Sherry Zhang07b42412021-01-07 14:19:41 +0800110 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
111 install(FILES ${INTERFACE_INC_DIR}/tfm_fwu_defs.h
112 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
113endif()
114
David Hu32bd6152022-09-27 13:10:36 +0800115if(PLATFORM_DEFAULT_CRYPTO_KEYS)
116 install(DIRECTORY ${INTERFACE_INC_DIR}/crypto_keys
117 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
118endif()
119
Raef Coles035c83b2020-09-29 10:32:52 +0100120####################### export sources #########################################
121
Chris Brandfbf3f462022-06-23 15:27:20 -0700122if (TFM_PARTITION_NS_AGENT_MAILBOX)
David Hu04969a42020-06-14 21:25:35 +0800123 install(FILES ${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox.c
124 ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_ns_api.c
125 ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_psa_ns_api.c
David Hud5973452020-11-26 16:47:46 +0800126 ${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_thread.c
David Hu32bd6152022-09-27 13:10:36 +0800127 DESTINATION ${INSTALL_INTERFACE_SRC_DIR}/multi_core)
Chris Brandfbf3f462022-06-23 15:27:20 -0700128endif()
David Huf07f3f12021-04-06 18:03:33 +0800129
Chris Brandfbf3f462022-06-23 15:27:20 -0700130if (TFM_PARTITION_NS_AGENT_TZ)
131 install(FILES ${INTERFACE_SRC_DIR}/tfm_psa_ns_api.c
132 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
133endif()
134
BohdanHunkof871df02023-02-03 14:36:41 +0200135 install(DIRECTORY ${INTERFACE_INC_DIR}/os_wrapper
136 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
137
Chris Brandfbf3f462022-06-23 15:27:20 -0700138if (CONFIG_TFM_USE_TRUSTZONE)
BohdanHunkof871df02023-02-03 14:36:41 +0200139 install(DIRECTORY ${INTERFACE_SRC_DIR}/os_wrapper
David Huf07f3f12021-04-06 18:03:33 +0800140 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100141endif()
142
Mark Horvathfbc2c502022-09-09 16:16:07 +0200143if (TFM_PARTITION_PROTECTED_STORAGE)
Summer Qind23bbb32022-10-18 15:30:06 +0800144 install(FILES ${INTERFACE_SRC_DIR}/tfm_ps_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800145 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100146endif()
147
Mark Horvathfbc2c502022-09-09 16:16:07 +0200148if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
Summer Qind23bbb32022-10-18 15:30:06 +0800149 install(FILES ${INTERFACE_SRC_DIR}/tfm_its_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800150 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100151endif()
152
Mark Horvathfbc2c502022-09-09 16:16:07 +0200153if (TFM_PARTITION_CRYPTO)
Summer Qind23bbb32022-10-18 15:30:06 +0800154 install(FILES ${INTERFACE_SRC_DIR}/tfm_crypto_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800155 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100156endif()
157
Mark Horvathfbc2c502022-09-09 16:16:07 +0200158if (TFM_PARTITION_INITIAL_ATTESTATION)
Summer Qind23bbb32022-10-18 15:30:06 +0800159 install(FILES ${INTERFACE_SRC_DIR}/tfm_attest_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800160 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100161endif()
162
Mark Horvathfbc2c502022-09-09 16:16:07 +0200163if(TFM_PARTITION_PLATFORM)
Summer Qind23bbb32022-10-18 15:30:06 +0800164 install(FILES ${INTERFACE_SRC_DIR}/tfm_platform_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800165 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100166endif()
Raef Colesb6814d52020-12-08 13:15:40 +0000167
168
169##################### Export image signing information #########################
170
Alamy Liu2c13c032021-01-20 09:55:50 -0800171set(INSTALL_IMAGE_SIGNING_DIR ${TFM_INSTALL_PATH}/image_signing)
Raef Colesb6814d52020-12-08 13:15:40 +0000172
173if(BL2)
174 install(DIRECTORY bl2/ext/mcuboot/scripts
Anton Komlevaee4b612023-05-14 17:38:36 +0100175 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}
176 PATTERN "scripts/*.py"
177 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
178 GROUP_EXECUTE GROUP_READ
179 PATTERN "scripts/wrapper/*.py"
180 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
181 GROUP_EXECUTE GROUP_READ)
182
183 install(DIRECTORY ${MCUBOOT_PATH}/scripts/imgtool
184 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/scripts)
Raef Colesb6814d52020-12-08 13:15:40 +0000185
186 if (MCUBOOT_ENC_IMAGES)
187 install(FILES ${MCUBOOT_KEY_ENC}
Alamy Liu2c13c032021-01-20 09:55:50 -0800188 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
Raef Colesb6814d52020-12-08 13:15:40 +0000189 endif()
190
Anton Komlevaee4b612023-05-14 17:38:36 +0100191 # unconditionally install all necessary files for optional signing
192 install(FILES $<TARGET_OBJECTS:signing_layout_s>
193 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
194
195 if(MCUBOOT_IMAGE_NUMBER GREATER 1)
196 install(FILES $<TARGET_OBJECTS:signing_layout_ns>
197 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/layout_files)
Raef Colesb6814d52020-12-08 13:15:40 +0000198 endif()
Anton Komlevaee4b612023-05-14 17:38:36 +0100199
200 install(FILES ${MCUBOOT_KEY_NS} ${MCUBOOT_KEY_S}
201 DESTINATION ${INSTALL_IMAGE_SIGNING_DIR}/keys)
Raef Colesb6814d52020-12-08 13:15:40 +0000202endif()
Sherry Zhang07b42412021-01-07 14:19:41 +0800203
204if(TFM_PARTITION_FIRMWARE_UPDATE)
Summer Qind23bbb32022-10-18 15:30:06 +0800205 install(FILES ${INTERFACE_SRC_DIR}/tfm_fwu_api.c
Summer Qin566e03b2022-10-08 17:27:42 +0800206 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Sherry Zhang07b42412021-01-07 14:19:41 +0800207endif()
Chris Brand9edf0812022-07-05 14:18:42 -0700208
Anton Komlevaee4b612023-05-14 17:38:36 +0100209###################### Install NS platform sources #############################
David Hu895cdc32023-01-16 19:19:25 +0800210
Anton Komlevaee4b612023-05-14 17:38:36 +0100211install(CODE "MESSAGE(\"----- Installing platform NS -----\")")
212
213install(FILES ${PLATFORM_DIR}/ext/common/gcc/tfm_common_ns.ld
214 DESTINATION ${INSTALL_PLATFORM_NS_DIR})
215
216install(FILES ${PLATFORM_DIR}/ext/common/armclang/tfm_common_ns.sct
217 DESTINATION ${INSTALL_PLATFORM_NS_DIR})
218
219install(FILES ${PLATFORM_DIR}/ext/common/iar/tfm_common_ns.icf
220 DESTINATION ${INSTALL_PLATFORM_NS_DIR})
221
222install(DIRECTORY ${PLATFORM_DIR}/ext/cmsis
223 DESTINATION ${INSTALL_PLATFORM_NS_DIR})
224
225install(FILES ${CMAKE_SOURCE_DIR}/cmake/spe-CMakeLists.cmake
226 DESTINATION ${TFM_INSTALL_PATH}
227 RENAME CMakeLists.txt)
228
229install(FILES ${PLATFORM_DIR}/ns/toolchain_ns_GNUARM.cmake
230 DESTINATION ${INSTALL_CMAKE_DIR})
231
232# copy all files from active platform directory
233install(DIRECTORY ${TARGET_PLATFORM_PATH}/ns/
234 DESTINATION ${INSTALL_PLATFORM_NS_DIR} OPTIONAL)
235
236# Export platform abilities
237install(FILES ${TARGET_PLATFORM_PATH}/config.cmake
238 DESTINATION ${INSTALL_PLATFORM_NS_DIR} OPTIONAL)
239
240install(FILES
241 ${CMAKE_SOURCE_DIR}/lib/fih/inc/fih.h
242 ${PLATFORM_DIR}/include/tfm_plat_ns.h
243 DESTINATION ${INSTALL_PLATFORM_NS_DIR}/include)
244
245if (TARGET psa_crypto_config)
246# FIXIT: This is a temporal patch to reduce the change scope and simplify review.
247# In the future we shall decouple this target from tfm_config becuase
248# "psa_crypto_config" target exists not in all configurations.
249# Functionally "psa_crypto_config" provides only include path for Crypto accelerator.
250install(TARGETS tfm_config psa_crypto_config psa_interface
251 DESTINATION ${TFM_INSTALL_PATH}
252 EXPORT tfm-config
253 )
254else()
255 install(TARGETS tfm_config psa_interface
256 DESTINATION ${TFM_INSTALL_PATH}
257 EXPORT tfm-config
258 )
259endif()
260
261target_include_directories(psa_interface
262 INTERFACE
263 $<INSTALL_INTERFACE:interface/include>
264 )
265
266install(EXPORT tfm-config
267 FILE spe_export.cmake
268 DESTINATION ${INSTALL_CMAKE_DIR})
269
270configure_file(${CMAKE_SOURCE_DIR}/config/spe_config.cmake.in
271 ${INSTALL_CMAKE_DIR}/spe_config.cmake @ONLY)
David Hu895cdc32023-01-16 19:19:25 +0800272
Chris Brand9edf0812022-07-05 14:18:42 -0700273##################### Platform-specific installation ###########################
Kevin Peng174f8362023-04-07 11:32:16 +0800274include(${TARGET_PLATFORM_PATH}/install.cmake OPTIONAL)
Anton Komlevaee4b612023-05-14 17:38:36 +0100275
276###################### Install for NS regression tests #########################
277
278include(${CMAKE_SOURCE_DIR}/lib/ext/tf-m-tests/install.cmake OPTIONAL)
279