From 0d9b00d4838da4e29f977a352d3b01f7f52f88f3 Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Wed, 14 May 2025 10:22:31 +0200 Subject: [PATCH 1/3] cmake: library: Remove unnecessary link_to_source If we do not generate error.c, version_features.c, ... then they are supposed to be in the source tree. The CMake build get them from here and there is no need for a symbolic link or a copy in the build tree. Signed-off-by: Ronald Cron --- library/CMakeLists.txt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index e2a1920850..17bc1478de 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -187,13 +187,6 @@ if(GEN_FILES) ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja ) - - -else() - link_to_source(error.c) - link_to_source(version_features.c) - link_to_source(ssl_debug_helpers_generated.c) - link_to_source(psa_crypto_driver_wrappers_no_static.c) endif() if(CMAKE_COMPILER_IS_GNUCC) From cbe5fa4d4047d028543e25d97f42a363bc09ca38 Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Wed, 14 May 2025 09:41:04 +0200 Subject: [PATCH 2/3] cmake: library: Add custom targets for generated files Add a custom target that depends on crypto generated files, and make both the static and shared crypto libraries depend on it. This ensures that when both libraries are built, the files are not generated concurrently by the static and shared library targets. Do the same for the TLS libraries. Signed-off-by: Ronald Cron --- library/CMakeLists.txt | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 17bc1478de..d4f3784501 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -187,6 +187,19 @@ if(GEN_FILES) ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja ) + + add_custom_target(${MBEDTLS_TARGET_PREFIX}mbedcrypto_generated_files_target + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/error.c + ${CMAKE_CURRENT_BINARY_DIR}/version_features.c + ${CMAKE_CURRENT_BINARY_DIR}/psa_crypto_driver_wrappers.h + ${CMAKE_CURRENT_BINARY_DIR}/psa_crypto_driver_wrappers_no_static.c + ) + + add_custom_target(${MBEDTLS_TARGET_PREFIX}mbedtls_generated_files_target + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.c + ) endif() if(CMAKE_COMPILER_IS_GNUCC) @@ -288,6 +301,13 @@ if(USE_STATIC_MBEDTLS_LIBRARY) add_library(${mbedtls_static_target} STATIC ${src_tls}) set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls) target_link_libraries(${mbedtls_static_target} PUBLIC ${libs} ${mbedx509_static_target}) + + if(GEN_FILES) + add_dependencies(${mbedcrypto_static_target} + ${MBEDTLS_TARGET_PREFIX}mbedcrypto_generated_files_target) + add_dependencies(${mbedtls_static_target} + ${MBEDTLS_TARGET_PREFIX}mbedtls_generated_files_target) + endif() endif(USE_STATIC_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY) @@ -311,6 +331,13 @@ if(USE_SHARED_MBEDTLS_LIBRARY) add_library(${mbedtls_target} SHARED ${src_tls}) set_target_properties(${mbedtls_target} PROPERTIES VERSION 3.6.3 SOVERSION 21) target_link_libraries(${mbedtls_target} PUBLIC ${libs} ${mbedx509_target}) + + if(GEN_FILES) + add_dependencies(${mbedcrypto_target} + ${MBEDTLS_TARGET_PREFIX}mbedcrypto_generated_files_target) + add_dependencies(${mbedtls_target} + ${MBEDTLS_TARGET_PREFIX}mbedtls_generated_files_target) + endif() endif(USE_SHARED_MBEDTLS_LIBRARY) foreach(target IN LISTS target_libraries) From 5491fe3ee000efc57e43243d476a2c99f7c657fc Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Wed, 14 May 2025 13:15:36 +0200 Subject: [PATCH 3/3] Add change log Signed-off-by: Ronald Cron --- ChangeLog.d/fix-dependency-on-generated-files.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 ChangeLog.d/fix-dependency-on-generated-files.txt diff --git a/ChangeLog.d/fix-dependency-on-generated-files.txt b/ChangeLog.d/fix-dependency-on-generated-files.txt new file mode 100644 index 0000000000..b3e7e4e16b --- /dev/null +++ b/ChangeLog.d/fix-dependency-on-generated-files.txt @@ -0,0 +1,3 @@ +Bugfix + * Fix potential CMake parallel build failure when building both the static + and shared libraries.