blob: a690c0c7524e596da76a2b015d7d17dae31f0bb2 [file] [log] [blame]
Gyorgy Szing49091802020-11-24 00:33:09 +01001#-------------------------------------------------------------------------------
Gyorgy Szing28bca0b2023-02-15 11:17:07 +01002# Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved.
Gyorgy Szing49091802020-11-24 00:33:09 +01003#
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 Szing49091802020-11-24 00:33:09 +01008include(../../deployment.cmake REQUIRED)
9
10#-------------------------------------------------------------------------------
11# The CMakeLists.txt for building the libsp deployment for opteesp
12#
Gyorgy Szingb9596cd2022-03-03 01:10:23 +010013# Used for building the libsp library that provides FFA related functions
Gyorgy Szing49091802020-11-24 00:33:09 +010014# for applications deployed in a secure partition.
15#-------------------------------------------------------------------------------
16include(${TS_ROOT}/environments/opteesp/env.cmake)
17
Gyorgy Szing0afc4912022-07-20 06:26:25 +000018version_semver_read(FILE "${CMAKE_CURRENT_LIST_DIR}/version.txt"
19 MAJOR _major MINOR _minor PATCH _patch)
20set(LIBSP_VERSION "${_major}.${_minor}.${_patch}")
Gyorgy Szing49091802020-11-24 00:33:09 +010021project(trusted-services
22 VERSION
23 ${LIBSP_VERSION}
24 LANGUAGES
25 C ASM
26 )
Gyorgy Szing0afc4912022-07-20 06:26:25 +000027unset(_major)
28unset(_minor)
29unset(_patch)
Gyorgy Szing49091802020-11-24 00:33:09 +010030
31add_library(sp STATIC)
32
Gyorgy Szingb9596cd2022-03-03 01:10:23 +010033add_components(TARGET sp
Gyorgy Szing49091802020-11-24 00:33:09 +010034 BASE_DIR ${TS_ROOT}
35 COMPONENTS
36 components/messaging/ffa/libsp
37 components/common/utils
38)
39
Gyorgy Szingb9596cd2022-03-03 01:10:23 +010040# Include newlib into the build, but do no add SP executable specific files to libsp.
41# Use a dummy target which will never be built.
Gyorgy Szing63bf16a2022-10-20 08:55:52 +000042function(get_newlib_compile_flags)
43 # Environment specific files require this variable to be set.
44 # Set it to a dummy value as we are not going to build these anyways.
45 # The namespace of the function will ensure globas setting is not affected.
Jelle Sels4960c412023-02-01 09:43:24 +010046 set(SP_FFA_UUID_CANON "00000000-0000-0000-0000-000000000000")
Gyorgy Szing63bf16a2022-10-20 08:55:52 +000047 set(SP_HEAP_SIZE 4096)
48 add_library(dummy EXCLUDE_FROM_ALL)
49 add_components(TARGET dummy
50 BASE_DIR ${TS_ROOT}
51 COMPONENTS
52 environments/opteesp
53 )
54endfunction()
55
56get_newlib_compile_flags()
Gyorgy Szingb9596cd2022-03-03 01:10:23 +010057
58# Get libc specific settings from newlib.
Gyorgy Szing28bca0b2023-02-15 11:17:07 +010059target_link_libraries(sp PUBLIC stdlib::c)
Gyorgy Szingb9596cd2022-03-03 01:10:23 +010060
61target_compile_definitions(sp PRIVATE
Gyorgy Szing49091802020-11-24 00:33:09 +010062 ARM64=1
63)
64
65if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
Gyorgy Szingb9596cd2022-03-03 01:10:23 +010066 target_compile_options(sp PRIVATE
Andrew Beggs97a00d42021-06-15 15:45:46 +000067 -std=c99
Gyorgy Szing49091802020-11-24 00:33:09 +010068 )
69endif()
70
71######################################## install
72if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
73 set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
74endif()
75
76install(
77 TARGETS
78 sp
79 EXPORT
80 LibspTargets
81 ARCHIVE DESTINATION
Gyorgy Szingc31afbf2021-02-12 01:51:55 +010082 ${TS_ENV}/lib
Gyorgy Szing49091802020-11-24 00:33:09 +010083 PUBLIC_HEADER DESTINATION
Gyorgy Szingc31afbf2021-02-12 01:51:55 +010084 ${TS_ENV}/include
Gyorgy Szing49091802020-11-24 00:33:09 +010085 COMPONENT
86 libsp
87)
88
Gyorgy Szing49091802020-11-24 00:33:09 +010089### Create a config file package.
Gyorgy Szingc31afbf2021-02-12 01:51:55 +010090set(ConfigPackageLocation ${TS_ENV}/lib/cmake/libsp)
Gyorgy Szing49091802020-11-24 00:33:09 +010091
92include(CMakePackageConfigHelpers)
93write_basic_package_version_file(
94 "${CMAKE_CURRENT_BINARY_DIR}/LibspConfigVersion.cmake"
Gyorgy Szing0afc4912022-07-20 06:26:25 +000095 VERSION "${LIBSP_VERSION}"
Gyorgy Szing49091802020-11-24 00:33:09 +010096 COMPATIBILITY SameMajorVersion
97)
98
99# Create targets file.
100export(
101 EXPORT
102 LibspTargets
103 FILE
104 "${CMAKE_CURRENT_BINARY_DIR}/LibspTargets.cmake"
105 NAMESPACE
106 libsp::
107)
108
109# Finalize config file.
110configure_package_config_file(
111 LibspConfig.cmake.in
112 "${CMAKE_CURRENT_BINARY_DIR}/LibspConfig.cmake"
113 PATH_VARS
114
115 INSTALL_DESTINATION
116 ${ConfigPackageLocation}
117)
118
119install(
120 EXPORT
121 LibspTargets
122 FILE
123 LibspTargets.cmake
124 NAMESPACE
125 libsp::
126 DESTINATION
127 ${ConfigPackageLocation}
128 COMPONENT
129 libsp
130)
131
132# install config and version files
133install(
134 FILES
135 "${CMAKE_CURRENT_BINARY_DIR}/LibspConfig.cmake"
136 "${CMAKE_CURRENT_BINARY_DIR}/LibspConfigVersion.cmake"
Gyorgy Szing49091802020-11-24 00:33:09 +0100137 DESTINATION
138 ${ConfigPackageLocation}
139 COMPONENT
140 libsp
141)