| # This module defines the following variables utilizing |
| # git to determine the parent tag. And if found the macro |
| # will attempt to parse them in the github tag fomat |
| # |
| # Useful for auto-versioning in our CMakeLists |
| # |
| # EVENT_GIT___VERSION_MAJOR - Major version. |
| # EVENT_GIT___VERSION_MINOR - Minor version |
| # EVENT_GIT___VERSION_STAGE - Stage version |
| # |
| # Example usage: |
| # |
| # event_fuzzy_version_from_git() |
| # message("Libvent major=${EVENT_GIT___VERSION_MAJOR}") |
| # message(" minor=${EVENT_GIT___VERSION_MINOR}") |
| # message(" patch=${EVENT_GIT___VERSION_PATCH}") |
| # message(" stage=${EVENT_GIT___VERSION_STAGE}") |
| # endif() |
| |
| include(FindGit) |
| |
| macro(event_fuzzy_version_from_git) |
| # set our defaults. |
| set(EVENT_GIT___VERSION_MAJOR 2) |
| set(EVENT_GIT___VERSION_MINOR 1) |
| set(EVENT_GIT___VERSION_PATCH 12) |
| set(EVENT_GIT___VERSION_STAGE "stable") |
| |
| find_package(Git) |
| |
| if (GIT_FOUND) |
| execute_process( |
| COMMAND |
| ${GIT_EXECUTABLE} describe --abbrev=0 --always |
| WORKING_DIRECTORY |
| ${PROJECT_SOURCE_DIR} |
| RESULT_VARIABLE |
| GITRET |
| OUTPUT_VARIABLE |
| GITVERSION |
| OUTPUT_STRIP_TRAILING_WHITESPACE |
| ) |
| |
| string(REGEX REPLACE "[\\._-]" ";" VERSION_LIST "${GITVERSION}") |
| if(VERSION_LIST) |
| list(LENGTH VERSION_LIST VERSION_LIST_LENGTH) |
| endif() |
| |
| if ((GITRET EQUAL 0) AND (VERSION_LIST_LENGTH EQUAL 5)) |
| list(GET VERSION_LIST 1 _MAJOR) |
| list(GET VERSION_LIST 2 _MINOR) |
| list(GET VERSION_LIST 3 _PATCH) |
| list(GET VERSION_LIST 4 _STAGE) |
| |
| set(_DEFAULT_VERSION "${EVENT_GIT___VERSION_MAJOR}.${EVENT_GIT___VERSION_MINOR}.${EVENT_GIT___VERSION_PATCH}-${EVENT_GIT___VERSION_STAGE}") |
| set(_GIT_VERSION "${_MAJOR}.${_MINOR}.${_PATCH}-${_STAGE}") |
| |
| if (${_DEFAULT_VERSION} VERSION_LESS ${_GIT_VERSION}) |
| set(EVENT_GIT___VERSION_MAJOR ${_MAJOR}) |
| set(EVENT_GIT___VERSION_MINOR ${_MINOR}) |
| set(EVENT_GIT___VERSION_PATCH ${_PATCH}) |
| set(EVENT_GIT___VERSION_STAGE ${_STAGE}) |
| endif() |
| endif() |
| endif() |
| endmacro() |