cmake: library: Rework and improve the copy of the crypto libraries
Signed-off-by: Ronald Cron <ronald.cron@arm.com>
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index 59e175b..231e74e 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -259,22 +259,49 @@
get_target_property(target_type ${target} TYPE)
if (target_type STREQUAL STATIC_LIBRARY)
add_custom_command(
- TARGET ${mbedtls_target}
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy $<TARGET_FILE:${target}> ${CMAKE_BINARY_DIR}/library)
+ TARGET ${mbedtls_target} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ $<TARGET_FILE:${target}>
+ $<TARGET_FILE_NAME:${target}>
+ )
else()
+ # Copy the crypto shared library from tf-psa-crypto:
+ # - ".so.<VERSION>" on Unix
+ # - ".dylib" on macOS
+ # - ".dll" on Windows
+ # The full path to the file is given by $<TARGET_FILE:${target}>.
+ #
+ # On systems that use .so versioning, also create the symbolic links
+ # ".so.<SOVERSION>" and ".so", which correspond to
+ # $<TARGET_SONAME_FILE_NAME:${target}> and $<TARGET_LINKER_FILE_NAME:${target}>,
+ # respectively.
+ #
+ # On Windows, also copy the ".lib" file, whose full path is
+ # $<TARGET_LINKER_FILE:${target}>.
+
add_custom_command(
- TARGET ${mbedtls_target}
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy $<TARGET_FILE:${target}>
- ${CMAKE_BINARY_DIR}/library/$<TARGET_FILE_NAME:${target}>)
- add_custom_command(
- TARGET ${mbedtls_target}
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy $<TARGET_LINKER_FILE:${target}>
- ${CMAKE_BINARY_DIR}/library/$<TARGET_LINKER_FILE_NAME:${target}>)
+ TARGET ${mbedtls_target} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ $<TARGET_FILE:${target}>
+ $<TARGET_FILE_NAME:${target}>
+ )
+ if(WIN32 AND NOT CYGWIN)
+ add_custom_command(
+ TARGET ${mbedtls_target} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ $<TARGET_LINKER_FILE:${target}>
+ $<TARGET_LINKER_FILE_NAME:${target}>
+ )
+ else()
+ add_custom_command(
+ TARGET ${mbedtls_target} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E create_symlink
+ $<TARGET_FILE_NAME:${target}>
+ $<TARGET_SONAME_FILE_NAME:${target}>
+ COMMAND ${CMAKE_COMMAND} -E create_symlink
+ $<TARGET_SONAME_FILE_NAME:${target}>
+ $<TARGET_LINKER_FILE_NAME:${target}>
+ )
+ endif()
endif()
endforeach(target)