blob: cff00ff0a5216382f88bab61b7b62614739f69cb [file] [log] [blame]
julhal013ec4c322021-02-05 17:30:49 +00001#-------------------------------------------------------------------------------
Imre Kiseeee9642021-12-17 13:59:46 +01002# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
julhal013ec4c322021-02-05 17:30:49 +00003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
Balint Dobszay047aea82022-05-16 14:20:53 +02007cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
Gyorgy Szinga365a042021-12-02 01:48:27 +01008
9# Set default platform.
10set(TS_PLATFORM "arm/fvp/fvp_base_revc-2xaemv8a" CACHE STRING "Target platform location.")
julhal013ec4c322021-02-05 17:30:49 +000011include(../../deployment.cmake REQUIRED)
12
13#-------------------------------------------------------------------------------
14# The CMakeLists.txt for building the env-test deployment for opteesp
15#
16# Builds the test_runner service provider for running in an SEL0 secure partition
17# hosted by OPTEE in the role of SPM. Environment tests are added and CppUnit
18# test cases.
19#-------------------------------------------------------------------------------
20include(${TS_ROOT}/environments/opteesp/env.cmake)
julhal0137e1aea2021-02-09 15:22:20 +000021project(trusted-services LANGUAGES C ASM)
Julian Hall7048d302021-06-03 16:07:28 +010022add_executable(env-test)
23target_include_directories(env-test PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
Balint Dobszayc9daea92022-06-15 15:17:11 +020024set(SP_UUID_CANON "33c75baf-ac6a-4fe4-8ac7-e9909bee2d17")
25set(SP_UUID_LE "0xaf5bc733 0xe44f6aac 0x90e9c78a 0x172dee9b")
Imre Kiseeee9642021-12-17 13:59:46 +010026set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
Imre Kis2ccd8e82021-10-08 11:21:14 +020027set(TRACE_PREFIX "ENVTEST" CACHE STRING "Trace prefix")
julhal013ec4c322021-02-05 17:30:49 +000028
julhal013ec4c322021-02-05 17:30:49 +000029#-------------------------------------------------------------------------------
Julian Hall7048d302021-06-03 16:07:28 +010030# Components that are env-test specific to deployment in the opteesp
julhal013ec4c322021-02-05 17:30:49 +000031# environment.
32#-------------------------------------------------------------------------------
Julian Hall7048d302021-06-03 16:07:28 +010033add_components(TARGET "env-test"
julhal013ec4c322021-02-05 17:30:49 +000034 BASE_DIR ${TS_ROOT}
35 COMPONENTS
Balint Dobszay286ff752022-03-04 15:57:19 +010036 "components/common/fdt"
Imre Kis2ccd8e82021-10-08 11:21:14 +020037 "components/common/trace"
38 "components/common/utils"
julhal0137e1aea2021-02-09 15:22:20 +000039 "components/config/loader/sp"
julhal013ec4c322021-02-05 17:30:49 +000040 "components/messaging/ffa/libsp"
41 "components/rpc/ffarpc/endpoint"
julhal0137e1aea2021-02-09 15:22:20 +000042 "components/config/test/sp"
julhal013ec4c322021-02-05 17:30:49 +000043 "environments/opteesp"
44)
45
julhal0137e1aea2021-02-09 15:22:20 +000046#-------------------------------------------------------------------------------
47# Extend with components that are common across all deployments of
Julian Hall7048d302021-06-03 16:07:28 +010048# env-test
julhal0137e1aea2021-02-09 15:22:20 +000049#
50#-------------------------------------------------------------------------------
Imre Kisd0ed5c22021-12-15 17:05:47 +010051include(../env-test.cmake REQUIRED)
julhal013ec4c322021-02-05 17:30:49 +000052
53#-------------------------------------------------------------------------------
Gyorgy Szinga365a042021-12-02 01:48:27 +010054# Set target platform to provide drivers needed by the deployment
julhal013ec4c322021-02-05 17:30:49 +000055#
56#-------------------------------------------------------------------------------
Gyorgy Szingfceef6a2021-12-11 16:20:59 +000057add_platform(TARGET env-test)
julhal013ec4c322021-02-05 17:30:49 +000058
julhal013ec4c322021-02-05 17:30:49 +000059if(CMAKE_CROSSCOMPILING)
Julian Hall7048d302021-06-03 16:07:28 +010060 target_link_libraries(env-test PRIVATE stdc++ gcc m)
julhal013ec4c322021-02-05 17:30:49 +000061endif()
62
63#################################################################
64
Julian Hall7048d302021-06-03 16:07:28 +010065target_compile_definitions(env-test PRIVATE
julhal013ec4c322021-02-05 17:30:49 +000066 ARM64=1
67)
68
Julian Hall7048d302021-06-03 16:07:28 +010069target_include_directories(env-test PRIVATE
julhal013ec4c322021-02-05 17:30:49 +000070 ${TS_ROOT}/deployments/env-test/opteesp
71)
72
73if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
Julian Hall7048d302021-06-03 16:07:28 +010074 target_compile_options(env-test PRIVATE
julhal013ec4c322021-02-05 17:30:49 +000075 -fdiagnostics-show-option
julhal013ec4c322021-02-05 17:30:49 +000076 -gdwarf-2
77 -mstrict-align
78 -O0
Andrew Beggs97a00d42021-06-15 15:45:46 +000079 $<$<COMPILE_LANGUAGE:C>:-std=c99>
julhal013ec4c322021-02-05 17:30:49 +000080 $<$<COMPILE_LANGUAGE:CXX>:-fno-use-cxa-atexit>
81 )
82
83 # Options for GCC that control linking
Julian Hall7048d302021-06-03 16:07:28 +010084 target_link_options(env-test PRIVATE
julhal013ec4c322021-02-05 17:30:49 +000085 -zmax-page-size=4096
86 )
87 # Options directly for LD, these are not understood by GCC
Julian Hall7048d302021-06-03 16:07:28 +010088 target_link_options(env-test PRIVATE
julhal013ec4c322021-02-05 17:30:49 +000089 -Wl,--as-needed
90 -Wl,--sort-section=alignment
91 # -Wl,--dynamic-list ${CMAKE_CURRENT_LIST_DIR}/dyn_list
92 )
93endif()
94
Balint Dobszayc9daea92022-06-15 15:17:11 +020095compiler_generate_stripped_elf(TARGET env-test NAME "${SP_UUID_CANON}.stripped.elf" RES STRIPPED_ELF)
julhal013ec4c322021-02-05 17:30:49 +000096
97######################################## install
98if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
99 set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
100endif()
101#TODO: api headers
Julian Hall7048d302021-06-03 16:07:28 +0100102
103install(TARGETS env-test
104 PUBLIC_HEADER DESTINATION ${TS_ENV}/include
105 RUNTIME DESTINATION ${TS_ENV}/bin
julhal013ec4c322021-02-05 17:30:49 +0000106 )
Julian Hall7048d302021-06-03 16:07:28 +0100107install(FILES ${STRIPPED_ELF} DESTINATION ${TS_ENV}/bin)
108
109get_property(_PROTO_FILES TARGET env-test PROPERTY PROTOBUF_FILES)
110install(FILES ${_PROTO_FILES} DESTINATION ${TS_ENV}/lib/protobuf)
111
Imre Kisa74aaf92021-12-14 17:13:06 +0100112include(${TS_ROOT}/tools/cmake/common/ExportSp.cmake)
113export_sp(
Balint Dobszayc9daea92022-06-15 15:17:11 +0200114 SP_UUID_CANON ${SP_UUID_CANON}
115 SP_UUID_LE ${SP_UUID_LE}
Imre Kisa74aaf92021-12-14 17:13:06 +0100116 SP_NAME "env-test"
117 MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
118 DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_env-test.dts.in
119 JSON_IN ${TS_ROOT}/environments/opteesp/sp_pkg.json.in
120)