LIEF/cmake/LIEFGit.cmake
2019-11-30 16:14:27 +01:00

68 lines
1.7 KiB
CMake

if(__add_lief_git)
return()
endif()
set(__add_lief_git ON)
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE LIEF_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-list --count ${LIEF_COMMIT_HASH}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE LIEF_COMMIT_COUNT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags HEAD --always
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE LIEF_GIT_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND ${GIT_EXECUTABLE} tag --list --points-at=HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE LIEF_GIT_COMMIT_TAGGED
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE LIEF_GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(COMPARE NOTEQUAL "${LIEF_GIT_COMMIT_TAGGED}" "" LIEF_IS_TAGGED)
STRING(REGEX MATCHALL "([0-9]+)" VERSION_STRING "${LIEF_GIT_TAG}")
message(STATUS "Tagged: ${LIEF_IS_TAGGED}")
if (${LIEF_IS_TAGGED})
message(STATUS "Tag: ${LIEF_GIT_TAG}")
endif()
message(STATUS "Current branch: ${LIEF_GIT_BRANCH}")
if (VERSION_STRING)
list(GET VERSION_STRING 0 LIEF_VERSION_MAJOR)
list(GET VERSION_STRING 1 LIEF_VERSION_MINOR)
list(GET VERSION_STRING 2 LIEF_VERSION_PATCH)
if (NOT ${LIEF_IS_TAGGED})
MATH(EXPR LIEF_VERSION_MINOR "${LIEF_VERSION_MINOR}+1")
set(LIEF_VERSION_PATCH 0)
endif()
else()
set(LIEF_VERSION_MAJOR 0)
set(LIEF_VERSION_MINOR 0)
set(LIEF_VERSION_PATCH 0)
endif()