87 lines
2.5 KiB
CMake
87 lines
2.5 KiB
CMake
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
find_package(Git REQUIRED QUIET)
|
|
if (NOT Git_FOUND)
|
|
message(FATAL_ERROR "Unable to find git, which is needed for versioning")
|
|
endif()
|
|
|
|
function(get_git_dir DIRECTORY OUTPUT_VAR)
|
|
execute_process(
|
|
COMMAND
|
|
${GIT_EXECUTABLE} rev-parse --git-dir
|
|
WORKING_DIRECTORY
|
|
${DIRECTORY}
|
|
RESULT_VARIABLE
|
|
GIT_DIR_RESULT
|
|
OUTPUT_VARIABLE
|
|
GIT_DIR_OUTPUT
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# Allow to fail
|
|
set(${OUTPUT_VAR} ${GIT_DIR_OUTPUT} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(get_git_current_hash DIRECTORY OUTPUT_VAR)
|
|
execute_process(
|
|
COMMAND
|
|
${GIT_EXECUTABLE} rev-parse --verify HEAD
|
|
WORKING_DIRECTORY
|
|
${DIRECTORY}
|
|
RESULT_VARIABLE
|
|
GIT_CURRENT_HASH_RESULT
|
|
OUTPUT_VARIABLE
|
|
GIT_CURRENT_HASH_OUTPUT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
if (NOT ("${GIT_CURRENT_HASH_RESULT}" STREQUAL "0"))
|
|
message(${GIT_CURRENT_HASH_OUTPUT})
|
|
message(FATAL_ERROR "Failed to get ${DIRECTORY} git hash")
|
|
endif()
|
|
|
|
set(${OUTPUT_VAR} ${GIT_CURRENT_HASH_OUTPUT} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(get_git_remote_url DIRECTORY OUTPUT_VAR)
|
|
execute_process(
|
|
COMMAND
|
|
${GIT_EXECUTABLE} config --get remote.origin.url
|
|
RESULT_VARIABLE
|
|
GIT_REMOTE_URL_RESULT
|
|
OUTPUT_VARIABLE
|
|
GIT_REMOTE_URL_OUTPUT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
WORKING_DIRECTORY
|
|
${DIRECTORY}
|
|
)
|
|
|
|
if (NOT ("${GIT_REMOTE_URL_RESULT}" STREQUAL "0"))
|
|
message(${GIT_REMOTE_URL_OUTPUT})
|
|
message(FATAL_ERROR "Failed to get ${DIRECTORY} git remote")
|
|
endif()
|
|
|
|
set(${OUTPUT_VAR} ${GIT_REMOTE_URL_OUTPUT} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(run_git_submodule_foreach CMD DIRECTORY OUTPUT_VALUE)
|
|
execute_process(
|
|
COMMAND
|
|
${GIT_EXECUTABLE} submodule foreach --quiet --recursive "${CMD}"
|
|
RESULT_VARIABLE
|
|
GIT_SUBMODULE_CMD_RESULT
|
|
OUTPUT_VARIABLE
|
|
GIT_SUBMODULE_CMD_OUTPUT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
WORKING_DIRECTORY
|
|
${DIRECTORY}
|
|
)
|
|
|
|
if (NOT ("${GIT_SUBMODULE_CMD_RESULT}" STREQUAL "0"))
|
|
message(${GIT_SUBMODULE_CMD_OUTPUT})
|
|
message(FATAL_ERROR "Failed to run git submodule foreach command: ${CMD} in ${DIRECTORY}")
|
|
endif()
|
|
set(${OUTPUT_VALUE} ${GIT_SUBMODULE_CMD_OUTPUT} PARENT_SCOPE)
|
|
endfunction() |