mirror of
https://github.com/pavel-odintsov/fastnetmon
synced 2024-11-23 17:32:59 +01:00
122 lines
3.4 KiB
CMake
122 lines
3.4 KiB
CMake
cmake_minimum_required (VERSION 2.8)
|
|
|
|
# cmake versions:
|
|
# Debian 6 - 2.8.2
|
|
# Debian 7 - 2.8.9
|
|
# CentOS 6 - 2.8.12
|
|
|
|
project(FastNetMon)
|
|
|
|
set (Tutorial_VERSION_MAJOR 1)
|
|
set (Tutorial_VERSION_MINOR 1)
|
|
|
|
# It's pretty safe and provide big speedup for our packet processor and patricia code
|
|
set(CMAKE_C_FLAGS "-O2")
|
|
set(CMAKE_CXX_FLAGS "-O2")
|
|
|
|
set(FASTNETMON_PROFILER OFF)
|
|
|
|
set(FASTNETMON_PROFILE_FLAGS "-g -pg")
|
|
|
|
if (FASTNETMON_PROFILER)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FASTNETMON_PROFILE_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FASTNETMON_PROFILE_FLAGS}")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FASTNETMON_PROFILE_FLAGS}")
|
|
endif()
|
|
|
|
# With this flag we can diable PF_RING build via console: cmake .. -DDISABLE_PF_RING_SUPPORT=ON
|
|
if (NOT DISABLE_PF_RING_SUPPORT)
|
|
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
message("You are running Linux and we can build PF_RING support")
|
|
set (ENABLE_PFRING_SUPPORT ON)
|
|
else()
|
|
message("You are running not an Linux and we can't build PF_RING support")
|
|
endif()
|
|
endif()
|
|
|
|
if (ENABLE_PFRING_SUPPORT)
|
|
# Set path to home compiled PF_RING
|
|
set(PFRING_INCLUDE_DIRS /opt/pf_ring/include)
|
|
set(PFRING_LIBRARIES /opt/pf_ring/lib/libpfring.so)
|
|
add_definitions(-DPF_RING)
|
|
endif()
|
|
|
|
if (WE_USE_CUSTOM_LOG4CPP)
|
|
set(LOG4CPP_INCLUDE_DIRS /opt/log4cpp1.1.1/include)
|
|
set(LOG4CPPLIBRARIES /opt/log4cpp1.1.1/lib/liblog4cpp.so)
|
|
endif()
|
|
|
|
# If you need hardware locking features
|
|
# add_definitions(-DHWFILTER_LOCKING)
|
|
|
|
# Our LPM library
|
|
add_library(patricia STATIC libpatricia/patricia.c)
|
|
|
|
# sFLOW plugin
|
|
add_library(sflow_plugin STATIC sflow_plugin/sflow_collector.cpp)
|
|
|
|
# netflow plugin
|
|
add_library(netflow_plugin STATIC netflow_plugin/netflow_collector.cpp)
|
|
|
|
# pcap plugin
|
|
add_library(pcap_plugin STATIC pcap_plugin/pcap_collector.cpp)
|
|
|
|
# example plugin
|
|
add_library(example_plugin STATIC example_plugin/example_collector.cpp)
|
|
|
|
# Main tool
|
|
add_executable(fastnetmon fastnetmon.cpp)
|
|
|
|
# Client tool
|
|
add_executable(fastnetmon_client fastnetmon_client.cpp)
|
|
|
|
# Find boost: http://www.cmake.org/cmake/help/v3.0/module/FindBoost.html
|
|
|
|
# Disable cmake script from Boost package becaus it is broken: http://public.kitware.com/Bug/view.php?id=15270
|
|
set(Boost_NO_BOOST_CMAKE ON)
|
|
# Enable detailed errors
|
|
set(Boost_DETAILED_FAILURE_MSG ON)
|
|
|
|
find_package(Boost COMPONENTS thread regex REQUIRED)
|
|
|
|
if(Boost_FOUND)
|
|
include_directories(${Boost_INCLUDE_DIRS})
|
|
target_link_libraries(fastnetmon ${Boost_LIBRARIES})
|
|
endif()
|
|
|
|
# Try to find ncurses library
|
|
find_package(Curses REQUIRED)
|
|
|
|
if(CURSES_FOUND)
|
|
include_directories(${CURSES_INCLUDE_DIRS})
|
|
target_link_libraries(fastnetmon_client ${CURSES_LIBRARIES})
|
|
endif()
|
|
|
|
# External libs
|
|
if (WE_USE_CUSTOM_LOG4CPP)
|
|
include_directories(${LOG4CPP_INCLUDE_DIRS})
|
|
target_link_libraries(fastnetmon ${LOG4CPPLIBRARIES})
|
|
else()
|
|
target_link_libraries(fastnetmon log4cpp)
|
|
endif()
|
|
|
|
target_link_libraries(fastnetmon numa)
|
|
target_link_libraries(fastnetmon pthread)
|
|
# For PF_RING and pcap plugin
|
|
target_link_libraries(fastnetmon pcap)
|
|
|
|
# Our libs
|
|
target_link_libraries(fastnetmon patricia)
|
|
|
|
# Our plugins
|
|
target_link_libraries(fastnetmon sflow_plugin)
|
|
target_link_libraries(fastnetmon netflow_plugin)
|
|
target_link_libraries(fastnetmon pcap_plugin)
|
|
target_link_libraries(fastnetmon example_plugin)
|
|
|
|
if (ENABLE_PFRING_SUPPORT)
|
|
# Custom PF_RING
|
|
include_directories(${PFRING_INCLUDE_DIRS})
|
|
endif()
|
|
target_link_libraries(fastnetmon ${PFRING_LIBRARIES})
|