| 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 | |
| 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 |
| 15 | ) |
| 16 | |
| 17 | if(${LLVM_LINK_MODE} STREQUAL "shared") |
| 18 | find_library(CLANG_LIBRARIES |
| 19 | NAMES |
| 20 | libclang-cpp.so.22 |
| 21 | libclang-cpp.so.22.1 |
| 22 | clang-cpp-22.0 |
| 23 | clang-cpp220 |
| 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) |
| 44 | |
| 45 | FIND_AND_ADD_CLANG_LIB(clangFrontendTool) |
| 46 | FIND_AND_ADD_CLANG_LIB(clangCodeGen) |
| 47 | FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerFrontend) |
| 48 | FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCheckers) |
| 49 | FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCore) |
| 50 | FIND_AND_ADD_CLANG_LIB(clangCrossTU) |
| 51 | FIND_AND_ADD_CLANG_LIB(clangFrontend) |
| 52 | FIND_AND_ADD_CLANG_LIB(clangDriver) |
| 53 | FIND_AND_ADD_CLANG_LIB(clangOptions) |
| 54 | FIND_AND_ADD_CLANG_LIB(clangSerialization) |
| 55 | FIND_AND_ADD_CLANG_LIB(clangSema) |
| 56 | FIND_AND_ADD_CLANG_LIB(clangAnalysisLifetimeSafety) |
| 57 | FIND_AND_ADD_CLANG_LIB(clangAnalysis) |
| 58 | FIND_AND_ADD_CLANG_LIB(clangASTMatchers) |
| 59 | FIND_AND_ADD_CLANG_LIB(clangParse) |
| 60 | FIND_AND_ADD_CLANG_LIB(clangAPINotes) |
| 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(clangIndex) |
| 66 | FIND_AND_ADD_CLANG_LIB(clangFormat) |
| 67 | FIND_AND_ADD_CLANG_LIB(clangToolingInclusions) |
| 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 | FIND_AND_ADD_CLANG_LIB(clangBasic) |
| 74 | endif() |
| 75 | |
| 76 | if (MSVC) |
| 77 | set(CLANG_LIBRARIES ${CLANG_LIBRARIES} "version.lib") |
| 78 | endif() |
| 79 | |
| 80 | include(FindPackageHandleStandardArgs) |
| 81 | find_package_handle_standard_args(clang DEFAULT_MSG CLANG_LIBRARIES CLANG_INCLUDE_DIRS) |
| 82 | |
| 83 | mark_as_advanced(CLANG_INCLUDE_DIRS CLANG_LIBRARIES CLANG_LIBDIRS) |