summaryrefslogtreecommitdiffstats
path: root/Source/CMakeVersionSource.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2010-04-23 14:01:49 (GMT)
committerBrad King <brad.king@kitware.com>2010-04-23 14:01:49 (GMT)
commit0328379411386abc89ba07991f858cdacca926b2 (patch)
tree72dd2d12ced1daa4f2dc1b182089c934e01fdb34 /Source/CMakeVersionSource.cmake
parente49b6eca4f5857bcf7bfc08e34d0797a3400bcf2 (diff)
downloadCMake-0328379411386abc89ba07991f858cdacca926b2.zip
CMake-0328379411386abc89ba07991f858cdacca926b2.tar.gz
CMake-0328379411386abc89ba07991f858cdacca926b2.tar.bz2
Report commit hash in CMake development versions
For builds from Git repositories, add "-g<commit>" to the end of the version number. If the source tree is modified, append "-dirty". For builds from CVS checkouts, add "-cvs-<branch>".
Diffstat (limited to 'Source/CMakeVersionSource.cmake')
-rw-r--r--Source/CMakeVersionSource.cmake37
1 files changed, 37 insertions, 0 deletions
diff --git a/Source/CMakeVersionSource.cmake b/Source/CMakeVersionSource.cmake
new file mode 100644
index 0000000..05e265c
--- /dev/null
+++ b/Source/CMakeVersionSource.cmake
@@ -0,0 +1,37 @@
+# Try to identify the current development source version.
+set(CMake_VERSION_SOURCE "")
+if(EXISTS ${CMake_SOURCE_DIR}/.git/HEAD)
+ find_program(GIT_EXECUTABLE NAMES git git.cmd)
+ mark_as_advanced(GIT_EXECUTABLE)
+ if(GIT_EXECUTABLE)
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=4 HEAD
+ OUTPUT_VARIABLE head
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ WORKING_DIRECTORY ${CMake_SOURCE_DIR}
+ )
+ if(head)
+ set(CMake_VERSION_SOURCE "g${head}")
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
+ WORKING_DIRECTORY ${CMake_SOURCE_DIR}
+ )
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
+ OUTPUT_VARIABLE dirty
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ WORKING_DIRECTORY ${CMake_SOURCE_DIR}
+ )
+ if(dirty)
+ set(CMake_VERSION_SOURCE "${CMake_VERSION_SOURCE}-dirty")
+ endif()
+ endif()
+ endif()
+elseif(EXISTS ${CMake_SOURCE_DIR}/CVS/Repository)
+ file(READ ${CMake_SOURCE_DIR}/CVS/Repository repo)
+ set(branch "")
+ if("${repo}" MATCHES "\\.git/")
+ string(REGEX REPLACE ".*\\.git/([^\r\n]*).*" "-\\1" branch "${repo}")
+ endif()
+ set(CMake_VERSION_SOURCE "cvs${branch}")
+endif()