Raef Coles | 7d3545b | 2020-07-10 10:00:35 +0100 | [diff] [blame] | 1 | #------------------------------------------------------------------------------- |
| 2 | # Copyright (c) 2020, Arm Limited. All rights reserved. |
| 3 | # |
| 4 | # SPDX-License-Identifier: BSD-3-Clause |
| 5 | # |
| 6 | #------------------------------------------------------------------------------- |
| 7 | |
Raef Coles | 6981732 | 2020-10-19 14:14:14 +0100 | [diff] [blame] | 8 | cmake_minimum_required(VERSION 3.15) |
Raef Coles | 7d3545b | 2020-07-10 10:00:35 +0100 | [diff] [blame] | 9 | cmake_policy(SET CMP0076 NEW) |
| 10 | cmake_policy(SET CMP0079 NEW) |
| 11 | |
| 12 | |
| 13 | if (TFM_MULTI_CORE_TOPOLOGY) |
| 14 | include(${CMAKE_SOURCE_DIR}/platform/ext/target/${TFM_PLATFORM}/preload_ns.cmake) |
Raef Coles | e3bf94d | 2020-11-03 11:49:56 +0000 | [diff] [blame] | 15 | tfm_toolchain_reload_compiler() |
Raef Coles | 7d3545b | 2020-07-10 10:00:35 +0100 | [diff] [blame] | 16 | # The platform target is created in this directory/file so that it has the |
| 17 | # same settings as the main ns target. |
| 18 | add_library(platform_ns STATIC) |
| 19 | endif() |
| 20 | |
| 21 | ###################### PSA interface (header only) ############################# |
| 22 | |
| 23 | add_library(psa_interface INTERFACE) |
| 24 | |
| 25 | target_include_directories(psa_interface |
| 26 | INTERFACE |
| 27 | ${CMAKE_CURRENT_SOURCE_DIR}/include |
| 28 | ${CMAKE_BINARY_DIR}/generated/interface/include |
| 29 | ${CMAKE_CURRENT_SOURCE_DIR}/include/os_wrapper |
| 30 | ) |
| 31 | |
| 32 | # PSA interface files are generated from a template |
| 33 | add_dependencies(psa_interface |
| 34 | tfm_generated_files |
| 35 | ) |
| 36 | |
| 37 | target_link_libraries(psa_interface |
| 38 | INTERFACE |
| 39 | tfm_partition_defs |
| 40 | ) |
| 41 | |
| 42 | target_compile_definitions(psa_interface |
| 43 | INTERFACE |
| 44 | $<$<BOOL:${TFM_PSA_API}>:TFM_PSA_API> |
| 45 | $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:TFM_NS_CLIENT_IDENTIFICATION> |
| 46 | $<$<BOOL:${CONFIG_TFM_ENABLE_CTX_MGMT}>:CONFIG_TFM_ENABLE_CTX_MGMT> |
| 47 | $<$<BOOL:${TFM_ISOLATION_LEVEL}>:TFM_LVL=${TFM_ISOLATION_LEVEL}> |
Mingyang Sun | d065159 | 2020-11-16 15:33:13 +0800 | [diff] [blame] | 48 | $<$<OR:$<VERSION_GREATER:${TFM_ISOLATION_LEVEL},1>,$<STREQUAL:"${TEST_PSA_API}","IPC">>:CONFIG_TFM_ENABLE_MEMORY_PROTECT> |
Raef Coles | 7d3545b | 2020-07-10 10:00:35 +0100 | [diff] [blame] | 49 | $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:TFM_MULTI_CORE_TOPOLOGY> |
David Hu | 6086394 | 2020-10-14 14:49:19 +0800 | [diff] [blame] | 50 | $<$<BOOL:${TFM_MULTI_CORE_MULTI_CLIENT_CALL}>:TFM_MULTI_CORE_MULTI_CLIENT_CALL> |
Mark Horvath | b9ac0d5 | 2020-09-09 10:48:22 +0200 | [diff] [blame^] | 51 | $<$<BOOL:${FORWARD_PROT_MSG}>:FORWARD_PROT_MSG=${FORWARD_PROT_MSG}> |
Raef Coles | 7d3545b | 2020-07-10 10:00:35 +0100 | [diff] [blame] | 52 | ) |
| 53 | |
| 54 | ###################### PSA api (S lib) ######################################### |
| 55 | |
| 56 | target_sources(tfm_secure_api |
| 57 | INTERFACE |
| 58 | $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_client.c> |
| 59 | $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_service.c> |
| 60 | $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_lifecycle.c> |
| 61 | ${CMAKE_CURRENT_SOURCE_DIR}/src/log/tfm_log_raw.c |
| 62 | ) |
| 63 | |
| 64 | ###################### PSA api (NS lib) ######################################## |
| 65 | |
| 66 | add_library(psa_api_ns STATIC) |
| 67 | |
| 68 | target_sources(psa_api_ns |
| 69 | PRIVATE |
| 70 | $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:src/tfm_nspm_svc_handler.c> |
| 71 | $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:src/tfm_nspm_api.c> |
Raef Coles | 7d3545b | 2020-07-10 10:00:35 +0100 | [diff] [blame] | 72 | ) |
| 73 | |
| 74 | if (${TFM_PSA_API}) |
| 75 | target_sources(psa_api_ns PRIVATE |
Mark Horvath | 652b900 | 2020-09-08 20:42:05 +0200 | [diff] [blame] | 76 | $<$<OR:$<BOOL:{$FORWARD_PROT_MSG}>,$<BOOL:${TFM_PARTITION_PLATFORM}>>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_platform_ipc_api.c> |
| 77 | $<$<OR:$<BOOL:{$FORWARD_PROT_MSG}>,$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_ps_ipc_api.c> |
| 78 | $<$<OR:$<BOOL:{$FORWARD_PROT_MSG}>,$<BOOL:${TFM_PARTITION_INTERNAL_TRUSTED_STORAGE}>>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_its_ipc_api.c> |
| 79 | $<$<OR:$<BOOL:{$FORWARD_PROT_MSG}>,$<BOOL:${TFM_PARTITION_CRYPTO}>>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_crypto_ipc_api.c> |
| 80 | $<$<OR:$<BOOL:{$FORWARD_PROT_MSG}>,$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_initial_attestation_ipc_api.c> |
Raef Coles | 7d3545b | 2020-07-10 10:00:35 +0100 | [diff] [blame] | 81 | ) |
| 82 | |
| 83 | if (TFM_MULTI_CORE_TOPOLOGY) |
| 84 | target_sources(psa_api_ns PRIVATE |
| 85 | src/tfm_ns_mailbox.c |
| 86 | src/tfm_multi_core_api.c |
| 87 | src/tfm_multi_core_psa_ns_api.c |
| 88 | ) |
| 89 | else() |
| 90 | target_sources(psa_api_ns PRIVATE |
| 91 | src/tfm_ns_interface.c |
| 92 | src/tfm_psa_ns_api.c |
| 93 | ) |
| 94 | endif() |
| 95 | else() |
| 96 | target_sources(psa_api_ns PRIVATE |
| 97 | $<$<BOOL:${TFM_PARTITION_PLATFORM}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_platform_func_api.c> |
| 98 | $<$<BOOL:${TFM_PARTITION_AUDIT_LOG}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_audit_func_api.c> |
| 99 | $<$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_ps_func_api.c> |
| 100 | $<$<BOOL:${TFM_PARTITION_INTERNAL_TRUSTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_its_func_api.c> |
| 101 | $<$<BOOL:${TFM_PARTITION_CRYPTO}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_crypto_func_api.c> |
| 102 | $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_initial_attestation_func_api.c> |
| 103 | src/tfm_psa_ns_api.c |
| 104 | ) |
| 105 | if (NOT TFM_MULTI_CORE_TOPOLOGY) |
| 106 | target_sources(psa_api_ns PRIVATE |
| 107 | src/tfm_ns_interface.c |
| 108 | ) |
| 109 | endif() |
| 110 | |
| 111 | endif() |
| 112 | |
| 113 | target_link_libraries(psa_api_ns |
| 114 | PUBLIC |
| 115 | psa_interface |
| 116 | PRIVATE |
| 117 | platform_ns |
| 118 | # CMSIS is currently only required to provide the NS client IDs. In |
| 119 | # future, this should probably be made more OS agnostic |
| 120 | $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:CMSIS_5_tfm_ns> |
| 121 | ) |