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)