blob: 351914ace9f638ebca08b7513e88438efcb4c855 [file] [log] [blame]
Julian Hallcaa4af82021-05-19 12:02:36 +01001#-------------------------------------------------------------------------------
Imre Kiseeee9642021-12-17 13:59:46 +01002# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
Julian Hallcaa4af82021-05-19 12:02:36 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7cmake_minimum_required(VERSION 3.16)
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.")
Julian Hallcaa4af82021-05-19 12:02:36 +010011include(../../deployment.cmake REQUIRED)
12
13#-------------------------------------------------------------------------------
14# The CMakeLists.txt for building the attestation deployment for opteesp
15#
16# Builds the attestation service provider for running in an SEL0 secure partition
17# hosted by OPTEE in the role of SPM.
18#-------------------------------------------------------------------------------
19include(${TS_ROOT}/environments/opteesp/env.cmake)
20project(trusted-services LANGUAGES C ASM)
21add_executable(attestation)
22target_include_directories(attestation PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
23set(SP_UUID "a1baf155-8876-4695-8f7c-54955e8db974")
Imre Kiseeee9642021-12-17 13:59:46 +010024set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
Imre Kis2ccd8e82021-10-08 11:21:14 +020025set(TRACE_PREFIX "ATT" CACHE STRING "Trace prefix")
Julian Hallcaa4af82021-05-19 12:02:36 +010026
Julian Hallcaa4af82021-05-19 12:02:36 +010027#-------------------------------------------------------------------------------
28# Default deployment specific configuration
29#
30#-------------------------------------------------------------------------------
31set(TS_NO_FLOAT_HW ON)
32
33#-------------------------------------------------------------------------------
34# Components that are specific to deployment in the opteesp environment.
35#
36#-------------------------------------------------------------------------------
37add_components(TARGET "attestation"
38 BASE_DIR ${TS_ROOT}
39 COMPONENTS
Balint Dobszay286ff752022-03-04 15:57:19 +010040 "components/common/fdt"
Julian Hallcaa4af82021-05-19 12:02:36 +010041 "components/common/tlv"
Imre Kis2ccd8e82021-10-08 11:21:14 +020042 "components/common/trace"
43 "components/common/utils"
Julian Hallcaa4af82021-05-19 12:02:36 +010044 "components/common/endian"
Julian Hallc52807c2021-08-13 15:15:18 +010045 "components/common/uuid"
Julian Hallcaa4af82021-05-19 12:02:36 +010046 "components/config/ramstore"
47 "components/config/loader/sp"
48 "components/messaging/ffa/libsp"
49 "components/rpc/ffarpc/endpoint"
50 "components/rpc/ffarpc/caller/sp"
51 "components/rpc/common/caller"
52 "components/rpc/common/interface"
53 "components/service/common/include"
Julian Hallc52807c2021-08-13 15:15:18 +010054 "components/service/common/client"
Julian Hallcaa4af82021-05-19 12:02:36 +010055 "components/service/common/provider"
Julian Hallc52807c2021-08-13 15:15:18 +010056 "components/service/locator"
57 "components/service/locator/interface"
58 "components/service/locator/sp"
59 "components/service/locator/sp/ffa"
Julian Hallcaa4af82021-05-19 12:02:36 +010060 "components/service/attestation/include"
61 "components/service/attestation/claims"
62 "components/service/attestation/claims/sources/boot_seed_generator"
63 "components/service/attestation/claims/sources/null_lifecycle"
64 "components/service/attestation/claims/sources/instance_id"
Julian Hallb7db5802021-07-26 16:20:40 +010065 "components/service/attestation/claims/sources/implementation_id"
Julian Hallcaa4af82021-05-19 12:02:36 +010066 "components/service/attestation/claims/sources/event_log"
67 "components/service/attestation/claims/sources/event_log/mock"
Julian Hall644b57a2021-06-30 08:45:19 +010068 "components/service/attestation/reporter/local"
69 "components/service/attestation/reporter/eat"
70 "components/service/attestation/key_mngr/local"
Julian Hallcaa4af82021-05-19 12:02:36 +010071 "components/service/attestation/provider"
72 "components/service/attestation/provider/serializer/packed-c"
Julian Hallc52807c2021-08-13 15:15:18 +010073 "components/service/crypto/include"
74 "components/service/crypto/client/psa"
Julian Hallcaa4af82021-05-19 12:02:36 +010075 "protocols/rpc/common/packed-c"
76 "environments/opteesp"
77)
78
79target_sources(attestation PRIVATE
80 attestation_sp.c
81)
82
83#-------------------------------------------------------------------------------
Gyorgy Szinga365a042021-12-02 01:48:27 +010084# Set target platform to provide drivers needed by the deployment
Julian Hallcaa4af82021-05-19 12:02:36 +010085#
86#-------------------------------------------------------------------------------
87add_platform(TARGET "attestation")
88
89#-------------------------------------------------------------------------------
90# Components used from external projects
91#
92#-------------------------------------------------------------------------------
Julian Hallcaa4af82021-05-19 12:02:36 +010093
Imre Kis23583e32021-10-22 14:54:51 +020094# Get libc include dir
95get_property(LIBC_INCLUDE_PATH TARGET c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
96
Julian Hallcaa4af82021-05-19 12:02:36 +010097# Qcbor
Imre Kis23583e32021-10-22 14:54:51 +020098set (QCBOR_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
Julian Hallcaa4af82021-05-19 12:02:36 +010099include(${TS_ROOT}/external/qcbor/qcbor.cmake)
100target_link_libraries(attestation PRIVATE qcbor)
101
102# t_cose
Imre Kis23583e32021-10-22 14:54:51 +0200103set (TCOSE_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
Julian Hallcaa4af82021-05-19 12:02:36 +0100104include(${TS_ROOT}/external/t_cose/t_cose.cmake)
105target_link_libraries(attestation PRIVATE t_cose)
106
Julian Hallcaa4af82021-05-19 12:02:36 +0100107#################################################################
108
109target_compile_definitions(attestation PRIVATE
110 ARM64=1
111)
112
113target_include_directories(attestation PRIVATE
114 ${TS_ROOT}
115 ${TS_ROOT}/components
116 ${TS_ROOT}/deployments/attestation/opteesp
117)
118
119if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
120 target_compile_options(attestation PRIVATE
121 -fdiagnostics-show-option
Julian Hallcaa4af82021-05-19 12:02:36 +0100122 -gdwarf-2
123 -mstrict-align
124 -O0
Andrew Beggs97a00d42021-06-15 15:45:46 +0000125 -std=c99
Julian Hallcaa4af82021-05-19 12:02:36 +0100126 )
127
128 # Options for GCC that control linking
129 target_link_options(attestation PRIVATE
Julian Hallcaa4af82021-05-19 12:02:36 +0100130 -zmax-page-size=4096
131 )
132 # Options directly for LD, these are not understood by GCC
133 target_link_options(attestation PRIVATE
134 -Wl,--as-needed
135 -Wl,--sort-section=alignment
136 # -Wl,--dynamic-list ${CMAKE_CURRENT_LIST_DIR}/dyn_list
137 )
138endif()
139
140compiler_generate_stripped_elf(TARGET attestation NAME "${SP_UUID}.stripped.elf" RES STRIPPED_ELF)
141
142######################################## install
143if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
144 set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
145endif()
146#TODO: api headers
147
148install(TARGETS attestation
149 PUBLIC_HEADER DESTINATION ${TS_ENV}/include
150 RUNTIME DESTINATION ${TS_ENV}/bin
151 )
152install(FILES ${STRIPPED_ELF} DESTINATION ${TS_ENV}/bin)
153
154get_property(_PROTO_FILES TARGET attestation PROPERTY PROTOBUF_FILES)
155install(FILES ${_PROTO_FILES} DESTINATION ${TS_ENV}/lib/protobuf)
156
157
158set(EXPORT_SP_NAME "attestation")
159set(EXPORT_SP_UUID ${SP_UUID})
160include(${TS_ROOT}/environments/opteesp/ExportSp.cmake)