1 # package: find external packages
4 # package: required boost libraries
5 set(Boost_USE_STATIC_LIBS OFF)
6 set(Boost_USE_MULTITHREADED OFF)
7 set(Boost_USE_STATIC_RUNTIME OFF)
8 find_package(Boost 1.44 COMPONENTS filesystem program_options system serialization date_time REQUIRED)
9 include_directories(${Boost_INCLUDE_DIRS})
10 link_directories(${Boost_LIBRARY_DIRS})
12 # package: boost-custom
13 include_directories(${CMAKE_SOURCE_DIR}/lib/boost-custom)
15 # package: boost-net-dns
16 include_directories(${CMAKE_SOURCE_DIR}/lib/boost-net-dns)
18 # package: libi2ncommon
19 pkg_check_modules(I2NCOMMON REQUIRED libi2ncommon)
20 include_directories(${I2NCOMMON_INCLUDE_DIRS})
21 link_directories(${I2NCOMMON_LIBRARY_DIRS})
26 # compiler: include directories where the source code is located
27 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
29 # compiler: source code files
31 config/configuration.cpp
32 config/configurationcommandline.cpp
33 config/configurationfile.cpp
34 config/configurationinterface.cpp
35 config/configurationoptions.cpp
36 config/configurationreader.cpp
38 config/option/daemonoption.cpp
39 config/option/configfileoption.cpp
40 config/option/configurationoption.cpp
41 config/option/hostconfigurationoption.cpp
42 config/option/hostpingintervaloption.cpp
43 config/option/hostpingprotocoloption.cpp
44 config/option/hostportoption.cpp
45 config/option/hostnameoption.cpp
46 config/option/hostsourcenetworkinterfaceoption.cpp
47 config/option/hostsdownlimitoption.cpp
48 config/option/linkdownintervaloption.cpp
49 config/option/linkupintervaloption.cpp
50 config/option/logleveloption.cpp
51 config/option/logoutputoption.cpp
52 config/option/logfileoption.cpp
53 config/option/nameserveroption.cpp
54 config/option/pingfaillimitoption.cpp
55 config/option/sourcenetworkinterfaceoption.cpp
56 config/option/statusnotifiercmdoption.cpp
57 config/option/versionoption.cpp
58 config/option/ratiorandomhostsoption.cpp
59 config/option/pingreplytimeoutoption.cpp
60 config/option/maxaddressresolutionattemptsoption.cpp
61 config/option/resolvedipttlthresholdoption.cpp
62 config/option/mintimebetweenresolvesoption.cpp
63 config/option/dnscachefileoption.cpp
75 host/messagepayload.cpp
76 host/networkinterfacelist.cpp
78 host/pingerfactory.cpp
82 host/pingscheduler.cpp
85 icmp/icmpdata_pingfailreply.cpp
87 icmp/icmpdestinationunreachabledata.cpp
88 icmp/icmptimeexceededdata.cpp
92 icmp/icmppacketfactory.cpp
97 link/statusnotifiercommand.cpp
100 tcp/tcpipv4segment.cpp
101 tcp/tcpipv6segment.cpp
103 tcp/tcpsegmentfactory.cpp
104 boost_assert_handler.cpp
108 # documentation: add a target to generate API documentation with Doxygen
111 ${CMAKE_SOURCE_DIR}/doc/doxyfile.in
112 ${CMAKE_BINARY_DIR}/doc/Doxyfile @ONLY
116 ${DOXYGEN_EXECUTABLE}
117 ${CMAKE_BINARY_DIR}/doc/Doxyfile
118 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc
119 COMMENT "Generating API documentation with Doxygen" VERBATIM
123 # compiler: creates the binary
124 add_executable(${TARGET} ${SOURCES})
126 # linker: link the program against the libraries
127 target_link_libraries(
130 ${I2NCOMMON_LIBRARIES}
133 # creates the install rule for the binary
134 install(TARGETS ${TARGET} DESTINATION bin)
137 # create a library from the same files to feed into the linker for tools
138 add_library(lib_for_tools STATIC ${SOURCES})
140 # now create an executable for tools/feed_packet_data that depends on lib_for_tools
141 set(feed_packet_data_SOURCES tools/pcap.cpp tools/feed_packet_data.cpp)
142 add_executable(feed_packet_data ${feed_packet_data_SOURCES})
143 target_link_libraries(
147 ${I2NCOMMON_LIBRARIES}
149 # no install! install(TARGETS feed_packet_data DESTINATION bin)