diff --git a/cmake/Version.cmake b/cmake/Version.cmake index a8b25c6cb..2007571d3 100644 --- a/cmake/Version.cmake +++ b/cmake/Version.cmake @@ -22,14 +22,18 @@ if(STRAWBERRY_VERSION_PRERELEASE) set(STRAWBERRY_VERSION_PACKAGE "${STRAWBERRY_VERSION_PACKAGE}${STRAWBERRY_VERSION_PRERELEASE}") endif(STRAWBERRY_VERSION_PRERELEASE) -find_program(GIT_EXECUTABLE git) +if(INCLUDE_GIT_REVISION) + + find_program(GIT_EXECUTABLE git) + if(GIT_EXECUTABLE-NOTFOUND) + message(FATAL_ERROR "Misssing GIT executable." ) + endif() -if(NOT GIT_EXECUTABLE-NOTFOUND) # Get the current working branch execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - RESULT_VARIABLE GIT_INFO_RESULT + RESULT_VARIABLE GIT_CMD_RESULT_BRANCH OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET @@ -38,36 +42,39 @@ if(NOT GIT_EXECUTABLE-NOTFOUND) execute_process( COMMAND ${GIT_EXECUTABLE} describe --long --tags --always WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - RESULT_VARIABLE GIT_INFO_RESULT + RESULT_VARIABLE GIT_CMD_RESULT_REVISION OUTPUT_VARIABLE GIT_REVISION OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) -endif() -if(${GIT_INFO_RESULT} EQUAL 0) - set(HAS_GIT_REVISION ON) + if(NOT ${GIT_CMD_RESULT_REVISION} EQUAL 0) + message(FATAL_ERROR "GIT command failed to get revision string '${GIT_REVISION}'") + endif() + string(REGEX REPLACE "^(.+)-([0-9]+)-(g[a-f0-9]+)$" "\\1;\\2;\\3" GIT_PARTS ${GIT_REVISION}) if(NOT GIT_PARTS) message(FATAL_ERROR "Failed to parse git revision string '${GIT_REVISION}'") - endif(NOT GIT_PARTS) + endif() list(LENGTH GIT_PARTS GIT_PARTS_LENGTH) - if(GIT_PARTS_LENGTH EQUAL 3) - list(GET GIT_PARTS 0 GIT_TAGNAME) - list(GET GIT_PARTS 1 GIT_COMMITCOUNT) - list(GET GIT_PARTS 2 GIT_SHA1) - set(HAS_GIT_REVISION ON) - endif(GIT_PARTS_LENGTH EQUAL 3) -endif(${GIT_INFO_RESULT} EQUAL 0) + if(NOT GIT_PARTS_LENGTH EQUAL 3) + message(FATAL_ERROR "Failed to parse git revision string '${GIT_REVISION}'") + endif() + + list(GET GIT_PARTS 0 GIT_TAGNAME) + list(GET GIT_PARTS 1 GIT_COMMITCOUNT) + list(GET GIT_PARTS 2 GIT_SHA1) + + set(HAS_GIT_REVISION ON) -if(INCLUDE_GIT_REVISION AND HAS_GIT_REVISION) set(STRAWBERRY_VERSION_DISPLAY "${GIT_REVISION}") - set(STRAWBERRY_VERSION_PACKAGE "${GIT_REVISION}") + set(STRAWBERRY_VERSION_PACKAGE "${GIT_TAGNAME}.${GIT_COMMITCOUNT}.${GIT_SHA1}") set(STRAWBERRY_VERSION_RPM_V "${GIT_TAGNAME}") set(STRAWBERRY_VERSION_RPM_R "2.${GIT_COMMITCOUNT}.${GIT_SHA1}") -endif(INCLUDE_GIT_REVISION AND HAS_GIT_REVISION) + +endif() message(STATUS "Strawberry Version:") message(STATUS "Display: ${STRAWBERRY_VERSION_DISPLAY}")