58 lines
1.6 KiB
CMake
58 lines
1.6 KiB
CMake
#.rst:
|
|
#
|
|
# Creates git_info.h in the build directory.
|
|
# This file can be included in sources to print
|
|
# Git status information to the program output
|
|
# for reproducibility reasons.
|
|
|
|
find_package(Git)
|
|
|
|
set(_git_last_commit_hash "unknown")
|
|
set(_git_last_commit_author "unknown")
|
|
set(_git_last_commit_date "unknown")
|
|
set(_git_branch "unknown")
|
|
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-list --max-count=1 --abbrev-commit HEAD
|
|
OUTPUT_VARIABLE _git_last_commit_hash
|
|
ERROR_QUIET
|
|
)
|
|
|
|
if(_git_last_commit_hash)
|
|
string(STRIP ${_git_last_commit_hash} _git_last_commit_hash)
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} log --max-count=1 HEAD
|
|
OUTPUT_VARIABLE _git_last_commit
|
|
ERROR_QUIET
|
|
)
|
|
|
|
if(_git_last_commit)
|
|
string(REGEX MATCH "Author:[ ]*(.+)<" temp "${_git_last_commit}")
|
|
set(_git_last_commit_author ${CMAKE_MATCH_1})
|
|
string(STRIP ${_git_last_commit_author} _git_last_commit_author)
|
|
string(REGEX MATCH "Date:[ ]*(.+(\\+|-)[0-9][0-9][0-9][0-9])" temp "${_git_last_commit}")
|
|
set(_git_last_commit_date ${CMAKE_MATCH_1})
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
|
OUTPUT_VARIABLE _git_branch
|
|
ERROR_QUIET
|
|
)
|
|
string(STRIP ${_git_branch} _git_branch)
|
|
endif()
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_LIST_DIR}/git_info.h.in
|
|
${_target_dir}/git_info.h
|
|
@ONLY
|
|
)
|
|
|
|
unset(_git_last_commit_hash)
|
|
unset(_git_last_commit_author)
|
|
unset(_git_last_commit_date)
|
|
unset(_git_branch)
|