53 lines
1.6 KiB
CMake
53 lines
1.6 KiB
CMake
find_package(Git)
|
|
|
|
if (GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} describe --tags --always
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE ENGINE_VERSION
|
|
RESULT_VARIABLE GIT_DESCRIBE_ERROR_CODE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE ENGINE_HASH
|
|
RESULT_VARIABLE GIT_HASH_ERROR_CODE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
OUTPUT_VARIABLE GIT_BRANCH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
set(GIT_DEPS "${CMAKE_SOURCE_DIR}/.git/HEAD")
|
|
if(GIT_BRANCH AND EXISTS "${CMAKE_SOURCE_DIR}/.git/refs/heads/${GIT_BRANCH}")
|
|
list(APPEND GIT_DEPS "${CMAKE_SOURCE_DIR}/.git/refs/heads/${GIT_BRANCH}")
|
|
endif()
|
|
# Optionnel : index pour les modifications stagées
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/.git/index")
|
|
list(APPEND GIT_DEPS "${CMAKE_SOURCE_DIR}/.git/index")
|
|
endif()
|
|
|
|
# On définit la propriété pour le répertoire source.
|
|
set_directory_properties(PROPERTIES CMAKE_CONFIGURE_DEPENDS "${GIT_DEPS}")
|
|
endif()
|
|
# Fallback
|
|
|
|
if (NOT ENGINE_VERSION OR GIT_DESCRIBE_ERROR_CODE)
|
|
set(ENGINE_VERSION "0.0.0")
|
|
message(WARNING "No Git tag found, using default version ${ENGINE_VERSION}, fix this....")
|
|
endif()
|
|
|
|
if (NOT ENGINE_HASH OR GIT_HASH_ERROR_CODE)
|
|
set(ENGINE_HASH "0000000")
|
|
message(WARNING "No Git hash found, using default hash ${ENGINE_HASH}")
|
|
endif()
|
|
|
|
string(REGEX REPLACE "^v" "" ENGINE_VERSION "${ENGINE_VERSION}")
|