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

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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
  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. IF (SANITIZE)
  22. set (CMAKE_C_FLAGS "")
  23. set (CMAKE_CXX_FLAGS "")
  24. set (CMAKE_EXE_LINKER_FLAGS "")
  25. ENDIF()
  26. find_library(found_LLVM LLVM HINTS ${LLVM_LIBRARY_DIRS})
  27. if(found_LLVM)
  28. target_link_libraries(rspamd-clang PRIVATE ${LLVM})
  29. else()
  30. # XXX not tested yet
  31. llvm_map_components_to_libnames(llvm_libs support core)
  32. target_link_libraries(rspamd-clang PRIVATE ${llvm_libs})
  33. endif()
  34. target_link_libraries(rspamd-clang PRIVATE ${clang_libs})
  35. ENDIF()