Merge pull request #22808 from ziglang/fast-gpa
[zig.git] / cmake / Findclang.cmake
bloba95a8c903b67627ff9753fb4b7b76ab84457dd3c
1 # Copyright (c) 2016 Andrew Kelley
2 # This file is MIT licensed.
3 # See http://opensource.org/licenses/MIT
5 # CLANG_FOUND
6 # CLANG_INCLUDE_DIRS
7 # CLANG_LIBRARIES
8 # CLANG_LIBDIRS
10 find_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
17 if(${LLVM_LINK_MODE} STREQUAL "shared")
18   find_library(CLANG_LIBRARIES
19     NAMES
20       libclang-cpp.so.19
21       libclang-cpp.so.19.1
22       clang-cpp-19.0
23       clang-cpp190
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   )
31 else()
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)
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(clangARCMigrate)
64   FIND_AND_ADD_CLANG_LIB(clangRewriteFrontend)
65   FIND_AND_ADD_CLANG_LIB(clangRewrite)
66   FIND_AND_ADD_CLANG_LIB(clangCrossTU)
67   FIND_AND_ADD_CLANG_LIB(clangIndex)
68   FIND_AND_ADD_CLANG_LIB(clangToolingCore)
69   FIND_AND_ADD_CLANG_LIB(clangExtractAPI)
70   FIND_AND_ADD_CLANG_LIB(clangSupport)
71   FIND_AND_ADD_CLANG_LIB(clangInstallAPI)
72   FIND_AND_ADD_CLANG_LIB(clangAST)
73 endif()
75 if (MSVC)
76   set(CLANG_LIBRARIES ${CLANG_LIBRARIES} "version.lib")
77 endif()
79 include(FindPackageHandleStandardArgs)
80 find_package_handle_standard_args(clang DEFAULT_MSG CLANG_LIBRARIES CLANG_INCLUDE_DIRS)
82 mark_as_advanced(CLANG_INCLUDE_DIRS CLANG_LIBRARIES CLANG_LIBDIRS)