Imported Upstream version 2.1.10
[platform/upstream/libevent.git] / cmake / VersionViaGit.cmake
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
4 #
5 # Useful for auto-versioning in our CMakeLists
6 #
7 #  EVENT_GIT___VERSION_MAJOR - Major version.
8 #  EVENT_GIT___VERSION_MINOR - Minor version
9 #  EVENT_GIT___VERSION_STAGE - Stage version
10 #
11 # Example usage:
12 #
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}")
18 # endif()
19
20 include(FindGit)
21
22 macro(event_fuzzy_version_from_git)
23         # set our defaults.
24         set(EVENT_GIT___VERSION_MAJOR 2)
25         set(EVENT_GIT___VERSION_MINOR 1)
26         set(EVENT_GIT___VERSION_PATCH 10)
27         set(EVENT_GIT___VERSION_STAGE "beta")
28
29         find_package(Git)
30
31         if (GIT_FOUND)
32                 execute_process(
33                         COMMAND
34                                 ${GIT_EXECUTABLE} describe --abbrev=0
35                         WORKING_DIRECTORY
36                                 ${PROJECT_SOURCE_DIR}
37                         RESULT_VARIABLE
38                                 GITRET
39                         OUTPUT_VARIABLE
40                                 GITVERSION
41                         OUTPUT_STRIP_TRAILING_WHITESPACE
42                 )
43
44                 string(REGEX REPLACE "[\\._-]" ";" VERSION_LIST "${GITVERSION}")
45                 list(LENGTH VERSION_LIST VERSION_LIST_LENGTH)
46
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)
52
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}")
55
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})
61                         endif()
62                 endif()
63         endif()
64 endmacro()