diff options
author | Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com> | 2017-09-01 14:49:46 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-09-01 15:46:28 (GMT) |
commit | 2645cb6208ff62cd64deb9862e3eb4d1a81264b3 (patch) | |
tree | 92d79081b1afa903228cf246922eaced015cdca8 /Modules/FindPatch.cmake | |
parent | 671cc7490ca1dd732cbb3671d4732eb1ee1e180e (diff) | |
download | CMake-2645cb6208ff62cd64deb9862e3eb4d1a81264b3.zip CMake-2645cb6208ff62cd64deb9862e3eb4d1a81264b3.tar.gz CMake-2645cb6208ff62cd64deb9862e3eb4d1a81264b3.tar.bz2 |
FindPatch: Add module to find 'patch' command-line tool
Diffstat (limited to 'Modules/FindPatch.cmake')
-rw-r--r-- | Modules/FindPatch.cmake | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Modules/FindPatch.cmake b/Modules/FindPatch.cmake new file mode 100644 index 0000000..3ebcae9 --- /dev/null +++ b/Modules/FindPatch.cmake @@ -0,0 +1,68 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# FindPatch +# --------- +# +# The module defines the following variables: +# +# ``Patch_EXECUTABLE`` +# Path to patch command-line executable. +# ``Patch_FOUND`` +# True if the patch command-line executable was found. +# +# The following :prop_tgt:`IMPORTED` targets are also defined: +# +# ``Patch::patch`` +# The command-line executable. +# +# Example usage: +# +# .. code-block:: cmake +# +# find_package(Patch) +# if(Patch_FOUND) +# message("Patch found: ${Patch_EXECUTABLE}") +# endif() + +set(_doc "Patch command line executable") +set(_patch_path ) + +if(CMAKE_HOST_WIN32) + set(_patch_path + "$ENV{LOCALAPPDATA}/Programs/Git/bin" + "$ENV{LOCALAPPDATA}/Programs/Git/usr/bin" + "$ENV{APPDATA}/Programs/Git/bin" + "$ENV{APPDATA}/Programs/Git/usr/bin" + ) +endif() + +# First search the PATH +find_program(Patch_EXECUTABLE + NAME patch + PATHS ${_patch_path} + DOC ${_doc} + ) + +if(CMAKE_HOST_WIN32) + # Now look for installations in Git/ directories under typical installation + # prefixes on Windows. + find_program(Patch_EXECUTABLE + NAMES patch + PATH_SUFFIXES Git/usr/bin Git/bin GnuWin32/bin + DOC ${_doc} + ) +endif() + +if(Patch_EXECUTABLE AND NOT TARGET Patch::patch) + add_executable(Patch::patch IMPORTED) + set_property(TARGET Patch::patch PROPERTY IMPORTED_LOCATION ${Patch_EXECUTABLE}) +endif() + +unset(_patch_path) +unset(_doc) + +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) +find_package_handle_standard_args(Patch + REQUIRED_VARS Patch_EXECUTABLE) |