1#-------------------------------------------------------------------------------
2# Copyright (c) 2020-2021, Arm Limited. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
8cmake_minimum_required(VERSION 3.21)
9
10project("CC312 Runtime Library" LANGUAGES C ASM)
11
12set(CC312_LIB_TARGET            ${CC312_LIB_PREFIX}cc312)
13set(CC312_PAL_TARGET            ${CC312_LIB_PREFIX}cc312_pal)
14set(CC312_CDMPU_TARGET          ${CC312_LIB_PREFIX}cc312_cdmpu)
15set(CC312_MBEDTLS_API_TARGET    ${CC312_LIB_PREFIX}cc312_mbedtls_api)
16set(CC312_PSA_DRIVER_API_TARGET ${CC312_LIB_PREFIX}cc312_psa_driver_api)
17
18# Add library targets for this project
19add_library(${CC312_LIB_TARGET} STATIC EXCLUDE_FROM_ALL)
20add_library(${CC312_PAL_TARGET} STATIC EXCLUDE_FROM_ALL)
21add_library(${CC312_CDMPU_TARGET} INTERFACE)
22
23# Library interface components
24add_library(${CC312_MBEDTLS_API_TARGET} STATIC EXCLUDE_FROM_ALL)
25add_library(${CC312_PSA_DRIVER_API_TARGET} STATIC EXCLUDE_FROM_ALL)
26
27add_subdirectory(codesafe)
28add_subdirectory(host)
29add_subdirectory(shared)
30
31#  Platform depedency must be defined at this point scope
32if (NOT TARGET ${CC312_PLATFORM_DEPENDENCY})
33  message(ERROR "CC312_PLATFORM_DEPENDENCY target is not available for CC-312")
34endif()
35
36########################## LIB #################################################
37
38target_compile_definitions(${CC312_LIB_TARGET}
39    PRIVATE
40        DLLI_MAX_BUFF_SIZE=0x10000
41        CC_MNG_MIN_BACKUP_SIZE_IN_BYTES=512
42        CC_SUPPORT_PKA_64_16
43    INTERFACE
44        USE_MBEDTLS_CRYPTOCELL
45        $<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:CC_PAL_MAX_LOG_LEVEL=3>
46    PUBLIC
47        CC_IOT
48)
49target_link_libraries(${CC312_LIB_TARGET}
50    PRIVATE
51        ${CC312_PAL_TARGET}
52        ${CC312_LIB_PREFIX}mbedcrypto
53        ${CC312_PLATFORM_DEPENDENCY}
54    INTERFACE
55        ${CC312_MBEDTLS_API_TARGET}
56)
57
58########################## PAL #################################################
59
60target_compile_definitions(${CC312_PAL_TARGET}
61    PUBLIC
62        CC_IOT
63    INTERFACE
64        $<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:CC_PAL_MAX_LOG_LEVEL=3>
65)
66
67target_link_libraries(${CC312_PAL_TARGET}
68    PRIVATE
69        ${CC312_PLATFORM_DEPENDENCY}
70)
71
72########################## CDMPU ###############################################
73
74target_link_libraries(${CC312_CDMPU_TARGET}
75    INTERFACE
76        ${CC312_PAL_TARGET}
77)
78
79target_compile_definitions(${CC312_CDMPU_TARGET}
80    INTERFACE
81        DLLI_MAX_BUFF_SIZE=0x10000
82        USE_MBEDTLS_CRYPTOCELL
83        CC_MNG_MIN_BACKUP_SIZE_IN_BYTES=512
84        CC_IOT
85        CC_SUPPORT_PKA_64_16
86)
87
88########################## DRIVER INTERFACE ####################################
89
90target_compile_definitions(${CC312_PSA_DRIVER_API_TARGET}
91    PUBLIC
92        MBEDTLS_PSA_CRYPTO_DRIVERS
93        PSA_CRYPTO_DRIVER_CC3XX
94)
95
96target_link_libraries(${CC312_PSA_DRIVER_API_TARGET}
97    PUBLIC
98        ${CC312_LIB_PREFIX}mbedcrypto
99    INTERFACE
100        ${CC312_LIB_TARGET}
101    PRIVATE
102        ${CC312_PLATFORM_DEPENDENCY}
103)
104
105target_link_libraries(${CC312_MBEDTLS_API_TARGET}
106    PUBLIC
107        ${CC312_LIB_PREFIX}mbedcrypto
108    INTERFACE
109        ${CC312_LIB_TARGET}
110    PRIVATE
111        ${CC312_PLATFORM_DEPENDENCY}
112)
113