Merge pull request #6914 from davidhorstmann-arm/cmake-pass-through-config-defines
Pass `MBEDTLS_CONFIG_FILE` defines through cmake
This commit is contained in:
commit
2dfe7993af
4 changed files with 93 additions and 0 deletions
|
@ -118,6 +118,10 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
||||||
FORCE)
|
FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Make MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE 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).")
|
||||||
|
|
||||||
# Create a symbolic link from ${base_name} in the binary directory
|
# Create a symbolic link from ${base_name} in the binary directory
|
||||||
# to the corresponding path in the source directory.
|
# to the corresponding path in the source directory.
|
||||||
# Note: Copies the file(s) on Windows.
|
# Note: Copies the file(s) on Windows.
|
||||||
|
@ -297,6 +301,20 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/everest/include)
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/everest/include)
|
||||||
|
|
||||||
|
# Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE
|
||||||
|
if(MBEDTLS_CONFIG_FILE)
|
||||||
|
target_compile_definitions(mbedtls_test
|
||||||
|
PUBLIC MBEDTLS_CONFIG_FILE="${MBEDTLS_CONFIG_FILE}")
|
||||||
|
target_compile_definitions(mbedtls_test_helpers
|
||||||
|
PUBLIC MBEDTLS_CONFIG_FILE="${MBEDTLS_CONFIG_FILE}")
|
||||||
|
endif()
|
||||||
|
if(MBEDTLS_USER_CONFIG_FILE)
|
||||||
|
target_compile_definitions(mbedtls_test
|
||||||
|
PUBLIC MBEDTLS_USER_CONFIG_FILE="${MBEDTLS_USER_CONFIG_FILE}")
|
||||||
|
target_compile_definitions(mbedtls_test_helpers
|
||||||
|
PUBLIC MBEDTLS_USER_CONFIG_FILE="${MBEDTLS_USER_CONFIG_FILE}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_PROGRAMS)
|
if(ENABLE_PROGRAMS)
|
||||||
|
|
3
ChangeLog.d/cmake-pass-through-config-defines.txt
Normal file
3
ChangeLog.d/cmake-pass-through-config-defines.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Features
|
||||||
|
* Allow MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE to be set by
|
||||||
|
setting the CMake variable of the same name at configuration time.
|
|
@ -320,6 +320,15 @@ foreach(target IN LISTS target_libraries)
|
||||||
PUBLIC $<BUILD_INTERFACE:${MBEDTLS_DIR}/include/>
|
PUBLIC $<BUILD_INTERFACE:${MBEDTLS_DIR}/include/>
|
||||||
$<INSTALL_INTERFACE:include/>
|
$<INSTALL_INTERFACE:include/>
|
||||||
PRIVATE ${MBEDTLS_DIR}/library/)
|
PRIVATE ${MBEDTLS_DIR}/library/)
|
||||||
|
# Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE
|
||||||
|
if(MBEDTLS_CONFIG_FILE)
|
||||||
|
target_compile_definitions(${target}
|
||||||
|
PUBLIC MBEDTLS_CONFIG_FILE="${MBEDTLS_CONFIG_FILE}")
|
||||||
|
endif()
|
||||||
|
if(MBEDTLS_USER_CONFIG_FILE)
|
||||||
|
target_compile_definitions(${target}
|
||||||
|
PUBLIC MBEDTLS_USER_CONFIG_FILE="${MBEDTLS_USER_CONFIG_FILE}")
|
||||||
|
endif()
|
||||||
install(
|
install(
|
||||||
TARGETS ${target}
|
TARGETS ${target}
|
||||||
EXPORT MbedTLSTargets
|
EXPORT MbedTLSTargets
|
||||||
|
|
|
@ -4624,6 +4624,69 @@ support_test_cmake_as_package_install () {
|
||||||
support_test_cmake_out_of_source
|
support_test_cmake_out_of_source
|
||||||
}
|
}
|
||||||
|
|
||||||
|
component_build_cmake_custom_config_file () {
|
||||||
|
# Make a copy of config file to use for the in-tree test
|
||||||
|
cp "$CONFIG_H" include/mbedtls_config_in_tree_copy.h
|
||||||
|
|
||||||
|
MBEDTLS_ROOT_DIR="$PWD"
|
||||||
|
mkdir "$OUT_OF_SOURCE_DIR"
|
||||||
|
cd "$OUT_OF_SOURCE_DIR"
|
||||||
|
|
||||||
|
# Build once to get the generated files (which need an intact config file)
|
||||||
|
cmake "$MBEDTLS_ROOT_DIR"
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake with -DMBEDTLS_CONFIG_FILE"
|
||||||
|
scripts/config.py -w full_config.h full
|
||||||
|
echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h "$MBEDTLS_ROOT_DIR"
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
|
||||||
|
# In the user config, disable one feature (for simplicity, pick a feature
|
||||||
|
# that nothing else depends on).
|
||||||
|
echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
|
||||||
|
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h "$MBEDTLS_ROOT_DIR"
|
||||||
|
make
|
||||||
|
not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
|
||||||
|
|
||||||
|
rm -f user_config.h full_config.h
|
||||||
|
|
||||||
|
cd "$MBEDTLS_ROOT_DIR"
|
||||||
|
rm -rf "$OUT_OF_SOURCE_DIR"
|
||||||
|
|
||||||
|
# Now repeat the test for an in-tree build:
|
||||||
|
|
||||||
|
# Restore config for the in-tree test
|
||||||
|
mv include/mbedtls_config_in_tree_copy.h "$CONFIG_H"
|
||||||
|
|
||||||
|
# Build once to get the generated files (which need an intact config)
|
||||||
|
cmake .
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE"
|
||||||
|
scripts/config.py -w full_config.h full
|
||||||
|
echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h .
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
|
||||||
|
# In the user config, disable one feature (for simplicity, pick a feature
|
||||||
|
# that nothing else depends on).
|
||||||
|
echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
|
||||||
|
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h .
|
||||||
|
make
|
||||||
|
not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
|
||||||
|
|
||||||
|
rm -f user_config.h full_config.h
|
||||||
|
}
|
||||||
|
support_build_cmake_custom_config_file () {
|
||||||
|
support_test_cmake_out_of_source
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
component_test_zeroize () {
|
component_test_zeroize () {
|
||||||
# Test that the function mbedtls_platform_zeroize() is not optimized away by
|
# Test that the function mbedtls_platform_zeroize() is not optimized away by
|
||||||
# different combinations of compilers and optimization flags by using an
|
# different combinations of compilers and optimization flags by using an
|
||||||
|
|
Loading…
Reference in a new issue