|
|
@@ -19,55 +19,57 @@ else()
|
|
|
set(CMake_VERSION_IS_RELEASE 0)
|
|
|
endif()
|
|
|
|
|
|
-if(EXISTS ${CMake_SOURCE_DIR}/.git)
|
|
|
- find_package(Git QUIET)
|
|
|
- if(GIT_FOUND)
|
|
|
- macro(_git)
|
|
|
- execute_process(
|
|
|
- COMMAND ${GIT_EXECUTABLE} ${ARGN}
|
|
|
- WORKING_DIRECTORY ${CMake_SOURCE_DIR}
|
|
|
- RESULT_VARIABLE _git_res
|
|
|
- OUTPUT_VARIABLE _git_out OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
- ERROR_VARIABLE _git_err ERROR_STRIP_TRAILING_WHITESPACE
|
|
|
- )
|
|
|
- endmacro()
|
|
|
- endif()
|
|
|
-endif()
|
|
|
-
|
|
|
-# Try to identify the current development source version.
|
|
|
-if(COMMAND _git)
|
|
|
- # Get the commit checked out in this work tree.
|
|
|
- _git(log -n 1 HEAD "--pretty=format:%h %s" --)
|
|
|
- set(git_info "${_git_out}")
|
|
|
-else()
|
|
|
- # Get the commit exported by 'git archive'.
|
|
|
+if(NOT CMake_VERSION_NO_GIT)
|
|
|
+ # If this source was exported by 'git archive', use its commit info.
|
|
|
set(git_info [==[$Format:%h %s$]==])
|
|
|
-endif()
|
|
|
-
|
|
|
-# Extract commit information if available.
|
|
|
-if(git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* (.*)$")
|
|
|
- # Have commit information.
|
|
|
- set(git_hash "${CMAKE_MATCH_1}")
|
|
|
- set(git_subject "${CMAKE_MATCH_2}")
|
|
|
|
|
|
- # If this is not the exact commit of a release, add dev info.
|
|
|
- if(NOT "${git_subject}" MATCHES "^[Cc][Mm]ake ${CMake_VERSION}$")
|
|
|
- set(CMake_VERSION "${CMake_VERSION}-g${git_hash}")
|
|
|
+ # Otherwise, try to identify the current development source version.
|
|
|
+ if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* "
|
|
|
+ AND EXISTS ${CMake_SOURCE_DIR}/.git)
|
|
|
+ find_package(Git QUIET)
|
|
|
+ if(GIT_FOUND)
|
|
|
+ macro(_git)
|
|
|
+ execute_process(
|
|
|
+ COMMAND ${GIT_EXECUTABLE} ${ARGN}
|
|
|
+ WORKING_DIRECTORY ${CMake_SOURCE_DIR}
|
|
|
+ RESULT_VARIABLE _git_res
|
|
|
+ OUTPUT_VARIABLE _git_out OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
+ ERROR_VARIABLE _git_err ERROR_STRIP_TRAILING_WHITESPACE
|
|
|
+ )
|
|
|
+ endmacro()
|
|
|
+ endif()
|
|
|
+ if(COMMAND _git)
|
|
|
+ # Get the commit checked out in this work tree.
|
|
|
+ _git(log -n 1 HEAD "--pretty=format:%h %s" --)
|
|
|
+ set(git_info "${_git_out}")
|
|
|
+ endif()
|
|
|
endif()
|
|
|
|
|
|
- # If this is a work tree, check whether it is dirty.
|
|
|
- if(COMMAND _git)
|
|
|
- _git(update-index -q --refresh)
|
|
|
- _git(diff-index --name-only HEAD --)
|
|
|
- if(_git_out)
|
|
|
- set(CMake_VERSION_IS_DIRTY 1)
|
|
|
+ # Extract commit information if available.
|
|
|
+ if(git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* (.*)$")
|
|
|
+ # Have commit information.
|
|
|
+ set(git_hash "${CMAKE_MATCH_1}")
|
|
|
+ set(git_subject "${CMAKE_MATCH_2}")
|
|
|
+
|
|
|
+ # If this is not the exact commit of a release, add dev info.
|
|
|
+ if(NOT "${git_subject}" MATCHES "^[Cc][Mm]ake ${CMake_VERSION}$")
|
|
|
+ set(CMake_VERSION "${CMake_VERSION}-g${git_hash}")
|
|
|
+ endif()
|
|
|
+
|
|
|
+ # If this is a work tree, check whether it is dirty.
|
|
|
+ if(COMMAND _git)
|
|
|
+ _git(update-index -q --refresh)
|
|
|
+ _git(diff-index --name-only HEAD --)
|
|
|
+ if(_git_out)
|
|
|
+ set(CMake_VERSION_IS_DIRTY 1)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ else()
|
|
|
+ # No commit information.
|
|
|
+ if(NOT CMake_VERSION_IS_RELEASE)
|
|
|
+ # Generic development version.
|
|
|
+ set(CMake_VERSION "${CMake_VERSION}-git")
|
|
|
endif()
|
|
|
- endif()
|
|
|
-else()
|
|
|
- # No commit information.
|
|
|
- if(NOT CMake_VERSION_IS_RELEASE)
|
|
|
- # Generic development version.
|
|
|
- set(CMake_VERSION "${CMake_VERSION}-git")
|
|
|
endif()
|
|
|
endif()
|
|
|
|