38 lines
1.0 KiB
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()
|