diff --git a/CMakeLists.txt b/CMakeLists.txt index 3065710ab..17ce09e03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ else() set(VERSION_PATCH ${VERSION_PATCH}-dev) endif() set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") +set(VERSION_STRING_BASE "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH_ORIG}") +set(LAST_RELEASE_COMMIT "e6ad2ace1072160adcf34a254add4447f935268c") MESSAGE(STATUS "*** Will build version ${VERSION_STRING} ***") diff --git a/cmake/Modules/GenerateVersion.cmake b/cmake/Modules/GenerateVersion.cmake index 4a7f183da..c41bdaff3 100644 --- a/cmake/Modules/GenerateVersion.cmake +++ b/cmake/Modules/GenerateVersion.cmake @@ -3,12 +3,19 @@ if(VERSION_EXTRA) set(VERSION_GITHASH "${VERSION_STRING}") else(VERSION_EXTRA) - execute_process(COMMAND git describe --always --tag --dirty + execute_process(COMMAND git rev-list ${LAST_RELEASE_COMMIT}..HEAD --count WORKING_DIRECTORY "${GENERATE_VERSION_SOURCE_DIR}" - OUTPUT_VARIABLE VERSION_GITHASH OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE VERSION_COMMITNUM OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) - if(VERSION_GITHASH) + execute_process(COMMAND git rev-parse --short HEAD --count + WORKING_DIRECTORY "${GENERATE_VERSION_SOURCE_DIR}" + OUTPUT_VARIABLE VERSION_COMMITID OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + + if(VERSION_COMMITNUM AND VERSION_COMMITID) + set(VERSION_GITHASH "${VERSION_STRING_BASE}-${VERSION_COMMITNUM}-g${VERSION_COMMITID}") + message(STATUS "*** Detected git version ${VERSION_GITHASH} ***") else() set(VERSION_GITHASH "${VERSION_STRING}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 929dbacad..1ebe402e3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -347,6 +347,8 @@ add_custom_target(GenerateVersion -D "GENERATE_VERSION_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}" -D "GENERATE_VERSION_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}" -D "VERSION_STRING=${VERSION_STRING}" + -D "VERSION_STRING_BASE=${VERSION_STRING_BASE}" + -D "LAST_RELEASE_COMMIT=${LAST_RELEASE_COMMIT}" -D "VERSION_EXTRA=${VERSION_EXTRA}" -P "${CMAKE_SOURCE_DIR}/cmake/Modules/GenerateVersion.cmake" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")