|  |  | 
|  |  | 
|  | # Find clang-format | 
|  | # | 
|  | # CLANG_FORMAT_EXECUTABLE   - Path to clang-format executable | 
|  | # CLANG_FORMAT_FOUND        - True if the clang-format executable was found. | 
|  | # CLANG_FORMAT_VERSION      - The version of clang-format found | 
|  | # | 
|  | # Copyright 2009-2020 The VOTCA Development Team (http://www.votca.org) | 
|  | # | 
|  | # Licensed under the Mozilla Public License Version 2.0 (the "License"); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | #     https://www.mozilla.org/en-US/MPL/2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an "AS IS" BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  | # | 
|  |  | 
|  | find_program(CLANG_FORMAT_EXECUTABLE | 
|  | NAMES | 
|  | clang-format-9 | 
|  | clang-format | 
|  | clang-format-11 | 
|  | clang-format-10 | 
|  | clang-format-8 | 
|  | clang-format-7 | 
|  |  | 
|  | DOC "clang-format executable") | 
|  | mark_as_advanced(CLANG_FORMAT_EXECUTABLE) | 
|  |  | 
|  | # Extract version from command "clang-format -version" | 
|  | if(CLANG_FORMAT_EXECUTABLE) | 
|  | execute_process(COMMAND ${CLANG_FORMAT_EXECUTABLE} -version | 
|  | OUTPUT_VARIABLE clang_format_version | 
|  | ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) | 
|  |  | 
|  | if(clang_format_version MATCHES "^.*clang-format version .*") | 
|  | # clang_format_version sample: "clang-format version 3.9.1-4ubuntu3~16.04.1 | 
|  | # (tags/RELEASE_391/rc2)" | 
|  | string(REGEX | 
|  | REPLACE "^.*clang-format version ([.0-9]+).*" | 
|  | "\\1" | 
|  | CLANG_FORMAT_VERSION | 
|  | "${clang_format_version}") | 
|  | # CLANG_FORMAT_VERSION sample: "3.9.1" | 
|  | else() | 
|  | set(CLANG_FORMAT_VERSION 0.0) | 
|  | endif() | 
|  | else() | 
|  | set(CLANG_FORMAT_VERSION 0.0) | 
|  | endif() | 
|  |  | 
|  | include(FindPackageHandleStandardArgs) | 
|  | # handle the QUIETLY and REQUIRED arguments and set CLANG_FORMAT_FOUND to TRUE | 
|  | # if all listed variables are TRUE | 
|  | find_package_handle_standard_args(CLANG_FORMAT REQUIRED_VARS CLANG_FORMAT_EXECUTABLE VERSION_VAR CLANG_FORMAT_VERSION) |