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