You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. IF (ENABLE_CLANG_PLUGIN MATCHES "ON")
  2. # Clang plugin for static analysis
  3. PROJECT(RspamdClangPlugin)
  4. if (NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
  5. MESSAGE(FATAL_ERROR "Cannot build clang plugin when compiler is not clang")
  6. endif ()
  7. FIND_PACKAGE(LLVM REQUIRED CONFIG)
  8. MESSAGE(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
  9. MESSAGE(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
  10. INCLUDE_DIRECTORIES(${LLVM_INCLUDE_DIRS})
  11. ADD_DEFINITIONS(${LLVM_DEFINITIONS})
  12. find_package(Clang REQUIRED)
  13. set(clang_libs
  14. clangAST
  15. clangBasic
  16. clangFrontend)
  17. message(STATUS "Found LibClang in: ${CLANG_INSTALL_PREFIX}")
  18. include_directories(${CLANG_INCLUDE_DIRS})
  19. SET(CLANGPLUGINSRC plugin.cc printf_check.cc)
  20. ADD_LIBRARY(rspamd-clang SHARED ${CLANGPLUGINSRC})
  21. SET_TARGET_PROPERTIES(rspamd-clang PROPERTIES
  22. COMPILE_FLAGS "-O2 -Wall -Wextra -Wno-unused-parameter -Werror"
  23. LINKER_LANGUAGE CXX)
  24. IF(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  25. set_property(TARGET rspamd-clang APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-undefined -Wl,--as-needed")
  26. ENDIF()
  27. find_library(found_LLVM LLVM HINTS ${LLVM_LIBRARY_DIRS})
  28. if(found_LLVM)
  29. target_link_libraries(rspamd-clang PRIVATE LLVM)
  30. else()
  31. # XXX not tested yet
  32. llvm_map_components_to_libnames(llvm_libs support core)
  33. target_link_libraries(rspamd-clang PRIVATE ${llvm_libs})
  34. endif()
  35. target_link_libraries(rspamd-clang PRIVATE ${clang_libs})
  36. ENDIF()