# 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 2) set(EVENT_GIT___VERSION_PATCH 0) set(EVENT_GIT___VERSION_STAGE "alpha-dev") 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()