api/indigo-version.cmake (30 lines of code) (raw):
set(INDIGO_DEFAULT_VERSION "1.29.0-dev.1")
set(INDIGO_MAX_REVISION 1000)
find_package(Git)
if(GIT_EXECUTABLE)
EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} describe --long --tags --match indigo-*
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE INDIGO_FULL_VERSION
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
if (NOT ${INDIGO_FULL_VERSION} STREQUAL "")
string(REGEX REPLACE "indigo-(.+)-(.+)-(.+)" "\\2" INDIGO_REVISION ${INDIGO_FULL_VERSION})
if (${INDIGO_REVISION} GREATER ${INDIGO_MAX_REVISION})
message(SEND_ERROR "Indigo revision ${INDIGO_REVISION} is greater than max revision ${INDIGO_MAX_REVISION}. Please create appropriate version tag" )
endif()
string(REGEX REPLACE "indigo-(.+)-(.+)-(.+)" "\\1.\\2-\\3" INDIGO_FULL_VERSION ${INDIGO_FULL_VERSION})
string(REGEX REPLACE "(.+)-(.+)" "\\1" INDIGO_VERSION ${INDIGO_FULL_VERSION})
else()
set(INDIGO_VERSION "${INDIGO_DEFAULT_VERSION}")
set(INDIGO_FULL_VERSION "${INDIGO_DEFAULT_VERSION}-00000000")
endif()
else()
set(INDIGO_VERSION "${INDIGO_DEFAULT_VERSION}")
set(INDIGO_FULL_VERSION "${INDIGO_DEFAULT_VERSION}-00000000")
endif()
message(STATUS "Indigo full version: " ${INDIGO_FULL_VERSION})
if($ENV{BUILD_NUMBER})
set(INDIGO_BUILD_VERSION $ENV{BUILD_NUMBER})
else()
set(INDIGO_BUILD_VERSION 0)
endif()
set(INDIGO_VERSION_EXT "${INDIGO_FULL_VERSION}")