summaryrefslogtreecommitdiff
path: root/cmake/MacroVersionFromGit.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/MacroVersionFromGit.cmake')
-rw-r--r--cmake/MacroVersionFromGit.cmake31
1 files changed, 28 insertions, 3 deletions
diff --git a/cmake/MacroVersionFromGit.cmake b/cmake/MacroVersionFromGit.cmake
index d146754..75a1a97 100644
--- a/cmake/MacroVersionFromGit.cmake
+++ b/cmake/MacroVersionFromGit.cmake
@@ -1,7 +1,32 @@
# get the current git version
-execute_process(COMMAND git describe --tags WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE DAEMONVERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND git tag
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE TAG_LIST
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+STRING (REPLACE "\n" ";" TAG_LIST ${TAG_LIST})
+
+set (VERSION_LIST)
+
+foreach (element ${TAG_LIST})
+ STRING (REGEX MATCH "^[0-9]+\\.." SINGLE_VERSION ${element})
+ LIST (APPEND VERSION_LIST ${SINGLE_VERSION})
+endforeach (element)
+
+LIST (REVERSE VERSION_LIST)
+
+LIST (GET VERSION_LIST 0 VERSION_MISSING_MINOR)
+
+execute_process(COMMAND git --no-pager log --pretty=oneline HEAD...${VERSION_MISSING_MINOR}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE COMMIT_LIST
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+STRING (REPLACE "\n" ";" COMMIT_LIST ${COMMIT_LIST})
+
+LIST (LENGTH COMMIT_LIST MINOR_VERSION)
+
+SET (DAEMONVERSION "${VERSION_MISSING_MINOR}.${MINOR_VERSION}")
if (NOT DAEMONVERSION)
#Can be changed via passing -DVERSION="XXX" to cmake