From 48b1e42b64d8c5c47461db1bf0ca3db9ce3fe726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Thu, 2 Apr 2020 19:33:33 +0200 Subject: [PATCH] Store ELF metadata as a separate target instead of the POST_BUILD command. This allows naturally storing ELF metadata also in tdelibs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko --- modules/TDEMacros.cmake | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake index 8bb1d2b..23de3ee 100644 --- a/modules/TDEMacros.cmake +++ b/modules/TDEMacros.cmake @@ -956,19 +956,29 @@ macro( tde_add_library _arg_target ) separate_arguments( ELF_EMBEDDING_METADATA ) if( TDELFEDITOR_EXECUTABLE AND _soname ) if( _version ) - add_custom_command( - TARGET ${_target} - POST_BUILD - COMMAND ${TDELFEDITOR_EXECUTABLE} -m ${CMAKE_CURRENT_BINARY_DIR}/${_soname}.${_version} ${ELF_EMBEDDING_METADATA} || true - COMMAND ${TDELFEDITOR_EXECUTABLE} -e ${CMAKE_CURRENT_BINARY_DIR}/${_soname}.${_version} || true + get_filename_component( _target_lib ${CMAKE_CURRENT_BINARY_DIR}/${_soname}.${_version} ABSOLUTE ) + else( ) + get_filename_component( _target_lib ${CMAKE_CURRENT_BINARY_DIR}/${_soname} ABSOLUTE ) + endif( ) + file( RELATIVE_PATH _target_path "${CMAKE_BINARY_DIR}" "${_target_lib}" ) + + if( NOT _exclude_from_all ) + 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} ) else( ) add_custom_command( TARGET ${_target} POST_BUILD - COMMAND ${TDELFEDITOR_EXECUTABLE} -m ${CMAKE_CURRENT_BINARY_DIR}/${_soname} ${ELF_EMBEDDING_METADATA} || true - COMMAND ${TDELFEDITOR_EXECUTABLE} -e ${CMAKE_CURRENT_BINARY_DIR}/${_soname} || true + COMMAND ${TDELFEDITOR_EXECUTABLE} -m ${_target_lib} ${ELF_EMBEDDING_METADATA} || true + COMMAND ${TDELFEDITOR_EXECUTABLE} -e ${_target_lib} || true + COMMENT "Storing SCM metadata in ${_target_path}" ) + add_dependencies( ${_target} ${TDELFEDITOR_EXECUTABLE} ) endif( ) endif( TDELFEDITOR_EXECUTABLE AND _soname ) @@ -1177,12 +1187,15 @@ 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 ) - add_custom_command( - TARGET ${_target} - POST_BUILD + get_filename_component( _target_path ${CMAKE_CURRENT_BINARY_DIR}/${_target} ABSOLUTE ) + file( RELATIVE_PATH _target_path "${CMAKE_BINARY_DIR}" "${_target_path}" ) + add_custom_target( + ${_target}+metadata ALL COMMAND ${TDELFEDITOR_EXECUTABLE} -m ${CMAKE_CURRENT_BINARY_DIR}/${_target} ${ELF_EMBEDDING_METADATA} || true 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} ) endif( TDELFEDITOR_EXECUTABLE )