CMakeLists.txt 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. cmake_minimum_required (VERSION 3.4.3)
  2. project (snort CXX C)
  3. set (VERSION_MAJOR 3)
  4. set (VERSION_MINOR 3)
  5. set (VERSION_PATCH 7)
  6. set (VERSION_SUBLEVEL 0)
  7. set (VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_SUBLEVEL}")
  8. if (DEFINED VERSION_BUILD)
  9. set (BUILD "${VERSION_BUILD}")
  10. endif ()
  11. set (CMAKE_CXX_STANDARD 17)
  12. set (CMAKE_CXX_STANDARD_REQUIRED ON)
  13. set (CMAKE_CXX_EXTENSIONS OFF)
  14. set (CMAKE_C_STANDARD 99)
  15. set (CMAKE_C_STANDARD_REQUIRED ON)
  16. set (CMAKE_C_EXTENSIONS ON)
  17. set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
  18. # Pull in definitions of various install directories
  19. include (GNUInstallDirs)
  20. include (${CMAKE_MODULE_PATH}/macros.cmake)
  21. include (${CMAKE_MODULE_PATH}/create_options.cmake)
  22. include (${CMAKE_MODULE_PATH}/include_libraries.cmake)
  23. include (${CMAKE_MODULE_PATH}/platforms.cmake)
  24. include (${CMAKE_MODULE_PATH}/configure_options.cmake)
  25. #include (${CMAKE_MODULE_PATH}/compiler_features.cmake)
  26. include (${CMAKE_MODULE_PATH}/sanity_checks.cmake)
  27. set (INSTALL_SUFFIX "${CMAKE_PROJECT_NAME}")
  28. set (INCLUDE_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}/${INSTALL_SUFFIX}")
  29. set (LIB_INSTALL_PATH "${CMAKE_INSTALL_LIBDIR}/${INSTALL_SUFFIX}")
  30. set (PLUGIN_INSTALL_PATH "${LIB_INSTALL_PATH}/plugins")
  31. configure_file (
  32. "${PROJECT_SOURCE_DIR}/config.cmake.h.in"
  33. "${PROJECT_BINARY_DIR}/config.h"
  34. )
  35. add_definitions( -DHAVE_CONFIG_H )
  36. # Set these after all tests are done but *before* any subdirectories are included
  37. # or other targets declared.
  38. string(APPEND CMAKE_C_FLAGS " ${EXTRA_C_FLAGS}")
  39. string(APPEND CMAKE_CXX_FLAGS " ${EXTRA_CXX_FLAGS}")
  40. string(APPEND CMAKE_EXE_LINKER_FLAGS " ${EXTRA_LINKER_FLAGS}")
  41. string(APPEND CMAKE_MODULE_LINKER_FLAGS " ${EXTRA_LINKER_FLAGS}")
  42. include_directories (${PROJECT_BINARY_DIR})
  43. include_directories (${PROJECT_SOURCE_DIR})
  44. if (ENABLE_UNIT_TESTS)
  45. include(CTest)
  46. endif (ENABLE_UNIT_TESTS)
  47. if (ENABLE_UNIT_TESTS OR ENABLE_BENCHMARK_TESTS)
  48. add_custom_target (check COMMAND ${CMAKE_CTEST_COMMAND})
  49. endif (ENABLE_UNIT_TESTS OR ENABLE_BENCHMARK_TESTS)
  50. add_subdirectory (src)
  51. add_subdirectory (tools)
  52. add_subdirectory (lua)
  53. add_subdirectory (daqs)
  54. if ( MAKE_DOC )
  55. add_subdirectory (doc)
  56. endif ( MAKE_DOC )
  57. # Miscellaneous stuff. Does NOT directly affect Snort's build environment.
  58. include (${CMAKE_MODULE_PATH}/packaging_data.cmake)
  59. include (${CMAKE_MODULE_PATH}/create_pkg_config.cmake)
  60. # uninstall target
  61. configure_file(
  62. "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
  63. "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  64. IMMEDIATE @ONLY)
  65. add_custom_target(uninstall
  66. COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
  67. string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER)
  68. message("
  69. -------------------------------------------------------")
  70. if (DEFINED BUILD)
  71. message("${CMAKE_PROJECT_NAME} version ${VERSION} build ${BUILD}")
  72. else()
  73. message("${CMAKE_PROJECT_NAME} version ${VERSION}")
  74. endif()
  75. message("
  76. Install options:
  77. prefix: ${CMAKE_INSTALL_PREFIX}
  78. includes: ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${INSTALL_SUFFIX}
  79. plugins: ${CMAKE_INSTALL_FULL_LIBDIR}/${INSTALL_SUFFIX}
  80. Compiler options:
  81. CC: ${CMAKE_C_COMPILER}
  82. CXX: ${CMAKE_CXX_COMPILER}
  83. CFLAGS: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}
  84. CXXFLAGS: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}
  85. EXE_LDFLAGS: ${CMAKE_EXE_LINKER_FLAGS}
  86. MODULE_LDFLAGS: ${CMAKE_MODULE_LINKER_FLAGS}
  87. Feature options:\
  88. ")
  89. if (ENABLE_STATIC_DAQ)
  90. message("\
  91. DAQ Modules: Static (${DAQ_STATIC_MODULES})")
  92. else ()
  93. message("\
  94. DAQ Modules: Dynamic")
  95. endif ()
  96. if (HAVE_ATOMIC)
  97. message("\
  98. libatomic: User-specified")
  99. else ()
  100. message("\
  101. libatomic: System-provided")
  102. endif ()
  103. if (HAVE_HYPERSCAN)
  104. message("\
  105. Hyperscan: ON")
  106. else ()
  107. message("\
  108. Hyperscan: OFF")
  109. endif ()
  110. if (HAVE_ICONV)
  111. message("\
  112. ICONV: ON")
  113. else ()
  114. message("\
  115. ICONV: OFF")
  116. endif ()
  117. if (HAVE_LIBUNWIND)
  118. message("\
  119. Libunwind: ON")
  120. else ()
  121. message("\
  122. Libunwind: OFF")
  123. endif ()
  124. if (HAVE_LZMA)
  125. message("\
  126. LZMA: ON")
  127. else ()
  128. message("\
  129. LZMA: OFF")
  130. endif ()
  131. if (USE_TIRPC)
  132. message("\
  133. RPC DB: TIRPC")
  134. else ()
  135. message("\
  136. RPC DB: Built-in")
  137. endif ()
  138. if (HAVE_SAFEC)
  139. message("\
  140. SafeC: ON")
  141. else ()
  142. message("\
  143. SafeC: OFF")
  144. endif ()
  145. if (HAVE_TCMALLOC)
  146. message("\
  147. TCMalloc: ON")
  148. else ()
  149. message("\
  150. TCMalloc: OFF")
  151. endif ()
  152. if (HAVE_JEMALLOC)
  153. message("\
  154. JEMalloc: ON")
  155. else ()
  156. message("\
  157. JEMalloc: OFF")
  158. endif ()
  159. if (HAVE_UUID)
  160. message("\
  161. UUID: ON")
  162. else ()
  163. message("\
  164. UUID: OFF")
  165. endif ()
  166. if (HAVE_NUMA)
  167. message("\
  168. NUMA: ON")
  169. else ()
  170. message("\
  171. NUMA: OFF")
  172. endif ()
  173. if (HAVE_LIBML)
  174. message("\
  175. LibML: ON")
  176. else ()
  177. message("\
  178. LibML: OFF")
  179. endif ()
  180. message("-------------------------------------------------------\n")