aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2026-04-20 12:50:39 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2026-04-21 12:22:04 -0400
commit7f4918f1f17b0ddde6d1a8435e63f5f94c6dd065 (patch)
tree2981bfd281eaeb91e631fe037767decd72a85aab /cmake
parente05702d1818088439fd017786a036103062db358 (diff)
downloadstasis-7f4918f1f17b0ddde6d1a8435e63f5f94c6dd065.tar.gz
Generate version string based on repository information
Diffstat (limited to 'cmake')
-rw-r--r--cmake/GitVersion.cmake43
1 files changed, 43 insertions, 0 deletions
diff --git a/cmake/GitVersion.cmake b/cmake/GitVersion.cmake
new file mode 100644
index 0000000..7280510
--- /dev/null
+++ b/cmake/GitVersion.cmake
@@ -0,0 +1,43 @@
+function(get_version_from_git)
+ find_package(Git QUIET)
+ if(NOT Git_FOUND)
+ message(WARNING "Git not found. Setting fallback version.")
+ set(PROJECT_VERSION "0.0.0")
+ set(PROJECT_VERSION ${PROJECT_VERSION} PARENT_SCOPE)
+ set(PROJECT_VERSION_BRANCH "unknown")
+ set(PROJECT_VERSION_BRANCH ${PROJECT_VERSION_BRANCH} PARENT_SCOPE)
+ return()
+ endif()
+
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} describe --first-parent --long --dirty --tags --always
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE GIT_TAG
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ RESULT_VARIABLE GIT_RESULT
+ )
+ if(NOT GIT_RESULT EQUAL 0)
+ message(WARNING "Failed to get git describe info")
+ return()
+ endif()
+ message(${GIT_TAG})
+
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE GIT_BRANCH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ RESULT_VARIABLE GIT_RESULT
+ )
+ if(NOT GIT_RESULT EQUAL 0)
+ message(WARNING "Failed to get git branch")
+ return()
+ endif()
+ message(${GIT_BRANCH})
+
+ string(REGEX REPLACE "^v" "" CLEAN_TAG "${GIT_TAG}")
+ set(PROJECT_VERSION ${CLEAN_TAG})
+ set(PROJECT_VERSION ${CLEAN_TAG} PARENT_SCOPE)
+ set(PROJECT_VERSION_BRANCH ${GIT_BRANCH})
+ set(PROJECT_VERSION_BRANCH ${GIT_BRANCH} PARENT_SCOPE)
+endfunction() \ No newline at end of file