blob: 32a81e30fa225b8aa8b2e1c2a70f43d805f93501 [file] [log] [blame]
#-------------------------------------------------------------------------------
# Copyright (c) 2021-2023, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# t_cose is a library for signing CBOR tokens using COSE_Sign1
#-------------------------------------------------------------------------------
set(T_COSE_URL "https://github.com/laurencelundblade/t_cose.git" CACHE STRING "t_cose repository URL")
set(T_COSE_REFSPEC "fc3a4b2c7196ff582e8242de8bd4a1bc4eec577f" CACHE STRING "t_cose git refspec")
set(T_COSE_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/t_cose-src" CACHE PATH "t_cose installation directory")
set(T_COSE_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/t_cose_install" CACHE PATH "t_cose installation directory")
set(T_COSE_BUILD_TYPE "Release" CACHE STRING "t_cose build type")
set(GIT_OPTIONS
GIT_REPOSITORY ${T_COSE_URL}
GIT_TAG ${T_COSE_REFSPEC}
GIT_SHALLOW FALSE
PATCH_COMMAND git stash
COMMAND git branch -f bf-patch
COMMAND git am ${CMAKE_CURRENT_LIST_DIR}/0001-add-install-definition.patch
${CMAKE_CURRENT_LIST_DIR}/0002-Fix-stop-overriding-C_FLAGS-from-environment.patch
COMMAND git reset bf-patch
)
include(${TS_ROOT}/tools/cmake/common/PropertyCopy.cmake)
# Only pass libc settings to t-cose if needed. For environments where the standard
# library is not overridden, this is not needed.
if(TARGET stdlib::c)
# Save libc settings
save_interface_target_properties(TGT stdlib::c PREFIX LIBC)
# Translate libc settings to cmake code fragment. Will be inserted into
# t_cose-init-cache.cmake.in when LazyFetch configures the file.
translate_interface_target_properties(PREFIX LIBC RES _cmake_fragment)
unset_saved_properties(LIBC)
endif()
# Prepare include paths for dependencies that t_codse has on external components
save_interface_target_properties(TGT qcbor PREFIX QCBOR)
translate_interface_target_properties(PREFIX QCBOR RES _cmake_fragment1)
unset_saved_properties(QCBOR)
string(APPEND _cmake_fragment "\n${_cmake_fragment1}")
unset(_cmake_fragment1)
if (NOT DEFINED PSA_CRYPTO_API_INCLUDE)
string(CONCAT _msg "Mandatory parameter PSA_CRYPTO_API_INCLUDE is not defined. Please include a component which"
" sets this variable or pass -DPSA_CRYPTO_API_INCLUDE=<path> where <path> is the location of"
" PSA API headers.")
message(FATAL_ERROR ${_msg} )
endif()
translate_value_as_property(VALUE "${PSA_CRYPTO_API_INCLUDE}"
PROPERTY INTERFACE_INCLUDE_DIRECTORIES
RES _cmake_fragment1)
string(APPEND _cmake_fragment "\n${_cmake_fragment1}")
unset(_cmake_fragment1)
include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
LazyFetch_MakeAvailable(DEP_NAME t_cose
FETCH_OPTIONS "${GIT_OPTIONS}"
INSTALL_DIR ${T_COSE_INSTALL_DIR}
CACHE_FILE "${CMAKE_CURRENT_LIST_DIR}/t_cose-init-cache.cmake.in"
SOURCE_DIR "${T_COSE_SOURCE_DIR}"
)
unset(_cmake_fragment)
# Create an imported target to have clean abstraction in the build-system.
add_library(t_cose STATIC IMPORTED)
target_link_libraries(t_cose INTERFACE qcbor)
set_property(TARGET t_cose PROPERTY IMPORTED_LOCATION "${T_COSE_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}t_cose${CMAKE_STATIC_LIBRARY_SUFFIX}")
set_property(TARGET t_cose PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${T_COSE_INSTALL_DIR}/include")
if(TARGET stdlib::c)
target_link_libraries(t_cose INTERFACE stdlib::c)
endif()
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${T_COSE_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}t_cose${CMAKE_STATIC_LIBRARY_SUFFIX}")