From 3e1139ba1b7ecf1d6b9366e70e8d7e550ea06d21 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 23 Mar 2026 13:42:11 +0100 Subject: [PATCH] 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 --- CMakeLists.txt | 33 ++++++++++++++++++--------------- doxygen/mbedtls.doxyfile.in | 6 +++--- library/CMakeLists.txt | 10 +++++----- programs/fuzz/CMakeLists.txt | 6 +++--- programs/test/CMakeLists.txt | 18 +++++++++--------- tests/CMakeLists.txt | 12 ++++++------ 6 files changed, 44 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 766f5017ca..c9912cd063 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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} ) diff --git a/doxygen/mbedtls.doxyfile.in b/doxygen/mbedtls.doxyfile.in index e52790af6b..fed5b31b72 100644 --- a/doxygen/mbedtls.doxyfile.in +++ b/doxygen/mbedtls.doxyfile.in @@ -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 diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 5436a96d42..b35355bdf2 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -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 $ - $ - $ + $ + $ $ PRIVATE ${MBEDTLS_DIR}/library/ ${TF_PSA_CRYPTO_PRIVATE_INCLUDE_DIRS} diff --git a/programs/fuzz/CMakeLists.txt b/programs/fuzz/CMakeLists.txt index d5995aa194..e4a8fba28a 100644 --- a/programs/fuzz/CMakeLists.txt +++ b/programs/fuzz/CMakeLists.txt @@ -31,19 +31,19 @@ foreach(exe IN LISTS executables_no_common_c executables_with_common_c) $ $) 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) diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt index 0de71a9b03..d9665124e9 100644 --- a/programs/test/CMakeLists.txt +++ b/programs/test/CMakeLists.txt @@ -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" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 09913b56e7..efd4345f82 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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