Build: Create a dedicated target for the interface of CC-312 stack
This patch introduces a dedicated target for the interface
APIs to help modularize the CC-312 stack build process.
Signed-off-by: Antonio de Angelis <antonio.deangelis@arm.com>
Change-Id: Ia2074e8b5e544f7ef82767af520bbf9698edf27d
diff --git a/bl2/CMakeLists.txt b/bl2/CMakeLists.txt
index f5d3bb9..93884e7 100644
--- a/bl2/CMakeLists.txt
+++ b/bl2/CMakeLists.txt
@@ -70,7 +70,6 @@
target_compile_definitions(bl2_mbedcrypto_config
INTERFACE
- BUILD_PSA_DRIVER_API=False
$<$<STREQUAL:${MCUBOOT_SIGNATURE_TYPE},RSA>:MCUBOOT_SIGN_RSA>
$<$<STREQUAL:${MCUBOOT_SIGNATURE_TYPE},RSA>:MCUBOOT_SIGN_RSA_LEN=${MCUBOOT_SIGNATURE_KEY_LEN}>
MBEDTLS_CONFIG_FILE="${MCUBOOT_MBEDCRYPTO_CONFIG_FILEPATH}"
diff --git a/lib/ext/cryptocell-312-runtime/CMakeLists.txt b/lib/ext/cryptocell-312-runtime/CMakeLists.txt
index 7c4f412..0e14f31 100644
--- a/lib/ext/cryptocell-312-runtime/CMakeLists.txt
+++ b/lib/ext/cryptocell-312-runtime/CMakeLists.txt
@@ -12,33 +12,20 @@
cmake_policy(SET CMP0076 NEW)
cmake_policy(SET CMP0079 NEW)
-if (NOT DEFINED CC312_LIB_TARGET)
- set(CC312_LIB_TARGET cc312)
-endif()
-if (NOT DEFINED CC312_PAL_TARGET)
- set(CC312_PAL_TARGET cc312_pal)
-endif()
-if (NOT DEFINED CC312_CDMPU_TARGET)
- set(CC312_CDMPU_TARGET cc312_cdmpu)
-endif()
+set(CC312_LIB_TARGET ${CC312_LIB_PREFIX}cc312)
+set(CC312_PAL_TARGET ${CC312_LIB_PREFIX}cc312_pal)
+set(CC312_CDMPU_TARGET ${CC312_LIB_PREFIX}cc312_cdmpu)
+set(CC312_MBEDTLS_API_TARGET ${CC312_LIB_PREFIX}cc312_mbedtls_api)
+set(CC312_PSA_DRIVER_API_TARGET ${CC312_LIB_PREFIX}cc312_psa_driver_api)
-# Controls whether to build the PSA Crypto Unified Driver interface
-if (NOT DEFINED BUILD_PSA_DRIVER_API)
- set(BUILD_PSA_DRIVER_API True)
-endif()
-message(STATUS
- "${CC312_LIB_TARGET} has BUILD_PSA_DRIVER_API: ${BUILD_PSA_DRIVER_API}")
+# Add library targets for this project
+add_library(${CC312_LIB_TARGET} STATIC EXCLUDE_FROM_ALL)
+add_library(${CC312_PAL_TARGET} STATIC EXCLUDE_FROM_ALL)
+add_library(${CC312_CDMPU_TARGET} INTERFACE)
-add_library(${CC312_LIB_TARGET} STATIC)
-# The extra libraries don't change much, so if we've already got one just ignore
-# it. it's still possible to create multiple targets by altering the name
-# variable.
-if(NOT TARGET ${CC312_PAL_TARGET})
- add_library(${CC312_PAL_TARGET} INTERFACE)
-endif()
-if(NOT TARGET ${CC312_CDMPU_TARGET})
- add_library(${CC312_CDMPU_TARGET} INTERFACE)
-endif()
+# Library interface components
+add_library(${CC312_MBEDTLS_API_TARGET} STATIC EXCLUDE_FROM_ALL)
+add_library(${CC312_PSA_DRIVER_API_TARGET} STATIC EXCLUDE_FROM_ALL)
add_subdirectory(codesafe)
add_subdirectory(host)
@@ -48,28 +35,36 @@
target_compile_definitions(${CC312_LIB_TARGET}
PRIVATE
- $<IF:$<BOOL:${BUILD_PSA_DRIVER_API}>,BUILD_PSA_DRIVER_API=True,BUILD_PSA_DRIVER_API=False>
DLLI_MAX_BUFF_SIZE=0x10000
- USE_MBEDTLS_CRYPTOCELL
CC_MNG_MIN_BACKUP_SIZE_IN_BYTES=512
+ CC_SUPPORT_PKA_64_16
+ INTERFACE
+ USE_MBEDTLS_CRYPTOCELL
$<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:CC_PAL_MAX_LOG_LEVEL=3>
PUBLIC
CC_IOT
- CC_SUPPORT_PKA_64_16
)
target_link_libraries(${CC312_LIB_TARGET}
PRIVATE
${CC312_PAL_TARGET}
+ ${CC312_LIB_PREFIX}mbedcrypto
+ platform_s
+ INTERFACE
+ ${CC312_MBEDTLS_API_TARGET}
)
########################## PAL #################################################
target_compile_definitions(${CC312_PAL_TARGET}
- INTERFACE
- CC_TRNG_MODE=0
- $<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:CC_PAL_MAX_LOG_LEVEL=3>
+ PUBLIC
CC_IOT
- CC_SUPPORT_PKA_64_16
+ INTERFACE
+ $<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:CC_PAL_MAX_LOG_LEVEL=3>
+)
+
+target_link_libraries(${CC312_PAL_TARGET}
+ PRIVATE
+ platform_s
)
########################## CDMPU ###############################################
@@ -87,3 +82,30 @@
CC_IOT
CC_SUPPORT_PKA_64_16
)
+
+########################## DRIVER INTERFACE ####################################
+
+
+target_compile_definitions(${CC312_PSA_DRIVER_API_TARGET}
+ PUBLIC
+ MBEDTLS_PSA_CRYPTO_DRIVERS
+ PSA_CRYPTO_DRIVER_CC3XX
+)
+
+target_link_libraries(${CC312_PSA_DRIVER_API_TARGET}
+ PUBLIC
+ ${CC312_LIB_PREFIX}mbedcrypto
+ INTERFACE
+ ${CC312_LIB_TARGET}
+ PRIVATE
+ platform_s
+)
+
+target_link_libraries(${CC312_MBEDTLS_API_TARGET}
+ PUBLIC
+ ${CC312_LIB_PREFIX}mbedcrypto
+ INTERFACE
+ ${CC312_LIB_TARGET}
+ PRIVATE
+ platform_s
+)
diff --git a/lib/ext/cryptocell-312-runtime/codesafe/CMakeLists.txt b/lib/ext/cryptocell-312-runtime/codesafe/CMakeLists.txt
index d44c327..acfcb47 100644
--- a/lib/ext/cryptocell-312-runtime/codesafe/CMakeLists.txt
+++ b/lib/ext/cryptocell-312-runtime/codesafe/CMakeLists.txt
@@ -7,7 +7,5 @@
add_subdirectory(src/crypto_api)
add_subdirectory(src/mbedtls_api)
-if (BUILD_PSA_DRIVER_API)
- add_subdirectory(src/psa_driver_api)
-endif()
+add_subdirectory(src/psa_driver_api)
# add_subdirectory(src/secure_boot_debug)
diff --git a/lib/ext/cryptocell-312-runtime/codesafe/src/crypto_api/CMakeLists.txt b/lib/ext/cryptocell-312-runtime/codesafe/src/crypto_api/CMakeLists.txt
index aadbc72..cd77314 100644
--- a/lib/ext/cryptocell-312-runtime/codesafe/src/crypto_api/CMakeLists.txt
+++ b/lib/ext/cryptocell-312-runtime/codesafe/src/crypto_api/CMakeLists.txt
@@ -10,7 +10,7 @@
target_include_directories(${CC312_LIB_TARGET}
PUBLIC
cc3x_sym/driver
- PRIVATE
+ INTERFACE
common
cc3x_sym/api
pki/poly
diff --git a/lib/ext/cryptocell-312-runtime/codesafe/src/mbedtls_api/CMakeLists.txt b/lib/ext/cryptocell-312-runtime/codesafe/src/mbedtls_api/CMakeLists.txt
index c7146ff..efbcf6b 100644
--- a/lib/ext/cryptocell-312-runtime/codesafe/src/mbedtls_api/CMakeLists.txt
+++ b/lib/ext/cryptocell-312-runtime/codesafe/src/mbedtls_api/CMakeLists.txt
@@ -5,12 +5,23 @@
#
#-------------------------------------------------------------------------------
-target_include_directories(${CC312_LIB_TARGET}
- PRIVATE
+target_include_directories(${CC312_CDMPU_TARGET}
+ INTERFACE
.
)
-target_sources(${CC312_LIB_TARGET}
+target_sources(${CC312_CDMPU_TARGET}
+ INTERFACE
+ ccm_alt.c
+ mbedtls_common.c
+)
+
+target_include_directories(${CC312_MBEDTLS_API_TARGET}
+ INTERFACE
+ .
+)
+
+target_sources(${CC312_MBEDTLS_API_TARGET}
PRIVATE
aes_alt.c
cc_ecp_internal.c
@@ -32,14 +43,3 @@
sha256_alt.c
trng_api.c
)
-
-target_include_directories(${CC312_CDMPU_TARGET}
- INTERFACE
- .
-)
-
-target_sources(${CC312_CDMPU_TARGET}
- INTERFACE
- ccm_alt.c
- mbedtls_common.c
-)
diff --git a/lib/ext/cryptocell-312-runtime/codesafe/src/psa_driver_api/CMakeLists.txt b/lib/ext/cryptocell-312-runtime/codesafe/src/psa_driver_api/CMakeLists.txt
index 4cef399..6317bb4 100644
--- a/lib/ext/cryptocell-312-runtime/codesafe/src/psa_driver_api/CMakeLists.txt
+++ b/lib/ext/cryptocell-312-runtime/codesafe/src/psa_driver_api/CMakeLists.txt
@@ -5,13 +5,13 @@
#
#-------------------------------------------------------------------------------
-target_include_directories(${CC312_LIB_TARGET}
+target_include_directories(${CC312_PSA_DRIVER_API_TARGET}
PUBLIC
.
include
)
-target_sources(${CC312_LIB_TARGET}
+target_sources(${CC312_PSA_DRIVER_API_TARGET}
PRIVATE
# PSA Cryptoprocessor Unified Driver interface entry point sources
src/cc3xx_psa_hash.c
@@ -36,9 +36,3 @@
src/cc3xx_internal_gcm.c
src/cc3xx_internal_chacha20_poly1305.c
)
-
-target_compile_definitions(${CC312_LIB_TARGET}
- PUBLIC
- MBEDTLS_PSA_CRYPTO_DRIVERS
- PSA_CRYPTO_DRIVER_CC3XX
-)
diff --git a/lib/ext/cryptocell-312-runtime/host/CMakeLists.txt b/lib/ext/cryptocell-312-runtime/host/CMakeLists.txt
index 214d8a0..f5b5309 100644
--- a/lib/ext/cryptocell-312-runtime/host/CMakeLists.txt
+++ b/lib/ext/cryptocell-312-runtime/host/CMakeLists.txt
@@ -29,12 +29,12 @@
########################## PAL #################################################
target_include_directories(${CC312_PAL_TARGET}
- INTERFACE
+ PUBLIC
src/hal
)
target_sources(${CC312_PAL_TARGET}
- INTERFACE
+ PRIVATE
src/pal/cc_pal_trng.c
src/pal/no_os/cc_pal_abort_plat.c
src/pal/no_os/cc_pal_apbc.c
diff --git a/lib/ext/cryptocell-312-runtime/shared/CMakeLists.txt b/lib/ext/cryptocell-312-runtime/shared/CMakeLists.txt
index 4435fde..6158bd1 100644
--- a/lib/ext/cryptocell-312-runtime/shared/CMakeLists.txt
+++ b/lib/ext/cryptocell-312-runtime/shared/CMakeLists.txt
@@ -28,7 +28,7 @@
)
target_include_directories(${CC312_PAL_TARGET}
- INTERFACE
+ PRIVATE
include
include/proj/cc3x
hw/include
diff --git a/platform/ext/accelerator/cc312/CMakeLists.txt b/platform/ext/accelerator/cc312/CMakeLists.txt
index bccb681..3d8b793 100644
--- a/platform/ext/accelerator/cc312/CMakeLists.txt
+++ b/platform/ext/accelerator/cc312/CMakeLists.txt
@@ -37,6 +37,9 @@
################################ BL2 ###########################################
if(BL2)
+
+ set(CC312_LIB_PREFIX bl2_)
+
target_sources(bl2_crypto_hw
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/cc312.c
@@ -49,28 +52,25 @@
target_link_libraries(bl2_crypto_hw
PUBLIC
- bl2_cc312
+ ${CC312_LIB_PREFIX}cc312
PRIVATE
bl2_mbedcrypto
platform_bl2
)
- set(CC312_LIB_TARGET bl2_cc312)
set(SAVED_BUILD_TYPE ${CMAKE_BUILD_TYPE})
set(CMAKE_BUILD_TYPE ${MBEDCRYPTO_BUILD_TYPE})
- set(BUILD_PSA_DRIVER_API False)
- add_subdirectory(${CC312_PATH} ${CMAKE_CURRENT_BINARY_DIR}/bl2_cc312)
- unset(BUILD_PSA_DRIVER_API)
+ add_subdirectory(${CC312_PATH} ${CMAKE_CURRENT_BINARY_DIR}/${CC312_LIB_PREFIX}cc312)
set(CMAKE_BUILD_TYPE ${SAVED_BUILD_TYPE} CACHE STRING "Build type: [Debug, Release, RelWithDebInfo, MinSizeRel]" FORCE)
- target_sources(bl2_cc312
+ target_sources(${CC312_LIB_PREFIX}cc312
PUBLIC
$<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:${CMAKE_CURRENT_SOURCE_DIR}/cc312_log.c>
)
# Adding two targets as link-time dependencies of each other seems bad, but
# in reality it just means that they'll share headers and compile defs.
- target_link_libraries(bl2_cc312
+ target_link_libraries(${CC312_LIB_PREFIX}cc312_mbedtls_api
PRIVATE
bl2_mbedcrypto
platform_bl2
@@ -79,7 +79,7 @@
)
target_link_libraries(bl2_mbedcrypto
PRIVATE
- bl2_cc312
+ ${CC312_LIB_PREFIX}cc312_mbedtls_api
PUBLIC
bl2_crypto_hw
)
@@ -90,7 +90,7 @@
bl2_crypto_hw
)
- target_link_libraries(cc312_cdmpu
+ target_link_libraries(${CC312_LIB_PREFIX}cc312_cdmpu
INTERFACE
bl2_mbedcrypto
)
@@ -107,7 +107,7 @@
$<$<C_COMPILER_ID:ARMClang>:-Wno-unused-parameter>
)
- target_compile_options(bl2_cc312
+ target_compile_options(${CC312_LIB_PREFIX}cc312
PRIVATE
${BL2_COMPILER_CP_FLAG}
)
@@ -117,14 +117,18 @@
${BL2_COMPILER_CP_FLAG}
)
- target_compile_options(cc312_cdmpu
+ target_compile_options(${CC312_LIB_PREFIX}cc312_cdmpu
INTERFACE
${BL2_COMPILER_CP_FLAG}
)
+ unset(CC312_LIB_PREFIX)
+
endif()
############################ Crypto Service ####################################
+set(CC312_LIB_PREFIX crypto_service_)
+
target_sources(crypto_service_crypto_hw
PRIVATE
cc312.c
@@ -138,26 +142,25 @@
target_link_libraries(crypto_service_crypto_hw
PUBLIC
- crypto_service_cc312
+ ${CC312_LIB_PREFIX}cc312
PRIVATE
crypto_service_mbedcrypto
platform_s
)
-set(CC312_LIB_TARGET crypto_service_cc312)
set(SAVED_BUILD_TYPE ${CMAKE_BUILD_TYPE})
set(CMAKE_BUILD_TYPE ${MBEDCRYPTO_BUILD_TYPE})
-add_subdirectory(${CC312_PATH} ${CMAKE_CURRENT_BINARY_DIR}/crypto_service_cc312)
+add_subdirectory(${CC312_PATH} ${CMAKE_CURRENT_BINARY_DIR}/${CC312_LIB_PREFIX}cc312)
set(CMAKE_BUILD_TYPE ${SAVED_BUILD_TYPE} CACHE STRING "Build type: [Debug, Release, RelWithDebInfo, MinSizeRel]" FORCE)
-target_sources(crypto_service_cc312
- PUBLIC
+target_sources(${CC312_LIB_PREFIX}cc312
+ PRIVATE
$<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:${CMAKE_CURRENT_SOURCE_DIR}/cc312_log.c>
)
# Adding two targets as link-time dependencies of each other seems bad, but
# in reality it just means that they'll share headers and compile defs.
-target_link_libraries(crypto_service_cc312
+target_link_libraries(${CC312_LIB_PREFIX}cc312_psa_driver_api
PRIVATE
crypto_service_mbedcrypto
PUBLIC
@@ -165,7 +168,7 @@
)
target_link_libraries(crypto_service_mbedcrypto
PRIVATE
- crypto_service_cc312
+ ${CC312_LIB_PREFIX}cc312_psa_driver_api
PUBLIC
crypto_service_crypto_hw
)
@@ -181,3 +184,5 @@
$<$<C_COMPILER_ID:GNU>:-Wno-unused-parameter>
$<$<C_COMPILER_ID:ARMClang>:-Wno-unused-parameter>
)
+
+unset(CC312_LIB_PREFIX)
diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
index 86e825d..16d256b 100644
--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
@@ -49,6 +49,7 @@
Native_Driver
partition
services/include
+ INTERFACE
cc312
)
@@ -140,6 +141,7 @@
PUBLIC
partition
Device/Include
+ INTERFACE
cc312
PRIVATE
.
diff --git a/platform/ext/target/arm/musca_b1/secure_enclave/CMakeLists.txt b/platform/ext/target/arm/musca_b1/secure_enclave/CMakeLists.txt
index f354911..a70d90e 100644
--- a/platform/ext/target/arm/musca_b1/secure_enclave/CMakeLists.txt
+++ b/platform/ext/target/arm/musca_b1/secure_enclave/CMakeLists.txt
@@ -59,6 +59,7 @@
mailbox
${CMAKE_MUSCA_B1_COMMON_DIR}/Native_Driver
${CMAKE_MUSCA_B1_COMMON_DIR}/Libraries
+ INTERFACE
${CMAKE_MUSCA_B1_COMMON_DIR}/cc312
)
@@ -120,6 +121,7 @@
PUBLIC
partition
Device/Include
+ INTERFACE
${CMAKE_MUSCA_B1_COMMON_DIR}/cc312
PRIVATE
.
diff --git a/platform/ext/target/arm/musca_b1/sse_200/CMakeLists.txt b/platform/ext/target/arm/musca_b1/sse_200/CMakeLists.txt
index ada4238..c5f9c09 100644
--- a/platform/ext/target/arm/musca_b1/sse_200/CMakeLists.txt
+++ b/platform/ext/target/arm/musca_b1/sse_200/CMakeLists.txt
@@ -92,6 +92,7 @@
${CMAKE_MUSCA_B1_COMMON_DIR}/Libraries
${CMAKE_MUSCA_B1_COMMON_DIR}/Native_Driver
$<$<BOOL:${FORWARD_PROT_MSG}>:${CMAKE_CURRENT_SOURCE_DIR}/mailbox>
+ INTERFACE
${CMAKE_MUSCA_B1_COMMON_DIR}/cc312
)
@@ -194,6 +195,7 @@
PUBLIC
partition
Device/Include
+ INTERFACE
${CMAKE_MUSCA_B1_COMMON_DIR}/cc312
PRIVATE
.
diff --git a/platform/ext/target/arm/musca_s1/CMakeLists.txt b/platform/ext/target/arm/musca_s1/CMakeLists.txt
index 4f3155b..dde378e 100644
--- a/platform/ext/target/arm/musca_s1/CMakeLists.txt
+++ b/platform/ext/target/arm/musca_s1/CMakeLists.txt
@@ -75,6 +75,7 @@
partition
services/include
Libraries
+ INTERFACE
cc312
)
@@ -156,6 +157,7 @@
partition
Device/Include
Libraries
+ INTERFACE
cc312
PRIVATE
.
diff --git a/secure_fw/partitions/crypto/CMakeLists.txt b/secure_fw/partitions/crypto/CMakeLists.txt
index 8d731c5..be7031d 100644
--- a/secure_fw/partitions/crypto/CMakeLists.txt
+++ b/secure_fw/partitions/crypto/CMakeLists.txt
@@ -139,7 +139,6 @@
target_compile_definitions(crypto_service_mbedcrypto_config
INTERFACE
- BUILD_PSA_DRIVER_API=True
MBEDTLS_CONFIG_FILE="${TFM_MBEDCRYPTO_CONFIG_PATH}"
$<$<BOOL:${TFM_MBEDCRYPTO_PLATFORM_EXTRA_CONFIG_PATH}>:MBEDTLS_USER_CONFIG_FILE="${TFM_MBEDCRYPTO_PLATFORM_EXTRA_CONFIG_PATH}">
PSA_CRYPTO_SECURE