1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- IF (ENABLE_CLANG_PLUGIN MATCHES "ON")
- # Clang plugin for static analysis
- if (NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
- MESSAGE(FATAL_ERROR "Cannot build clang plugin when compiler is not clang")
- endif ()
-
- LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
- ENABLE_LANGUAGE(CXX)
- FIND_PACKAGE(LLVM REQUIRED)
- MESSAGE(STATUS "Trying to find libclang for llvm version ${LLVM_PACKAGE_VERSION}")
- SET(libclang_llvm_header_search_paths
- # LLVM Debian/Ubuntu nightly packages: http://llvm.org/apt/
- "/usr/lib/llvm-${LLVM_PACKAGE_VERSION}/include/"
- # LLVM MacPorts
- "/opt/local/libexec/llvm-${LLVM_PACKAGE_VERSION}/include"
- # LLVM Homebrew
- "/usr/local/Cellar/llvm/${LLVM_PACKAGE_VERSION}/include"
- # LLVM Homebrew/versions
- "/usr/local/lib/llvm-${LLVM_PACKAGE_VERSION}/include"
- # FreeBSD ports versions
- "/usr/local/llvm${LLVM_PACKAGE_VERSION}/include"
- "${LLVM_INCLUDE_DIRS}"
- )
-
- SET(libclang_llvm_lib_search_paths
- # LLVM Debian/Ubuntu nightly packages: http://llvm.org/apt/
- "/usr/lib/llvm-${LLVM_PACKAGE_VERSION}/lib/"
- # LLVM MacPorts
- "/opt/local/libexec/llvm-${LLVM_PACKAGE_VERSION}/lib"
- # LLVM Homebrew
- "/usr/local/Cellar/llvm/${LLVM_PACKAGE_VERSION}/lib"
- # LLVM Homebrew/versions
- "/usr/local/lib/llvm-${LLVM_PACKAGE_VERSION}/lib"
- # FreeBSD ports versions
- "/usr/local/llvm${LLVM_PACKAGE_VERSION}/lib"
- "${LLVM_LIBRARY_DIRS}"
- )
-
- find_path(LIBCLANG_INCLUDE_DIR clang-c/Index.h
- PATHS ${libclang_llvm_header_search_paths}
- PATH_SUFFIXES LLVM/include #Windows package from http://llvm.org/releases/
- DOC "The path to the directory that contains clang-c/Index.h")
- find_library(LIBCLANG_LIBRARY NAMES libclang.imp libclang clang
- PATHS ${libclang_llvm_lib_search_paths}
- PATH_SUFFIXES LLVM/lib #Windows package from http://llvm.org/releases/
- DOC "The file that corresponds to the libclang library.")
-
- get_filename_component(LIBCLANG_LIBRARY_DIR ${LIBCLANG_LIBRARY} PATH)
-
- set(LIBCLANG_LIBRARIES ${LIBCLANG_LIBRARY})
- set(LIBCLANG_INCLUDE_DIRS ${LIBCLANG_INCLUDE_DIR})
-
- SET(CLANGPLUGINSRC plugin.cc printf_check.cc)
-
- ADD_LIBRARY(rspamd-clang SHARED ${CLANGPLUGINSRC})
- SET_TARGET_PROPERTIES(rspamd-clang PROPERTIES
- COMPILE_FLAGS "${LLVM_CPP_FLAGS} -O2 -Wall -Wextra -Wno-unused-parameter -Werror"
- INCLUDE_DIRECTORIES ${LIBCLANG_INCLUDE_DIR}
- LINKER_LANGUAGE CXX)
- TARGET_LINK_LIBRARIES(rspamd-clang ${LIBCLANG_LIBRARIES})
- LINK_DIRECTORIES(${LLVM_LIBRARY_DIRS})
- ENDIF()
|