Write metadata to libraries and executables using the post-build command,

except when building tdelibs, where a separate target will be used and
writing metadata will be the last step.

This also resolve TDE/tdelibs#80.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
pull/45/head
Slávek Banko 5 years ago
parent 34e3154c44
commit 374fcabb18
No known key found for this signature in database
GPG Key ID: 608F5293A04BE668

@ -1113,7 +1113,7 @@ macro( tde_add_library _arg_target )
endif( ) endif( )
file( RELATIVE_PATH _target_path "${CMAKE_BINARY_DIR}" "${_target_lib}" ) file( RELATIVE_PATH _target_path "${CMAKE_BINARY_DIR}" "${_target_lib}" )
if( NOT _exclude_from_all ) if( TARGET ${TDELFEDITOR_EXECUTABLE} AND NOT _exclude_from_all )
# create target for all metadata writes # create target for all metadata writes
if( NOT TARGET tdelfeditor-write ) if( NOT TARGET tdelfeditor-write )
add_custom_target( tdelfeditor-write add_custom_target( tdelfeditor-write
@ -1138,7 +1138,9 @@ macro( tde_add_library _arg_target )
COMMAND ${TDELFEDITOR_EXECUTABLE} -e ${_target_lib} || true COMMAND ${TDELFEDITOR_EXECUTABLE} -e ${_target_lib} || true
COMMENT "Storing SCM metadata in ${_target_path}" COMMENT "Storing SCM metadata in ${_target_path}"
) )
if( TARGET ${TDELFEDITOR_EXECUTABLE} )
add_dependencies( ${_target} ${TDELFEDITOR_EXECUTABLE} ) add_dependencies( ${_target} ${TDELFEDITOR_EXECUTABLE} )
endif()
endif( ) endif( )
endif( TDELFEDITOR_EXECUTABLE AND _soname ) endif( TDELFEDITOR_EXECUTABLE AND _soname )
@ -1347,6 +1349,9 @@ 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}\"" ) 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 ) separate_arguments( ELF_EMBEDDING_METADATA )
if( TDELFEDITOR_EXECUTABLE ) if( TDELFEDITOR_EXECUTABLE )
get_filename_component( _target_path ${CMAKE_CURRENT_BINARY_DIR}/${_target} ABSOLUTE )
file( RELATIVE_PATH _target_path "${CMAKE_BINARY_DIR}" "${_target_path}" )
if( TARGET ${TDELFEDITOR_EXECUTABLE} )
# create target for all metadata writes # create target for all metadata writes
if( NOT TARGET tdelfeditor-write ) if( NOT TARGET tdelfeditor-write )
add_custom_target( tdelfeditor-write add_custom_target( tdelfeditor-write
@ -1355,17 +1360,24 @@ macro( tde_add_executable _arg_target )
COMMENT "Write metadata to binaries..." COMMENT "Write metadata to binaries..."
) )
endif( ) 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( add_custom_target(
${_target}+metadata ALL ${_target}+metadata ALL
COMMAND ${TDELFEDITOR_EXECUTABLE} -m ${CMAKE_CURRENT_BINARY_DIR}/${_target} ${ELF_EMBEDDING_METADATA} || true 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} -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}" COMMENT "Storing SCM metadata in ${_target_path}"
DEPENDS tdelfeditor-write DEPENDS tdelfeditor-write
) )
add_dependencies( tdelfeditor-write ${_target} ) add_dependencies( tdelfeditor-write ${_target} )
else()
add_custom_command(
TARGET ${_target}
POST_BUILD
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}"
)
endif()
endif( TDELFEDITOR_EXECUTABLE ) endif( TDELFEDITOR_EXECUTABLE )
endmacro( tde_add_executable ) endmacro( tde_add_executable )

Loading…
Cancel
Save