Anton Komlev | 4d4cc68 | 2023-09-05 16:33:53 +0100 | [diff] [blame] | 1 | #------------------------------------------------------------------------------- |
| 2 | # Copyright (c) 2023, Arm Limited. All rights reserved. |
| 3 | # |
| 4 | # SPDX-License-Identifier: BSD-3-Clause |
| 5 | # |
| 6 | #------------------------------------------------------------------------------- |
| 7 | cmake_minimum_required(VERSION 3.15) |
| 8 | |
| 9 | # Force cross compilation and avoid compiler search and test |
| 10 | set(CMAKE_SYSTEM_NAME Generic) |
| 11 | set(CMAKE_C_COMPILER_FORCED TRUE) |
| 12 | set(CMAKE_CXX_COMPILER_FORCED TRUE) |
| 13 | |
| 14 | project("TF-M SPE for PSA tests" LANGUAGES C) |
| 15 | |
| 16 | # use tf-m-tests/cmake folder |
| 17 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../../cmake) |
| 18 | include(remote_library) |
| 19 | |
| 20 | # User must specify which TEST_PSA_API suit name |
| 21 | if (NOT DEFINED TEST_PSA_API) |
| 22 | message(FATAL_ERROR "TEST_PSA_API is not defined. Please provide desired test suit name provide.") |
| 23 | endif() |
| 24 | |
| 25 | if (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 | ) |
| 40 | endif() |
| 41 | |
| 42 | if (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 | ) |
| 57 | endif() |
| 58 | |
| 59 | if (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) |
| 62 | endif() |
| 63 | |
| 64 | configure_file(${CMAKE_SOURCE_DIR}/tfm_psa_ff_test_manifest_list.yaml |
| 65 | ${CMAKE_BINARY_DIR}/tfm_psa_ff_test_manifest_list.yaml) |
| 66 | list(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. |
| 71 | add_executable(tfm_test_spe IMPORTED) |
| 72 | |
| 73 | include(ExternalProject) |
| 74 | ExternalProject_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 Peng | 678a1fd | 2023-09-06 17:41:45 +0800 | [diff] [blame^] | 85 | CMAKE_ARGS -DCONFIG_TFM_TEST_DIR=${CMAKE_SOURCE_DIR}/partitions |
Anton Komlev | 4d4cc68 | 2023-09-05 16:33:53 +0100 | [diff] [blame] | 86 | PREFIX "temp" |
| 87 | ) |
| 88 | |
| 89 | add_dependencies(tfm_test_spe TF-M) |
| 90 | |
| 91 | install(DIRECTORY ${CMAKE_BINARY_DIR}/build-spe/bin DESTINATION ${CMAKE_BINARY_DIR}) |