blob: 660824bdc7a7d8797bfded712903ea9938ef0afa [file] [log] [blame]
Julian Hall827d4472021-05-11 11:31:37 +01001#-------------------------------------------------------------------------------
2# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6# t_cose is a library for signing CBOR tokens using COSE_Sign1
7#-------------------------------------------------------------------------------
8
Gyorgy Szing2247d242021-09-03 16:17:25 +02009# Determine the number of processes to run while running parallel builds.
10# Pass -DPROCESSOR_COUNT=<n> to cmake to override.
11if(NOT DEFINED PROCESSOR_COUNT)
12 include(ProcessorCount)
13 ProcessorCount(PROCESSOR_COUNT)
14 set(PROCESSOR_COUNT ${PROCESSOR_COUNT} CACHE STRING "Number of cores to use for parallel builds.")
15endif()
16
Julian Hall827d4472021-05-11 11:31:37 +010017# External component details
18set(T_COSE_URL "https://github.com/laurencelundblade/t_cose.git" CACHE STRING "t_cose repository URL")
19set(T_COSE_REFSPEC "master" CACHE STRING "t_cose git refspec")
20set(T_COSE_INSTALL_PATH "${CMAKE_CURRENT_BINARY_DIR}/t_cose_install" CACHE PATH "t_cose installation directory")
21set(T_COSE_PACKAGE_PATH "${T_COSE_INSTALL_PATH}/libt_cose/cmake" CACHE PATH "t_cose CMake package directory")
22
23include(FetchContent)
24
25# Checking git
26find_program(GIT_COMMAND "git")
27if (NOT GIT_COMMAND)
28 message(FATAL_ERROR "Please install git")
29endif()
30
31# Fetching t_cose
32FetchContent_Declare(
33 t_cose
34 GIT_REPOSITORY ${T_COSE_URL}
35 GIT_TAG ${T_COSE_REFSPEC}
36 GIT_SHALLOW TRUE
37
38 PATCH_COMMAND git stash
39 COMMAND git am ${CMAKE_CURRENT_LIST_DIR}/0001-add-install-definition.patch
Julian Hallc6350942021-07-21 12:08:09 +010040 COMMAND git apply ${CMAKE_CURRENT_LIST_DIR}/0002-add-tls3_0_0-compatibility.patch
Julian Hall827d4472021-05-11 11:31:37 +010041 COMMAND git reset HEAD~1
42
43)
44
45# FetchContent_GetProperties exports t_cose_SOURCE_DIR and t_cose_BINARY_DIR variables
46FetchContent_GetProperties(t_cose)
47if(NOT t_cose_POPULATED)
48 message(STATUS "Fetching t_cose")
49 FetchContent_Populate(t_cose)
50endif()
51
Gyorgy Szing2247d242021-09-03 16:17:25 +020052# Prepare include paths for dependencies that t_codse has on external components
Julian Hall827d4472021-05-11 11:31:37 +010053get_target_property(_qcbor_inc qcbor INTERFACE_INCLUDE_DIRECTORIES)
54set(_ext_inc_paths
55 ${_qcbor_inc}
56 ${PSA_CRYPTO_API_INCLUDE})
57
Andrew Beggs97a00d42021-06-15 15:45:46 +000058if (NOT TCOSE_EXTERNAL_INCLUDE_PATHS STREQUAL "")
59 list(APPEND _ext_inc_paths "${TCOSE_EXTERNAL_INCLUDE_PATHS}")
60 unset(TCOSE_EXTERNAL_INCLUDE_PATHS)
61endif()
62
Julian Hall827d4472021-05-11 11:31:37 +010063string(REPLACE ";" "\\;" _ext_inc_paths "${_ext_inc_paths}")
64
65# Configure the t_cose library
66execute_process(COMMAND
67${CMAKE_COMMAND}
68 -DCMAKE_TOOLCHAIN_FILE=${TS_EXTERNAL_LIB_TOOLCHAIN_FILE}
69 -Dthirdparty_inc=${_ext_inc_paths}
70 -DCMAKE_INSTALL_PREFIX=${T_COSE_INSTALL_PATH}
71 -DMBEDTLS=On
72 -GUnix\ Makefiles
73 ${t_cose_SOURCE_DIR}
74WORKING_DIRECTORY
75 ${t_cose_BINARY_DIR}
76)
77
78# Build the library
79execute_process(COMMAND
Gyorgy Szing2247d242021-09-03 16:17:25 +020080 ${CMAKE_COMMAND} --build ${t_cose_BINARY_DIR} --parallel ${PROCESSOR_COUNT} --target install
Julian Hall827d4472021-05-11 11:31:37 +010081 RESULT_VARIABLE _exec_error
82 )
83if (_exec_error)
84 message(FATAL_ERROR "Build step of t_cose failed with ${_exec_error}.")
85endif()
86
87# Create an imported target to have clean abstraction in the build-system.
88add_library(t_cose STATIC IMPORTED)
89set_property(TARGET t_cose PROPERTY IMPORTED_LOCATION "${T_COSE_INSTALL_PATH}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}t_cose${CMAKE_STATIC_LIBRARY_SUFFIX}")
90set_property(TARGET t_cose PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${T_COSE_INSTALL_PATH}/include")