summaryrefslogtreecommitdiff
path: root/share/cmake-3.10/Modules/FindGit.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'share/cmake-3.10/Modules/FindGit.cmake')
-rw-r--r--share/cmake-3.10/Modules/FindGit.cmake85
1 files changed, 85 insertions, 0 deletions
diff --git a/share/cmake-3.10/Modules/FindGit.cmake b/share/cmake-3.10/Modules/FindGit.cmake
new file mode 100644
index 0000000..fae31eb
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindGit.cmake
@@ -0,0 +1,85 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# FindGit
+# -------
+#
+# The module defines the following variables:
+#
+# ``GIT_EXECUTABLE``
+# Path to Git command-line client.
+# ``Git_FOUND``, ``GIT_FOUND``
+# True if the Git command-line client was found.
+# ``GIT_VERSION_STRING``
+# The version of Git found.
+#
+# Example usage:
+#
+# .. code-block:: cmake
+#
+# find_package(Git)
+# if(Git_FOUND)
+# message("Git found: ${GIT_EXECUTABLE}")
+# endif()
+
+# Look for 'git' or 'eg' (easy git)
+#
+set(git_names git eg)
+
+# Prefer .cmd variants on Windows unless running in a Makefile
+# in the MSYS shell.
+#
+if(CMAKE_HOST_WIN32)
+ if(NOT CMAKE_GENERATOR MATCHES "MSYS")
+ set(git_names git.cmd git eg.cmd eg)
+ # GitHub search path for Windows
+ file(GLOB github_path
+ "$ENV{LOCALAPPDATA}/Github/PortableGit*/cmd"
+ "$ENV{LOCALAPPDATA}/Github/PortableGit*/bin"
+ )
+ # SourceTree search path for Windows
+ set(_git_sourcetree_path "$ENV{LOCALAPPDATA}/Atlassian/SourceTree/git_local/bin")
+ endif()
+endif()
+
+# First search the PATH and specific locations.
+find_program(GIT_EXECUTABLE
+ NAMES ${git_names}
+ PATHS ${github_path} ${_git_sourcetree_path}
+ DOC "Git command line client"
+ )
+
+if(CMAKE_HOST_WIN32)
+ # Now look for installations in Git/ directories under typical installation
+ # prefixes on Windows. Exclude PATH from this search because VS 2017's
+ # command prompt happens to have a PATH entry with a Git/ subdirectory
+ # containing a minimal git not meant for general use.
+ find_program(GIT_EXECUTABLE
+ NAMES ${git_names}
+ PATH_SUFFIXES Git/cmd Git/bin
+ NO_SYSTEM_ENVIRONMENT_PATH
+ DOC "Git command line client"
+ )
+endif()
+
+mark_as_advanced(GIT_EXECUTABLE)
+
+unset(git_names)
+unset(_git_sourcetree_path)
+
+if(GIT_EXECUTABLE)
+ execute_process(COMMAND ${GIT_EXECUTABLE} --version
+ OUTPUT_VARIABLE git_version
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (git_version MATCHES "^git version [0-9]")
+ string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}")
+ endif()
+ unset(git_version)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Git
+ REQUIRED_VARS GIT_EXECUTABLE
+ VERSION_VAR GIT_VERSION_STRING)