blob: 3149ecd3d28d0be05b3f95e952e70dfc60689bee [file] [log] [blame]
julhal013ec4c322021-02-05 17:30:49 +00001#-------------------------------------------------------------------------------
2# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7cmake_minimum_required(VERSION 3.16)
8include(../../deployment.cmake REQUIRED)
9
10#-------------------------------------------------------------------------------
11# The CMakeLists.txt for building the env-test deployment for opteesp
12#
13# Builds the test_runner service provider for running in an SEL0 secure partition
14# hosted by OPTEE in the role of SPM. Environment tests are added and CppUnit
15# test cases.
16#-------------------------------------------------------------------------------
17include(${TS_ROOT}/environments/opteesp/env.cmake)
julhal0137e1aea2021-02-09 15:22:20 +000018project(trusted-services LANGUAGES C ASM)
julhal013ec4c322021-02-05 17:30:49 +000019add_executable(env_test)
20target_include_directories(env_test PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
21set(SP_UUID "33c75baf-ac6a-4fe4-8ac7-e9909bee2d17")
22
23
24# Include SP DEV KIT interface
25set(SP_DEV_KIT_INC_DIR ${CMAKE_CURRENT_LIST_DIR})
26list(APPEND CMAKE_MODULE_PATH "${TS_ROOT}/external/Spdevkit")
27find_package(Spdevkit REQUIRED)
28sp_dev_kit_configure_linking(TARGET env_test DEFINES ARM64=1)
29target_link_libraries(env_test PRIVATE ${SP_DEV_KIT_LIBRARIES})
30
31#-------------------------------------------------------------------------------
32# Components that are env_testecific to deployment in the opteesp
33# environment.
34#-------------------------------------------------------------------------------
35add_components(TARGET "env_test"
36 BASE_DIR ${TS_ROOT}
37 COMPONENTS
julhal0137e1aea2021-02-09 15:22:20 +000038 "components/config/loader/sp"
julhal013ec4c322021-02-05 17:30:49 +000039 "components/messaging/ffa/libsp"
40 "components/rpc/ffarpc/endpoint"
julhal0137e1aea2021-02-09 15:22:20 +000041 "components/config/test/sp"
julhal013ec4c322021-02-05 17:30:49 +000042 "environments/opteesp"
43)
44
julhal0137e1aea2021-02-09 15:22:20 +000045#-------------------------------------------------------------------------------
46# Extend with components that are common across all deployments of
47# env_test
48#
49#-------------------------------------------------------------------------------
50include(../env_test.cmake REQUIRED)
51
52#-------------------------------------------------------------------------------
53# Deployment specific source files
54#-------------------------------------------------------------------------------
julhal013ec4c322021-02-05 17:30:49 +000055target_sources(env_test PRIVATE
56 env_test.c
julhal0137e1aea2021-02-09 15:22:20 +000057 env_test_tests.c
julhal013ec4c322021-02-05 17:30:49 +000058)
59
60#-------------------------------------------------------------------------------
61# Use the selected platform to provide drivers needed by the deployment
62#
63#-------------------------------------------------------------------------------
64# temporarily force platform - remove when external builder updated
65set(TS_PLATFORM "arm/fvp/fvp_base_revc-2xaemv8a" CACHE STRING "Overridden" FORCE)
66
67add_platform(TARGET "env_test")
68
julhal013ec4c322021-02-05 17:30:49 +000069if(CMAKE_CROSSCOMPILING)
70 target_link_libraries(env_test PRIVATE stdc++ gcc m)
71endif()
72
73#################################################################
74
75target_compile_definitions(env_test PRIVATE
76 ARM64=1
77)
78
79target_include_directories(env_test PRIVATE
80 ${TS_ROOT}
81 ${TS_ROOT}/components
82 ${TS_ROOT}/deployments/env-test/opteesp
83)
84
85if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
86 target_compile_options(env_test PRIVATE
87 -fdiagnostics-show-option
88 -fpic
89 -gdwarf-2
90 -mstrict-align
91 -O0
92 $<$<COMPILE_LANGUAGE:C>:-std=gnu99>
93 $<$<COMPILE_LANGUAGE:CXX>:-fno-use-cxa-atexit>
94 )
95
96 # Options for GCC that control linking
97 target_link_options(env_test PRIVATE
98 -e __sp_entry
99 -fno-lto
100 -nostdlib
101 -pie
102 -zmax-page-size=4096
103 )
104 # Options directly for LD, these are not understood by GCC
105 target_link_options(env_test PRIVATE
106 -Wl,--as-needed
107 -Wl,--sort-section=alignment
108 # -Wl,--dynamic-list ${CMAKE_CURRENT_LIST_DIR}/dyn_list
109 )
110endif()
111
112compiler_generate_stripped_elf(TARGET env_test NAME "${SP_UUID}.stripped.elf" RES STRIPPED_ELF)
113
114######################################## install
115if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
116 set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
117endif()
118#TODO: api headers
119install(TARGETS env_test
120 PUBLIC_HEADER DESTINATION include
121 RUNTIME DESTINATION bin
122 )
123install(FILES ${STRIPPED_ELF} DESTINATION bin)
124
125set(EXPORT_SP_NAME "env-test")
126set(EXPORT_SP_UUID ${SP_UUID})
127include(${TS_ROOT}/environments/opteesp/ExportSp.cmake)