Revert "sq h2"
[metze/wireshark/wip.git] / extcap / CMakeLists.txt
1 # CMakeLists.txt
2 #
3 # Wireshark - Network traffic analyzer
4 # By Gerald Combs <gerald@wireshark.org>
5 # Copyright 1998 Gerald Combs
6 #
7 # SPDX-License-Identifier: GPL-2.0-or-later
8 #
9
10 if(EXTCAP_ANDROIDDUMP_LIBPCAP)
11         set(ANDROIDDUMP_USE_LIBPCAP 1)
12 endif()
13
14 if(LIBSSH_FOUND)
15         SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBSSH_LIBRARIES})
16         CHECK_FUNCTION_EXISTS(ssh_userauth_agent LIBSSH_USERAUTH_AGENT_FOUND)
17         if(LIBSSH_USERAUTH_AGENT_FOUND)
18                 set(HAVE_SSH_USERAUTH_AGENT 1)
19         endif()
20 endif()
21
22 # Ensure "run/extcap" exists
23 # add_custom_command(OUTPUT "${DATAFILE_DIR}/extcap"
24 #       COMMAND ${CMAKE_COMMAND} -E make_directory
25 #               "${DATAFILE_DIR}/extcap"
26 # )
27 # list(APPEND copy_data_files_depends "${DATAFILE_DIR}/extcap")
28
29
30 macro(set_extcap_executable_properties _executable)
31         set_target_properties(${_executable} PROPERTIES FOLDER "Executables/Extcaps")
32
33         set(PROGLIST ${PROGLIST} ${_executable})
34
35         if(WIN32)
36                 set_target_properties(${_executable} PROPERTIES
37                         LINK_FLAGS "${WS_LINK_FLAGS}"
38                         RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/extcap
39                         RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/run/Debug/extcap
40                         RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/run/Release/extcap
41                         RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/run/MinSizeRel/extcap
42                         RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/run/RelWithDebInfo/extcap
43                 )
44         else()
45                 set_target_properties(${_executable} PROPERTIES
46                         LINK_FLAGS "${WS_LINK_FLAGS}"
47                         RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/extcap
48                 )
49                 if(CMAKE_INSTALL_RPATH MATCHES "\\$ORIGIN")
50                         # Use relative path from ${EXTCAP_INSTALL_LIBDIR} to ${CMAKE_INSTALL_LIBDIR}
51                         set_target_properties(${_executable} PROPERTIES
52                                 INSTALL_RPATH "$ORIGIN/../.."
53                         )
54                 endif()
55                 if(ENABLE_APPLICATION_BUNDLE)
56                         if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
57                                 # Xcode
58                                 set_target_properties(${_executable} PROPERTIES
59                                         RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/$<CONFIG>/Wireshark.app/Contents/MacOS/extcap
60                                 )
61                         else()
62                                 set_target_properties(${_executable} PROPERTIES
63                                         RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/extcap
64                                 )
65                                 # Add a wrapper script which runs each executable from the
66                                 # correct location. This adds convenience but makes debugging
67                                 # more difficult.
68                                 file(REMOVE ${CMAKE_BINARY_DIR}/run/${_executable})
69                                 file(WRITE ${CMAKE_BINARY_DIR}/run/${_executable} "#!/bin/sh\n")
70                                 file(APPEND ${CMAKE_BINARY_DIR}/run/${_executable} "exec ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/extcap/${_executable} \"\$\@\"\n")
71                                 execute_process(COMMAND chmod a+x ${CMAKE_BINARY_DIR}/run/${_executable})
72                         endif()
73                 endif()
74         endif()
75 endmacro()
76
77 add_custom_target(extcaps)
78
79 add_library(extcap-base OBJECT extcap-base.c)
80 if(LIBSSH_FOUND)
81         add_library(ssh-base OBJECT ssh-base.c)
82         target_include_directories(ssh-base SYSTEM
83                 PRIVATE
84                         ${LIBSSH_INCLUDE_DIRS}
85         )
86 endif()
87
88 if(BUILD_androiddump)
89         if(EXTCAP_ANDROIDDUMP_LIBPCAP)
90                 if(HAVE_LIBPCAP)
91                         set(androiddump_LIBS
92                                 ui
93                                 ${GLIB2_LIBRARIES}
94                                 ${PCAP_LIBRARIES}
95                         )
96                 else()
97                         message(FATAL_ERROR "You are trying to build androiddump with libpcap but do not have it")
98                 endif()
99         else()
100                 set(androiddump_LIBS
101                         ui
102                         wiretap
103                         ${GLIB2_LIBRARIES}
104                         ${ZLIB_LIBRARIES}
105                         ${CMAKE_DL_LIBS}
106                 )
107         endif()
108         set(androiddump_FILES
109                 $<TARGET_OBJECTS:cli_main>
110                 $<TARGET_OBJECTS:extcap-base>
111                 androiddump.c
112         )
113
114         set_executable_resources(androiddump "Androiddump")
115         add_executable(androiddump ${androiddump_FILES})
116         set_extcap_executable_properties(androiddump)
117         target_link_libraries(androiddump ${androiddump_LIBS})
118         install(TARGETS androiddump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
119         add_dependencies(extcaps androiddump)
120 endif()
121
122 if(BUILD_sshdump AND LIBSSH_FOUND)
123         set(sshdump_LIBS
124                 wsutil
125                 ${GLIB2_LIBRARIES}
126                 ${CMAKE_DL_LIBS}
127                 ${LIBSSH_LIBRARIES}
128         )
129         set(sshdump_FILES
130                 $<TARGET_OBJECTS:cli_main>
131                 $<TARGET_OBJECTS:extcap-base>
132                 $<TARGET_OBJECTS:ssh-base>
133                 sshdump.c
134         )
135
136         set_executable_resources(sshdump "Sshdump")
137         add_executable(sshdump ${sshdump_FILES})
138         set_extcap_executable_properties(sshdump)
139         target_link_libraries(sshdump ${sshdump_LIBS})
140         target_include_directories(sshdump SYSTEM PRIVATE ${LIBSSH_INCLUDE_DIRS})
141         install(TARGETS sshdump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
142         add_dependencies(extcaps sshdump)
143 elseif (BUILD_sshdump)
144         #message( WARNING "Cannot find libssh, cannot build sshdump" )
145 endif()
146
147 if(BUILD_ciscodump AND LIBSSH_FOUND)
148         set(ciscodump_LIBS
149                 writecap
150                 wsutil
151                 ${GLIB2_LIBRARIES}
152                 ${CMAKE_DL_LIBS}
153                 ${LIBSSH_LIBRARIES}
154         )
155         set(ciscodump_FILES
156                 $<TARGET_OBJECTS:cli_main>
157                 $<TARGET_OBJECTS:extcap-base>
158                 $<TARGET_OBJECTS:ssh-base>
159                 ciscodump.c
160         )
161
162         set_executable_resources(ciscodump "Ciscodump")
163         add_executable(ciscodump ${ciscodump_FILES})
164         set_extcap_executable_properties(ciscodump)
165         target_link_libraries(ciscodump ${ciscodump_LIBS})
166         target_include_directories(ciscodump SYSTEM PRIVATE ${LIBSSH_INCLUDE_DIRS})
167         install(TARGETS ciscodump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
168         add_dependencies(extcaps ciscodump)
169 elseif (BUILD_ciscodump)
170         #message( WARNING "Cannot find libssh, cannot build ciscodump" )
171 endif()
172
173 if(BUILD_dpauxmon AND HAVE_LIBNL3)
174         set(dpauxmon_LIBS
175                 ${GLIB2_LIBRARIES}
176                 ${CMAKE_DL_LIBS}
177                 wsutil
178                 writecap
179                 ${NL_LIBRARIES}
180         )
181         set(dpauxmon_FILES
182                 $<TARGET_OBJECTS:extcap-base>
183                 dpauxmon.c
184         )
185
186         set_executable_resources(dpauxmon "dpauxmon")
187         add_executable(dpauxmon ${dpauxmon_FILES})
188         set_extcap_executable_properties(dpauxmon)
189         target_link_libraries(dpauxmon ${dpauxmon_LIBS})
190         target_include_directories(dpauxmon SYSTEM PRIVATE ${NL_INCLUDE_DIRS})
191         install(TARGETS dpauxmon RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
192         add_dependencies(extcaps dpauxmon)
193 elseif (BUILD_dpauxmon)
194         #message( WARNING "Cannot find libnl3, cannot build dpauxmon" )
195 endif()
196
197 if(BUILD_udpdump)
198         set(udpdump_LIBS
199                 ${GLIB2_LIBRARIES}
200                 ${CMAKE_DL_LIBS}
201                 wsutil
202                 writecap
203         )
204         set(udpdump_FILES
205                 $<TARGET_OBJECTS:cli_main>
206                 $<TARGET_OBJECTS:extcap-base>
207                 udpdump.c
208         )
209
210         set_executable_resources(udpdump "udpdump")
211         add_executable(udpdump ${udpdump_FILES})
212         set_extcap_executable_properties(udpdump)
213         target_link_libraries(udpdump ${udpdump_LIBS})
214         install(TARGETS udpdump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
215         add_dependencies(extcaps udpdump)
216 endif()
217
218 if(BUILD_randpktdump)
219         set(randpktdump_LIBS
220                 randpkt_core
221                 ui
222                 wiretap
223                 ${GLIB2_LIBRARIES}
224                 ${ZLIB_LIBRARIES}
225                 ${CMAKE_DL_LIBS}
226         )
227         set(randpktdump_FILES
228                 $<TARGET_OBJECTS:cli_main>
229                 $<TARGET_OBJECTS:extcap-base>
230                 randpktdump.c
231         )
232
233         set_executable_resources(randpktdump "randpktdump")
234         add_executable(randpktdump ${randpktdump_FILES})
235         set_extcap_executable_properties(randpktdump)
236         target_link_libraries(randpktdump ${randpktdump_LIBS})
237         install(TARGETS randpktdump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
238         add_dependencies(extcaps randpktdump)
239 endif()
240
241 if(BUILD_sdjournal AND SYSTEMD_FOUND)
242         set(sdjournal_LIBS
243                 ui
244                 wiretap
245                 writecap
246                 wsutil
247                 ${GLIB2_LIBRARIES}
248                 ${ZLIB_LIBRARIES}
249                 ${CMAKE_DL_LIBS}
250                 ${SYSTEMD_LIBRARIES}
251         )
252         set(sdjournal_FILES
253                 $<TARGET_OBJECTS:extcap-base>
254                 sdjournal.c
255         )
256
257         set_executable_resources(sdjournal "sdjournal")
258         add_executable(sdjournal ${sdjournal_FILES})
259         set_extcap_executable_properties(sdjournal)
260         target_link_libraries(sdjournal ${sdjournal_LIBS})
261         target_include_directories(sdjournal SYSTEM PRIVATE ${SYSTEMD_INCLUDE_DIRS})
262         target_compile_definitions(sdjournal PRIVATE ${SYSTEMD_DEFINITIONS})
263         install(TARGETS sdjournal RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
264         add_dependencies(extcaps sdjournal)
265 elseif (BUILD_sdjournal)
266         #message( WARNING "Cannot find libsystemd, cannot build sdjournal" )
267 endif()
268
269 #
270 # Editor modelines  -  https://www.wireshark.org/tools/modelines.html
271 #
272 # Local variables:
273 # c-basic-offset: 8
274 # tab-width: 8
275 # indent-tabs-mode: t
276 # End:
277 #
278 # vi: set shiftwidth=8 tabstop=8 noexpandtab:
279 # :indentSize=8:tabSize=8:noTabs=false:
280 #