blob: 1e726caa2c4d6e6c4d7cc825d5f9e651ac3175ee [file] [log] [blame]
Raef Colesa1f504c2020-07-10 09:58:55 +01001#-------------------------------------------------------------------------------
Raef Coles4fed4632020-12-08 12:56:47 +00002# Copyright (c) 2020-2021, Arm Limited. All rights reserved.
Charley Chue5fa2d02020-11-13 10:00:24 -08003# Copyright (c) 2020, Cypress Semiconductor Corporation. All rights reserved.
Raef Colesa1f504c2020-07-10 09:58:55 +01004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7#-------------------------------------------------------------------------------
8
Raef Coles035c83b2020-09-29 10:32:52 +01009# Generate correct filename
Raef Colesa1f504c2020-07-10 09:58:55 +010010string(TOUPPER ${TFM_PLATFORM} TFM_PLATFORM_UPPERCASE)
11string(REGEX REPLACE "-" "_" TFM_PLATFORM_UPPERCASE_UNDERSCORE ${TFM_PLATFORM_UPPERCASE})
Øyvind Rønningstad1dab74b2020-12-01 15:26:39 +010012string(REGEX REPLACE "^(\\.\\.([\\/\\\\]))+" "EXTERNAL\\2" TFM_PLATFORM_UPPERCASE_UNDERSCORE_NO_PARENT_DIR ${TFM_PLATFORM_UPPERCASE_UNDERSCORE})
Raef Colesa1f504c2020-07-10 09:58:55 +010013
14install(DIRECTORY ${CMAKE_BINARY_DIR}/bin/
Raef Colesa198a442020-11-24 11:42:53 +000015 DESTINATION ${TFM_INSTALL_PATH}/outputs/${TFM_PLATFORM_UPPERCASE_UNDERSCORE_NO_PARENT_DIR}
Raef Coles035c83b2020-09-29 10:32:52 +010016)
17
18set(INTERFACE_INC_DIR ${CMAKE_SOURCE_DIR}/interface/include)
19set(INTERFACE_SRC_DIR ${CMAKE_SOURCE_DIR}/interface/src)
Raef Coles4fed4632020-12-08 12:56:47 +000020
21set(INSTALL_INTERFACE_INC_DIR ${TFM_INSTALL_PATH}/interface/include)
22set(INSTALL_INTERFACE_SRC_DIR ${TFM_INSTALL_PATH}/interface/src)
23set(INSTALL_INTERFACE_LIB_DIR ${TFM_INSTALL_PATH}/interface/lib)
Raef Coles035c83b2020-09-29 10:32:52 +010024
David Hub24aead2020-10-17 19:46:19 +080025# export veneer lib
26if (NOT TFM_MULTI_CORE_TOPOLOGY)
Raef Coles25fc1752020-11-24 12:04:42 +000027 install(FILES ${CMAKE_BINARY_DIR}/secure_fw/s_veneers.o
Raef Coles4fed4632020-12-08 12:56:47 +000028 DESTINATION ${INSTALL_INTERFACE_LIB_DIR})
David Hub24aead2020-10-17 19:46:19 +080029endif()
30
Raef Coles035c83b2020-09-29 10:32:52 +010031####################### export headers #########################################
32
33install(FILES ${INTERFACE_INC_DIR}/psa/client.h
34 ${INTERFACE_INC_DIR}/psa/error.h
Raef Coles4fed4632020-12-08 12:56:47 +000035 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010036
37install(FILES ${INTERFACE_INC_DIR}/os_wrapper/common.h
38 ${INTERFACE_INC_DIR}/os_wrapper/mutex.h
Charley Chue5fa2d02020-11-13 10:00:24 -080039 ${INTERFACE_INC_DIR}/os_wrapper/semaphore.h
40 ${INTERFACE_INC_DIR}/os_wrapper/thread.h
41 ${INTERFACE_INC_DIR}/os_wrapper/tick.h
Raef Coles4fed4632020-12-08 12:56:47 +000042 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/os_wrapper)
Raef Coles035c83b2020-09-29 10:32:52 +010043
44install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/psa_manifest/sid.h
Raef Coles4fed4632020-12-08 12:56:47 +000045 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa_manifest)
Raef Coles035c83b2020-09-29 10:32:52 +010046
47install(FILES ${INTERFACE_INC_DIR}/tfm_api.h
48 ${INTERFACE_INC_DIR}/tfm_ns_interface.h
49 ${INTERFACE_INC_DIR}/tfm_ns_svc.h
Raef Coles4fed4632020-12-08 12:56:47 +000050 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010051
52install(FILES ${INTERFACE_INC_DIR}/ext/tz_context.h
Raef Coles4fed4632020-12-08 12:56:47 +000053 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/ext)
Raef Coles035c83b2020-09-29 10:32:52 +010054
55if (TFM_MULTI_CORE_TOPOLOGY)
56 install(FILES ${INTERFACE_INC_DIR}/tfm_multi_core_api.h
57 ${INTERFACE_INC_DIR}/tfm_ns_mailbox.h
58 ${INTERFACE_INC_DIR}/tfm_mailbox.h
Raef Coles4fed4632020-12-08 12:56:47 +000059 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010060else()
61 install(FILES ${CMAKE_BINARY_DIR}/generated/interface/include/tfm_veneers.h
Raef Coles4fed4632020-12-08 12:56:47 +000062 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/tfm/veneers)
Raef Coles035c83b2020-09-29 10:32:52 +010063endif()
64
65if (TFM_NS_CLIENT_IDENTIFICATION)
66 install(FILES ${INTERFACE_INC_DIR}/tfm_nspm_api.h
67 ${INTERFACE_INC_DIR}/tfm_nspm_svc_handler.h
Raef Coles4fed4632020-12-08 12:56:47 +000068 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010069endif()
70
71if (TFM_PARTITION_PROTECTED_STORAGE)
72 install(FILES ${INTERFACE_INC_DIR}/psa/protected_storage.h
Raef Coles4fed4632020-12-08 12:56:47 +000073 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010074endif()
75
76if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
77 install(FILES ${INTERFACE_INC_DIR}/psa/internal_trusted_storage.h
78 ${INTERFACE_INC_DIR}/psa/storage_common.h
Raef Coles4fed4632020-12-08 12:56:47 +000079 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010080endif()
81
82if (TFM_PARTITION_CRYPTO)
83 install(FILES ${INTERFACE_INC_DIR}/psa/crypto_extra.h
84 ${INTERFACE_INC_DIR}/psa/crypto_compat.h
85 ${INTERFACE_INC_DIR}/psa/crypto.h
86 ${INTERFACE_INC_DIR}/psa/crypto_client_struct.h
87 ${INTERFACE_INC_DIR}/psa/crypto_sizes.h
88 ${INTERFACE_INC_DIR}/psa/crypto_struct.h
89 ${INTERFACE_INC_DIR}/psa/crypto_types.h
90 ${INTERFACE_INC_DIR}/psa/crypto_values.h
Raef Coles4fed4632020-12-08 12:56:47 +000091 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010092 install(FILES ${INTERFACE_INC_DIR}/tfm_crypto_defs.h
Raef Coles4fed4632020-12-08 12:56:47 +000093 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +010094endif()
95
96if (TFM_PARTITION_INITIAL_ATTESTATION)
97 install(FILES ${INTERFACE_INC_DIR}/psa/initial_attestation.h
Raef Coles4fed4632020-12-08 12:56:47 +000098 DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa)
Raef Coles035c83b2020-09-29 10:32:52 +010099endif()
100
101if(TFM_PARTITION_AUDIT_LOG)
102 install(FILES ${INTERFACE_INC_DIR}/psa_audit_api.h
103 ${INTERFACE_INC_DIR}/psa_audit_defs.h
Raef Coles4fed4632020-12-08 12:56:47 +0000104 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100105endif()
106
107if(TFM_PARTITION_PLATFORM)
108 install(FILES ${INTERFACE_INC_DIR}/tfm_platform_api.h
Raef Coles4fed4632020-12-08 12:56:47 +0000109 DESTINATION ${INSTALL_INTERFACE_INC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100110endif()
111
112####################### export sources #########################################
113
114if (TFM_MULTI_CORE_TOPOLOGY)
115 install(FILES ${INTERFACE_SRC_DIR}/tfm_ns_mailbox.c
116 ${INTERFACE_SRC_DIR}/tfm_multi_core_api.c
117 ${INTERFACE_SRC_DIR}/tfm_multi_core_psa_ns_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000118 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100119else()
120 install(FILES ${INTERFACE_SRC_DIR}/tfm_ns_interface.c
Raef Coles4fed4632020-12-08 12:56:47 +0000121 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100122
123 if(TFM_PSA_API)
124 install(FILES ${INTERFACE_SRC_DIR}/tfm_psa_ns_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000125 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100126 endif()
127endif()
128
129if (TFM_NS_CLIENT_IDENTIFICATION)
130 install(FILES ${INTERFACE_SRC_DIR}/tfm_nspm_api.c
131 ${INTERFACE_SRC_DIR}/tfm_nspm_svc_handler.c
Raef Coles4fed4632020-12-08 12:56:47 +0000132 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100133endif()
134
135if (TFM_PARTITION_PROTECTED_STORAGE)
136 if (TFM_PSA_API)
137 install(FILES ${INTERFACE_SRC_DIR}/tfm_ps_ipc_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000138 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100139 else()
140 install(FILES ${INTERFACE_SRC_DIR}/tfm_ps_func_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000141 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100142 endif()
143endif()
144
145if (TFM_PARTITION_INTERNAL_TRUSTED_STORAGE)
146 if (TFM_PSA_API)
147 install(FILES ${INTERFACE_SRC_DIR}/tfm_its_ipc_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000148 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100149 else()
150 install(FILES ${INTERFACE_SRC_DIR}/tfm_its_func_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000151 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100152 endif()
153endif()
154
155if (TFM_PARTITION_CRYPTO)
156 if (TFM_PSA_API)
157 install(FILES ${INTERFACE_SRC_DIR}/tfm_crypto_ipc_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000158 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100159 else()
160 install(FILES ${INTERFACE_SRC_DIR}/tfm_crypto_func_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000161 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100162 endif()
163endif()
164
165if (TFM_PARTITION_INITIAL_ATTESTATION)
166 if (TFM_PSA_API)
167 install(FILES ${INTERFACE_SRC_DIR}/tfm_initial_attestation_ipc_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000168 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100169 else()
170 install(FILES ${INTERFACE_SRC_DIR}/tfm_initial_attestation_func_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000171 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100172 endif()
173endif()
174
175if(TFM_PARTITION_AUDIT_LOG)
176 install(FILES ${INTERFACE_SRC_DIR}/tfm_audit_func_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000177 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100178endif()
179
180if(TFM_PARTITION_PLATFORM)
181 if(TFM_PSA_API)
182 install(FILES ${INTERFACE_SRC_DIR}/tfm_platform_ipc_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000183 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100184 else()
185 install(FILES ${INTERFACE_SRC_DIR}/tfm_platform_func_api.c
Raef Coles4fed4632020-12-08 12:56:47 +0000186 DESTINATION ${INSTALL_INTERFACE_SRC_DIR})
Raef Coles035c83b2020-09-29 10:32:52 +0100187 endif()
188endif()
Raef Colesb6814d52020-12-08 13:15:40 +0000189
190
191##################### Export image signing information #########################
192
193set(INSTALL_IMAGE_SIGINING_DIR ${TFM_INSTALL_PATH}/image_signing)
194
195if(BL2)
196 install(DIRECTORY bl2/ext/mcuboot/scripts
197 DESTINATION ${INSTALL_IMAGE_SIGINING_DIR})
198
199 if (MCUBOOT_ENC_IMAGES)
200 install(FILES ${MCUBOOT_KEY_ENC}
201 DESTINATION ${INSTALL_IMAGE_SIGINING_DIR}/keys)
202 endif()
203
204 install(FILES $<TARGET_OBJECTS:signing_layout_s>
205 DESTINATION ${INSTALL_IMAGE_SIGINING_DIR}/layout_files)
206
207 if(MCUBOOT_IMAGE_NUMBER GREATER 1)
208 install(FILES $<TARGET_OBJECTS:signing_layout_ns>
209 DESTINATION ${INSTALL_IMAGE_SIGINING_DIR}/layout_files)
210
211 install(FILES ${MCUBOOT_KEY_NS}
212 DESTINATION ${INSTALL_IMAGE_SIGINING_DIR}/keys)
213 else()
214 install(FILES ${MCUBOOT_KEY_S}
215 DESTINATION ${INSTALL_IMAGE_SIGINING_DIR}/keys)
216 endif()
217endif()