blob: 202d0a3124a967df9eb11d664f271c6f59b0f10e [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
36# list of supported suites
37list(APPEND PSA_SUITES
38 "IPC"
39 "CRYPTO"
40 "PROTECTED_STORAGE"
41 "INTERNAL_TRUSTED_STORAGE"
42 "INITIAL_ATTESTATION"
43)
44
45# list of ipc files required
46list(APPEND PSA_IPC_FILES
47 "psa/client.h"
48 "psa/service.h"
Jaykumar Pitambarbhai Patel1c2b0282019-11-06 11:29:13 +053049 "psa/lifecycle.h"
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053050 "psa_manifest/sid.h"
51 "psa_manifest/pid.h"
Jaykumar Pitambarbhai Patel1c2b0282019-11-06 11:29:13 +053052 "psa_manifest/driver_partition_psa.h"
53 "psa_manifest/client_partition_psa.h"
54 "psa_manifest/server_partition_psa.h"
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053055)
56
57# list of crypto files required
58list(APPEND PSA_CRYPTO_FILES
59 "psa/crypto.h"
60)
61
62# list of protected_storage files required
63list(APPEND PSA_PROTECTED_STORAGE_FILES
64 "psa/protected_storage.h"
65)
66
67# list of internal_trusted_storage files required
68list(APPEND PSA_INTERNAL_TRUSTED_STORAGE_FILES
69 "psa/internal_trusted_storage.h"
70)
71
72# list of initial_attestation files required
73list(APPEND PSA_INITIAL_ATTESTATION_FILES
74 "psa/initial_attestation.h"
75 "psa/crypto.h"
76)
77
78# list of supported toolchains
79list(APPEND PSA_TOOLCHAIN_SUPPORT
80 GNUARM
81 ARMCLANG
82 HOST_GCC
83)
84
85# list of suported CPU arch
86list(APPEND PSA_CPU_ARCH_SUPPORT
87 armv8m_ml
88 armv8m_bl
89 armv7m
90)
91
92# list of VERBOSE options
93list(APPEND PSA_VERBOSE_OPTIONS 1 2 3 4 5)
94
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +053095# list of PLATFORM_PSA_ISOLATION_LEVEL options
96list(APPEND PLATFORM_PSA_ISOLATION_LEVEL_OPTIONS 1 2 3)
97
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +053098message(STATUS "[PSA] : ----------Process input arguments- start-------------")
99
100# Check for TARGET command line argument
101_check_arguments("TARGET")
102# Check for SUTIE command line argument
103_check_arguments("SUITE")
104# Check for PSA_INCLUDE_PATHS command line argument
105_check_arguments("PSA_INCLUDE_PATHS")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530106
107string(TOLOWER ${SUITE} SUITE_LOWER)
108
109# Check for valid targets
110_get_sub_dir_list(PSA_TARGET_LIST ${PSA_ROOT_DIR}/platform/targets)
111if(NOT ${TARGET} IN_LIST PSA_TARGET_LIST)
112 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DTARGET=, supported targets are : ${PSA_TARGET_LIST}")
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530113else()
114 message(STATUS "[PSA] : TARGET is set to ${TARGET}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530115endif()
116
117# Check for the presence of required test suite directories
118if((NOT IS_DIRECTORY ${PSA_ROOT_DIR}/dev_apis) OR (NOT IS_DIRECTORY ${PSA_ROOT_DIR}/ff))
119 message(STATUS "[PSA] : Error: Could not find architecture test suite directories in psa root path ${PSA_ROOT_DIR}")
120endif()
121
122if(FALSE)
123# Check for build directory specified
124if(NOT DEFINED BUILD)
125 set(BUILD ${CMAKE_CURRENT_BINARY_DIR}/BUILD CACHE INTERNAL "Defaulting build directory to ${BUILD}" FORCE)
126else()
127 set(BUILD ${CMAKE_CURRENT_BINARY_DIR}/${BUILD}/BUILD CACHE INTERNAL "Defaulting build directory to ${BUILD}" FORCE)
128endif()
129endif()
130
131# Check for valid suite cmake argument passed
132if(NOT ${SUITE} IN_LIST PSA_SUITES)
133 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 +0530134else()
135 message(STATUS "[PSA] : SUITE is set to ${SUITE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530136endif()
137
138# Project variables
139set(PSA_TARGET_PRE_BUILD psa_pre_build)
140set(PSA_TARGET_GENERATE_DATABASE_PRE psa_generate_database_prerequisite)
141set(PSA_TARGET_GENERATE_DATABASE psa_generate_database)
142set(PSA_TARGET_GENERATE_DATABASE_POST psa_generate_database_cleanup)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530143if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
144 set(PSA_TARGET_QCBOR psa_qcbor)
145endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530146set(PSA_TARGET_PAL_NSPE_LIB pal_nspe)
147set(PSA_TARGET_VAL_NSPE_LIB val_nspe)
148set(PSA_TARGET_TEST_COMBINE_LIB test_combine)
149set(PSA_TARGET_DRIVER_PARTITION_LIB driver_partition)
150set(PSA_TARGET_CLIENT_PARTITION_LIB client_partition)
151set(PSA_TARGET_SERVER_PARTITION_LIB server_partition)
152if(${SUITE} STREQUAL "IPC")
153 set(PSA_SUITE_DIR ${PSA_ROOT_DIR}/ff/${SUITE_LOWER})
154 set(PSA_SUITE_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/ff/${SUITE_LOWER})
155else()
156 set(PSA_SUITE_DIR ${PSA_ROOT_DIR}/dev_apis/${SUITE_LOWER})
157 set(PSA_SUITE_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/dev_apis/${SUITE_LOWER})
158endif()
159set(PSA_TARGET_CONFIG_HEADER_GENERATOR ${PSA_ROOT_DIR}/tools/scripts/target_cfg/targetConfigGen.py)
160set(PSA_TESTLIST_GENERATOR ${PSA_ROOT_DIR}/tools/scripts/gen_tests_list.py)
161set(TARGET_CONFIGURATION_FILE ${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cfg)
162set(TGT_CONFIG_SOURCE_C ${CMAKE_CURRENT_BINARY_DIR}/targetConfigGen.c)
163set(OUTPUT_HEADER target_database.h)
164set(DATABASE_TABLE_NAME target_database)
165set(DATABASE_TABLE_SECTION_NAME "NOSECTION")
166set(TARGET_HEADER_GEN_INCLUDE_PATHS "${PSA_ROOT_DIR}/val/nspe|${PSA_ROOT_DIR}/val/common|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto")
167set(TESTSUITE_DB ${PSA_SUITE_DIR}/testsuite.db)
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530168set(PSA_TESTLIST_FILE ${CMAKE_CURRENT_BINARY_DIR}/testlist.txt)
169set(PSA_TEST_ENTRY_LIST_INC ${CMAKE_CURRENT_BINARY_DIR}/test_entry_list.inc)
170set(PSA_TEST_ENTRY_FUN_DECLARE_INC ${CMAKE_CURRENT_BINARY_DIR}/test_entry_fn_declare_list.inc)
171set(PSA_CLIENT_TEST_LIST_DELCARE_INC ${CMAKE_CURRENT_BINARY_DIR}/client_tests_list_declare.inc)
172set(PSA_CLIENT_TEST_LIST_INC ${CMAKE_CURRENT_BINARY_DIR}/client_tests_list.inc)
173set(PSA_SERVER_TEST_LIST_DECLARE_INC ${CMAKE_CURRENT_BINARY_DIR}/server_tests_list_declare.inc)
174set(PSA_SERVER_TEST_LIST ${CMAKE_CURRENT_BINARY_DIR}/server_tests_list.inc)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530175if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
176 set(PSA_QCBOR_INCLUDE_PATH ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/inc)
177endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530178
179# Validity check for required files for a given suite
180if(NOT DEFINED PSA_${SUITE}_FILES)
181 message(FATAL_ERROR "[PSA] : List of file/s to verify against ${suite} is not defined")
182endif()
183foreach(file_item ${PSA_${SUITE}_FILES})
184 set(PSA_FILE_FOUND FALSE)
185 foreach(include_path ${PSA_INCLUDE_PATHS})
186 if((EXISTS ${include_path}/${file_item}) AND
187 (NOT PSA_FILE_FOUND))
188 set(PSA_FILE_FOUND TRUE)
189 break()
190 endif()
191 endforeach()
192 if(NOT PSA_FILE_FOUND)
193 message(FATAL_ERROR "[PSA] : Couldn't find ${file_item} in ${PSA_INCLUDE_PATHS}")
194 endif()
195endforeach()
196
197# Check for TOOLCHAIN command line argument
198if(NOT DEFINED TOOLCHAIN)
199 set(TOOLCHAIN "GNUARM" CACHE INTERNAL "Compiler used" FORCE)
200 message(STATUS "[PSA] : Defaulting compiler to ${TOOLCHAIN}")
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530201else()
202 message(STATUS "[PSA] : TOOLCHAIN is set to ${TOOLCHAIN}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530203endif()
204
Gowtham Siddarth1d6d4692019-09-16 11:47:29 +0530205if(${TOOLCHAIN} STREQUAL "ARMCLANG" OR ${TOOLCHAIN} STREQUAL "GNUARM")
206 if(NOT DEFINED CPU_ARCH)
207 message(FATAL_ERROR "[PSA] : Error: -DCPU_ARCH option missing")
208 else()
209 # Check for CPU architecture
210 if(NOT ${CPU_ARCH} IN_LIST PSA_CPU_ARCH_SUPPORT)
211 message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DCPU_ARCH=, supported CPU arch are : ${PSA_CPU_ARCH_SUPPORT}")
212 endif()
213 endif()
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530214 message(STATUS "[PSA] : CPU_ARCH is set to ${CPU_ARCH}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530215endif()
216
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530217# Check for VERBOSE
218if(NOT DEFINED VERBOSE)
219 set(VERBOSE 3 CACHE INTERNAL "Default VERBOSE value" FORCE)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530220 message(STATUS "[PSA] : Defaulting VERBOSE to ${VERBOSE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530221else()
222 if(NOT ${VERBOSE} IN_LIST PSA_VERBOSE_OPTIONS)
223 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DVERBOSE=, supported values are : ${PSA_VERBOSE_OPTIONS}")
224 endif()
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530225 message(STATUS "[PSA] : VERBOSE is set to ${VERBOSE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530226endif()
227
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530228# Check for PLATFORM_PSA_ISOLATION_LEVEL
229if(NOT DEFINED PLATFORM_PSA_ISOLATION_LEVEL)
230 set(PLATFORM_PSA_ISOLATION_LEVEL 3 CACHE INTERNAL "Default PLATFORM_PSA_ISOLATION_LEVEL value" FORCE)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530231 if(${SUITE} STREQUAL "IPC")
232 message(STATUS "[PSA] : Defaulting PLATFORM_PSA_ISOLATION_LEVEL to ${PLATFORM_PSA_ISOLATION_LEVEL}")
233 endif()
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530234else()
235 if(NOT ${PLATFORM_PSA_ISOLATION_LEVEL} IN_LIST PLATFORM_PSA_ISOLATION_LEVEL_OPTIONS)
236 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DPLATFORM_PSA_ISOLATION_LEVEL=, supported values are : ${PLATFORM_PSA_ISOLATION_LEVEL_OPTIONS}")
237 endif()
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530238 if(${SUITE} STREQUAL "IPC")
239 message(STATUS "[PSA] : PLATFORM_PSA_ISOLATION_LEVEL is set to ${PLATFORM_PSA_ISOLATION_LEVEL}")
240 endif()
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530241endif()
242
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530243if(NOT DEFINED INCLUDE_PANIC_TESTS)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530244 #By default panic tests are disabled
245 set(INCLUDE_PANIC_TESTS 0 CACHE INTERNAL "Default INCLUDE_PANIC_TESTS value" FORCE)
246 message(STATUS "[PSA] : Defaulting INCLUDE_PANIC_TESTS to ${INCLUDE_PANIC_TESTS}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530247else()
248 if(INCLUDE_PANIC_TESTS EQUAL 1)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530249 message(STATUS "[PSA] : "
250 "INCLUDE_PANIC_TESTS set to 1, therefore including PSA APIs panic tests into the regression,\n"
251 "\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 +0530252 endif()
253endif()
254
255if(NOT DEFINED WATCHDOG_AVAILABLE)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530256 #Assuming watchdog is available to program by test suite
257 set(WATCHDOG_AVAILABLE 1 CACHE INTERNAL "Default WATCHDOG_AVAILABLE value" FORCE)
258 message(STATUS "[PSA] : Defaulting WATCHDOG_AVAILABLE to ${WATCHDOG_AVAILABLE}")
259else()
260 message(STATUS "[PSA] : WATCHDOG_AVAILABLE is set to ${WATCHDOG_AVAILABLE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530261endif()
262
263if((INCLUDE_PANIC_TESTS EQUAL 1) AND
264 (WATCHDOG_AVAILABLE EQUAL 0))
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530265 message(WARNING "[PSA]: "
266 "Note that to test PSA APIs panic conditions, test harness may require to access"
267 "the watchdog timer in oder to recover from panic and to be able to continue with"
268 "next test. Ignore this warning if system under test has capability to reset the"
269 "system when it encounters panic condition.")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530270endif()
271
272if(NOT DEFINED SP_HEAP_MEM_SUPP)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530273 #Are dynamic memory functions available to secure partition?
274 set(SP_HEAP_MEM_SUPP 1 CACHE INTERNAL "Default SP_HEAP_MEM_SUPP value" FORCE)
275 message(STATUS "[PSA] : Defaulting SP_HEAP_MEM_SUPP to ${SP_HEAP_MEM_SUPP}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530276endif()
277
278if(NOT DEFINED TEST_COMBINE_ARCHIVE)
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530279 #Default option is to create archive
280 set(TEST_COMBINE_ARCHIVE 1 CACHE INTERNAL "Default TEST_COMBINE_ARCHIVE value" FORCE)
281 message(STATUS "[PSA] : Defaulting TEST_COMBINE_ARCHIVE to ${TEST_COMBINE_ARCHIVE}")
282else()
283 message(STATUS "[PSA] : TEST_COMBINE_ARCHIVE is set to ${TEST_COMBINE_ARCHIVE}")
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530284endif()
285
Vinay Kumar Kotegowderac218992020-04-03 12:56:00 +0530286if(NOT DEFINED SUITE_TEST_RANGE)
287 set(SUITE_TEST_RANGE_MIN None)
288 set(SUITE_TEST_RANGE_MAX None)
289else()
290 list(LENGTH SUITE_TEST_RANGE SUITE_TEST_RANGE_LENGTH)
291 if(${SUITE_TEST_RANGE_LENGTH} GREATER "2")
292 message(FATAL_ERROR "[PSA] : -DSUITE_TEST_RANGE=<...> value error! accepts two "
293 " numbers in quotes separated with ';'")
294 endif()
295 if(${SUITE_TEST_RANGE_LENGTH} EQUAL "2")
296 list(GET SUITE_TEST_RANGE 0 SUITE_TEST_RANGE_MIN)
297 list(GET SUITE_TEST_RANGE 1 SUITE_TEST_RANGE_MAX)
298 message(STATUS "[PSA] : Testing (${SUITE_TEST_RANGE_MIN}, ${SUITE_TEST_RANGE_MAX}) of ${SUITE} suite")
299 endif()
300 if(${SUITE_TEST_RANGE_LENGTH} EQUAL "1")
301 set(SUITE_TEST_RANGE_MIN ${SUITE_TEST_RANGE})
302 set(SUITE_TEST_RANGE_MAX ${SUITE_TEST_RANGE})
303 message(STATUS "[PSA] : Testing ${SUITE_TEST_RANGE_MIN} of ${SUITE} suite")
304 endif()
305endif()
306
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530307message(STATUS "[PSA] : ----------Process input arguments- complete-------------")
308
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530309
310if((${SUITE} STREQUAL "INITIAL_ATTESTATION") AND (NOT EXISTS ${PSA_TARGET_QCBOR}))
311# Clone QCBOR and move to specified tag
312execute_process(COMMAND ${GIT_EXECUTABLE} clone ${PSA_QCBOR_GIT_REPO_LINK} ${PSA_TARGET_QCBOR}
313 RESULT_VARIABLE ${PSA_TARGET_QCBOR}_clone_result
314 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
315if(${PSA_TARGET_QCBOR}_clone_result)
316 message(FATAL_ERROR "git clone failed for ${PSA_QCBOR_GIT_REPO_LINK}")
317endif()
318
319if(NOT ${PSA_TARGET_QCBOR}_clone_result)
320execute_process(COMMAND ${GIT_EXECUTABLE} checkout -q "${PSA_QCBOR_GIT_REPO_TAG}"
321 RESULT_VARIABLE ${PSA_TARGET_QCBOR}_checkout_result
322 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR})
323if(${PSA_TARGET_QCBOR}_checkout_result)
324 message(FATAL_ERROR "git checkout failed for Repo : ${PSA_QCBOR_GIT_REPO_LINK}, Tag : ${PSA_QCBOR_GIT_REPO_TAG}")
325endif()
326endif()
327endif()
gowtham siddarth12833042020-02-10 22:11:11 +0530328
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530329# Create PSA clean list
330list(APPEND PSA_CLEAN_LIST
331 ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_HEADER}
332 ${PSA_TESTLIST_FILE}
333 ${PSA_TEST_ENTRY_LIST_INC}
334 ${PSA_TEST_ENTRY_FUN_DECLARE_INC}
335 ${PSA_CLIENT_TEST_LIST_DELCARE_INC}
336 ${PSA_CLIENT_TEST_LIST_INC}
337 ${PSA_SERVER_TEST_LIST_DECLARE_INC}
338 ${PSA_SERVER_TEST_LIST}
339)
340
341# Process testsuite.db
342message(STATUS "[PSA] : Creating testlist.txt 'available at ${PSA_TESTLIST_FILE}'")
343execute_process(COMMAND ${PYTHON_EXECUTABLE} ${PSA_TESTLIST_GENERATOR}
344 ${SUITE_LOWER}
345 ${TESTSUITE_DB}
346 ${INCLUDE_PANIC_TESTS}
347 ${PSA_TESTLIST_FILE}
348 ${PSA_TEST_ENTRY_LIST_INC}
349 ${PSA_TEST_ENTRY_FUN_DECLARE_INC}
350 ${PSA_CLIENT_TEST_LIST_DELCARE_INC}
351 ${PSA_CLIENT_TEST_LIST_INC}
352 ${PSA_SERVER_TEST_LIST_DECLARE_INC}
Vinay Kumar Kotegowderac218992020-04-03 12:56:00 +0530353 ${PSA_SERVER_TEST_LIST}
354 ${SUITE_TEST_RANGE_MIN}
355 ${SUITE_TEST_RANGE_MAX})
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530356
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530357# Creating CMake list variable from file
358file(READ ${PSA_TESTLIST_FILE} PSA_TEST_LIST)
Vinay Kumar Kotegowderac218992020-04-03 12:56:00 +0530359if(NOT PSA_TEST_LIST)
360 message(FATAL_ERROR "[PSA] : Invalid test number!")
361endif()
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530362string(REGEX REPLACE "\n" ";" PSA_TEST_LIST "${PSA_TEST_LIST}")
363
364add_custom_target(
365 ${PSA_TARGET_GENERATE_DATABASE_PRE}
366 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/platform
367 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/val
368 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/partition
369 COMMAND ${CMAKE_COMMAND} -E make_directory ${PSA_SUITE_OUT_DIR}
370)
371
372# Generate target files from User provided data base
373include(ExternalProject)
374ExternalProject_Add(
375 ${PSA_TARGET_GENERATE_DATABASE}
376 PREFIX ${CMAKE_CURRENT_BINARY_DIR}
377 DOWNLOAD_COMMAND ""
378 UPDATE_COMMAND ""
379 PATCH_COMMAND ""
380 BUILD_COMMAND ""
381 SOURCE_DIR "${PSA_ROOT_DIR}/tools/scripts/target_cfg"
382 CMAKE_ARGS -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
383 -DOUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
384 -DTARGET=${TARGET}
385 -DGENERATOR_FILE=${PSA_TARGET_CONFIG_HEADER_GENERATOR}
386 -DINCLUDE_DIR=${PSA_ROOT_DIR}/val/common
387 -DTARGET_CONFIGURATION_FILE=${TARGET_CONFIGURATION_FILE}
388 -DTGT_CONFIG_SOURCE_C=${TGT_CONFIG_SOURCE_C}
389 -DOUTPUT_HEADER=${OUTPUT_HEADER}
390 -DDATABASE_TABLE_NAME=${DATABASE_TABLE_NAME}
391 -DDATABASE_TABLE_SECTION_NAME=${DATABASE_TABLE_SECTION_NAME}
392 -DTARGET_HEADER_GEN_INCLUDE_PATHS=${TARGET_HEADER_GEN_INCLUDE_PATHS}
393 LIST_SEPARATOR |
394 TEST_COMMAND ""
395)
396
397# Add custom target to clean generated files of the external project
398add_custom_target(
399 ${PSA_TARGET_GENERATE_DATABASE_POST}
400 COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/src/${PSA_TARGET_GENERATE_DATABASE}-build/ -- clean
401)
402
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530403# Check for supported toolchain/s
404if(${TOOLCHAIN} IN_LIST PSA_TOOLCHAIN_SUPPORT)
405 include(${PSA_ROOT_DIR}/tools/cmake/compiler/${TOOLCHAIN}.cmake)
406else()
407 message(FATAL_ERROR "[PSA] : Error: Unspported value for -DTOOLCHAIN=, supported toolchain are : ${PSA_TOOLCHAIN_SUPPORT}")
408endif()
409
410# Global macro to identify the PSA test suite cmake build
411add_definitions(-DPSA_CMAKE_BUILD)
412add_definitions(-D${SUITE})
413add_definitions(-DVERBOSE=${VERBOSE})
Jaykumar Pitambarbhai Patelccf5bf22019-12-06 11:58:32 +0530414add_definitions(-DPLATFORM_PSA_ISOLATION_LEVEL=${PLATFORM_PSA_ISOLATION_LEVEL})
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530415
416if(${SP_HEAP_MEM_SUPP} EQUAL 1)
417 add_definitions(-DSP_HEAP_MEM_SUPP)
418endif()
419
Jaykumar Pitambarbhai Patel6c3b8082020-02-26 19:51:37 +0530420# Build PAL NSPE LIB
421include(${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cmake)
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530422# Build VAL NSPE LIB
423#add_definitions(-DVAL_NSPE_BUILD)
424include(${PSA_ROOT_DIR}/val/val_nspe.cmake)
425# Build test
426include(${PSA_SUITE_DIR}/suite.cmake)
427if(${SUITE} STREQUAL "IPC")
428# Build SPE LIB
429include(${PSA_ROOT_DIR}/val/val_spe.cmake)
430endif()
431
432add_dependencies(${PSA_TARGET_GENERATE_DATABASE} ${PSA_TARGET_GENERATE_DATABASE_PRE})
433add_dependencies(${PSA_TARGET_GENERATE_DATABASE_POST} ${PSA_TARGET_GENERATE_DATABASE})
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530434add_dependencies(${PSA_TARGET_PAL_NSPE_LIB} ${PSA_TARGET_GENERATE_DATABASE_POST})
Vinay Kumar Kotegowder9982f902019-07-15 09:13:54 +0530435add_dependencies(${PSA_TARGET_VAL_NSPE_LIB} ${PSA_TARGET_PAL_NSPE_LIB})
436add_dependencies(${PSA_TARGET_TEST_COMBINE_LIB} ${PSA_TARGET_VAL_NSPE_LIB})
437if(${SUITE} STREQUAL "IPC")
438add_dependencies(${PSA_TARGET_DRIVER_PARTITION_LIB} ${PSA_TARGET_TEST_COMBINE_LIB})
439add_dependencies(${PSA_TARGET_CLIENT_PARTITION_LIB} ${PSA_TARGET_DRIVER_PARTITION_LIB})
440add_dependencies(${PSA_TARGET_SERVER_PARTITION_LIB} ${PSA_TARGET_CLIENT_PARTITION_LIB})
441endif()
442
443# Include the files for make clean
444foreach(clean_item ${PSA_CLEAN_LIST})
445 set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clean_item})
446endforeach()
447
448set_property(TARGET ${PSA_TARGET_VAL_NSPE_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/val)
449set_property(TARGET ${PSA_TARGET_PAL_NSPE_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/platform)
450set_property(TARGET ${PSA_TARGET_TEST_COMBINE_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${PSA_SUITE_OUT_DIR})
451if(${SUITE} STREQUAL "IPC")
452set_property(TARGET ${PSA_TARGET_DRIVER_PARTITION_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
453set_property(TARGET ${PSA_TARGET_CLIENT_PARTITION_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
454set_property(TARGET ${PSA_TARGET_SERVER_PARTITION_LIB} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
455endif()