Merge pull request #10313 from ronald-cron-arm/dependency-on-generated-files-dev
cmake: library: Fix potential concurrent file generation
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 0000000..b3e7e4e
--- /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.
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index 0875bb9..5b8dc80 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -85,10 +85,17 @@
${CMAKE_CURRENT_SOURCE_DIR}/../framework/scripts/generate_ssl_debug_helpers.py
${tls_error_headers}
)
-else()
- link_to_source(error.c)
- link_to_source(version_features.c)
- link_to_source(ssl_debug_helpers_generated.c)
+
+ add_custom_target(${MBEDTLS_TARGET_PREFIX}mbedx509_generated_files_target
+ DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/error.c
+ )
+
+ add_custom_target(${MBEDTLS_TARGET_PREFIX}mbedtls_generated_files_target
+ DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.c
+ ${CMAKE_CURRENT_BINARY_DIR}/version_features.c
+ )
endif()
if(CMAKE_COMPILER_IS_GNUCC)
@@ -166,6 +173,13 @@
target_compile_options(${mbedtls_static_target} PRIVATE ${LIBS_C_FLAGS})
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(${mbedx509_static_target}
+ ${MBEDTLS_TARGET_PREFIX}mbedx509_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)
@@ -180,6 +194,13 @@
target_compile_options(${mbedtls_target} PRIVATE ${LIBS_C_FLAGS})
set_target_properties(${mbedtls_target} PROPERTIES VERSION 4.0.0 SOVERSION 21)
target_link_libraries(${mbedtls_target} PUBLIC ${libs} ${mbedx509_target})
+
+ if(GEN_FILES)
+ add_dependencies(${mbedx509_target}
+ ${MBEDTLS_TARGET_PREFIX}mbedx509_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)