# --------------- get git revision info --------------- list(APPEND CMAKE_MODULE_PATH "${PASTIS_SOURCE_DIR}/cmake/cmake-modules") include(GetGitRevisionDescription) set(HAS_PASTIS_GIT_INFO "TRUE") find_package(Git QUIET) if(GIT_FOUND) execute_process( COMMAND "${GIT_EXECUTABLE}" describe "--abbrev=0" WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}" OUTPUT_VARIABLE PASTIS_GIT_TAG RESULT_VARIABLE FOUND_PASTIS_GIT_INFO OUTPUT_STRIP_TRAILING_WHITESPACE) if(FOUND_PASTIS_GIT_INFO EQUAL 0) execute_process( COMMAND "${GIT_EXECUTABLE}" reflog -1 "--format=%H" WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}" OUTPUT_VARIABLE PASTIS_GIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND "${GIT_EXECUTABLE}" symbolic-ref HEAD WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}" OUTPUT_VARIABLE PASTIS_GIT_HEAD OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}" RESULT_VARIABLE STATE OUTPUT_STRIP_TRAILING_WHITESPACE) if(STATE EQUAL 0) set(PASTIS_GIT_HAS_LOCAL_CHANGES "CLEAN") set(PASTIS_GIT_IS_CLEAN true) else() set(PASTIS_GIT_IS_CLEAN false) set(PASTIS_GIT_HAS_LOCAL_CHANGES "DIRTY") endif() else() unset(HAS_PASTIS_GIT_INFO) endif() else() unset(HAS_PASTIS_GIT_INFO) endif() string(FIND "${PASTIS_GIT_TAG}" "${CMAKE_PASTIS_VERSION}" FOUND_VERSION_SUBSTR) if("${FOUND_VERSION_SUBSTR}" STREQUAL "-1") message("") message ("###### CMake code version ${CMAKE_PASTIS_VERSION} and") message ("###### git revision info ${PASTIS_GIT_TAG} do not match!") message("") endif() # Generates revision header file candidate configure_file("${PASTIS_SOURCE_DIR}/utils/pastis_git_revision.hpp.in" "${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision" @ONLY)