114 lines
3.5 KiB
CMake
114 lines
3.5 KiB
CMake
# Copyright (C) 2020, Inria
|
|
# GRAPHDECO research group, https://team.inria.fr/graphdeco
|
|
# All rights reserved.
|
|
#
|
|
# This software is free for non-commercial, research and evaluation use
|
|
# under the terms of the LICENSE.md file.
|
|
#
|
|
# For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr
|
|
|
|
|
|
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)
|
|
# Get the current remote
|
|
execute_process(
|
|
COMMAND git remote
|
|
WORKING_DIRECTORY ${GIT_DESCRIBE_PATH}
|
|
OUTPUT_VARIABLE GIT_DESCRIBE_GIT_REMOTE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
|
|
# Get the current remote
|
|
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)
|
|
# Get the current working 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)
|
|
# Get the latest abbreviated commit hash of the working branch
|
|
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)
|
|
# Get the 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)
|
|
# Get the version from git describe
|
|
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() |