diff --git a/modules/git/commit.cmake b/modules/git/commit.cmake index 9702b65..a2d92d7 100644 --- a/modules/git/commit.cmake +++ b/modules/git/commit.cmake @@ -40,6 +40,27 @@ function(getBranchName OUTPUT_VARIABLE) endif () endfunction() +function(getGitTag OUTPUT_VARIABLE) + find_package(Git QUIET) + if (GIT_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags --always + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_TAG + ERROR_VARIABLE GIT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if (NOT GIT_ERROR) + set(${OUTPUT_VARIABLE} ${GIT_TAG} 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}") @@ -50,6 +71,11 @@ function(addGitBranchDefine TARGET) target_compile_definitions(${TARGET} PRIVATE FGL_GIT_BRANCH="${GIT_BRANCH}") endfunction() +function(addGitTagDefine TARGET) + getGitTag(GIT_TAG) + target_compile_definitions(${TARGET} PRIVATE FGL_GIT_TAG="${GIT_TAG}") +endfunction() + function(getIsDirty OUTPUT_VARIABLE) find_package(Git QUIET) if (GIT_FOUND) @@ -78,10 +104,12 @@ endfunction() function(addGitDirtyDefine TARGET) getIsDirty(GIT_DIRTY) target_compile_definitions(${TARGET} PRIVATE FGL_GIT_DIRTY=${GIT_DIRTY}) + target_compile_definitions(${TARGET} PRIVATE FGL_GIT_IS_DIRTY=1) endfunction() function(AddGitInfo TARGET) addGitCommitDefine(${TARGET}) addGitBranchDefine(${TARGET}) addGitDirtyDefine(${TARGET}) + addGitTagDefine(${TARGET}) endfunction()