diff --git a/CMakeLists.txt b/CMakeLists.txt index ce21a41686..d263f18240 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,10 +134,11 @@ endif() # Make configuration file options into PATHs set(MBEDTLS_CONFIG_FILE "" CACHE FILEPATH "Mbed TLS config file (overrides default).") set(MBEDTLS_USER_CONFIG_FILE "" CACHE FILEPATH "Mbed TLS user config file (appended to default).") -set(MBEDTLS_CONFIG_BASE_FILE "" CACHE STRING "Mbed TLS config to copy and optionally transform.") +set(MBEDTLS_CONFIG_BASE_FILE "" CACHE FILEPATH "Mbed TLS config to copy and optionally transform.") set(MBEDTLS_CONFIG_NAME "" CACHE STRING "Named Mbed TLS configuration (see config.py).") set(MBEDTLS_CONFIG_SET "" CACHE STRING "Options to set, separated by semicolons (OPTION or OPTION=VALUE).") set(MBEDTLS_CONFIG_UNSET "" CACHE STRING "Options to unset, separated by semicolons.") +set(TF_PSA_CRYPTO_CONFIG_BASE_FILE "" CACHE FILEPATH "TF-PSA-Crypto config to copy and optionally transform.") set(MBEDTLS_CONFIG_TRANSFORMED FALSE) if(NOT "${MBEDTLS_CONFIG_NAME}" STREQUAL "" OR @@ -182,9 +183,13 @@ if(NOT "${MBEDTLS_CONFIG_BASE_FILE}" STREQUAL "" OR endif() if(NOT "${MBEDTLS_CONFIG_BASE_FILE}" STREQUAL "") - get_filename_component(MBEDTLS_BASE_CONFIG_FILE - "${MBEDTLS_CONFIG_BASE_FILE}" ABSOLUTE - BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + set(MBEDTLS_BASE_CONFIG_FILE "${MBEDTLS_CONFIG_BASE_FILE}") + if(NOT EXISTS "${MBEDTLS_BASE_CONFIG_FILE}") + file(RELATIVE_PATH MBEDTLS_CONFIG_BASE_FILE_RELATIVE + "${CMAKE_CURRENT_BINARY_DIR}" "${MBEDTLS_CONFIG_BASE_FILE}") + set(MBEDTLS_BASE_CONFIG_FILE + "${CMAKE_CURRENT_SOURCE_DIR}/${MBEDTLS_CONFIG_BASE_FILE_RELATIVE}") + endif() else() set(MBEDTLS_BASE_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/include/mbedtls/mbedtls_config.h") @@ -201,9 +206,15 @@ if(NOT "${MBEDTLS_CONFIG_BASE_FILE}" STREQUAL "" OR if(MBEDTLS_CONFIG_TRANSFORMED) if(NOT "${TF_PSA_CRYPTO_CONFIG_BASE_FILE}" STREQUAL "") - get_filename_component(MBEDTLS_BASE_CRYPTO_CONFIG_FILE - "${TF_PSA_CRYPTO_CONFIG_BASE_FILE}" ABSOLUTE - BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + set(MBEDTLS_BASE_CRYPTO_CONFIG_FILE + "${TF_PSA_CRYPTO_CONFIG_BASE_FILE}") + if(NOT EXISTS "${MBEDTLS_BASE_CRYPTO_CONFIG_FILE}") + file(RELATIVE_PATH TF_PSA_CRYPTO_CONFIG_BASE_FILE_RELATIVE + "${CMAKE_CURRENT_BINARY_DIR}" + "${TF_PSA_CRYPTO_CONFIG_BASE_FILE}") + set(MBEDTLS_BASE_CRYPTO_CONFIG_FILE + "${CMAKE_CURRENT_SOURCE_DIR}/${TF_PSA_CRYPTO_CONFIG_BASE_FILE_RELATIVE}") + endif() else() set(MBEDTLS_BASE_CRYPTO_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/include/psa/crypto_config.h") diff --git a/tests/scripts/components-build-system.sh b/tests/scripts/components-build-system.sh index 64289c24f0..7a7ddddb46 100644 --- a/tests/scripts/components-build-system.sh +++ b/tests/scripts/components-build-system.sh @@ -320,13 +320,13 @@ component_build_cmake_config_options () { cd "$MBEDTLS_ROOT_DIR" rm -rf "$OUT_OF_SOURCE_DIR" - launch_dir="$OUT_OF_SOURCE_DIR.launch" + launch_dir="$MBEDTLS_ROOT_DIR/cmake-config-launch" mkdir "$launch_dir" cd "$launch_dir" - msg "configure: resolve a relative base config from the source tree" + msg "configure: resolve a base config relative to the launch directory" cmake -H"$MBEDTLS_ROOT_DIR" -B"$OUT_OF_SOURCE_DIR" \ - -DMBEDTLS_CONFIG_BASE_FILE=configs/config-ccm-psk-tls1_2.h \ + -DMBEDTLS_CONFIG_BASE_FILE=../configs/config-ccm-psk-tls1_2.h \ -DMBEDTLS_CONFIG_SET=MBEDTLS_DEBUG_C grep '^#define MBEDTLS_DEBUG_C' \ "$OUT_OF_SOURCE_DIR/generated/include/mbedtls/mbedtls_config.h" @@ -358,17 +358,15 @@ component_build_cmake_config_options () { msg "build: combine Mbed TLS and TF-PSA-Crypto transformations" cmake \ -DMBEDTLS_CONFIG_BASE_FILE=configs/config-ccm-psk-tls1_2.h \ - '-DMBEDTLS_CONFIG_SET=MBEDTLS_DEBUG_C;PSA_WANT_ALG_RIPEMD160' \ - -DTF_PSA_CRYPTO_CONFIG_BASE_FILE="$MBEDTLS_ROOT_DIR/tf-psa-crypto/configs/crypto-config-symmetric-only.h" \ - -DTF_PSA_CRYPTO_CONFIG_UNSET=PSA_WANT_ALG_RIPEMD160 \ + -DMBEDTLS_CONFIG_SET=MBEDTLS_DEBUG_C \ + -DTF_PSA_CRYPTO_CONFIG_BASE_FILE="$MBEDTLS_ROOT_DIR/configs/crypto-config-ccm-psk-tls1_2.h" \ + -DTF_PSA_CRYPTO_CONFIG_UNSET=MBEDTLS_HAVE_TIME \ "$MBEDTLS_ROOT_DIR" make query_compile_time_config programs/test/query_compile_time_config MBEDTLS_DEBUG_C - grep '^#define PSA_WANT_ALG_RIPEMD160' \ + grep '^#define MBEDTLS_HAVE_TIME' \ generated/include/psa/crypto_config.h - not programs/test/query_compile_time_config PSA_WANT_ALG_RIPEMD160 - not programs/test/query_compile_time_config \ - PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC + not programs/test/query_compile_time_config MBEDTLS_HAVE_TIME cd "$MBEDTLS_ROOT_DIR" rm -rf "$OUT_OF_SOURCE_DIR"