pollymc/cmake/GitFunctions.cmake

38 lines
1.0 KiB
CMake

if(__GITFUNCTIONS_CMAKE__)
return()
endif()
set(__GITFUNCTIONS_CMAKE__ TRUE)
find_package(Git QUIET)
include(CMakeParseArguments)
if(GIT_FOUND)
function(git_run)
set(oneValueArgs OUTPUT_VAR DEFAULT)
set(multiValueArgs COMMAND)
cmake_parse_arguments(GIT_RUN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
execute_process(COMMAND ${GIT_EXECUTABLE} ${GIT_RUN_COMMAND}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE GIT_RESULTVAR
OUTPUT_VARIABLE GIT_OUTVAR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(GIT_RESULTVAR EQUAL 0)
set(${GIT_RUN_OUTPUT_VAR} "${GIT_OUTVAR}" PARENT_SCOPE)
else()
set(${GIT_RUN_OUTPUT_VAR} ${GIT_RUN_DEFAULT})
message(STATUS "Failed to run Git: ${GIT_OUTVAR}")
endif()
endfunction()
else()
function(git_run)
set(oneValueArgs OUTPUT_VAR DEFAULT)
set(multiValueArgs COMMAND)
cmake_parse_arguments(GIT_RUN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(${GIT_RUN_OUTPUT_VAR} ${GIT_RUN_DEFAULT})
endfunction(git_run)
endif()