rspamd/clang-plugin/CMakeLists.txt
Anton Yuzhaninov 3ec6820a92 Don't use LLVM_CXX_FLAGS/LLVM_C_FLAGS
llvm-config --cxxflags shows CFLAGS used to compile clang. If clang
installed from package and package was build using GCC then it will
contain GCC specific flags. In case of clang installed as RPM packge
-specs= flags also added. There is not point to use them to
compile plugin. For now hardcode flags in clang-plugin/CMakeLists.txt

Add -O2 - we want plugin to work fast even if we to compiling rspamd
code with -O0.
2018-10-30 14:45:51 -04:00

63 lines
2.8 KiB
CMake

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()