blob: 77cd20023ec3516676633514ea7b7a4ab87bf9a5 [file] [log] [blame]
Anton Komlev84283b02023-08-16 10:57:56 +01001#-------------------------------------------------------------------------------
Dávid Házi33571192024-10-10 13:05:28 +00002# Copyright (c) 2023-2024, Arm Limited. All rights reserved.
Anton Komlev84283b02023-08-16 10:57:56 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
David Hu4c3c0ca2023-12-02 22:09:18 +08007cmake_minimum_required(VERSION 3.21)
Anton Komlev84283b02023-08-16 10:57:56 +01008
9if (NOT DEFINED CONFIG_SPE_PATH OR NOT EXISTS ${CONFIG_SPE_PATH})
10 message(FATAL_ERROR "CONFIG_SPE_PATH = ${CONFIG_SPE_PATH} is not defined or incorrect. Please provide full path to TF-M build artifacts using -DCONFIG_SPE_PATH=")
11endif()
12
David Hu7042a262023-10-14 23:47:29 +080013list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../cmake)
14list(APPEND CMAKE_MODULE_PATH ${CONFIG_SPE_PATH}/cmake)
David Hu479ef002023-10-20 14:44:32 +080015list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/utils)
David Hu7042a262023-10-14 23:47:29 +080016include(remote_library)
17include(toolchain_selection)
Jianliang Shene8525112023-10-20 17:18:43 +080018include(utils)
Anton Komlev84283b02023-08-16 10:57:56 +010019
David Hu1ffdcfe2023-10-13 14:52:40 +080020# A platform sprecific MCPU and architecture flags for NS side
21include(${CONFIG_SPE_PATH}/platform/cpuarch.cmake)
David Hua1de7d62023-10-26 11:18:11 +080022# Include common configs exported from TF-M
23include(${CONFIG_SPE_PATH}/cmake/spe_config.cmake)
Kevin Peng21613562023-09-04 14:39:28 +080024# Platform abilities for example IRQ test support status
25include(${CONFIG_SPE_PATH}/platform/config.cmake OPTIONAL)
Jianliang Shene8525112023-10-20 17:18:43 +080026
David Huea7f7ac2023-11-07 19:17:21 +080027# Check current tf-m-tests is compatible to TF-M under verfication
28include(check_version)
29
Jianliang Shene8525112023-10-20 17:18:43 +080030include(${TFM_TOOLCHAIN_FILE})
31project(tfm_ns LANGUAGES C ASM)
Jianliang Shene8525112023-10-20 17:18:43 +080032
David Hua1de7d62023-10-26 11:18:11 +080033# If config_ns_test.cmake is exported from TF-M build, it indicates regression tests are enabled.
34# Otherwise, skip test configuration
Kevin Peng10a62012023-11-01 15:18:54 +080035include(${CONFIG_SPE_PATH}/config/config_ns_test.cmake OPTIONAL)
David Hua1de7d62023-10-26 11:18:11 +080036if(TFM_NS_REG_TEST)
37 # Include platform specific regression tests config
38 include(${CONFIG_SPE_PATH}/platform/tests/tfm_tests_config.cmake OPTIONAL)
39 if (TFM_PROFILE)
40 include(${CMAKE_CURRENT_LIST_DIR}/test/config/profile/${TFM_PROFILE}_test.cmake)
41 endif()
42 # Default test configurations
43 include(${CMAKE_CURRENT_LIST_DIR}/test/config/default_test_config.cmake)
44 # Config check in case additional test configs passed in via command line.
45 include(${CMAKE_CURRENT_LIST_DIR}/test/config/check_config.cmake)
Kevin Peng4216aa02023-10-27 17:04:42 +080046endif()
Jianliang Shene8525112023-10-20 17:18:43 +080047# Include coprocessor check to make sure NS toolchain is compatiable
48include(${CONFIG_SPE_PATH}/config/cp_check.cmake)
Anton Komlev84283b02023-08-16 10:57:56 +010049
50add_executable(tfm_ns)
51
David Hu87b46a82023-10-21 23:23:42 +080052add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../lib/ext ${CMAKE_BINARY_DIR}/lib/ext)
Anton Komlevc0ad6042023-08-29 18:23:26 +010053add_subdirectory(../app_broker ${CMAKE_BINARY_DIR}/app_broker)
David Hu479ef002023-10-20 14:44:32 +080054if(TFM_NS_REG_TEST)
55 add_subdirectory(test/ns_regression)
56endif()
Anton Komlev84283b02023-08-16 10:57:56 +010057
58############################# TFM NS main app ##################################
59
60target_sources(tfm_ns
61 PRIVATE
62 test_app.c
Kevin Peng9dff9862023-10-09 11:06:08 +080063 $<$<BOOL:${CONFIG_GNU_SYSCALL_STUB_ENABLED}>:../app_broker/syscalls_stub.c>
Anton Komlev84283b02023-08-16 10:57:56 +010064)
65
66target_link_libraries(tfm_ns
67 PRIVATE
Jamie Fox6d4ee162023-11-27 17:27:37 +000068 os_wrapper
Anton Komlev84283b02023-08-16 10:57:56 +010069 tfm_test_broker
David Hu479ef002023-10-20 14:44:32 +080070 $<$<BOOL:${TFM_NS_REG_TEST}>:tfm_ns_tests>
71)
72
73target_compile_definitions(tfm_ns
74 PUBLIC
75 $<$<BOOL:${TFM_NS_REG_TEST}>:TFM_NS_REG_TEST>
Anton Komlev84283b02023-08-16 10:57:56 +010076)
77
78set_target_properties(tfm_ns PROPERTIES
79 SUFFIX ".axf"
80 RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
81)
David Hu1c1b8162023-10-14 22:31:01 +080082
83target_add_scatter_file(tfm_ns ${CONFIG_SPE_PATH}/platform/linker_scripts)
84
85target_link_options(tfm_ns
86 PRIVATE
87 $<$<C_COMPILER_ID:GNU>:-Wl,-Map=${CMAKE_BINARY_DIR}/bin/tfm_ns.map>
David Hub4c9f9f2023-10-14 15:38:03 +080088 $<$<C_COMPILER_ID:ARMClang>:--map>
David Huc758b1e2023-11-01 14:51:03 +080089 $<$<C_COMPILER_ID:IAR>:--map\;${CMAKE_BINARY_DIR}/bin/tfm_ns.map>
David Hu1c1b8162023-10-14 22:31:01 +080090)
David Hue90feae2023-10-14 15:17:44 +080091
92add_convert_to_bin_target(tfm_ns)