summaryrefslogtreecommitdiffstats
path: root/cmake/modules/buildtools/FindIncludeWhatYouUse.cmake
blob: b22225ae5c0a5854ed6a8fe3518bdb664c569053 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#.rst:
# FindIncludeWhatYouUse
# ---------------------
# Finds include-what-you-use and sets it up to run along with the compiler for C and CXX.

find_program(IWYU_EXECUTABLE NAMES include-what-you-use iwyu)

if(IWYU_EXECUTABLE)
  execute_process(COMMAND "${IWYU_EXECUTABLE}" --version
                  OUTPUT_VARIABLE IWYU_VERSION
                  OUTPUT_STRIP_TRAILING_WHITESPACE)
  string(REGEX MATCH "[^\n]*include-what-you-use [^\n]*" IWYU_VERSION "${IWYU_VERSION}")
  string(REGEX REPLACE "include-what-you-use ([^ \n\r\t]+).*" "\\1" IWYU_VERSION "${IWYU_VERSION}")
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(IncludeWhatYouUse REQUIRED_VARS IWYU_EXECUTABLE
                                  VERSION_VAR IWYU_VERSION)

if(INCLUDEWHATYOUUSE_FOUND)
  # Supports Unix Makefiles and Ninja
  set(CMAKE_C_INCLUDE_WHAT_YOU_USE "${IWYU_EXECUTABLE}" PARENT_SCOPE)
  set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "${IWYU_EXECUTABLE}" PARENT_SCOPE)
endif()

mark_as_advanced(IWYU_EXECUTABLE)