cmake: Allow generic path for TF-PSA-Crypto repo

Instead of requiring TF-PSA-Crypto to be inside the "mbedtls" folder,
allow it to be placed anywhere and its path to be specified when calling
CMake.

Signed-off-by: Valerio Setti <vsetti@baylibre.com>
This commit is contained in:
Valerio Setti 2026-03-23 13:42:11 +01:00 committed by Valerio Setti
parent 884c5f81a5
commit 3e1139ba1b
6 changed files with 44 additions and 41 deletions

View File

@ -67,6 +67,9 @@ endif()
# Set the project and framework root directory.
set(MBEDTLS_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(MBEDTLS_FRAMEWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/framework)
if(NOT DEFINED TF_PSA_CRYPTO_DIR)
set(TF_PSA_CRYPTO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto)
endif()
option(ENABLE_PROGRAMS "Build Mbed TLS programs." ON)
@ -349,7 +352,7 @@ set(TF_PSA_CRYPTO_TARGET_PREFIX ${MBEDTLS_TARGET_PREFIX} CACHE STRING "")
set(TF_PSA_CRYPTO_FATAL_WARNINGS ${MBEDTLS_FATAL_WARNINGS} CACHE BOOL "")
set(USE_STATIC_TF_PSA_CRYPTO_LIBRARY ${USE_STATIC_MBEDTLS_LIBRARY} CACHE BOOL "")
set(USE_SHARED_TF_PSA_CRYPTO_LIBRARY ${USE_SHARED_MBEDTLS_LIBRARY} CACHE BOOL "")
add_subdirectory(tf-psa-crypto)
add_subdirectory(${TF_PSA_CRYPTO_DIR} tf-psa-crypto)
set(tfpsacrypto_target "${TF_PSA_CRYPTO_TARGET_PREFIX}tfpsacrypto")
if (USE_STATIC_MBEDTLS_LIBRARY)
@ -379,12 +382,12 @@ endforeach(target)
# empty.
#
set(TF_PSA_CRYPTO_PRIVATE_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/core
${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/dispatch
${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/src
${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/extras
${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/platform
${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/utilities
${TF_PSA_CRYPTO_DIR}/core
${TF_PSA_CRYPTO_DIR}/dispatch
${TF_PSA_CRYPTO_DIR}/drivers/builtin/src
${TF_PSA_CRYPTO_DIR}/extras
${TF_PSA_CRYPTO_DIR}/platform
${TF_PSA_CRYPTO_DIR}/utilities
)
add_subdirectory(library)
@ -433,10 +436,10 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
${MBEDTLS_FRAMEWORK_DIR}/tests/include
tests/include
include
tf-psa-crypto/include
tf-psa-crypto/drivers/builtin/include
tf-psa-crypto/drivers/everest/include
tf-psa-crypto/drivers/pqcp/include
${TF_PSA_CRYPTO_DIR}/include
${TF_PSA_CRYPTO_DIR}/drivers/builtin/include
${TF_PSA_CRYPTO_DIR}/drivers/everest/include
${TF_PSA_CRYPTO_DIR}/drivers/pqcp/include
library
${TF_PSA_CRYPTO_PRIVATE_INCLUDE_DIRS}
)
@ -470,11 +473,11 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
${MBEDTLS_FRAMEWORK_DIR}/tests/include
tests/include
include
tf-psa-crypto/include
tf-psa-crypto/drivers/builtin/include
${TF_PSA_CRYPTO_DIR}/include
${TF_PSA_CRYPTO_DIR}/drivers/builtin/include
library
tf-psa-crypto/drivers/everest/include
tf-psa-crypto/drivers/pqcp/include
${TF_PSA_CRYPTO_DIR}/drivers/everest/include
${TF_PSA_CRYPTO_DIR}/drivers/pqcp/include
${TF_PSA_CRYPTO_PRIVATE_INCLUDE_DIRS}
)

View File

@ -6,9 +6,9 @@ EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
CASE_SENSE_NAMES = NO
INPUT = ../include input ../tf-psa-crypto/include ../tests/include/alt-dummy
INPUT = "@CMAKE_CURRENT_LIST_DIR@/include" "@CMAKE_CURRENT_LIST_DIR@/doxygen/input" "@TF_PSA_CRYPTO_DIR@/include" "@CMAKE_CURRENT_LIST_DIR@/tests/include/alt-dummy"
FILE_PATTERNS = *.h
EXCLUDE = ../tf-psa-crypto/include/mbedtls/private
EXCLUDE = "../@TF_PSA_CRYPTO_DIR@/include/mbedtls/private"
RECURSIVE = YES
EXCLUDE_SYMLINKS = YES
SOURCE_BROWSER = YES
@ -22,7 +22,7 @@ GENERATE_LATEX = NO
GENERATE_XML = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
INCLUDE_PATH = ../include ../tf-psa-crypto/include ../tf-psa-crypto/drivers/builtin/include
INCLUDE_PATH = "@CMAKE_CURRENT_LIST_DIR@/include" "@TF_PSA_CRYPTO_DIR@/include" "@TF_PSA_CRYPTO_DIR@/drivers/builtin/include"
EXPAND_AS_DEFINED = MBEDTLS_PRIVATE
CLASS_DIAGRAMS = NO
HAVE_DOT = YES

View File

@ -48,7 +48,7 @@ if(GEN_FILES)
COMMAND
${PERL_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_errors.pl
${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/drivers/builtin/include/mbedtls
${TF_PSA_CRYPTO_DIR}/drivers/builtin/include/mbedtls
${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files
${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/error.c
@ -234,13 +234,13 @@ endif(USE_SHARED_MBEDTLS_LIBRARY)
foreach(target IN LISTS target_libraries)
add_library(MbedTLS::${target} ALIAS ${target}) # add_subdirectory support
# Include public header files from /include, /tf-psa-crypto/include/ and
# tf-psa-crypto/drivers/builtin/include/. Include private header files
# Include public header files from /include, ${TF_PSA_CRYPTO_DIR}/include/ and
# ${TF_PSA_CRYPTO_DIR}/drivers/builtin/include/. Include private header files
# from /library and ${TF_PSA_CRYPTO_PRIVATE_INCLUDE_DIRS}.
target_include_directories(${target}
PUBLIC $<BUILD_INTERFACE:${MBEDTLS_DIR}/include/>
$<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/include/>
$<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/drivers/builtin/include/>
$<BUILD_INTERFACE:${TF_PSA_CRYPTO_DIR}/include/>
$<BUILD_INTERFACE:${TF_PSA_CRYPTO_DIR}/drivers/builtin/include/>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE ${MBEDTLS_DIR}/library/
${TF_PSA_CRYPTO_PRIVATE_INCLUDE_DIRS}

View File

@ -31,19 +31,19 @@ foreach(exe IN LISTS executables_no_common_c executables_with_common_c)
$<TARGET_OBJECTS:mbedtls_test_helpers>
$<TARGET_OBJECTS:mbedtls_test>)
if(NOT FUZZINGENGINE_LIB)
list(APPEND exe_sources ${MBEDTLS_DIR}/tf-psa-crypto/programs/fuzz/fuzz_onefile.c)
list(APPEND exe_sources ${TF_PSA_CRYPTO_DIR}/programs/fuzz/fuzz_onefile.c)
endif()
# This emulates "if ( ... IN_LIST ... )" which becomes available in CMake 3.3
list(FIND executables_with_common_c ${exe} exe_index)
if(${exe_index} GREATER -1)
list(APPEND exe_sources ${MBEDTLS_DIR}/tf-psa-crypto/programs/fuzz/fuzz_common.c)
list(APPEND exe_sources ${TF_PSA_CRYPTO_DIR}/programs/fuzz/fuzz_common.c)
endif()
add_executable(${exe} ${exe_sources})
set_base_compile_options(${exe})
target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../framework/tests/include
${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/programs/fuzz/
${TF_PSA_CRYPTO_DIR}/programs/fuzz/
${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
if (NOT FUZZINGENGINE_LIB)

View File

@ -27,8 +27,8 @@ if(TEST_CPP)
set_base_compile_options(cpp_dummy_build)
target_include_directories(cpp_dummy_build
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/drivers/builtin/include)
PRIVATE ${TF_PSA_CRYPTO_DIR}/include
PRIVATE ${TF_PSA_CRYPTO_DIR}/drivers/builtin/include)
target_link_libraries(cpp_dummy_build ${tfpsacrypto_target} ${CMAKE_THREAD_LIBS_INIT})
endif()
@ -38,8 +38,8 @@ if(USE_SHARED_MBEDTLS_LIBRARY AND
set_base_compile_options(dlopen)
target_include_directories(dlopen
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/drivers/builtin/include)
PRIVATE ${TF_PSA_CRYPTO_DIR}/include
PRIVATE ${TF_PSA_CRYPTO_DIR}/drivers/builtin/include)
target_link_libraries(dlopen ${CMAKE_DL_LIBS})
endif()
@ -53,14 +53,14 @@ if(GEN_FILES)
${PERL}
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl
${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h
${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include/psa/crypto_config.h
${TF_PSA_CRYPTO_DIR}/include/psa/crypto_config.h
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt
${CMAKE_CURRENT_BINARY_DIR}/query_config.c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../..
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl
${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h
${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include/psa/crypto_config.h
${TF_PSA_CRYPTO_DIR}/include/psa/crypto_config.h
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt
)
# this file will also be used in another directory, so create a target, see
@ -92,7 +92,7 @@ foreach(exe IN LISTS executables)
${MBEDTLS_FRAMEWORK_DIR}/tests/programs)
target_include_directories(${exe}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../library
${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/core)
${TF_PSA_CRYPTO_DIR}/core)
if(exe STREQUAL "query_compile_time_config")
target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
endif()
@ -103,8 +103,8 @@ foreach(exe IN LISTS executables)
endforeach()
target_include_directories(metatest
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/drivers/builtin/src
${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/platform
PRIVATE ${TF_PSA_CRYPTO_DIR}/drivers/builtin/src
${TF_PSA_CRYPTO_DIR}/platform
)
install(TARGETS ${executables}
DESTINATION "bin"

View File

@ -147,18 +147,18 @@ function(add_test_suite suite_name)
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_code.py
-f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function
-d ${data_file}
-t ${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/tests/suites/main_test.function
-p ${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/tests/suites/host_test.function
-t ${TF_PSA_CRYPTO_DIR}/tests/suites/main_test.function
-p ${TF_PSA_CRYPTO_DIR}/tests/suites/host_test.function
-s ${CMAKE_CURRENT_SOURCE_DIR}/suites
--helpers-file ${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/tests/suites/helpers.function
--helpers-file ${TF_PSA_CRYPTO_DIR}/tests/suites/helpers.function
-o .
DEPENDS
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_code.py
${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function
${data_file}
${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/tests/suites/main_test.function
${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/tests/suites/host_test.function
${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/tests/suites/helpers.function
${TF_PSA_CRYPTO_DIR}/tests/suites/main_test.function
${TF_PSA_CRYPTO_DIR}/tests/suites/host_test.function
${TF_PSA_CRYPTO_DIR}/tests/suites/helpers.function
${mbedtls_target}
BYPRODUCTS
test_suite_${data_name}.datax