88 lines
2.3 KiB
CMake
88 lines
2.3 KiB
CMake
function(getCommitHash OUTPUT_VARIABLE)
|
|
find_package(Git QUIET)
|
|
if (GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_HASH
|
|
ERROR_VARIABLE GIT_ERROR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if (NOT GIT_ERROR)
|
|
set(${OUTPUT_VARIABLE} ${GIT_HASH} PARENT_SCOPE)
|
|
else ()
|
|
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
|
|
endif ()
|
|
else ()
|
|
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
|
|
endif ()
|
|
endfunction()
|
|
|
|
function(getBranchName OUTPUT_VARIABLE)
|
|
find_package(Git QUIET)
|
|
if (GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_BRANCH
|
|
ERROR_VARIABLE GIT_ERROR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if (NOT GIT_ERROR)
|
|
set(${OUTPUT_VARIABLE} ${GIT_BRANCH} PARENT_SCOPE)
|
|
else ()
|
|
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
|
|
endif ()
|
|
else ()
|
|
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
|
|
endif ()
|
|
endfunction()
|
|
|
|
function(addGitCommitDefine TARGET)
|
|
getCommitHash(GIT_HASH)
|
|
target_compile_definitions(${TARGET} PRIVATE FGL_GIT_COMMIT="${GIT_HASH}")
|
|
endfunction()
|
|
|
|
function(addGitBranchDefine TARGET)
|
|
getBranchName(GIT_BRANCH)
|
|
target_compile_definitions(${TARGET} PRIVATE FGL_GIT_BRANCH="${GIT_BRANCH}")
|
|
endfunction()
|
|
|
|
function(getIsDirty OUTPUT_VARIABLE)
|
|
find_package(Git QUIET)
|
|
if (GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} status --porcelain
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_STATUS
|
|
ERROR_VARIABLE GIT_ERROR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if (NOT GIT_ERROR)
|
|
if (GIT_STATUS)
|
|
set(${OUTPUT_VARIABLE} "1" PARENT_SCOPE)
|
|
else ()
|
|
set(${OUTPUT_VARIABLE} "0" PARENT_SCOPE)
|
|
endif ()
|
|
else ()
|
|
set(${OUTPUT_VARIABLE} "-1" PARENT_SCOPE)
|
|
endif ()
|
|
else ()
|
|
set(${OUTPUT_VARIABLE} "-1" PARENT_SCOPE)
|
|
endif ()
|
|
endfunction()
|
|
|
|
function(addGitDirtyDefine TARGET)
|
|
getIsDirty(GIT_DIRTY)
|
|
target_compile_definitions(${TARGET} PRIVATE FGL_GIT_DIRTY=${GIT_DIRTY})
|
|
endfunction()
|
|
|
|
function(AddGitInfo TARGET)
|
|
addGitCommitDefine(${TARGET})
|
|
addGitBranchDefine(${TARGET})
|
|
addGitDirtyDefine(${TARGET})
|
|
endfunction()
|