summaryrefslogtreecommitdiff
path: root/src/base/GitInfo.cmake.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/GitInfo.cmake.in')
-rw-r--r--src/base/GitInfo.cmake.in35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/base/GitInfo.cmake.in b/src/base/GitInfo.cmake.in
new file mode 100644
index 000000000..2d02095dd
--- /dev/null
+++ b/src/base/GitInfo.cmake.in
@@ -0,0 +1,35 @@
+set(GIT_BUILD "false")
+set(GIT_IS_DIRTY "false")
+set(GIT_SHA1 "")
+set(GIT_BRANCH "")
+
+if(GIT_FOUND)
+ # Get current git branch, result is != 0 if this is not a git repository
+ execute_process(
+ COMMAND @GIT_EXECUTABLE@ -C @PROJECT_SOURCE_DIR@ rev-parse --abbrev-ref HEAD
+ RESULT_VARIABLE GIT_RESULT
+ OUTPUT_VARIABLE GIT_BRANCH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if("${GIT_RESULT}" STREQUAL "0")
+ set(GIT_BUILD "true")
+ # Extract sha1 of HEAD
+ execute_process(
+ COMMAND @GIT_EXECUTABLE@ -C @PROJECT_SOURCE_DIR@ rev-parse HEAD
+ OUTPUT_VARIABLE GIT_SHA1
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ # Result is != 0 if worktree is dirty
+ # Note: git diff HEAD shows both staged and unstaged changes.
+ execute_process(
+ COMMAND @GIT_EXECUTABLE@ -C @PROJECT_SOURCE_DIR@ diff HEAD --quiet
+ RESULT_VARIABLE GIT_RESULT
+ )
+ if(NOT "${GIT_RESULT}" STREQUAL "0")
+ set(GIT_IS_DIRTY "true")
+ endif()
+ endif()
+endif()
+
+configure_file(
+ @CMAKE_CURRENT_SOURCE_DIR@/git_versioninfo.cpp.in git_versioninfo.cpp)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback