mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-08 23:00:07 -06:00
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.
This commit is contained in:
@@ -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}")
|
||||
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}")
|
||||
|
||||
# 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)
|
||||
# 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()
|
||||
else()
|
||||
# No commit information.
|
||||
if(NOT CMake_VERSION_IS_RELEASE)
|
||||
# Generic development version.
|
||||
set(CMake_VERSION "${CMake_VERSION}-git")
|
||||
|
||||
# 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()
|
||||
endif()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user