Update pingcheck to work with cmake 3.28
[pingcheck] / src / CMakeLists.txt
... / ...
CommitLineData
1# package: find external packages
2include(FindPkgConfig)
3
4# package: required boost libraries
5set(Boost_USE_STATIC_LIBS OFF)
6set(Boost_USE_MULTITHREADED OFF)
7set(Boost_USE_STATIC_RUNTIME OFF)
8
9find_package(Boost 1.44 COMPONENTS filesystem program_options system serialization date_time REQUIRED)
10
11# package: boost-custom
12include_directories(${CMAKE_SOURCE_DIR}/lib/boost-custom)
13
14# package: boost-net-dns
15include_directories(${CMAKE_SOURCE_DIR}/lib/boost-net-dns)
16
17# package: libi2ncommon
18pkg_check_modules(I2NCOMMON REQUIRED libi2ncommon)
19include_directories(${I2NCOMMON_INCLUDE_DIRS})
20link_directories(${I2NCOMMON_LIBRARY_DIRS})
21
22# package: doxygen
23find_package(Doxygen)
24
25# compiler: include directories where the source code is located
26include_directories(${CMAKE_CURRENT_SOURCE_DIR})
27
28# compiler: source code files
29set(SOURCES
30 config/configuration.cpp
31 config/configurationcommandline.cpp
32 config/configurationfile.cpp
33 config/configurationinterface.cpp
34 config/configurationoptions.cpp
35 config/configurationreader.cpp
36 config/host.cpp
37 config/option/daemonoption.cpp
38 config/option/configfileoption.cpp
39 config/option/configurationoption.cpp
40 config/option/hostconfigurationoption.cpp
41 config/option/hostpingintervaloption.cpp
42 config/option/hostpingprotocoloption.cpp
43 config/option/hostportoption.cpp
44 config/option/hostnameoption.cpp
45 config/option/hostsourcenetworkinterfaceoption.cpp
46 config/option/hostsdownlimitoption.cpp
47 config/option/linkdownintervaloption.cpp
48 config/option/linkupintervaloption.cpp
49 config/option/logleveloption.cpp
50 config/option/logoutputoption.cpp
51 config/option/logfileoption.cpp
52 config/option/nameserveroption.cpp
53 config/option/pingfaillimitoption.cpp
54 config/option/sourcenetworkinterfaceoption.cpp
55 config/option/statusnotifiercmdoption.cpp
56 config/option/versionoption.cpp
57 config/option/ratiorandomhostsoption.cpp
58 config/option/pingreplytimeoutoption.cpp
59 config/option/maxaddressresolutionattemptsoption.cpp
60 config/option/resolvedipttlthresholdoption.cpp
61 config/option/mintimebetweenresolvesoption.cpp
62 config/option/dnscachefileoption.cpp
63 dns/timetolive.cpp
64 dns/hostaddress.cpp
65 dns/dnsipprotocol.cpp
66 dns/dnscache.cpp
67 dns/resolverbase.cpp
68 dns/dnsresolver.cpp
69 dns/dnsmaster.cpp
70 host/hoststatus.cpp
71 host/pingstatus.cpp
72 host/loglevel.cpp
73 host/logoutput.cpp
74 host/messagepayload.cpp
75 host/networkinterfacelist.cpp
76 host/pinger.cpp
77 host/pingerfactory.cpp
78 host/pinginterval.cpp
79 host/pingnumber.cpp
80 host/pingprotocol.cpp
81 host/pingscheduler.cpp
82 tools/pcap.cpp
83 icmp/icmpdata.cpp
84 icmp/icmpdata_pingfailreply.cpp
85 icmp/icmpechodata.cpp
86 icmp/icmpdestinationunreachabledata.cpp
87 icmp/icmptimeexceededdata.cpp
88 icmp/icmpheader.cpp
89 icmp/icmppacket.cpp
90 icmp/icmppinger.cpp
91 icmp/icmppacketfactory.cpp
92 ip/ipheader.cpp
93 ip/ipv4header.cpp
94 ip/ipv6header.cpp
95 link/linkstatus.cpp
96 link/statusnotifiercommand.cpp
97 tcp/tcpheader.cpp
98 tcp/tcppinger.cpp
99 tcp/tcpipv4segment.cpp
100 tcp/tcpipv6segment.cpp
101 tcp/tcpsegment.cpp
102 tcp/tcpsegmentfactory.cpp
103 boost_assert_handler.cpp
104 main.cpp
105)
106
107# documentation: add a target to generate API documentation with Doxygen
108if(DOXYGEN_FOUND)
109 configure_file(
110 ${CMAKE_SOURCE_DIR}/doc/doxyfile.in
111 ${CMAKE_BINARY_DIR}/doc/Doxyfile @ONLY
112 )
113 add_custom_target(
114 doc
115 ${DOXYGEN_EXECUTABLE}
116 ${CMAKE_BINARY_DIR}/doc/Doxyfile
117 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc
118 COMMENT "Generating API documentation with Doxygen" VERBATIM
119 )
120endif(DOXYGEN_FOUND)
121
122# compiler: creates the binary
123add_executable(${TARGET} ${SOURCES})
124
125# linker: link the program against the libraries
126target_link_libraries(
127 ${TARGET}
128 Boost::filesystem
129 Boost::program_options
130 Boost::system
131 Boost::serialization
132 Boost::date_time
133 ${I2NCOMMON_LIBRARIES}
134 pthread
135)
136
137# creates the install rule for the binary
138install(TARGETS ${TARGET} DESTINATION bin)
139
140
141# create a library from the same files to feed into the linker for tools
142add_library(lib_for_tools STATIC ${SOURCES})
143target_link_libraries(lib_for_tools pthread)
144
145# now create an executable for tools/feed_packet_data that depends on lib_for_tools
146set(feed_packet_data_SOURCES tools/pcap.cpp tools/feed_packet_data.cpp)
147add_executable(feed_packet_data ${feed_packet_data_SOURCES})
148target_link_libraries(
149 feed_packet_data
150 lib_for_tools
151 Boost::filesystem
152 Boost::program_options
153 Boost::system
154 Boost::serialization
155 Boost::date_time
156 ${I2NCOMMON_LIBRARIES}
157)
158# no install! install(TARGETS feed_packet_data DESTINATION bin)