blob: ffa868a7151e221c54d382eeeea109f00afe6470 [file] [log] [blame]
Anton Komlev4d4cc682023-09-05 16:33:53 +01001#-------------------------------------------------------------------------------
2# Copyright (c) 2023, Arm Limited. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7cmake_minimum_required(VERSION 3.15)
8
9# Force cross compilation and avoid compiler search and test
10set(CMAKE_SYSTEM_NAME Generic)
11set(CMAKE_C_COMPILER_FORCED TRUE)
12set(CMAKE_CXX_COMPILER_FORCED TRUE)
13
14project("TF-M SPE for PSA tests" LANGUAGES C)
15
16# use tf-m-tests/cmake folder
17list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../../cmake)
18include(remote_library)
19
20# User must specify which TEST_PSA_API suit name
21if (NOT DEFINED TEST_PSA_API)
22 message(FATAL_ERROR "TEST_PSA_API is not defined. Please provide desired test suit name provide.")
23endif()
24
25if (NOT DEFINED CONFIG_TFM_SOURCE_PATH OR NOT EXISTS ${CONFIG_TFM_SOURCE_PATH})
26 set(CONFIG_TFM_SOURCE_PATH "DOWNLOAD" CACHE PATH "Path to TF-M source")
27 set(CONFIG_TFM_SOURCE_VERSION "TF-Mv1.8.0" CACHE STRING "TF-M version for test")
28 fetch_remote_library(
29 LIB_NAME tf-m_source
30 LIB_SOURCE_PATH_VAR CONFIG_TFM_SOURCE_PATH
31 LIB_PATCH_DIR ${CMAKE_CURRENT_SOURCE_DIR}
32 LIB_FORCE_PATCH ""
33 FETCH_CONTENT_ARGS
34 GIT_REPOSITORY https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git
35 GIT_TAG ${CONFIG_TFM_SOURCE_VERSION}
36 GIT_SHALLOW FALSE
37 GIT_PROGRESS TRUE
38 GIT_SUBMODULES ""
39 )
40endif()
41
42if (NOT DEFINED PSA_ARCH_TESTS_PATH OR NOT EXISTS ${PSA_ARCH_TESTS_PATH})
43 set(PSA_ARCH_TESTS_PATH "DOWNLOAD" CACHE PATH "Path to PSA arch test repository used for SPE build")
44 set(PSA_ARCH_TESTS_VERSION "5c57920" CACHE STRING "The version of PSA arch tests to use")
45 fetch_remote_library(
46 LIB_NAME psa_arch_tests
47 LIB_SOURCE_PATH_VAR PSA_ARCH_TESTS_PATH
48 LIB_PATCH_DIR ${CMAKE_CURRENT_SOURCE_DIR}
49 LIB_FORCE_PATCH PSA_ARCH_TESTS_FORCE_PATCH
50 FETCH_CONTENT_ARGS
51 GIT_REPOSITORY https://github.com/ARM-software/psa-arch-tests.git
52 GIT_TAG ${PSA_ARCH_TESTS_VERSION}
53 GIT_SHALLOW FALSE
54 GIT_PROGRESS TRUE
55 GIT_SUBMODULES ""
56 )
57endif()
58
59if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
60 set(CROSS_COMPILE arm-none-eabi CACHE STRING "Cross-compiler prefix")
61 set(CMAKE_TOOLCHAIN_FILE ${CONFIG_TFM_SOURCE_PATH}/toolchain_GNUARM.cmake)
62endif()
63
64configure_file(${CMAKE_SOURCE_DIR}/tfm_psa_ff_test_manifest_list.yaml
65 ${CMAKE_BINARY_DIR}/tfm_psa_ff_test_manifest_list.yaml)
66list(APPEND TFM_EXTRA_MANIFEST_LIST_FILES ${CMAKE_BINARY_DIR}/tfm_psa_ff_test_manifest_list.yaml)
67
68#------------------------------------------------------------------------------
69
70# tfm_s_test is IMPORTED to inform CMake that it has no source files.
71add_executable(tfm_test_spe IMPORTED)
72
73include(ExternalProject)
74ExternalProject_Add(TF-M
75 SOURCE_DIR ${CONFIG_TFM_SOURCE_PATH}
76 BINARY_DIR build-spe
77 INSTALL_DIR api_ns
78 CMAKE_ARGS -DTFM_PLATFORM=${TFM_PLATFORM}
79 CMAKE_ARGS -DTEST_PSA_API=${TEST_PSA_API}
80 CMAKE_ARGS -DTFM_EXTRA_CONFIG_PATH=${CMAKE_SOURCE_DIR}/config_spe.cmake
81 CMAKE_ARGS -DPROJECT_CONFIG_HEADER_FILE=${CMAKE_SOURCE_DIR}/config_test_psa_api.h
82 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
83 CMAKE_ARGS -DTFM_EXTRA_MANIFEST_LIST_FILES=${TFM_EXTRA_MANIFEST_LIST_FILES}
84 CMAKE_ARGS -DPSA_ARCH_TESTS_PATH=${PSA_ARCH_TESTS_PATH}
Kevin Peng678a1fd2023-09-06 17:41:45 +080085 CMAKE_ARGS -DCONFIG_TFM_TEST_DIR=${CMAKE_SOURCE_DIR}/partitions
Anton Komlev4d4cc682023-09-05 16:33:53 +010086 PREFIX "temp"
87)
88
89add_dependencies(tfm_test_spe TF-M)
90
91install(DIRECTORY ${CMAKE_BINARY_DIR}/build-spe/bin DESTINATION ${CMAKE_BINARY_DIR})