CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. include_directories(
  2. "${CMAKE_CURRENT_BINARY_DIR}"
  3. ${PROJECT_SOURCE_DIR}/lib
  4. ${PROJECT_SOURCE_DIR}/src
  5. ${PROJECT_SOURCE_DIR}/src/output_modules
  6. )
  7. # ADD YOUR PROBE MODULE HERE
  8. SET(EXTRA_PROBE_MODULES
  9. )
  10. # ADD YOUR OUTPUT MODULE HERE
  11. SET(EXTRA_OUTPUT_MODULES
  12. )
  13. SET(OUTPUT_MODULE_SOURCES
  14. output_modules/module_csv.c
  15. output_modules/output_modules.c
  16. )
  17. # Handle optional output modules
  18. if (WITH_JSON)
  19. SET(OUTPUT_MODULE_SOURCES ${OUTPUT_MODULE_SOURCES} output_modules/module_json.c)
  20. endif()
  21. if (WITH_REDIS)
  22. SET(OUTPUT_MODULE_SOURCES ${OUTPUT_MODULE_SOURCES} output_modules/module_redis_packed.c output_modules/module_redis_csv.c)
  23. endif()
  24. if (WITH_MONGO)
  25. SET(OUTPUT_MODULE_SOURCES ${OUTPUT_MODULE_SOURCES} output_modules/module_mongodb.c)
  26. endif()
  27. SET(PROBE_MODULE_SOURCES
  28. probe_modules/module_icmp_echo.c
  29. probe_modules/module_icmp_echo_time.c
  30. probe_modules/module_tcp_synscan_proberesponse.c
  31. probe_modules/module_tcp_synscan.c
  32. probe_modules/module_udp.c
  33. probe_modules/module_udp_dns.c
  34. probe_modules/module_dns_mx.c
  35. probe_modules/packet.c
  36. probe_modules/probe_modules.c
  37. probe_modules/module_ntp.c
  38. probe_modules/module_upnp.c
  39. )
  40. SET(SOURCES
  41. aesrand.c
  42. cyclic.c
  43. expression.c
  44. fieldset.c
  45. filter.c
  46. get_gateway.c
  47. iterator.c
  48. monitor.c
  49. recv.c
  50. send.c
  51. shard.c
  52. socket.c
  53. state.c
  54. summary.c
  55. validate.c
  56. zmap.c
  57. zopt_compat.c
  58. "${CMAKE_CURRENT_BINARY_DIR}/zopt.h"
  59. "${CMAKE_CURRENT_BINARY_DIR}/lexer.c"
  60. "${CMAKE_CURRENT_BINARY_DIR}/parser.c"
  61. ${EXTRA_PROBE_MODULES}
  62. ${EXTRA_OUTPUT_MODULES}
  63. ${PROBE_MODULE_SOURCES}
  64. ${OUTPUT_MODULE_SOURCES}
  65. )
  66. SET(ZBLSOURCES
  67. zblacklist.c
  68. zbopt_compat.c
  69. "${CMAKE_CURRENT_BINARY_DIR}/zbopt.h"
  70. )
  71. SET(ZTEESOURCES
  72. ztee.c
  73. topt_compat.c
  74. "${CMAKE_CURRENT_BINARY_DIR}/topt.h"
  75. )
  76. # Handle various versions of socket
  77. if(WITH_PFRING)
  78. SET(SOURCES ${SOURCES} socket-pfring.c)
  79. elseif (APPLE OR BSD)
  80. SET(SOURCES ${SOURCES} socket-bsd.c)
  81. else()
  82. SET(SOURCES ${SOURCES} socket-linux.c)
  83. endif()
  84. # Handle various versions of recv
  85. if(WITH_PFRING)
  86. SET(SOURCES ${SOURCES} recv-pfring.c)
  87. else()
  88. SET(SOURCES ${SOURCES} recv-pcap.c)
  89. endif()
  90. add_custom_command(OUTPUT zopt.h
  91. COMMAND gengetopt -C --no-help --no-version --unamed-opts=SUBNETS -i "${CMAKE_CURRENT_SOURCE_DIR}/zopt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/zopt"
  92. DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/zopt.ggo"
  93. )
  94. add_custom_command(OUTPUT topt.h
  95. COMMAND gengetopt -S --no-help --no-version --unamed-opts=FILE -i "${CMAKE_CURRENT_SOURCE_DIR}/topt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/topt"
  96. DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/topt.ggo"
  97. )
  98. add_custom_command(OUTPUT zbopt.h
  99. COMMAND gengetopt -C --no-help --no-version -i "${CMAKE_CURRENT_SOURCE_DIR}/zbopt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/zbopt"
  100. DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/zbopt.ggo"
  101. )
  102. add_custom_command(OUTPUT lexer.c
  103. COMMAND flex -o "${CMAKE_CURRENT_BINARY_DIR}/lexer.c" --header-file="${CMAKE_CURRENT_BINARY_DIR}/lexer.h" "${CMAKE_CURRENT_SOURCE_DIR}/lexer.l"
  104. DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lexer.l"
  105. )
  106. add_custom_command(OUTPUT parser.c
  107. COMMAND byacc -d -o "${CMAKE_CURRENT_BINARY_DIR}/parser.c" "${CMAKE_CURRENT_SOURCE_DIR}/parser.y"
  108. DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/parser.y"
  109. )
  110. add_executable(zmap ${SOURCES})
  111. add_executable(zblacklist ${ZBLSOURCES})
  112. add_executable(ztee ${ZTEESOURCES})
  113. if (APPLE OR BSD)
  114. set(DNET_LIBRARIES "dnet")
  115. else()
  116. set(DNET_LIBRARIES "")
  117. endif()
  118. target_link_libraries(
  119. zmap
  120. zmaplib
  121. ${PFRING_LIBRARIES}
  122. pcap gmp m
  123. ${DNET_LIBRARIES}
  124. ${REDIS_LIBS}
  125. ${JSON_LIBRARIES}
  126. ${MONGO_LIBRARIES}
  127. )
  128. target_link_libraries(
  129. zblacklist
  130. zmaplib
  131. m
  132. )
  133. target_link_libraries(
  134. ztee
  135. zmaplib
  136. m
  137. )
  138. # Install binary
  139. install(
  140. TARGETS
  141. zmap
  142. zblacklist
  143. ztee
  144. RUNTIME DESTINATION sbin
  145. )
  146. # Install Manpages
  147. install(
  148. FILES
  149. zmap.1
  150. zblacklist.1
  151. ztee.1
  152. DESTINATION share/man/man1
  153. )