diff options
author | Slávek Banko <[email protected]> | 2020-05-10 15:50:14 +0200 |
---|---|---|
committer | Slávek Banko <[email protected]> | 2020-05-11 00:45:32 +0200 |
commit | e72aabadf5ddef845a432542176e969fad8a7ef3 (patch) | |
tree | 7ba9ac20619cf2b7f4d462c2ce25b1ab6eb22290 /modules | |
parent | 778522d10450a8a45133c65ae0175224c6abc700 (diff) | |
download | tde-cmake-e72aabadf5ddef845a432542176e969fad8a7ef3.tar.gz tde-cmake-e72aabadf5ddef845a432542176e969fad8a7ef3.zip |
Write metadata to libraries and binaries as a last step.
This prevents concurrency of writing metadata and linking
with other libraries, which could cause FTBFS.
Signed-off-by: Slávek Banko <[email protected]>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/TDEMacros.cmake | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake index 7f4b05a..d5267e2 100644 --- a/modules/TDEMacros.cmake +++ b/modules/TDEMacros.cmake @@ -1114,13 +1114,22 @@ macro( tde_add_library _arg_target ) file( RELATIVE_PATH _target_path "${CMAKE_BINARY_DIR}" "${_target_lib}" ) if( NOT _exclude_from_all ) + # create target for all metadata writes + if( NOT TARGET tdelfeditor-write ) + add_custom_target( tdelfeditor-write + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + DEPENDS ${TDELFEDITOR_EXECUTABLE} + COMMENT "Write metadata to binaries..." + ) + endif( ) add_custom_target( ${_target}+metadata ALL COMMAND ${TDELFEDITOR_EXECUTABLE} -m ${_target_lib} ${ELF_EMBEDDING_METADATA} || true COMMAND ${TDELFEDITOR_EXECUTABLE} -e ${_target_lib} || true COMMENT "Storing SCM metadata in ${_target_path}" - DEPENDS ${_target} ${TDELFEDITOR_EXECUTABLE} + DEPENDS tdelfeditor-write ) + add_dependencies( tdelfeditor-write ${_target} ) else( ) add_custom_command( TARGET ${_target} @@ -1338,6 +1347,14 @@ macro( tde_add_executable _arg_target ) set( ELF_EMBEDDING_METADATA "\"${_target}\" \"${_description}\" \"${_license}\" \"${_copyright}\" \"${_authors}\" \"${_product}\" \"${_organization}\" \"${_version}\" \"${_datetime}\" \"${_target}\" \"${TDE_SCM_MODULE_NAME}\" \"${TDE_SCM_MODULE_REVISION}\" \"${_notes}\"" ) separate_arguments( ELF_EMBEDDING_METADATA ) if( TDELFEDITOR_EXECUTABLE ) + # create target for all metadata writes + if( NOT TARGET tdelfeditor-write ) + add_custom_target( tdelfeditor-write + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + DEPENDS ${TDELFEDITOR_EXECUTABLE} + COMMENT "Write metadata to binaries..." + ) + endif( ) get_filename_component( _target_path ${CMAKE_CURRENT_BINARY_DIR}/${_target} ABSOLUTE ) file( RELATIVE_PATH _target_path "${CMAKE_BINARY_DIR}" "${_target_path}" ) add_custom_target( @@ -1346,8 +1363,9 @@ macro( tde_add_executable _arg_target ) COMMAND ${TDELFEDITOR_EXECUTABLE} -e ${CMAKE_CURRENT_BINARY_DIR}/${_target} || true COMMAND ${TDELFEDITOR_EXECUTABLE} -t ${CMAKE_CURRENT_BINARY_DIR}/${_target} ${_target} || true COMMENT "Storing SCM metadata in ${_target_path}" - DEPENDS ${_target} ${TDELFEDITOR_EXECUTABLE} + DEPENDS tdelfeditor-write ) + add_dependencies( tdelfeditor-write ${_target} ) endif( TDELFEDITOR_EXECUTABLE ) endmacro( tde_add_executable ) |