blob: 1504c768ca3f3de1c6d5ef1074b7106ac0fdba60 [file] [log] [blame]
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +05301#/** @file
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +05302# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +05303# * 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#**/
17
18# Set the minimum required version of CMake for the project
19cmake_minimum_required(VERSION 3.10)
20
21# cmake_policy
22cmake_policy(SET CMP0057 NEW)
23
24# Find python interpreter version 3 or greater
25find_package(PythonInterp 3 REQUIRED)
26# Find Git package
27find_package(Git REQUIRED)
28
29get_filename_component(PSA_ROOT_DIR . ABSOLUTE)
30
31list(APPEND CMAKE_MODULE_PATH ${PSA_ROOT_DIR}/tools/cmake)
32include("common/Utils")
33include(${PSA_ROOT_DIR}/tools/cmake/common/CMakeSettings.cmake)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +053034include(${PSA_ROOT_DIR}/tools/cmake/common/CMakeExternal.cmake)
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053035
jotman016d7dd4e2020-11-10 17:32:28 +080036if(NOT DEFINED TFM_PROFILE)
37 message(STATUS "[PSA] : Building Default profile")
38list(APPEND PSA_SUITES
39 "IPC"
40 "CRYPTO"
41 "INTERNAL_TRUSTED_STORAGE"
42 "PROTECTED_STORAGE"
43 "STORAGE"
44 "INITIAL_ATTESTATION"
45)
46else()
47
48if("${TFM_PROFILE}" STREQUAL "profile_small")
49# list of supported suites
50list(APPEND PSA_SUITES
51 "CRYPTO"
52 "INTERNAL_TRUSTED_STORAGE"
53 "INITIAL_ATTESTATION"
54)
55else()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053056# list of supported suites
57list(APPEND PSA_SUITES
58 "IPC"
59 "CRYPTO"
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053060 "INTERNAL_TRUSTED_STORAGE"
jotman016d7dd4e2020-11-10 17:32:28 +080061 "PROTECTED_STORAGE"
Vinay Kumar Kotegowder18fcd402020-04-27 17:38:41 +053062 "STORAGE"
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053063 "INITIAL_ATTESTATION"
64)
jotman016d7dd4e2020-11-10 17:32:28 +080065endif()
66endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053067# list of ipc files required
68list(APPEND PSA_IPC_FILES
69 "psa/client.h"
70 "psa/service.h"
Jaykumar Pitambarbhai Patel1c2b0282019-11-06 11:29:13 +053071 "psa/lifecycle.h"
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053072 "psa_manifest/sid.h"
73 "psa_manifest/pid.h"
Jaykumar Pitambarbhai Patel1c2b0282019-11-06 11:29:13 +053074 "psa_manifest/driver_partition_psa.h"
75 "psa_manifest/client_partition_psa.h"
76 "psa_manifest/server_partition_psa.h"
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053077)
78
79# list of crypto files required
80list(APPEND PSA_CRYPTO_FILES
81 "psa/crypto.h"
82)
83
84# list of protected_storage files required
85list(APPEND PSA_PROTECTED_STORAGE_FILES
86 "psa/protected_storage.h"
87)
88
89# list of internal_trusted_storage files required
90list(APPEND PSA_INTERNAL_TRUSTED_STORAGE_FILES
91 "psa/internal_trusted_storage.h"
92)
93
Vinay Kumar Kotegowder18fcd402020-04-27 17:38:41 +053094# list of storage files required
95list(APPEND PSA_STORAGE_FILES
96 ${PSA_INTERNAL_TRUSTED_STORAGE_FILES}
97 ${PSA_PROTECTED_STORAGE_FILES}
98)
99
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530100# list of initial_attestation files required
101list(APPEND PSA_INITIAL_ATTESTATION_FILES
102 "psa/initial_attestation.h"
103 "psa/crypto.h"
104)
105
106# list of supported toolchains
107list(APPEND PSA_TOOLCHAIN_SUPPORT
108 GNUARM
109 ARMCLANG
110 HOST_GCC
111)
112
113# list of suported CPU arch
114list(APPEND PSA_CPU_ARCH_SUPPORT
115 armv8m_ml
116 armv8m_bl
117 armv7m
118)
119
120# list of VERBOSE options
121list(APPEND PSA_VERBOSE_OPTIONS 1 2 3 4 5)
122
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530123# list of PLATFORM_PSA_ISOLATION_LEVEL options
jotman016d7dd4e2020-11-10 17:32:28 +0800124if("${TFM_PROFILE}" STREQUAL "profile_medium")
125list(APPEND PLATFORM_PSA_ISOLATION_LEVEL_OPTIONS 1 2)
126else()
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530127list(APPEND PLATFORM_PSA_ISOLATION_LEVEL_OPTIONS 1 2 3)
jotman016d7dd4e2020-11-10 17:32:28 +0800128endif()
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530129
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530130message(STATUS "[PSA] : ----------Process input arguments- start-------------")
131
132# Check for TARGET command line argument
133_check_arguments("TARGET")
134# Check for SUTIE command line argument
135_check_arguments("SUITE")
136# Check for PSA_INCLUDE_PATHS command line argument
137_check_arguments("PSA_INCLUDE_PATHS")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530138
139string(TOLOWER ${SUITE} SUITE_LOWER)
140
141# Check for valid targets
142_get_sub_dir_list(PSA_TARGET_LIST ${PSA_ROOT_DIR}/platform/targets)
143if(NOT ${TARGET} IN_LIST PSA_TARGET_LIST)
144 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DTARGET=, supported targets are : ${PSA_TARGET_LIST}")
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530145else()
146 message(STATUS "[PSA] : TARGET is set to ${TARGET}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530147endif()
148
149# Check for the presence of required test suite directories
150if((NOT IS_DIRECTORY ${PSA_ROOT_DIR}/dev_apis) OR (NOT IS_DIRECTORY ${PSA_ROOT_DIR}/ff))
151 message(STATUS "[PSA] : Error: Could not find architecture test suite directories in psa root path ${PSA_ROOT_DIR}")
152endif()
153
154if(FALSE)
155# Check for build directory specified
156if(NOT DEFINED BUILD)
157 set(BUILD ${CMAKE_CURRENT_BINARY_DIR}/BUILD CACHE INTERNAL "Defaulting build directory to ${BUILD}" FORCE)
158else()
159 set(BUILD ${CMAKE_CURRENT_BINARY_DIR}/${BUILD}/BUILD CACHE INTERNAL "Defaulting build directory to ${BUILD}" FORCE)
160endif()
161endif()
162
163# Check for valid suite cmake argument passed
164if(NOT ${SUITE} IN_LIST PSA_SUITES)
165 message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DSUITE=, select one from supported suites which are : ${PSA_SUITES}")
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530166else()
167 message(STATUS "[PSA] : SUITE is set to ${SUITE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530168endif()
169
170# Project variables
171set(PSA_TARGET_PRE_BUILD psa_pre_build)
172set(PSA_TARGET_GENERATE_DATABASE_PRE psa_generate_database_prerequisite)
173set(PSA_TARGET_GENERATE_DATABASE psa_generate_database)
174set(PSA_TARGET_GENERATE_DATABASE_POST psa_generate_database_cleanup)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530175if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
176 set(PSA_TARGET_QCBOR psa_qcbor)
177endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530178set(PSA_TARGET_PAL_NSPE_LIB pal_nspe)
179set(PSA_TARGET_VAL_NSPE_LIB val_nspe)
180set(PSA_TARGET_TEST_COMBINE_LIB test_combine)
181set(PSA_TARGET_DRIVER_PARTITION_LIB driver_partition)
182set(PSA_TARGET_CLIENT_PARTITION_LIB client_partition)
183set(PSA_TARGET_SERVER_PARTITION_LIB server_partition)
184if(${SUITE} STREQUAL "IPC")
185 set(PSA_SUITE_DIR ${PSA_ROOT_DIR}/ff/${SUITE_LOWER})
186 set(PSA_SUITE_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/ff/${SUITE_LOWER})
Vinay Kumar Kotegowder18fcd402020-04-27 17:38:41 +0530187elseif((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "PROTECTED_STORAGE"))
188 set(PSA_SUITE_DIR ${PSA_ROOT_DIR}/dev_apis/storage)
189 set(PSA_SUITE_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/dev_apis/storage)
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530190else()
191 set(PSA_SUITE_DIR ${PSA_ROOT_DIR}/dev_apis/${SUITE_LOWER})
192 set(PSA_SUITE_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/dev_apis/${SUITE_LOWER})
193endif()
194set(PSA_TARGET_CONFIG_HEADER_GENERATOR ${PSA_ROOT_DIR}/tools/scripts/target_cfg/targetConfigGen.py)
195set(PSA_TESTLIST_GENERATOR ${PSA_ROOT_DIR}/tools/scripts/gen_tests_list.py)
196set(TARGET_CONFIGURATION_FILE ${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cfg)
197set(TGT_CONFIG_SOURCE_C ${CMAKE_CURRENT_BINARY_DIR}/targetConfigGen.c)
198set(OUTPUT_HEADER target_database.h)
199set(DATABASE_TABLE_NAME target_database)
200set(DATABASE_TABLE_SECTION_NAME "NOSECTION")
Vinay Kumar Kotegowder18fcd402020-04-27 17:38:41 +0530201set(TARGET_HEADER_GEN_INCLUDE_PATHS "${PSA_ROOT_DIR}/val/nspe|${PSA_ROOT_DIR}/val/common|${PSA_ROOT_DIR}/platform/targets/common/nspe|${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe")
202if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
203 set(TESTSUITE_DB ${PSA_SUITE_DIR}/its_testsuite.db)
204elseif((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
205 set(TESTSUITE_DB ${PSA_SUITE_DIR}/ps_testsuite.db)
206else()
207 set(TESTSUITE_DB ${PSA_SUITE_DIR}/testsuite.db)
208endif()
209set(PSA_TESTLIST_FILE ${CMAKE_CURRENT_BINARY_DIR}/${SUITE_LOWER}_testlist.txt)
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530210set(PSA_TEST_ENTRY_LIST_INC ${CMAKE_CURRENT_BINARY_DIR}/test_entry_list.inc)
211set(PSA_TEST_ENTRY_FUN_DECLARE_INC ${CMAKE_CURRENT_BINARY_DIR}/test_entry_fn_declare_list.inc)
212set(PSA_CLIENT_TEST_LIST_DELCARE_INC ${CMAKE_CURRENT_BINARY_DIR}/client_tests_list_declare.inc)
213set(PSA_CLIENT_TEST_LIST_INC ${CMAKE_CURRENT_BINARY_DIR}/client_tests_list.inc)
214set(PSA_SERVER_TEST_LIST_DECLARE_INC ${CMAKE_CURRENT_BINARY_DIR}/server_tests_list_declare.inc)
215set(PSA_SERVER_TEST_LIST ${CMAKE_CURRENT_BINARY_DIR}/server_tests_list.inc)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530216if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
217 set(PSA_QCBOR_INCLUDE_PATH ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/inc)
218endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530219
220# Validity check for required files for a given suite
221if(NOT DEFINED PSA_${SUITE}_FILES)
222 message(FATAL_ERROR "[PSA] : List of file/s to verify against ${suite} is not defined")
223endif()
224foreach(file_item ${PSA_${SUITE}_FILES})
225 set(PSA_FILE_FOUND FALSE)
226 foreach(include_path ${PSA_INCLUDE_PATHS})
227 if((EXISTS ${include_path}/${file_item}) AND
228 (NOT PSA_FILE_FOUND))
229 set(PSA_FILE_FOUND TRUE)
230 break()
231 endif()
232 endforeach()
233 if(NOT PSA_FILE_FOUND)
234 message(FATAL_ERROR "[PSA] : Couldn't find ${file_item} in ${PSA_INCLUDE_PATHS}")
235 endif()
236endforeach()
237
238# Check for TOOLCHAIN command line argument
239if(NOT DEFINED TOOLCHAIN)
240 set(TOOLCHAIN "GNUARM" CACHE INTERNAL "Compiler used" FORCE)
241 message(STATUS "[PSA] : Defaulting compiler to ${TOOLCHAIN}")
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530242else()
243 message(STATUS "[PSA] : TOOLCHAIN is set to ${TOOLCHAIN}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530244endif()
245
Gowtham Siddarth1d6d4692019-09-16 11:47:29 +0530246if(${TOOLCHAIN} STREQUAL "ARMCLANG" OR ${TOOLCHAIN} STREQUAL "GNUARM")
247 if(NOT DEFINED CPU_ARCH)
248 message(FATAL_ERROR "[PSA] : Error: -DCPU_ARCH option missing")
249 else()
250 # Check for CPU architecture
251 if(NOT ${CPU_ARCH} IN_LIST PSA_CPU_ARCH_SUPPORT)
252 message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DCPU_ARCH=, supported CPU arch are : ${PSA_CPU_ARCH_SUPPORT}")
253 endif()
254 endif()
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530255 message(STATUS "[PSA] : CPU_ARCH is set to ${CPU_ARCH}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530256endif()
257
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530258# Check for VERBOSE
259if(NOT DEFINED VERBOSE)
260 set(VERBOSE 3 CACHE INTERNAL "Default VERBOSE value" FORCE)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530261 message(STATUS "[PSA] : Defaulting VERBOSE to ${VERBOSE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530262else()
263 if(NOT ${VERBOSE} IN_LIST PSA_VERBOSE_OPTIONS)
264 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DVERBOSE=, supported values are : ${PSA_VERBOSE_OPTIONS}")
265 endif()
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530266 message(STATUS "[PSA] : VERBOSE is set to ${VERBOSE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530267endif()
268
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530269# Check for PLATFORM_PSA_ISOLATION_LEVEL
270if(NOT DEFINED PLATFORM_PSA_ISOLATION_LEVEL)
jotman016d7dd4e2020-11-10 17:32:28 +0800271 if("${TFM_PROFILE}" STREQUAL "profile_medium")
272 set(PLATFORM_PSA_ISOLATION_LEVEL 2 CACHE INTERNAL "Default PLATFORM_PSA_ISOLATION_LEVEL value" FORCE)
273 else()
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530274 set(PLATFORM_PSA_ISOLATION_LEVEL 3 CACHE INTERNAL "Default PLATFORM_PSA_ISOLATION_LEVEL value" FORCE)
jotman016d7dd4e2020-11-10 17:32:28 +0800275 endif()
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530276 if(${SUITE} STREQUAL "IPC")
277 message(STATUS "[PSA] : Defaulting PLATFORM_PSA_ISOLATION_LEVEL to ${PLATFORM_PSA_ISOLATION_LEVEL}")
278 endif()
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530279else()
280 if(NOT ${PLATFORM_PSA_ISOLATION_LEVEL} IN_LIST PLATFORM_PSA_ISOLATION_LEVEL_OPTIONS)
281 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DPLATFORM_PSA_ISOLATION_LEVEL=, supported values are : ${PLATFORM_PSA_ISOLATION_LEVEL_OPTIONS}")
282 endif()
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530283 if(${SUITE} STREQUAL "IPC")
284 message(STATUS "[PSA] : PLATFORM_PSA_ISOLATION_LEVEL is set to ${PLATFORM_PSA_ISOLATION_LEVEL}")
285 endif()
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530286endif()
287
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530288if(NOT DEFINED INCLUDE_PANIC_TESTS)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530289 #By default panic tests are disabled
290 set(INCLUDE_PANIC_TESTS 0 CACHE INTERNAL "Default INCLUDE_PANIC_TESTS value" FORCE)
291 message(STATUS "[PSA] : Defaulting INCLUDE_PANIC_TESTS to ${INCLUDE_PANIC_TESTS}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530292else()
293 if(INCLUDE_PANIC_TESTS EQUAL 1)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530294 message(STATUS "[PSA] : "
295 "INCLUDE_PANIC_TESTS set to 1, therefore including PSA APIs panic tests into the regression,\n"
296 "\tensure that watchdog.num is set to 1 in ${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cfg")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530297 endif()
298endif()
299
300if(NOT DEFINED WATCHDOG_AVAILABLE)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530301 #Assuming watchdog is available to program by test suite
302 set(WATCHDOG_AVAILABLE 1 CACHE INTERNAL "Default WATCHDOG_AVAILABLE value" FORCE)
303 message(STATUS "[PSA] : Defaulting WATCHDOG_AVAILABLE to ${WATCHDOG_AVAILABLE}")
304else()
305 message(STATUS "[PSA] : WATCHDOG_AVAILABLE is set to ${WATCHDOG_AVAILABLE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530306endif()
307
308if((INCLUDE_PANIC_TESTS EQUAL 1) AND
309 (WATCHDOG_AVAILABLE EQUAL 0))
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530310 message(WARNING "[PSA]: "
311 "Note that to test PSA APIs panic conditions, test harness may require to access"
312 "the watchdog timer in oder to recover from panic and to be able to continue with"
313 "next test. Ignore this warning if system under test has capability to reset the"
314 "system when it encounters panic condition.")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530315endif()
316
317if(NOT DEFINED SP_HEAP_MEM_SUPP)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530318 #Are dynamic memory functions available to secure partition?
319 set(SP_HEAP_MEM_SUPP 1 CACHE INTERNAL "Default SP_HEAP_MEM_SUPP value" FORCE)
320 message(STATUS "[PSA] : Defaulting SP_HEAP_MEM_SUPP to ${SP_HEAP_MEM_SUPP}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530321endif()
322
Vinay Kumar Kotegowderac218992020-04-03 12:56:00 +0530323if(NOT DEFINED SUITE_TEST_RANGE)
324 set(SUITE_TEST_RANGE_MIN None)
325 set(SUITE_TEST_RANGE_MAX None)
326else()
327 list(LENGTH SUITE_TEST_RANGE SUITE_TEST_RANGE_LENGTH)
328 if(${SUITE_TEST_RANGE_LENGTH} GREATER "2")
329 message(FATAL_ERROR "[PSA] : -DSUITE_TEST_RANGE=<...> value error! accepts two "
330 " numbers in quotes separated with ';'")
331 endif()
332 if(${SUITE_TEST_RANGE_LENGTH} EQUAL "2")
333 list(GET SUITE_TEST_RANGE 0 SUITE_TEST_RANGE_MIN)
334 list(GET SUITE_TEST_RANGE 1 SUITE_TEST_RANGE_MAX)
335 message(STATUS "[PSA] : Testing (${SUITE_TEST_RANGE_MIN}, ${SUITE_TEST_RANGE_MAX}) of ${SUITE} suite")
336 endif()
337 if(${SUITE_TEST_RANGE_LENGTH} EQUAL "1")
338 set(SUITE_TEST_RANGE_MIN ${SUITE_TEST_RANGE})
339 set(SUITE_TEST_RANGE_MAX ${SUITE_TEST_RANGE})
340 message(STATUS "[PSA] : Testing ${SUITE_TEST_RANGE_MIN} of ${SUITE} suite")
341 endif()
342endif()
343
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530344message(STATUS "[PSA] : ----------Process input arguments- complete-------------")
345
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530346
jotman016d7dd4e2020-11-10 17:32:28 +0800347if((${SUITE} STREQUAL "INITIAL_ATTESTATION") AND (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}))
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530348# Clone QCBOR and move to specified tag
349execute_process(COMMAND ${GIT_EXECUTABLE} clone ${PSA_QCBOR_GIT_REPO_LINK} ${PSA_TARGET_QCBOR}
350 RESULT_VARIABLE ${PSA_TARGET_QCBOR}_clone_result
351 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
352if(${PSA_TARGET_QCBOR}_clone_result)
353 message(FATAL_ERROR "git clone failed for ${PSA_QCBOR_GIT_REPO_LINK}")
354endif()
355
356if(NOT ${PSA_TARGET_QCBOR}_clone_result)
357execute_process(COMMAND ${GIT_EXECUTABLE} checkout -q "${PSA_QCBOR_GIT_REPO_TAG}"
358 RESULT_VARIABLE ${PSA_TARGET_QCBOR}_checkout_result
359 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR})
360if(${PSA_TARGET_QCBOR}_checkout_result)
361 message(FATAL_ERROR "git checkout failed for Repo : ${PSA_QCBOR_GIT_REPO_LINK}, Tag : ${PSA_QCBOR_GIT_REPO_TAG}")
362endif()
363endif()
364endif()
gowtham siddarth12833042020-02-10 22:11:11 +0530365
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530366# Create PSA clean list
367list(APPEND PSA_CLEAN_LIST
368 ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_HEADER}
369 ${PSA_TESTLIST_FILE}
370 ${PSA_TEST_ENTRY_LIST_INC}
371 ${PSA_TEST_ENTRY_FUN_DECLARE_INC}
372 ${PSA_CLIENT_TEST_LIST_DELCARE_INC}
373 ${PSA_CLIENT_TEST_LIST_INC}
374 ${PSA_SERVER_TEST_LIST_DECLARE_INC}
375 ${PSA_SERVER_TEST_LIST}
376)
377
378# Process testsuite.db
379message(STATUS "[PSA] : Creating testlist.txt 'available at ${PSA_TESTLIST_FILE}'")
380execute_process(COMMAND ${PYTHON_EXECUTABLE} ${PSA_TESTLIST_GENERATOR}
381 ${SUITE_LOWER}
382 ${TESTSUITE_DB}
383 ${INCLUDE_PANIC_TESTS}
384 ${PSA_TESTLIST_FILE}
385 ${PSA_TEST_ENTRY_LIST_INC}
386 ${PSA_TEST_ENTRY_FUN_DECLARE_INC}
387 ${PSA_CLIENT_TEST_LIST_DELCARE_INC}
388 ${PSA_CLIENT_TEST_LIST_INC}
389 ${PSA_SERVER_TEST_LIST_DECLARE_INC}
Vinay Kumar Kotegowderac218992020-04-03 12:56:00 +0530390 ${PSA_SERVER_TEST_LIST}
391 ${SUITE_TEST_RANGE_MIN}
392 ${SUITE_TEST_RANGE_MAX})
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530393
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530394# Creating CMake list variable from file
395file(READ ${PSA_TESTLIST_FILE} PSA_TEST_LIST)
Vinay Kumar Kotegowderac218992020-04-03 12:56:00 +0530396if(NOT PSA_TEST_LIST)
397 message(FATAL_ERROR "[PSA] : Invalid test number!")
398endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530399string(REGEX REPLACE "\n" ";" PSA_TEST_LIST "${PSA_TEST_LIST}")
400
401add_custom_target(
402 ${PSA_TARGET_GENERATE_DATABASE_PRE}
403 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/platform
404 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/val
405 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/partition
406 COMMAND ${CMAKE_COMMAND} -E make_directory ${PSA_SUITE_OUT_DIR}
407)
408
409# Generate target files from User provided data base
410include(ExternalProject)
411ExternalProject_Add(
412 ${PSA_TARGET_GENERATE_DATABASE}
413 PREFIX ${CMAKE_CURRENT_BINARY_DIR}
414 DOWNLOAD_COMMAND ""
415 UPDATE_COMMAND ""
416 PATCH_COMMAND ""
417 BUILD_COMMAND ""
418 SOURCE_DIR "${PSA_ROOT_DIR}/tools/scripts/target_cfg"
419 CMAKE_ARGS -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
420 -DOUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
421 -DTARGET=${TARGET}
422 -DGENERATOR_FILE=${PSA_TARGET_CONFIG_HEADER_GENERATOR}
423 -DINCLUDE_DIR=${PSA_ROOT_DIR}/val/common
424 -DTARGET_CONFIGURATION_FILE=${TARGET_CONFIGURATION_FILE}
425 -DTGT_CONFIG_SOURCE_C=${TGT_CONFIG_SOURCE_C}
426 -DOUTPUT_HEADER=${OUTPUT_HEADER}
427 -DDATABASE_TABLE_NAME=${DATABASE_TABLE_NAME}
428 -DDATABASE_TABLE_SECTION_NAME=${DATABASE_TABLE_SECTION_NAME}
429 -DTARGET_HEADER_GEN_INCLUDE_PATHS=${TARGET_HEADER_GEN_INCLUDE_PATHS}
430 LIST_SEPARATOR |
431 TEST_COMMAND ""
432)
433
434# Add custom target to clean generated files of the external project
435add_custom_target(
436 ${PSA_TARGET_GENERATE_DATABASE_POST}
437 COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/src/${PSA_TARGET_GENERATE_DATABASE}-build/ -- clean
438)
439
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530440# Check for supported toolchain/s
441if(${TOOLCHAIN} IN_LIST PSA_TOOLCHAIN_SUPPORT)
442 include(${PSA_ROOT_DIR}/tools/cmake/compiler/${TOOLCHAIN}.cmake)
443else()
444 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DTOOLCHAIN=, supported toolchain are : ${PSA_TOOLCHAIN_SUPPORT}")
445endif()
446
447# Global macro to identify the PSA test suite cmake build
448add_definitions(-DPSA_CMAKE_BUILD)
449add_definitions(-D${SUITE})
450add_definitions(-DVERBOSE=${VERBOSE})
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530451add_definitions(-DPLATFORM_PSA_ISOLATION_LEVEL=${PLATFORM_PSA_ISOLATION_LEVEL})
Vinay Kumar Kotegowder52bbfc92020-07-03 17:23:59 +0530452add_definitions(-D${TARGET})
jotman016d7dd4e2020-11-10 17:32:28 +0800453if("${TFM_PROFILE}" STREQUAL "profile_small")
454 message(STATUS "[PSA] : Building SMALL profile")
455 add_definitions(-DTF_M_PROFILE_SMALL)
456elseif("${TFM_PROFILE}" STREQUAL "profile_medium")
457 message(STATUS "[PSA] : Building MEDIUM profile")
458 add_definitions(-DTF_M_PROFILE_MEDIUM)
459endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530460if(${SP_HEAP_MEM_SUPP} EQUAL 1)
461 add_definitions(-DSP_HEAP_MEM_SUPP)
462endif()
463
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530464# Build PAL NSPE LIB
465include(${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cmake)
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530466# Build VAL NSPE LIB
467#add_definitions(-DVAL_NSPE_BUILD)
468include(${PSA_ROOT_DIR}/val/val_nspe.cmake)
469# Build test
470include(${PSA_SUITE_DIR}/suite.cmake)
471if(${SUITE} STREQUAL "IPC")
472# Build SPE LIB
473include(${PSA_ROOT_DIR}/val/val_spe.cmake)
474endif()
475
476add_dependencies(${PSA_TARGET_GENERATE_DATABASE} ${PSA_TARGET_GENERATE_DATABASE_PRE})
477add_dependencies(${PSA_TARGET_GENERATE_DATABASE_POST} ${PSA_TARGET_GENERATE_DATABASE})
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530478add_dependencies(${PSA_TARGET_PAL_NSPE_LIB} ${PSA_TARGET_GENERATE_DATABASE_POST})
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530479add_dependencies(${PSA_TARGET_VAL_NSPE_LIB} ${PSA_TARGET_PAL_NSPE_LIB})
480add_dependencies(${PSA_TARGET_TEST_COMBINE_LIB} ${PSA_TARGET_VAL_NSPE_LIB})
481if(${SUITE} STREQUAL "IPC")
482add_dependencies(${PSA_TARGET_DRIVER_PARTITION_LIB} ${PSA_TARGET_TEST_COMBINE_LIB})
483add_dependencies(${PSA_TARGET_CLIENT_PARTITION_LIB} ${PSA_TARGET_DRIVER_PARTITION_LIB})
484add_dependencies(${PSA_TARGET_SERVER_PARTITION_LIB} ${PSA_TARGET_CLIENT_PARTITION_LIB})
485endif()
486
487# Include the files for make clean
488foreach(clean_item ${PSA_CLEAN_LIST})
489 set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clean_item})
490endforeach()
491
492set_property(TARGET ${PSA_TARGET_VAL_NSPE_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/val)
493set_property(TARGET ${PSA_TARGET_PAL_NSPE_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/platform)
494set_property(TARGET ${PSA_TARGET_TEST_COMBINE_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${PSA_SUITE_OUT_DIR})
495if(${SUITE} STREQUAL "IPC")
496set_property(TARGET ${PSA_TARGET_DRIVER_PARTITION_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
497set_property(TARGET ${PSA_TARGET_CLIENT_PARTITION_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
498set_property(TARGET ${PSA_TARGET_SERVER_PARTITION_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
499endif()