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.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. IF (ENABLE_CLANG_PLUGIN MATCHES "ON")
  2. # Clang plugin for static analysis
  3. PROJECT(RspamdClangPlugin CXX)
  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 clang)
  14. message(STATUS "Found LibClang in: ${CLANG_INSTALL_PREFIX}")
  15. include_directories(${CLANG_INCLUDE_DIRS})
  16. SET(CLANGPLUGINSRC plugin.cc printf_check.cc)
  17. ADD_LIBRARY(rspamd-clang SHARED ${CLANGPLUGINSRC})
  18. IF (SANITIZE)
  19. set (CMAKE_C_FLAGS "")
  20. set (CMAKE_CXX_FLAGS "")
  21. set (CMAKE_EXE_LINKER_FLAGS "")
  22. ENDIF()
  23. find_library(found_LLVM LLVM HINTS ${LLVM_LIBRARY_DIRS})
  24. if(found_LLVM)
  25. target_link_libraries(rspamd-clang PRIVATE ${LLVM})
  26. else()
  27. # XXX not tested yet
  28. llvm_map_components_to_libnames(llvm_libs support core)
  29. target_link_libraries(rspamd-clang PRIVATE ${llvm_libs})
  30. endif()
  31. target_link_libraries(rspamd-clang PRIVATE ${clang_libs})
  32. ENDIF()