mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-09-13 14:22:19 +08:00
CMake: make generated configs relocatable
Signed-off-by: Yi Wu <yi.wu2@arm.com>
This commit is contained in:
parent
030f872a9b
commit
166c69a921
@ -229,12 +229,14 @@ if(NOT "${MBEDTLS_CONFIG_BASE_FILE}" STREQUAL "" OR
|
|||||||
endif()
|
endif()
|
||||||
endforeach(option)
|
endforeach(option)
|
||||||
|
|
||||||
set(MBEDTLS_CONFIG_FILE "${MBEDTLS_GENERATED_CONFIG_FILE}")
|
set(MBEDTLS_CONFIG_FILE
|
||||||
|
"$<BUILD_INTERFACE:${MBEDTLS_GENERATED_CONFIG_FILE}>$<INSTALL_INTERFACE:mbedtls/mbedtls_config.h>")
|
||||||
if("${TF_PSA_CRYPTO_CONFIG_FILE}" STREQUAL "" AND
|
if("${TF_PSA_CRYPTO_CONFIG_FILE}" STREQUAL "" AND
|
||||||
"${TF_PSA_CRYPTO_CONFIG_NAME}" STREQUAL "")
|
"${TF_PSA_CRYPTO_CONFIG_NAME}" STREQUAL "")
|
||||||
# Named configurations can adjust both configuration files.
|
# Named configurations can adjust both configuration files.
|
||||||
set(TF_PSA_CRYPTO_CONFIG_FILE "${MBEDTLS_GENERATED_CRYPTO_CONFIG_FILE}"
|
set(TF_PSA_CRYPTO_CONFIG_FILE
|
||||||
CACHE FILEPATH "TF-PSA-Crypto config file (overrides default)." FORCE)
|
"$<BUILD_INTERFACE:${MBEDTLS_GENERATED_CRYPTO_CONFIG_FILE}>$<INSTALL_INTERFACE:psa/crypto_config_mbedtls.h>"
|
||||||
|
CACHE STRING "TF-PSA-Crypto config file (overrides default)." FORCE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -454,6 +456,15 @@ 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 "")
|
set(USE_SHARED_TF_PSA_CRYPTO_LIBRARY ${USE_SHARED_MBEDTLS_LIBRARY} CACHE BOOL "")
|
||||||
add_subdirectory(tf-psa-crypto)
|
add_subdirectory(tf-psa-crypto)
|
||||||
|
|
||||||
|
# Keep the generated configuration distinct from TF-PSA-Crypto's default
|
||||||
|
# configuration header, which is installed by the subproject.
|
||||||
|
if(NOT "${MBEDTLS_GENERATED_CRYPTO_CONFIG_FILE}" STREQUAL "" AND
|
||||||
|
INSTALL_TF_PSA_CRYPTO_HEADERS)
|
||||||
|
install(FILES "${MBEDTLS_GENERATED_CRYPTO_CONFIG_FILE}"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/psa
|
||||||
|
RENAME crypto_config_mbedtls.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(tfpsacrypto_target "${TF_PSA_CRYPTO_TARGET_PREFIX}tfpsacrypto")
|
set(tfpsacrypto_target "${TF_PSA_CRYPTO_TARGET_PREFIX}tfpsacrypto")
|
||||||
if (USE_STATIC_MBEDTLS_LIBRARY)
|
if (USE_STATIC_MBEDTLS_LIBRARY)
|
||||||
set(tfpsacrypto_static_target ${tfpsacrypto_target})
|
set(tfpsacrypto_static_target ${tfpsacrypto_target})
|
||||||
|
|||||||
@ -4,10 +4,21 @@ if(INSTALL_MBEDTLS_HEADERS)
|
|||||||
|
|
||||||
file(GLOB headers "mbedtls/*.h")
|
file(GLOB headers "mbedtls/*.h")
|
||||||
|
|
||||||
|
if(NOT "${MBEDTLS_GENERATED_CONFIG_FILE}" STREQUAL "")
|
||||||
|
list(REMOVE_ITEM headers
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/mbedtls/mbedtls_config.h")
|
||||||
|
endif()
|
||||||
|
|
||||||
install(FILES ${headers}
|
install(FILES ${headers}
|
||||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mbedtls
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mbedtls
|
||||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
|
||||||
|
|
||||||
|
if(NOT "${MBEDTLS_GENERATED_CONFIG_FILE}" STREQUAL "")
|
||||||
|
install(FILES "${MBEDTLS_GENERATED_CONFIG_FILE}"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mbedtls
|
||||||
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
|
||||||
|
endif()
|
||||||
|
|
||||||
file(GLOB private_headers "mbedtls/private/*.h")
|
file(GLOB private_headers "mbedtls/private/*.h")
|
||||||
|
|
||||||
install(FILES ${private_headers}
|
install(FILES ${private_headers}
|
||||||
|
|||||||
13
programs/test/cmake_package_install/cmake_package_config.c
Normal file
13
programs/test/cmake_package_install/cmake_package_config.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
* Simple program to test an installed Mbed TLS configuration.
|
||||||
|
*
|
||||||
|
* Copyright The Mbed TLS Contributors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mbedtls/build_info.h"
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@ -357,6 +357,32 @@ component_build_cmake_config_options () {
|
|||||||
cmp base_config.before \
|
cmp base_config.before \
|
||||||
"$MBEDTLS_ROOT_DIR/configs/config-ccm-psk-tls1_2.h"
|
"$MBEDTLS_ROOT_DIR/configs/config-ccm-psk-tls1_2.h"
|
||||||
|
|
||||||
|
msg "install: generated configurations are relocatable"
|
||||||
|
install_dir="$OUT_OF_SOURCE_DIR/install"
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX="$install_dir" .
|
||||||
|
cmake --build . --target install
|
||||||
|
cmp generated/include/mbedtls/mbedtls_config.h \
|
||||||
|
"$install_dir/include/mbedtls/mbedtls_config.h"
|
||||||
|
cmp generated/include/psa/crypto_config.h \
|
||||||
|
"$install_dir/include/psa/crypto_config_mbedtls.h"
|
||||||
|
|
||||||
|
# The installed targets must not refer to configuration headers in the
|
||||||
|
# build tree.
|
||||||
|
mv generated generated.moved
|
||||||
|
mkdir consumer
|
||||||
|
cat >consumer/CMakeLists.txt <<EOF
|
||||||
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
project(consumer C)
|
||||||
|
find_package(MbedTLS REQUIRED CONFIG)
|
||||||
|
add_executable(consumer
|
||||||
|
"$MBEDTLS_ROOT_DIR/programs/test/cmake_package_install/cmake_package_config.c")
|
||||||
|
target_link_libraries(consumer PRIVATE
|
||||||
|
MbedTLS::mbedtls MbedTLS::mbedx509 MbedTLS::tfpsacrypto)
|
||||||
|
EOF
|
||||||
|
cmake -S consumer -B consumer-build \
|
||||||
|
-DCMAKE_PREFIX_PATH="$install_dir"
|
||||||
|
cmake --build consumer-build
|
||||||
|
|
||||||
cd "$MBEDTLS_ROOT_DIR"
|
cd "$MBEDTLS_ROOT_DIR"
|
||||||
rm -rf "$OUT_OF_SOURCE_DIR"
|
rm -rf "$OUT_OF_SOURCE_DIR"
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user