#------------------------------------------------------------------------------- # Copyright (c) 2023, Arm Limited and Contributors. All rights reserved. # # SPDX-License-Identifier: BSD-3-Clause # #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # The base build file shared between deployments of 'libpsats' for different # environments. libpsats provides an interface for accessing PSA API-s. # Building with each build type results in different postfix for the library. # For details, please refer to deployment.cmake. #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Common API version implemented by all libpsats deployments #------------------------------------------------------------------------------- version_semver_read(FILE "${CMAKE_CURRENT_LIST_DIR}/version.txt" MAJOR _major MINOR _minor PATCH _patch) set_target_properties(psats PROPERTIES VERSION "${_major}.${_minor}.${_patch}") set_target_properties(psats PROPERTIES SOVERSION "${_major}") unset(_major) unset(_minor) unset(_patch) add_library(libpsats::psats ALIAS psats) if (COVERAGE) set(LIBPSATS_BUILD_TYPE "DebugCoverage" CACHE STRING "Build type." FORCE) endif() #------------------------------------------------------------------------------- # Use libts for locating and accessing services. An appropriate version of # libts will be imported for the environment in which service tests are # deployed. #------------------------------------------------------------------------------- include(${TS_ROOT}/deployments/libts/libts-import.cmake) target_link_libraries(psats PUBLIC libts::ts) #------------------------------------------------------------------------------- # Components that are common across all deployments # #------------------------------------------------------------------------------- add_components( TARGET "psats" BASE_DIR ${TS_ROOT} COMPONENTS "environments/${TS_ENV}" "components/common/utils" "components/common/trace" "components/common/libpsats" "components/common/tlv" "components/service/common/include" "components/service/common/client" "components/service/crypto/include" "components/service/crypto/client/psa" "components/service/attestation/include" "components/service/attestation/client/psa" "components/service/attestation/client/provision" "components/service/secure_storage/include" "components/service/secure_storage/frontend/psa/its" "components/service/secure_storage/frontend/psa/ps" "components/service/secure_storage/backend/secure_storage_client" ) #------------------------------------------------------------------------------- # Define public interfaces for library # #------------------------------------------------------------------------------- # Enable exporting interface symbols for library public interface target_compile_definitions(psats PRIVATE EXPORT_PUBLIC_INTERFACE_LIBPSATS EXPORT_PUBLIC_INTERFACE_PSA_CRYPTO EXPORT_PUBLIC_INTERFACE_PSA_ATTEST EXPORT_PUBLIC_INTERFACE_PSA_ITS EXPORT_PUBLIC_INTERFACE_PSA_PS ) #------------------------------------------------------------------------------- # Export the library and the corresponding public interface header files # #------------------------------------------------------------------------------- include(${TS_ROOT}/tools/cmake/common/ExportLibrary.cmake REQUIRED) # Exports library information in preparation for install export_library( TARGET "psats" LIB_NAME "libpsats" PKG_CONFIG_FILE "${CMAKE_CURRENT_LIST_DIR}/libpsatsConfig.cmake.in" ) install(DIRECTORY "${TS_ROOT}/components/service/crypto/include" DIRECTORY "${TS_ROOT}/components/service/attestation/include" DIRECTORY "${TS_ROOT}/components/service/secure_storage/include" DESTINATION "${TS_ENV}" FILES_MATCHING PATTERN "*.h" ) install(FILES "${TS_ROOT}/components/service/common/include/psa/error.h" DESTINATION ${TS_ENV}/include/psa ) install(FILES "${TS_ROOT}/components/common/libpsats/libpsats.h" DESTINATION ${TS_ENV}/include )