blob: 32a81e30fa225b8aa8b2e1c2a70f43d805f93501 [file] [log] [blame]
Julian Hall827d4472021-05-11 11:31:37 +01001#-------------------------------------------------------------------------------
Gyorgy Szing28bca0b2023-02-15 11:17:07 +01002# Copyright (c) 2021-2023, Arm Limited and Contributors. All rights reserved.
Julian Hall827d4472021-05-11 11:31:37 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6# t_cose is a library for signing CBOR tokens using COSE_Sign1
7#-------------------------------------------------------------------------------
8
Julian Hall827d4472021-05-11 11:31:37 +01009set(T_COSE_URL "https://github.com/laurencelundblade/t_cose.git" CACHE STRING "t_cose repository URL")
Julian Hallc74f2432022-01-11 09:43:52 +000010set(T_COSE_REFSPEC "fc3a4b2c7196ff582e8242de8bd4a1bc4eec577f" CACHE STRING "t_cose git refspec")
Gyorgy Szing96669942021-12-08 04:19:50 +010011set(T_COSE_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/t_cose-src" CACHE PATH "t_cose installation directory")
12set(T_COSE_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/t_cose_install" CACHE PATH "t_cose installation directory")
Gyorgy Szing34aaf212022-10-20 07:26:23 +020013set(T_COSE_BUILD_TYPE "Release" CACHE STRING "t_cose build type")
Julian Hall827d4472021-05-11 11:31:37 +010014
Gyorgy Szing96669942021-12-08 04:19:50 +010015set(GIT_OPTIONS
Julian Hall827d4472021-05-11 11:31:37 +010016 GIT_REPOSITORY ${T_COSE_URL}
17 GIT_TAG ${T_COSE_REFSPEC}
Julian Halla628af32022-04-01 10:08:18 +010018 GIT_SHALLOW FALSE
Julian Hall827d4472021-05-11 11:31:37 +010019
20 PATCH_COMMAND git stash
Gyorgy Szing96669942021-12-08 04:19:50 +010021 COMMAND git branch -f bf-patch
Julian Hall827d4472021-05-11 11:31:37 +010022 COMMAND git am ${CMAKE_CURRENT_LIST_DIR}/0001-add-install-definition.patch
Gyorgy Szingd6fcffd2022-03-05 03:04:22 +000023 ${CMAKE_CURRENT_LIST_DIR}/0002-Fix-stop-overriding-C_FLAGS-from-environment.patch
Gyorgy Szing96669942021-12-08 04:19:50 +010024 COMMAND git reset bf-patch
Julian Hall827d4472021-05-11 11:31:37 +010025)
26
Gyorgy Szingd6fcffd2022-03-05 03:04:22 +000027include(${TS_ROOT}/tools/cmake/common/PropertyCopy.cmake)
28
29# Only pass libc settings to t-cose if needed. For environments where the standard
30# library is not overridden, this is not needed.
31if(TARGET stdlib::c)
32 # Save libc settings
33 save_interface_target_properties(TGT stdlib::c PREFIX LIBC)
34 # Translate libc settings to cmake code fragment. Will be inserted into
35 # t_cose-init-cache.cmake.in when LazyFetch configures the file.
36 translate_interface_target_properties(PREFIX LIBC RES _cmake_fragment)
37 unset_saved_properties(LIBC)
38endif()
39
Gyorgy Szing2247d242021-09-03 16:17:25 +020040# Prepare include paths for dependencies that t_codse has on external components
Gyorgy Szingd6fcffd2022-03-05 03:04:22 +000041save_interface_target_properties(TGT qcbor PREFIX QCBOR)
42translate_interface_target_properties(PREFIX QCBOR RES _cmake_fragment1)
43unset_saved_properties(QCBOR)
44string(APPEND _cmake_fragment "\n${_cmake_fragment1}")
45unset(_cmake_fragment1)
46
Gyorgy Szing8ac8a6a2022-07-19 12:24:42 +000047if (NOT DEFINED PSA_CRYPTO_API_INCLUDE)
48 string(CONCAT _msg "Mandatory parameter PSA_CRYPTO_API_INCLUDE is not defined. Please include a component which"
49 " sets this variable or pass -DPSA_CRYPTO_API_INCLUDE=<path> where <path> is the location of"
50 " PSA API headers.")
51 message(FATAL_ERROR ${_msg} )
52endif()
53
Gyorgy Szingd6fcffd2022-03-05 03:04:22 +000054translate_value_as_property(VALUE "${PSA_CRYPTO_API_INCLUDE}"
55 PROPERTY INTERFACE_INCLUDE_DIRECTORIES
56 RES _cmake_fragment1)
57string(APPEND _cmake_fragment "\n${_cmake_fragment1}")
58unset(_cmake_fragment1)
Julian Hall827d4472021-05-11 11:31:37 +010059
Gyorgy Szing96669942021-12-08 04:19:50 +010060include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
61LazyFetch_MakeAvailable(DEP_NAME t_cose
62 FETCH_OPTIONS "${GIT_OPTIONS}"
63 INSTALL_DIR ${T_COSE_INSTALL_DIR}
64 CACHE_FILE "${CMAKE_CURRENT_LIST_DIR}/t_cose-init-cache.cmake.in"
65 SOURCE_DIR "${T_COSE_SOURCE_DIR}"
Julian Hall827d4472021-05-11 11:31:37 +010066 )
Gyorgy Szingd6fcffd2022-03-05 03:04:22 +000067unset(_cmake_fragment)
Julian Hall827d4472021-05-11 11:31:37 +010068
69# Create an imported target to have clean abstraction in the build-system.
70add_library(t_cose STATIC IMPORTED)
Gyorgy Szing96669942021-12-08 04:19:50 +010071target_link_libraries(t_cose INTERFACE qcbor)
72set_property(TARGET t_cose PROPERTY IMPORTED_LOCATION "${T_COSE_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}t_cose${CMAKE_STATIC_LIBRARY_SUFFIX}")
73set_property(TARGET t_cose PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${T_COSE_INSTALL_DIR}/include")
Gyorgy Szing28bca0b2023-02-15 11:17:07 +010074if(TARGET stdlib::c)
75 target_link_libraries(t_cose INTERFACE stdlib::c)
76endif()
Gyorgy Szing96669942021-12-08 04:19:50 +010077set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${T_COSE_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}t_cose${CMAKE_STATIC_LIBRARY_SUFFIX}")