67 lines
1.9 KiB
CMake
67 lines
1.9 KiB
CMake
# 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()
|