master
 1# Copyright (c) 2016 Andrew Kelley
 2# This file is MIT licensed.
 3# See http://opensource.org/licenses/MIT
 4
 5# CLANG_FOUND
 6# CLANG_INCLUDE_DIRS
 7# CLANG_LIBRARIES
 8# CLANG_LIBDIRS
 9
10find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
11  HINTS ${LLVM_INCLUDE_DIRS}
12  # Only look for Clang next to LLVM or in { CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_FRAMEWORK_PATH }
13  NO_SYSTEM_ENVIRONMENT_PATH
14  NO_CMAKE_SYSTEM_PATH
15)
16
17if(${LLVM_LINK_MODE} STREQUAL "shared")
18  find_library(CLANG_LIBRARIES
19    NAMES
20      libclang-cpp.so.21
21      libclang-cpp.so.21.1
22      clang-cpp-21.0
23      clang-cpp210
24      clang-cpp
25    NAMES_PER_DIR
26    HINTS "${LLVM_LIBDIRS}"
27    # Only look for Clang next to LLVM or in { CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_FRAMEWORK_PATH }
28    NO_SYSTEM_ENVIRONMENT_PATH
29    NO_CMAKE_SYSTEM_PATH
30  )
31else()
32  macro(FIND_AND_ADD_CLANG_LIB _libname_)
33    string(TOUPPER ${_libname_} _prettylibname_)
34    find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} NAMES_PER_DIR
35      HINTS "${LLVM_LIBDIRS}"
36      # Only look for Clang next to LLVM or in { CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_FRAMEWORK_PATH }
37      NO_SYSTEM_ENVIRONMENT_PATH
38      NO_CMAKE_SYSTEM_PATH
39    )
40    if(CLANG_${_prettylibname_}_LIB)
41      set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_${_prettylibname_}_LIB})
42    endif()
43  endmacro(FIND_AND_ADD_CLANG_LIB)
44
45  FIND_AND_ADD_CLANG_LIB(clangFrontendTool)
46  FIND_AND_ADD_CLANG_LIB(clangCodeGen)
47  FIND_AND_ADD_CLANG_LIB(clangFrontend)
48  FIND_AND_ADD_CLANG_LIB(clangDriver)
49  FIND_AND_ADD_CLANG_LIB(clangSerialization)
50  FIND_AND_ADD_CLANG_LIB(clangSema)
51  FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerFrontend)
52  FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCheckers)
53  FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCore)
54  FIND_AND_ADD_CLANG_LIB(clangAnalysis)
55  FIND_AND_ADD_CLANG_LIB(clangASTMatchers)
56  FIND_AND_ADD_CLANG_LIB(clangAST)
57  FIND_AND_ADD_CLANG_LIB(clangParse)
58  FIND_AND_ADD_CLANG_LIB(clangSema)
59  FIND_AND_ADD_CLANG_LIB(clangAPINotes)
60  FIND_AND_ADD_CLANG_LIB(clangBasic)
61  FIND_AND_ADD_CLANG_LIB(clangEdit)
62  FIND_AND_ADD_CLANG_LIB(clangLex)
63  FIND_AND_ADD_CLANG_LIB(clangRewriteFrontend)
64  FIND_AND_ADD_CLANG_LIB(clangRewrite)
65  FIND_AND_ADD_CLANG_LIB(clangCrossTU)
66  FIND_AND_ADD_CLANG_LIB(clangIndex)
67  FIND_AND_ADD_CLANG_LIB(clangToolingCore)
68  FIND_AND_ADD_CLANG_LIB(clangExtractAPI)
69  FIND_AND_ADD_CLANG_LIB(clangSupport)
70  FIND_AND_ADD_CLANG_LIB(clangInstallAPI)
71  FIND_AND_ADD_CLANG_LIB(clangAST)
72endif()
73
74if (MSVC)
75  set(CLANG_LIBRARIES ${CLANG_LIBRARIES} "version.lib")
76endif()
77
78include(FindPackageHandleStandardArgs)
79find_package_handle_standard_args(clang DEFAULT_MSG CLANG_LIBRARIES CLANG_INCLUDE_DIRS)
80
81mark_as_advanced(CLANG_INCLUDE_DIRS CLANG_LIBRARIES CLANG_LIBDIRS)