Warning, /sdk/clazy/cmake/FindClang.cmake is written in an unsupported language. File is not indexed.
0001 # Detect Clang libraries 0002 # 0003 # Defines the following variables: 0004 # CLANG_FOUND - True if Clang was found 0005 # CLANG_INCLUDE_DIRS - Where to find Clang includes 0006 # CLANG_LIBRARY_DIRS - Where to find Clang libraries 0007 # 0008 # CLANG_LIBCLANG_LIB - Libclang C library 0009 # 0010 # CLANG_CLANGFRONTEND_LIB - Clang Frontend (C++) Library 0011 # CLANG_CLANGDRIVER_LIB - Clang Driver (C++) Library 0012 # ... 0013 # 0014 # CLANG_LIBS - All the Clang C++ libraries 0015 # 0016 # Uses the same include and library paths detected by FindLLVM.cmake 0017 # 0018 # See http://clang.llvm.org/docs/InternalsManual.html for full list of libraries 0019 0020 #============================================================================= 0021 # SPDX-FileCopyrightText: 2014-2015 Kevin Funk <kfunk@kde.org> 0022 # 0023 # SPDX-License-Identifier: BSD-2-Clause 0024 #============================================================================= 0025 0026 if (${Clang_FIND_REQUIRED}) 0027 find_package(LLVM ${Clang_FIND_VERSION} REQUIRED) 0028 else () 0029 find_package(LLVM ${Clang_FIND_VERSION}) 0030 endif () 0031 0032 set(CLANG_FOUND FALSE) 0033 0034 if (LLVM_FOUND AND LLVM_LIBRARY_DIRS) 0035 macro(FIND_CLANG_LIB _libname_) 0036 string(TOUPPER ${_libname_} _prettylibname_) 0037 find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} HINTS ${LLVM_LIBRARY_DIRS}) 0038 endmacro(FIND_CLANG_LIB) 0039 macro(FIND_AND_ADD_CLANG_LIB _libname_) 0040 string(TOUPPER ${_libname_} _prettylibname_) 0041 find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} HINTS ${LLVM_LIBRARY_DIRS}) 0042 if(CLANG_${_prettylibname_}_LIB) 0043 set(CLANG_LIBS ${CLANG_LIBS} ${CLANG_${_prettylibname_}_LIB}) 0044 endif() 0045 endmacro(FIND_AND_ADD_CLANG_LIB) 0046 0047 # note: On Windows there's 'libclang.dll' instead of 'clang.dll' -> search for 'libclang', too 0048 find_library(CLANG_LIBCLANG_LIB NAMES clang libclang HINTS ${LLVM_LIBRARY_DIRS}) # LibClang: high-level C interface 0049 0050 FIND_CLANG_LIB(clang-cpp) 0051 FIND_AND_ADD_CLANG_LIB(clangFrontend) 0052 FIND_AND_ADD_CLANG_LIB(clangDriver) 0053 FIND_AND_ADD_CLANG_LIB(clangCodeGen) 0054 FIND_AND_ADD_CLANG_LIB(clangSema) 0055 FIND_AND_ADD_CLANG_LIB(clangChecker) 0056 FIND_AND_ADD_CLANG_LIB(clangAnalysis) 0057 FIND_AND_ADD_CLANG_LIB(clangRewriteFrontend) 0058 FIND_AND_ADD_CLANG_LIB(clangRewrite) 0059 FIND_AND_ADD_CLANG_LIB(clangAST) 0060 FIND_AND_ADD_CLANG_LIB(clangASTMatchers) 0061 FIND_AND_ADD_CLANG_LIB(clangParse) 0062 FIND_AND_ADD_CLANG_LIB(clangLex) 0063 FIND_AND_ADD_CLANG_LIB(clangBasic) 0064 FIND_AND_ADD_CLANG_LIB(clangARCMigrate) 0065 FIND_AND_ADD_CLANG_LIB(clangEdit) 0066 FIND_AND_ADD_CLANG_LIB(clangFrontendTool) 0067 FIND_AND_ADD_CLANG_LIB(clangRewrite) 0068 FIND_AND_ADD_CLANG_LIB(clangSerialization) 0069 FIND_AND_ADD_CLANG_LIB(clangTooling) 0070 FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCheckers) 0071 FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCore) 0072 FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerFrontend) 0073 FIND_AND_ADD_CLANG_LIB(clangSema) 0074 FIND_AND_ADD_CLANG_LIB(clangRewriteCore) 0075 endif() 0076 0077 if(CLANG_LIBS OR CLANG_LIBCLANG_LIB OR CLANG_CLANG-CPP_LIB) 0078 set(CLANG_FOUND TRUE) 0079 else() 0080 message(STATUS "Could not find any Clang libraries in ${LLVM_LIBRARY_DIRS}") 0081 endif() 0082 0083 if(CLANG_FOUND) 0084 set(CLANG_LIBRARY_DIRS ${LLVM_LIBRARY_DIRS}) 0085 set(CLANG_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) 0086 0087 # check whether llvm-config comes from an install prefix 0088 execute_process( 0089 COMMAND ${LLVM_CONFIG_EXECUTABLE} --src-root 0090 OUTPUT_VARIABLE _llvmSourceRoot 0091 OUTPUT_STRIP_TRAILING_WHITESPACE 0092 ) 0093 string(FIND "${LLVM_INCLUDE_DIRS}" "${_llvmSourceRoot}" _llvmIsInstalled) 0094 if (NOT _llvmIsInstalled) 0095 message(STATUS "Detected that llvm-config comes from a build-tree, adding more include directories for Clang") 0096 list(APPEND CLANG_INCLUDE_DIRS 0097 "${LLVM_INSTALL_PREFIX}/tools/clang/include" # build dir 0098 "${_llvmSourceRoot}/tools/clang/include" # source dir 0099 ) 0100 endif() 0101 0102 message(STATUS "Found Clang (LLVM version: ${LLVM_VERSION})") 0103 message(STATUS " Include dirs: ${CLANG_INCLUDE_DIRS}") 0104 message(STATUS " Clang libraries: ${CLANG_LIBS}") 0105 message(STATUS " Libclang C library: ${CLANG_LIBCLANG_LIB}") 0106 message(STATUS " Clang dynamic library: ${CLANG_CLANG-CPP_LIB}") 0107 else() 0108 if(Clang_FIND_REQUIRED) 0109 message(FATAL_ERROR "Could NOT find Clang") 0110 endif() 0111 endif()