summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/base/CMakeLists.txt39
-rw-r--r--src/base/GitInfo.cmake.in35
3 files changed, 40 insertions, 36 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0ea7a6837..e353d53c5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -708,7 +708,7 @@ target_compile_definitions(cvc4
-D__STDC_FORMAT_MACROS
)
# Add libcvc4 dependencies for generated sources.
-add_dependencies(cvc4 gen-expr gen-options gen-tags gen-theory)
+add_dependencies(cvc4 gen-expr gen-gitinfo gen-options gen-tags gen-theory)
# Add library/include dependencies
if(ENABLE_VALGRIND)
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