1#-------------------------------------------------------------------------------
2# Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
8#-------------------------------------------------------------------------------
9#  The base build file shared between deployments of 'libpsats' for different
10#  environments.  libpsats provides an interface for accessing PSA API-s.
11#  Building with each build type results in different postfix for the library.
12#  For details, please refer to deployment.cmake.
13#-------------------------------------------------------------------------------
14
15#-------------------------------------------------------------------------------
16#  Common API version implemented by all libpsats deployments
17#-------------------------------------------------------------------------------
18version_semver_read(FILE "${CMAKE_CURRENT_LIST_DIR}/version.txt"
19					MAJOR _major MINOR _minor PATCH _patch)
20set_target_properties(psats PROPERTIES VERSION "${_major}.${_minor}.${_patch}")
21set_target_properties(psats PROPERTIES SOVERSION "${_major}")
22unset(_major)
23unset(_minor)
24unset(_patch)
25
26add_library(libpsats::psats ALIAS psats)
27
28if (COVERAGE)
29	set(LIBPSATS_BUILD_TYPE "DebugCoverage" CACHE STRING "Build type." FORCE)
30endif()
31
32#-------------------------------------------------------------------------------
33#  Use libts for locating and accessing services. An appropriate version of
34#  libts will be imported for the environment in which service tests are
35#  deployed.
36#-------------------------------------------------------------------------------
37include(${TS_ROOT}/deployments/libts/libts-import.cmake)
38target_link_libraries(psats PUBLIC libts::ts)
39
40#-------------------------------------------------------------------------------
41#  Components that are common across all deployments
42#
43#-------------------------------------------------------------------------------
44
45add_components(
46	TARGET "psats"
47	BASE_DIR ${TS_ROOT}
48	COMPONENTS
49		"environments/${TS_ENV}"
50		"components/common/utils"
51		"components/common/trace"
52		"components/common/libpsats"
53		"components/common/tlv"
54		"components/service/common/include"
55		"components/service/common/client"
56		"components/service/crypto/include"
57		"components/service/crypto/client/psa"
58		"components/service/attestation/include"
59		"components/service/attestation/client/psa"
60		"components/service/attestation/client/provision"
61		"components/service/secure_storage/include"
62		"components/service/secure_storage/frontend/psa/its"
63		"components/service/secure_storage/frontend/psa/ps"
64		"components/service/secure_storage/backend/secure_storage_client"
65)
66
67#-------------------------------------------------------------------------------
68#  Define public interfaces for library
69#
70#-------------------------------------------------------------------------------
71
72# Enable exporting interface symbols for library public interface
73target_compile_definitions(psats PRIVATE
74	EXPORT_PUBLIC_INTERFACE_LIBPSATS
75	EXPORT_PUBLIC_INTERFACE_PSA_CRYPTO
76	EXPORT_PUBLIC_INTERFACE_PSA_ATTEST
77	EXPORT_PUBLIC_INTERFACE_PSA_ITS
78	EXPORT_PUBLIC_INTERFACE_PSA_PS
79)
80
81#-------------------------------------------------------------------------------
82#  Export the library and the corresponding public interface header files
83#
84#-------------------------------------------------------------------------------
85include(${TS_ROOT}/tools/cmake/common/ExportLibrary.cmake REQUIRED)
86
87# Exports library information in preparation for install
88export_library(
89	TARGET "psats"
90	LIB_NAME "libpsats"
91	PKG_CONFIG_FILE "${CMAKE_CURRENT_LIST_DIR}/libpsatsConfig.cmake.in"
92)
93
94install(DIRECTORY "${TS_ROOT}/components/service/crypto/include"
95		DIRECTORY "${TS_ROOT}/components/service/attestation/include"
96		DIRECTORY "${TS_ROOT}/components/service/secure_storage/include"
97		DESTINATION "${TS_ENV}"
98		FILES_MATCHING PATTERN "*.h"
99)
100
101install(FILES "${TS_ROOT}/components/service/common/include/psa/error.h"
102		DESTINATION ${TS_ENV}/include/psa
103)
104
105install(FILES "${TS_ROOT}/components/common/libpsats/libpsats.h"
106		DESTINATION ${TS_ENV}/include
107)
108