1#-------------------------------------------------------------------------------
2# Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
8add_components(TARGET "crypto"
9	BASE_DIR ${TS_ROOT}
10	COMPONENTS
11		"components/common/mbedtls"
12		"components/common/tlv"
13		"components/rpc/common/interface"
14		"components/rpc/common/endpoint"
15		"components/service/common/include"
16		"components/service/common/client"
17		"components/service/common/serializer/protobuf"
18		"components/service/common/provider"
19		"components/service/crypto/provider"
20		"components/service/crypto/provider/serializer/protobuf"
21		"components/service/crypto/provider/serializer/packed-c"
22		"components/service/crypto/provider/extension/hash"
23		"components/service/crypto/provider/extension/hash/serializer/packed-c"
24		"components/service/crypto/provider/extension/cipher"
25		"components/service/crypto/provider/extension/cipher/serializer/packed-c"
26		"components/service/crypto/provider/extension/key_derivation"
27		"components/service/crypto/provider/extension/key_derivation/serializer/packed-c"
28		"components/service/crypto/provider/extension/mac"
29		"components/service/crypto/provider/extension/mac/serializer/packed-c"
30		"components/service/crypto/provider/extension/aead"
31		"components/service/crypto/provider/extension/aead/serializer/packed-c"
32		"components/service/crypto/factory/full"
33		"components/service/crypto/backend/mbedcrypto"
34		"components/service/crypto/backend/mbedcrypto/mbedtls_fake_x509"
35		"protocols/rpc/common/packed-c"
36		"protocols/service/crypto/protobuf"
37)
38
39#-------------------------------------------------------------------------------
40#  Components used from external projects
41#
42#-------------------------------------------------------------------------------
43
44# Nanopb
45include(${TS_ROOT}/external/nanopb/nanopb.cmake)
46target_link_libraries(crypto PRIVATE nanopb::protobuf-nanopb-static)
47protobuf_generate_all(TGT "crypto" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
48
49# Mbed TLS provides libmbedcrypto
50set(MBEDTLS_CONFIG_FILE "${TS_ROOT}/external/MbedTLS/config/crypto_provider_x509.h"
51	CACHE STRING "Configuration file for Mbed TLS" FORCE)
52include(${TS_ROOT}/external/MbedTLS/MbedTLS.cmake)
53target_link_libraries(crypto PRIVATE MbedTLS::mbedcrypto)
54target_link_libraries(crypto PRIVATE MbedTLS::mbedx509)
55
56# Provide the config path to mbedtls
57target_compile_definitions(crypto
58	PRIVATE
59		MBEDTLS_CONFIG_FILE="${MBEDTLS_CONFIG_FILE}"
60)
61
62#################################################################
63
64target_include_directories(crypto PRIVATE
65	${TS_ROOT}
66	${TS_ROOT}/components
67)
68