1 # This module defines the following variables utilizing
2 # git to determine the parent tag. And if found the macro
3 # will attempt to parse them in the github tag fomat
5 # Useful for auto-versioning in our CMakeLists
7 # EVENT_GIT___VERSION_MAJOR - Major version.
8 # EVENT_GIT___VERSION_MINOR - Minor version
9 # EVENT_GIT___VERSION_STAGE - Stage version
13 # event_fuzzy_version_from_git()
14 # message("Libvent major=${EVENT_GIT___VERSION_MAJOR}")
15 # message(" minor=${EVENT_GIT___VERSION_MINOR}")
16 # message(" patch=${EVENT_GIT___VERSION_PATCH}")
17 # message(" stage=${EVENT_GIT___VERSION_STAGE}")
22 macro(event_fuzzy_version_from_git)
24 set(EVENT_GIT___VERSION_MAJOR 2)
25 set(EVENT_GIT___VERSION_MINOR 1)
26 set(EVENT_GIT___VERSION_PATCH 11)
27 set(EVENT_GIT___VERSION_STAGE "stable")
34 ${GIT_EXECUTABLE} describe --abbrev=0
41 OUTPUT_STRIP_TRAILING_WHITESPACE
44 string(REGEX REPLACE "[\\._-]" ";" VERSION_LIST "${GITVERSION}")
45 list(LENGTH VERSION_LIST VERSION_LIST_LENGTH)
47 if ((GITRET EQUAL 0) AND (VERSION_LIST_LENGTH EQUAL 5))
48 list(GET VERSION_LIST 1 _MAJOR)
49 list(GET VERSION_LIST 2 _MINOR)
50 list(GET VERSION_LIST 3 _PATCH)
51 list(GET VERSION_LIST 4 _STAGE)
53 set(_DEFAULT_VERSION "${EVENT_GIT___VERSION_MAJOR}.${EVENT_GIT___VERSION_MINOR}.${EVENT_GIT___VERSION_PATCH}-${EVENT_GIT___VERSION_STAGE}")
54 set(_GIT_VERSION "${_MAJOR}.${_MINOR}.${_PATCH}-${_STAGE}")
56 if (${_DEFAULT_VERSION} VERSION_LESS ${_GIT_VERSION})
57 set(EVENT_GIT___VERSION_MAJOR ${_MAJOR})
58 set(EVENT_GIT___VERSION_MINOR ${_MINOR})
59 set(EVENT_GIT___VERSION_PATCH ${_PATCH})
60 set(EVENT_GIT___VERSION_STAGE ${_STAGE})