summaryrefslogtreecommitdiff
path: root/cmake/MacroVersionFromGit.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/MacroVersionFromGit.cmake')
-rw-r--r--cmake/MacroVersionFromGit.cmake35
1 files changed, 32 insertions, 3 deletions
diff --git a/cmake/MacroVersionFromGit.cmake b/cmake/MacroVersionFromGit.cmake
index d146754..40c56e7 100644
--- a/cmake/MacroVersionFromGit.cmake
+++ b/cmake/MacroVersionFromGit.cmake
@@ -1,7 +1,36 @@
# 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)
+
+IF(TAG_LIST)
+
+ 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}")
+
+ENDIF(TAG_LIST)
if (NOT DAEMONVERSION)
#Can be changed via passing -DVERSION="XXX" to cmake