summaryrefslogtreecommitdiff
path: root/Source/CMakeVersion.cmake
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2019-10-11 12:41:11 -0400
committerKyle Edwards <kyle.edwards@kitware.com>2019-10-11 14:32:09 -0400
commit874396a30d8dc85d45176de4ec53dc951179010e (patch)
tree61e6323fdc2f6843059c0fe84c51079f4721bf3f /Source/CMakeVersion.cmake
parentb254b0651ef093476322165f919e0a930534473b (diff)
downloadcmake-874396a30d8dc85d45176de4ec53dc951179010e.tar.gz
CMakeVersion: Add option to disable Git suffix
Distro maintainers who are building from Git with patches added on may want to disable the automatic Git suffixing, as it does not provide any useful information and simply confuses the end user. Add an undocumented CMake_VERSION_NO_GIT variable to disable this.
Diffstat (limited to 'Source/CMakeVersion.cmake')
-rw-r--r--Source/CMakeVersion.cmake88
1 files changed, 45 insertions, 43 deletions
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 092f64d555..9e785daa40 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -19,55 +19,57 @@ else()
set(CMake_VERSION_IS_RELEASE 0)
endif()
-# If this source was exported by 'git archive', use its commit info.
-set(git_info [==[$Format:%h %s$]==])
+if(NOT CMake_VERSION_NO_GIT)
+ # If this source was exported by 'git archive', use its commit info.
+ set(git_info [==[$Format:%h %s$]==])
-# 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}")
+ # 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()
-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}")
+ # 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 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)
+ # 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()