|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(__git_describe_INCLUDED__) |
|
return() |
|
else() |
|
set(__git_describe_INCLUDED__ ON) |
|
endif() |
|
|
|
find_package(Git) |
|
if(Git_FOUND) |
|
message(STATUS "Git found: ${GIT_EXECUTABLE}") |
|
else() |
|
message(FATAL_ERROR "Git not found. Aborting") |
|
endif() |
|
|
|
macro(git_describe) |
|
cmake_parse_arguments(GIT_DESCRIBE "" "GIT_URL;GIT_BRANCH;GIT_COMMIT_HASH;GIT_TAG;GIT_VERSION;PATH" "" ${ARGN}) |
|
|
|
if(NOT GIT_DESCRIBE_PATH) |
|
set(GIT_DESCRIBE_PATH ${CMAKE_SOURCE_DIR}) |
|
endif() |
|
|
|
if(GIT_DESCRIBE_GIT_URL) |
|
|
|
execute_process( |
|
COMMAND git remote |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE GIT_DESCRIBE_GIT_REMOTE |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
|
|
|
|
execute_process( |
|
COMMAND git remote get-url ${GIT_DESCRIBE_GIT_REMOTE} |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_URL} |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
endif() |
|
|
|
if(GIT_DESCRIBE_GIT_BRANCH) |
|
|
|
execute_process( |
|
COMMAND git rev-parse --abbrev-ref HEAD |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_BRANCH} |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
endif() |
|
|
|
if(GIT_DESCRIBE_GIT_COMMIT_HASH) |
|
|
|
execute_process( |
|
COMMAND git rev-parse HEAD |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_COMMIT_HASH} |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
endif() |
|
|
|
if(GIT_DESCRIBE_GIT_TAG) |
|
|
|
execute_process( |
|
COMMAND git describe --tags --exact-match |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_TAG} |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
endif() |
|
|
|
if(GIT_DESCRIBE_GIT_VERSION) |
|
|
|
execute_process( |
|
COMMAND git describe |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE ${GIT_DESCRIBE_GIT_VERSION} |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
|
|
if(${GIT_DESCRIBE_GIT_VERSION} STREQUAL "") |
|
execute_process( |
|
COMMAND git rev-parse --abbrev-ref HEAD |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE GIT_DESCRIBE_GIT_VERSION_BRANCH |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
execute_process( |
|
COMMAND git log -1 --format=%h |
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH} |
|
OUTPUT_VARIABLE GIT_DESCRIBE_GIT_VERSION_COMMIT |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
ERROR_QUIET |
|
) |
|
|
|
set(${GIT_DESCRIBE_GIT_VERSION} "${GIT_DESCRIBE_GIT_VERSION_BRANCH}-${GIT_DESCRIBE_GIT_VERSION_COMMIT}") |
|
endif() |
|
endif() |
|
|
|
endmacro() |