blob: 70635af718c3d4046350eb7557245c026479624e [file] [log] [blame]
jothikumar maniad5b37d2023-06-06 20:25:39 +08001# @file
2# Copyright (c) 2021-2023, Arm Limited or its affiliates. All rights reserved.
3# SPDX-License-Identifier : Apache-2.0
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
jk-arm957cfea2021-06-18 15:52:12 +053017
18# Set the minimum required version of CMake for the project
19cmake_minimum_required(VERSION 3.10)
20# cmake_policy
21cmake_policy(SET CMP0057 NEW)
22PROJECT (psa_adac_tests)
23
24# Find python interpreter version 3 or greater
25find_package(PythonInterp 3 REQUIRED)
26
27get_filename_component(PSA_ROOT_DIR . ABSOLUTE)
28include(${PSA_ROOT_DIR}/tools/cmake/common/Utils.cmake)
29
30set(CMAKE_C_STANDARD 99)
jk-arm957cfea2021-06-18 15:52:12 +053031
jk-arm7cc5d1d2022-01-31 08:16:42 +053032# Check for LINK_LAYER
33if(NOT DEFINED LINK_LAYER_COMM)
34 set(LINK_LAYER_COMM unix_socket)
35 message(STATUS "[PSA] : Link layer not specified. Defaulting to ${LINK_LAYER_COMM}")
jk-arm957cfea2021-06-18 15:52:12 +053036endif()
37
jk-arm7cc5d1d2022-01-31 08:16:42 +053038set(DEPENDS_INC_PATH ${CMAKE_SOURCE_DIR}/platform/hosts/${TARGET}/${LINK_LAYER_COMM}/include)
39if (NOT EXISTS ${DEPENDS_INC_PATH})
40 Message(FATAL_ERROR "Link layer ${LINK_LAYER_COMM} not supported for target ${TARGET}.")
41endif()
jk-arm01ee3ff2021-10-18 22:41:47 +053042
jothikumar maniad5b37d2023-06-06 20:25:39 +080043set(PSA_ADAC_MBEDTLS_INCLUDE ${PSA_ROOT_DIR}/external/mbedtls/include)
44if (NOT EXISTS ${PSA_ADAC_MBEDTLS_INCLUDE})
45 Message(FATAL_ERROR "Does not exist: ${PSA_ADAC_MBEDTLS_INCLUDE}")
46endif()
47
jk-arm957cfea2021-06-18 15:52:12 +053048if(NOT DEFINED PSA_ADAC_ROOT)
49 get_filename_component(PSA_ADAC_ROOT ${CMAKE_SOURCE_DIR}/psa-adac ABSOLUTE)
50endif()
51include(${PSA_ADAC_ROOT}/cmake/psa_adac.cmake OPTIONAL)
52
53configure_file(${PSA_ADAC_ROOT}/psa-adac/core/include/psa_adac_config.h.in psa_adac_config.h)
54include_directories (
55 ${DEPENDS_INC_PATH}
56 ${CMAKE_BINARY_DIR}
57 ${PSA_ADAC_ROOT}/psa-adac/core/include
jothikumar maniad5b37d2023-06-06 20:25:39 +080058 ${PSA_ADAC_MBEDTLS_INCLUDE}
jk-arm957cfea2021-06-18 15:52:12 +053059 )
60
jothikumar maniad5b37d2023-06-06 20:25:39 +080061set(MBEDTLS_CONFIG_FILE "${CMAKE_SOURCE_DIR}/crypto/manager-crypto-config.h")
jk-arm957cfea2021-06-18 15:52:12 +053062add_compile_options(-DMBEDTLS_CONFIG_FILE="${MBEDTLS_CONFIG_FILE}")
63if (UNIX)
64 add_compile_options(-fPIC -fpic)
65else ()
66 # Silence warning about standard C APIs not being secure.
67 add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
68endif ()
69
70# Generate ADAC LIB
71add_subdirectory(${PSA_ADAC_ROOT}/psa-adac/core adac_core)
72add_subdirectory(${PSA_ADAC_ROOT}/psa-adac/sdm adac_sdm)
jothikumar maniad5b37d2023-06-06 20:25:39 +080073add_subdirectory(${CMAKE_SOURCE_DIR}/crypto/psa-crypto psa_adac_psa_crypto)
jk-arm957cfea2021-06-18 15:52:12 +053074
75set(ADAC_LIBS psa_adac_sdm psa_adac_core psa_adac_psa_crypto mbedcrypto)
76
77if(NOT DEFINED TFM_PROFILE)
78 message(STATUS "[PSA] : Building Default profile")
79list(APPEND PSA_SUITES #PSA_SUITES
80 "ADAC"
81)
82endif()
83
84# list of VERBOSE options
85list(APPEND PSA_VERBOSE_OPTIONS 1 2 3 4 5)
86
87message(STATUS "[PSA] : ----------Process input arguments- start-------------")
88
89# Check for TARGET command line argument
90_check_arguments("TARGET")
91# Check for SUITE command line argument
92_check_arguments("SUITE")
93
94string(TOLOWER ${SUITE} SUITE_LOWER)
95
96# Check for valid targets
jk-arm01ee3ff2021-10-18 22:41:47 +053097_get_sub_dir_list(PSA_TARGET_LIST ${PSA_ROOT_DIR}/platform/hosts)
jk-arm957cfea2021-06-18 15:52:12 +053098if(NOT ${TARGET} IN_LIST PSA_TARGET_LIST)
99 message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DTARGET=${TARGET}, supported targets are : ${PSA_TARGET_LIST}")
100else()
101 message(STATUS "[PSA] : TARGET is set to ${TARGET}")
jk-arm7cc5d1d2022-01-31 08:16:42 +0530102 message(STATUS "[PSA] : LINK_LAYER is set to ${LINK_LAYER_COMM}")
jk-arm957cfea2021-06-18 15:52:12 +0530103endif()
104
105# Check for the presence of required test suite directories
106if(NOT IS_DIRECTORY ${PSA_ROOT_DIR}/tests)
107 message(STATUS "[PSA] : Error: Could not find architecture test suite directories in psa root path ${PSA_ROOT_DIR}")
108endif()
109
110# Check for valid suite cmake argument passed
111if(NOT ${SUITE} IN_LIST PSA_SUITES)
112 message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DSUITE=${SUITE}, select one from supported suites which are : ${PSA_SUITES}")
113else()
114 message(STATUS "[PSA] : SUITE is set to ${SUITE}")
115endif()
116
117# Project variables
118set(ADAC_HOST_VAL_LIB psa_adac_val)
119set(ADAC_HOST_PAL_LIB psa_adac_pal)
120set(TEST_COMBINE_LIB test_combine)
121set(ADAC_HOST_EXE psa_adac_test)
122
123set(PSA_SUITE_DIR ${PSA_ROOT_DIR}/tests/${SUITE_LOWER})
124set(PSA_TESTLIST_GENERATOR ${PSA_ROOT_DIR}/tools/scripts/gen_tests_list.py)
125set(TESTSUITE_DB ${PSA_SUITE_DIR}/testsuite.db)
126set(PSA_TESTLIST_FILE ${CMAKE_CURRENT_BINARY_DIR}/${SUITE_LOWER}_testlist.txt)
127set(PSA_TEST_ENTRY_LIST_INC ${CMAKE_CURRENT_BINARY_DIR}/test_entry_list.inc)
128set(PSA_TEST_ENTRY_FUN_DECLARE_INC ${CMAKE_CURRENT_BINARY_DIR}/test_entry_fn_declare_list.inc)
129
130# Check for VERBOSE
131if(NOT DEFINED VERBOSE)
132 set(VERBOSE 3 CACHE INTERNAL "Default VERBOSE value" FORCE)
133 message(STATUS "[PSA] : Defaulting VERBOSE to ${VERBOSE}")
134else()
135 if(NOT ${VERBOSE} IN_LIST PSA_VERBOSE_OPTIONS)
136 message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DVERBOSE=${VERBOSE}, supported values are : ${PSA_VERBOSE_OPTIONS}")
137 endif()
138 message(STATUS "[PSA] : VERBOSE is set to ${VERBOSE}")
139endif()
140
141if(NOT DEFINED SUITE_TEST_RANGE)
142 set(SUITE_TEST_RANGE_MIN None)
143 set(SUITE_TEST_RANGE_MAX None)
144else()
145 list(LENGTH SUITE_TEST_RANGE SUITE_TEST_RANGE_LENGTH)
146 if(${SUITE_TEST_RANGE_LENGTH} GREATER "2")
147 message(FATAL_ERROR "[PSA] : -DSUITE_TEST_RANGE=<...> value error! accepts two "
148 " numbers in quotes separated with ';'")
149 endif()
150 if(${SUITE_TEST_RANGE_LENGTH} EQUAL "2")
151 list(GET SUITE_TEST_RANGE 0 SUITE_TEST_RANGE_MIN)
152 list(GET SUITE_TEST_RANGE 1 SUITE_TEST_RANGE_MAX)
153 message(STATUS "[PSA] : Testing (${SUITE_TEST_RANGE_MIN}, ${SUITE_TEST_RANGE_MAX}) of ${SUITE} suite")
154 endif()
155 if(${SUITE_TEST_RANGE_LENGTH} EQUAL "1")
156 set(SUITE_TEST_RANGE_MIN ${SUITE_TEST_RANGE})
157 set(SUITE_TEST_RANGE_MAX ${SUITE_TEST_RANGE})
158 message(STATUS "[PSA] : Testing ${SUITE_TEST_RANGE_MIN} of ${SUITE} suite")
159 endif()
160endif()
161
162message(STATUS "[PSA] : ----------Process input arguments- complete-------------")
163
164# Create PSA clean list
165list(APPEND PSA_CLEAN_LIST
166 ${PSA_TESTLIST_FILE}
167 ${PSA_TEST_ENTRY_LIST_INC}
168 ${PSA_TEST_ENTRY_FUN_DECLARE_INC}
169)
170
171# Process testsuite.db
172message(STATUS "[PSA] : Creating testlist.txt 'available at ${PSA_TESTLIST_FILE}'")
173execute_process(COMMAND ${PYTHON_EXECUTABLE} ${PSA_TESTLIST_GENERATOR}
174 ${SUITE_LOWER}
175 ${TESTSUITE_DB}
176 ${PSA_TESTLIST_FILE}
177 ${PSA_TEST_ENTRY_LIST_INC}
178 ${PSA_TEST_ENTRY_FUN_DECLARE_INC}
179 ${SUITE_TEST_RANGE_MIN}
180 ${SUITE_TEST_RANGE_MAX})
181
182# Creating CMake list variable from file
183file(READ ${PSA_TESTLIST_FILE} PSA_TEST_LIST)
184if(NOT PSA_TEST_LIST)
185 message(FATAL_ERROR "[PSA] : Invalid test number!")
186endif()
187string(REGEX REPLACE "\n" ";" PSA_TEST_LIST "${PSA_TEST_LIST}")
188
189# Global macro to identify the PSA test suite cmake build
190add_definitions(-D${SUITE})
191add_definitions(-DVERBOSE=${VERBOSE})
192add_definitions(-D${TARGET})
193
194# Build PAL LIB
jk-arm01ee3ff2021-10-18 22:41:47 +0530195include(${CMAKE_SOURCE_DIR}/platform/common/pal.cmake)
jk-arm7cc5d1d2022-01-31 08:16:42 +0530196add_subdirectory(${CMAKE_SOURCE_DIR}/platform/hosts/${TARGET}/${LINK_LAYER_COMM} platform_host)
197target_link_libraries(${ADAC_HOST_PAL_LIB} platform_host)
jk-arm957cfea2021-06-18 15:52:12 +0530198
199# Generate VAL LIB
200include(${CMAKE_SOURCE_DIR}/val/val.cmake)
201
jk-arm01ee3ff2021-10-18 22:41:47 +0530202# Build test suite
jk-arm957cfea2021-06-18 15:52:12 +0530203include(${PSA_SUITE_DIR}/suite.cmake)
204
jk-arm01ee3ff2021-10-18 22:41:47 +0530205#Create single executable
jk-arm957cfea2021-06-18 15:52:12 +0530206add_executable(${ADAC_HOST_EXE} ${SUITE_CC_SOURCE})
207target_include_directories(${ADAC_HOST_EXE} PRIVATE
208 ${CMAKE_SOURCE_DIR}/val/include
jk-arm01ee3ff2021-10-18 22:41:47 +0530209 ${CMAKE_SOURCE_DIR}/platform/common/include
jk-arm957cfea2021-06-18 15:52:12 +0530210 )
211target_link_libraries (${ADAC_HOST_EXE} ${TEST_COMBINE_LIB}
212 ${ADAC_HOST_VAL_LIB}
213 ${ADAC_HOST_PAL_LIB}
214 ${ADAC_LIBS}
215 )
216
217# Include the files for make clean
218foreach(clean_item ${PSA_CLEAN_LIST})
219 set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clean_item})
220endforeach()
221