From b6ef9ec78f157c0e8d4d3a7b7c111b2de6c9194f Mon Sep 17 00:00:00 2001 From: Yi Wu Date: Thu, 5 Mar 2026 17:32:51 +0000 Subject: [PATCH] Support DESTDIR for install and add build-system test Signed-off-by: Yi Wu --- library/CMakeLists.txt | 2 +- tests/scripts/components-build-system.sh | 26 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 5474e2cacf..19386ee4d4 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -362,7 +362,7 @@ foreach(target IN LISTS tf_psa_crypto_library_targets) RENAME "libmbedcrypto.so.${MBEDTLS_VERSION}" ) install(CODE " - set(_libdir \"\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}\") + set(_libdir \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}\") execute_process(COMMAND \"\${CMAKE_COMMAND}\" -E create_symlink \"libmbedcrypto.so.${MBEDTLS_VERSION}\" diff --git a/tests/scripts/components-build-system.sh b/tests/scripts/components-build-system.sh index ce923b5cc4..34b3c985dd 100644 --- a/tests/scripts/components-build-system.sh +++ b/tests/scripts/components-build-system.sh @@ -155,6 +155,32 @@ support_test_cmake_as_package_install () { support_test_cmake_out_of_source } +component_test_cmake_install_with_destdir () { + # Remove existing generated files so that we use the ones CMake + # generates + $MAKE_COMMAND neat + + msg "install: cmake with DESTDIR staging" + MBEDTLS_ROOT_DIR="$PWD" + mkdir "$OUT_OF_SOURCE_DIR" + cd "$OUT_OF_SOURCE_DIR" + cmake -DGEN_FILES=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr "$MBEDTLS_ROOT_DIR" + make + + DESTDIR="$OUT_OF_SOURCE_DIR/stage" make install + + install_libdir="$(sed -n 's/^CMAKE_INSTALL_LIBDIR:PATH=//p' CMakeCache.txt)" + test -n "$install_libdir" + test -L "$OUT_OF_SOURCE_DIR/stage/usr/${install_libdir}/libmbedcrypto.so" + + cd "$MBEDTLS_ROOT_DIR" + rm -rf "$OUT_OF_SOURCE_DIR" +} + +support_test_cmake_install_with_destdir () { + 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