# We do this via a custom command that re-invokes a cmake script because we need the DEPENDS on .git/index so that we will re-run it (to regenerate the commit tag in the version) whenever the current commit changes. If we used a configure_file directly here, it would only re-run when something else causes cmake to re-run.
set ( VERSIONTAG "${GIT_VERSION}" )
set ( GIT_INDEX_FILE "${PROJECT_SOURCE_DIR}/.git/index" )
if ( EXISTS ${ GIT_INDEX_FILE } AND ( GIT_FOUND OR Git_FOUND ) )
message ( STATUS "Found Git: ${GIT_EXECUTABLE}" )
add_custom_command (
O U T P U T " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c o n s t a n t s / v e r s i o n . c p p "
C O M M A N D " $ { C M A K E _ C O M M A N D } "
" - D " " G I T = $ { G I T _ E X E C U T A B L E } "
" - D " " S R C = $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c o n s t a n t s / v e r s i o n . c p p . i n "
" - D " " D E S T = $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c o n s t a n t s / v e r s i o n . c p p "
" - P " " $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / G e n V e r s i o n . c m a k e "
D E P E N D S " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c o n s t a n t s / v e r s i o n . c p p . i n "
" $ { G I T _ I N D E X _ F I L E } " )
if ( WIN32 )
add_custom_command (
O U T P U T " $ { C M A K E _ B I N A R Y _ D I R } / v e r s i o n . r c "
C O M M A N D " $ { C M A K E _ C O M M A N D } "
" - D " " G I T = $ { G I T _ E X E C U T A B L E } "
" - D " " S R C = $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c o n s t a n t s / v e r s i o n . c p p . i n "
" - D " " D E S T = $ { C M A K E _ B I N A R Y _ D I R } / v e r s i o n . r c "
" - P " " $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / G e n V e r s i o n . c m a k e "
D E P E N D S " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / w i n 3 2 / v e r s i o n . r c . i n "
" $ { G I T _ I N D E X _ F I L E } " )
add_custom_command (
O U T P U T " $ { C M A K E _ B I N A R Y _ D I R } / l o k i n e t _ r e s o u r c e . h "
C O M M A N D " $ { C M A K E _ C O M M A N D } "
" - D " " G I T = $ { G I T _ E X E C U T A B L E } "
" - D " " S R C = $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / w i n 3 2 / r e s o u r c e . h . i n "
" - D " " D E S T = $ { C M A K E _ B I N A R Y _ D I R } / l o k i n e t _ r e s o u r c e . h "
" - P " " $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / G e n V e r s i o n . c m a k e "
D E P E N D S " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / w i n 3 2 / r e s o u r c e . h . i n "
" $ { G I T _ I N D E X _ F I L E } " )
endif ( )
else ( )
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/constants/version.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/constants/version.cpp" @ONLY )
if ( WIN32 )
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/win32/version.rc.in" "${CMAKE_BINARY_DIR}/version.rc" @ONLY )
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/win32/resource.h.in" "${CMAKE_BINARY_DIR}/lokinet_resource.h" @ONLY )
endif ( )
endif ( )
add_custom_target ( genversion_cpp DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/constants/version.cpp" )
if ( WIN32 )
add_custom_target ( genversion_rc DEPENDS "${CMAKE_BINARY_DIR}/version.rc" "${CMAKE_BINARY_DIR}/lokinet_resource.h" )
else ( )
add_custom_target ( genversion_rc )
endif ( )
add_custom_target ( genversion DEPENDS genversion_cpp genversion_rc )