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 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. SET(LIBEVSRC ev.c)
  2. CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H)
  3. CHECK_INCLUDE_FILES(sys/inotify.h HAVE_SYS_INOTIFY_H)
  4. CHECK_INCLUDE_FILES(sys/epoll.h HAVE_SYS_EPOLL_H)
  5. CHECK_INCLUDE_FILES("sys/types.h;sys/event.h;sys/time.h" HAVE_SYS_EVENT_H)
  6. CHECK_INCLUDE_FILES(sys/queue.h HAVE_SYS_QUEUE_H)
  7. CHECK_INCLUDE_FILES(sys/stat.h HAVE_SYS_STAT_H)
  8. CHECK_INCLUDE_FILES(sys/signalfd.h HAVE_SYS_SIGNALFD_H)
  9. CHECK_INCLUDE_FILES(port.h HAVE_PORT_H)
  10. CHECK_INCLUDE_FILES(poll.h HAVE_POLL_H)
  11. CHECK_INCLUDE_FILES(sys/select.h HAVE_SYS_SELECT_H)
  12. CHECK_INCLUDE_FILES(sys/eventfd.h HAVE_SYS_EVENTFD_H)
  13. IF(HAVE_SYS_INOTIFY_H)
  14. CHECK_SYMBOL_EXISTS(inotify_init "sys/types.h;sys/inotify.h" HAVE_INOTIFY_INIT)
  15. ENDIF()
  16. IF(HAVE_SYS_EPOLL_H)
  17. CHECK_SYMBOL_EXISTS(epoll_ctl "sys/types.h;sys/epoll.h" HAVE_EPOLL_CTL)
  18. ENDIF()
  19. IF(HAVE_SYS_EVENT_H)
  20. CHECK_SYMBOL_EXISTS(kqueue "sys/types.h;sys/event.h;sys/time.h" HAVE_KQUEUE)
  21. ENDIF()
  22. IF(HAVE_PORT_H)
  23. CHECK_SYMBOL_EXISTS(port_create port.h HAVE_PORT_CREATE)
  24. ENDIF()
  25. IF(HAVE_POLL_H)
  26. CHECK_SYMBOL_EXISTS(poll poll.h HAVE_POLL)
  27. ENDIF()
  28. IF(HAVE_SYS_SELECT_H)
  29. CHECK_SYMBOL_EXISTS(select sys/select.h HAVE_SELECT)
  30. ENDIF()
  31. IF(HAVE_SYS_EVENTFD_H)
  32. CHECK_SYMBOL_EXISTS(eventfd sys/eventfd.h HAVE_EVENTFD)
  33. ENDIF()
  34. IF(HAVE_SYS_SIGNALFD_H)
  35. CHECK_SYMBOL_EXISTS(signalfd sys/signalfd.h HAVE_EVENTFD)
  36. ENDIF()
  37. CHECK_SYMBOL_EXISTS(time.h nanosleep HAVE_NANOSLEEP)
  38. # check first without rt
  39. CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME)
  40. CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_LIBRT)
  41. # then check with rt
  42. CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_CLOCK_GETTIME)
  43. CHECK_LIBRARY_EXISTS(m ceil "" HAVE_LIBM)
  44. IF(ENABLE_FULL_DEBUG MATCHES "OFF")
  45. if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
  46. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
  47. endif ()
  48. ENDIF()
  49. CONFIGURE_FILE(config.h.in libev-config.h)
  50. ADD_LIBRARY(rspamd-ev SHARED ${LIBEVSRC})
  51. ADD_DEFINITIONS("-DEV_CONFIG_H=\"${CMAKE_CURRENT_BINARY_DIR}/libev-config.h\""
  52. -DEV_MULTIPLICITY=1
  53. -DEV_USE_FLOOR=1
  54. -DEV_NO_THREADS=1 # We do not have threads in Rspamd!
  55. -DEV_FEATURES=127 # Enable all features
  56. )
  57. IF(HAVE_EVENTFD)
  58. ADD_DEFINITIONS(-DEV_USE_EVENTFD=1)
  59. ENDIF()
  60. IF(ENABLE_FULL_DEBUG MATCHES "ON")
  61. ADD_DEFINITIONS(-DEV_VERIFY=3)
  62. ENDIF()
  63. INSTALL(TARGETS rspamd-ev LIBRARY DESTINATION ${RSPAMD_LIBDIR})