thirdParty/PCL 1.12.0/cmake/Modules/FindClangFormat.cmake

80 lines
2.5 KiB
CMake
Raw Normal View History

#
# .rst: FindClangFormat
# ---------------
#
# The module defines the following variables
#
# ``ClangFormat_EXECUTABLE`` Path to clang-format executable
# ``ClangFormat_FOUND`` True if the clang-format executable was found.
# ``ClangFormat_VERSION`` The version of clang-format found
#
# Example usage:
#
# .. code-block:: cmake
#
# find_package(ClangFormat)
# if(ClangFormat_FOUND)
# message("clang-format executable found: ${ClangFormat_EXECUTABLE}\n"
# "version: ${ClangFormat_VERSION}")
# endif()
find_program(ClangFormat_EXECUTABLE
NAMES
# unreleased versions
clang-format-14
clang-format-13
clang-format-12
clang-format-11
# current latest
clang-format-10
clang-format-9
# since clang-format-8, only major version is prefixed
clang-format-8
clang-format-8.0
clang-format-7
clang-format-7.0
clang-format-6.0
clang-format-5.0
clang-format-4.0
clang-format-3.9
clang-format-3.8
clang-format-3.7
clang-format-3.6
clang-format-3.5
clang-format-3.4
clang-format-3.3
clang-format # least priority
DOC "clang-format executable")
mark_as_advanced(ClangFormat_EXECUTABLE)
# Extract version from command "clang-format -version"
if(ClangFormat_EXECUTABLE)
execute_process(COMMAND ${ClangFormat_EXECUTABLE} -version
OUTPUT_VARIABLE clang_format_version
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
set(version_regex "^.*clang-format version ([.0-9]+).*")
if(clang_format_version MATCHES ${version_regex})
# clang_format_version samples:
# * clang-format version 3.9.1-4ubuntu3~16.04.1 (tags/RELEASE_391/rc2)
# * Alpine clang-format version 8.0.0 (tags/RELEASE_800/final) (based on LLVM 8.0.0)
string(REGEX
REPLACE ${version_regex}
"\\1"
ClangFormat_VERSION
"${clang_format_version}")
# ClangFormat_VERSION sample: "3.9.1", "8.0.0"
endif()
unset(clang_format_version)
unset(version_regex)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
ClangFormat
REQUIRED_VARS
ClangFormat_EXECUTABLE
ClangFormat_VERSION
VERSION_VAR
ClangFormat_VERSION
)