| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| #[=======================================================================[.rst: | |
| FindPatch | |
| --------- | |
| .. versionadded:: 3.10 | |
| 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 | |
| NAMES 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) |