1*b50261e2SCy Schubert# This module defines the following variables utilizing 2*b50261e2SCy Schubert# git to determine the parent tag. And if found the macro 3*b50261e2SCy Schubert# will attempt to parse them in the github tag fomat 4*b50261e2SCy Schubert# 5*b50261e2SCy Schubert# Useful for auto-versioning in our CMakeLists 6*b50261e2SCy Schubert# 7*b50261e2SCy Schubert# EVENT_GIT___VERSION_MAJOR - Major version. 8*b50261e2SCy Schubert# EVENT_GIT___VERSION_MINOR - Minor version 9*b50261e2SCy Schubert# EVENT_GIT___VERSION_STAGE - Stage version 10*b50261e2SCy Schubert# 11*b50261e2SCy Schubert# Example usage: 12*b50261e2SCy Schubert# 13*b50261e2SCy Schubert# event_fuzzy_version_from_git() 14*b50261e2SCy Schubert# message("Libvent major=${EVENT_GIT___VERSION_MAJOR}") 15*b50261e2SCy Schubert# message(" minor=${EVENT_GIT___VERSION_MINOR}") 16*b50261e2SCy Schubert# message(" patch=${EVENT_GIT___VERSION_PATCH}") 17*b50261e2SCy Schubert# message(" stage=${EVENT_GIT___VERSION_STAGE}") 18*b50261e2SCy Schubert# endif() 19*b50261e2SCy Schubert 20*b50261e2SCy Schubertinclude(FindGit) 21*b50261e2SCy Schubert 22*b50261e2SCy Schubertmacro(event_fuzzy_version_from_git) 23*b50261e2SCy Schubert # set our defaults. 24*b50261e2SCy Schubert set(EVENT_GIT___VERSION_MAJOR 2) 25*b50261e2SCy Schubert set(EVENT_GIT___VERSION_MINOR 1) 26*b50261e2SCy Schubert set(EVENT_GIT___VERSION_PATCH 12) 27*b50261e2SCy Schubert set(EVENT_GIT___VERSION_STAGE "stable") 28*b50261e2SCy Schubert 29*b50261e2SCy Schubert find_package(Git) 30*b50261e2SCy Schubert 31*b50261e2SCy Schubert if (GIT_FOUND) 32*b50261e2SCy Schubert execute_process( 33*b50261e2SCy Schubert COMMAND 34*b50261e2SCy Schubert ${GIT_EXECUTABLE} describe --abbrev=0 --always 35*b50261e2SCy Schubert WORKING_DIRECTORY 36*b50261e2SCy Schubert ${PROJECT_SOURCE_DIR} 37*b50261e2SCy Schubert RESULT_VARIABLE 38*b50261e2SCy Schubert GITRET 39*b50261e2SCy Schubert OUTPUT_VARIABLE 40*b50261e2SCy Schubert GITVERSION 41*b50261e2SCy Schubert OUTPUT_STRIP_TRAILING_WHITESPACE 42*b50261e2SCy Schubert ) 43*b50261e2SCy Schubert 44*b50261e2SCy Schubert string(REGEX REPLACE "[\\._-]" ";" VERSION_LIST "${GITVERSION}") 45*b50261e2SCy Schubert if(VERSION_LIST) 46*b50261e2SCy Schubert list(LENGTH VERSION_LIST VERSION_LIST_LENGTH) 47*b50261e2SCy Schubert endif() 48*b50261e2SCy Schubert 49*b50261e2SCy Schubert if ((GITRET EQUAL 0) AND (VERSION_LIST_LENGTH EQUAL 5)) 50*b50261e2SCy Schubert list(GET VERSION_LIST 1 _MAJOR) 51*b50261e2SCy Schubert list(GET VERSION_LIST 2 _MINOR) 52*b50261e2SCy Schubert list(GET VERSION_LIST 3 _PATCH) 53*b50261e2SCy Schubert list(GET VERSION_LIST 4 _STAGE) 54*b50261e2SCy Schubert 55*b50261e2SCy Schubert set(_DEFAULT_VERSION "${EVENT_GIT___VERSION_MAJOR}.${EVENT_GIT___VERSION_MINOR}.${EVENT_GIT___VERSION_PATCH}-${EVENT_GIT___VERSION_STAGE}") 56*b50261e2SCy Schubert set(_GIT_VERSION "${_MAJOR}.${_MINOR}.${_PATCH}-${_STAGE}") 57*b50261e2SCy Schubert 58*b50261e2SCy Schubert if (${_DEFAULT_VERSION} VERSION_LESS ${_GIT_VERSION}) 59*b50261e2SCy Schubert set(EVENT_GIT___VERSION_MAJOR ${_MAJOR}) 60*b50261e2SCy Schubert set(EVENT_GIT___VERSION_MINOR ${_MINOR}) 61*b50261e2SCy Schubert set(EVENT_GIT___VERSION_PATCH ${_PATCH}) 62*b50261e2SCy Schubert set(EVENT_GIT___VERSION_STAGE ${_STAGE}) 63*b50261e2SCy Schubert endif() 64*b50261e2SCy Schubert endif() 65*b50261e2SCy Schubert endif() 66*b50261e2SCy Schubertendmacro() 67