summaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorMathias Preiner <mathias.preiner@gmail.com>2018-10-15 16:46:17 -0700
committerAina Niemetz <aina.niemetz@gmail.com>2018-10-15 16:46:17 -0700
commit0bc40f92221e5e8c669e2409ff3120d5c2257aec (patch)
tree7e07835cccfa2827ca2f2f98b9eab25b07081655 /src/base
parentd828df78c39000b54c2a7824482e206f6761664f (diff)
cmake: Generate git_versioninfo.cpp on build time. (#2640)
Diffstat (limited to 'src/base')
-rw-r--r--src/base/CMakeLists.txt39
-rw-r--r--src/base/GitInfo.cmake.in35
2 files changed, 39 insertions, 35 deletions
diff --git a/src/base/CMakeLists.txt b/src/base/CMakeLists.txt
index 532ed475d..db8eb8c36 100644
--- a/src/base/CMakeLists.txt
+++ b/src/base/CMakeLists.txt
@@ -1,44 +1,13 @@
#-----------------------------------------------------------------------------#
# Extract info from Git for git_versioninfo.cpp
+# Note: GitInfo.cmake generates git_versioninfo.cpp.
find_package(Git)
-
-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
- execute_process(
- COMMAND ${GIT_EXECUTABLE} -C ${PROJECT_SOURCE_DIR} diff --quiet
- RESULT_VARIABLE GIT_RESULT
- )
- if(NOT "${GIT_RESULT}" STREQUAL "0")
- set(GIT_IS_DIRTY "true")
- endif()
- endif()
-endif()
+configure_file(GitInfo.cmake.in GitInfo.cmake @ONLY)
+add_custom_target(gen-gitinfo
+ COMMAND ${CMAKE_COMMAND} -DGIT_FOUND=${GIT_FOUND} -P GitInfo.cmake)
#-----------------------------------------------------------------------------#
-# Generate git_versioninfo.cpp
-
-configure_file(git_versioninfo.cpp.in git_versioninfo.cpp)
libcvc4_add_sources(
configuration.cpp
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