[cmake] replace git diff logic with git describe --dirty

The --dirty argument of git describe performs the same function as the
now-removed git diff logic.

It will add its argument (default '-dirty') to the end of the revision.

Providing '+' as the argument replicates old behavior.
This commit is contained in:
Jonathan Rubenstein 2020-12-08 11:00:40 -05:00 committed by Geoffrey McRae
parent 9f787777b5
commit 57a5488ac2

View File

@ -1,26 +1,18 @@
execute_process(
COMMAND git describe --always --long --abbrev=10 --tags
COMMAND git describe --always --long --abbrev=10 --dirty=+ --tags
WORKING_DIRECTORY "${PROJECT_TOP}"
OUTPUT_VARIABLE GIT_REV
ERROR_QUIET)
if (NOT "${GIT_REV}" STREQUAL "")
execute_process(
COMMAND bash -c "git diff --quiet --exit-code && git diff --cached --quiet --exit-code || echo +"
WORKING_DIRECTORY "${PROJECT_TOP}"
OUTPUT_VARIABLE GIT_DIFF)
else()
if ("${GIT_REV}" STREQUAL "")
if (EXISTS ${PROJECT_TOP}/VERSION)
file(READ ${PROJECT_TOP}/VERSION GIT_REV)
else()
set(GIT_REV "UNKNOWN")
set(GIT_DIFF "")
endif()
endif()
string(STRIP "${GIT_REV}" GIT_REV)
string(STRIP "${GIT_DIFF}" GIT_DIFF)
set(GIT_VERSION "${GIT_REV}${GIT_DIFF}")
string(STRIP "${GIT_REV}" GIT_VERSION)
set(BUILD_VERSION "const char * BUILD_VERSION = \"${GIT_VERSION}\";")
if(EXISTS "${CMAKE_BINARY_DIR}/version.c")