3 # Wireshark - Network traffic analyzer
4 # By Gerald Combs <gerald@wireshark.org>
5 # Copyright 1998 Gerald Combs
7 # SPDX-License-Identifier: GPL-2.0-or-later
10 if(EXTCAP_ANDROIDDUMP_LIBPCAP)
11 set(ANDROIDDUMP_USE_LIBPCAP 1)
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)
22 # Ensure "run/extcap" exists
23 # add_custom_command(OUTPUT "${DATAFILE_DIR}/extcap"
24 # COMMAND ${CMAKE_COMMAND} -E make_directory
25 # "${DATAFILE_DIR}/extcap"
27 # list(APPEND copy_data_files_depends "${DATAFILE_DIR}/extcap")
30 macro(set_extcap_executable_properties _executable)
31 set_target_properties(${_executable} PROPERTIES FOLDER "Executables/Extcaps")
33 set(PROGLIST ${PROGLIST} ${_executable})
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
45 set_target_properties(${_executable} PROPERTIES
46 LINK_FLAGS "${WS_LINK_FLAGS}"
47 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/extcap
49 if(ENABLE_RPATH_ORIGIN)
50 set_target_properties(${_executable} PROPERTIES
51 INSTALL_RPATH "\$ORIGIN/../.."
54 if(ENABLE_APPLICATION_BUNDLE)
55 if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
57 set_target_properties(${_executable} PROPERTIES
58 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/$<CONFIG>/Wireshark.app/Contents/MacOS/extcap
61 set_target_properties(${_executable} PROPERTIES
62 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/extcap
64 # Add a wrapper script which runs each executable from the
65 # correct location. This adds convenience but makes debugging
67 file(REMOVE ${CMAKE_BINARY_DIR}/run/${_executable})
68 file(WRITE ${CMAKE_BINARY_DIR}/run/${_executable} "#!/bin/sh\n")
69 file(APPEND ${CMAKE_BINARY_DIR}/run/${_executable} "exec ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/extcap/${_executable} \"\$\@\"\n")
70 execute_process(COMMAND chmod a+x ${CMAKE_BINARY_DIR}/run/${_executable})
76 add_custom_target(extcaps)
79 if(EXTCAP_ANDROIDDUMP_LIBPCAP)
87 message(FATAL_ERROR "You are trying to build androiddump with libpcap but do not have it")
103 set_executable_resources(androiddump "Androiddump")
104 add_executable(androiddump ${androiddump_FILES})
105 # XXX Shouldn't we add wsutil to androiddump_LIBS instead?
106 set_extcap_executable_properties(androiddump)
107 target_link_libraries(androiddump ${androiddump_LIBS})
108 install(TARGETS androiddump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
109 add_dependencies(extcaps androiddump)
112 if(BUILD_sshdump AND LIBSSH_FOUND)
125 set_executable_resources(sshdump "Sshdump")
126 add_executable(sshdump ${sshdump_FILES})
127 set_extcap_executable_properties(sshdump)
128 target_link_libraries(sshdump ${sshdump_LIBS})
129 target_include_directories(sshdump PUBLIC ${LIBSSH_INCLUDE_DIR})
130 install(TARGETS sshdump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
131 add_dependencies(extcaps sshdump)
132 elseif (BUILD_sshdump)
133 #message( WARNING "Cannot find libssh, cannot build sshdump" )
136 if(BUILD_ciscodump AND LIBSSH_FOUND)
150 set_executable_resources(ciscodump "Ciscodump")
151 add_executable(ciscodump ${ciscodump_FILES})
152 set_extcap_executable_properties(ciscodump)
153 target_link_libraries(ciscodump ${ciscodump_LIBS})
154 target_include_directories(ciscodump PUBLIC ${LIBSSH_INCLUDE_DIR})
155 install(TARGETS ciscodump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
156 add_dependencies(extcaps ciscodump)
157 elseif (BUILD_ciscodump)
158 #message( WARNING "Cannot find libssh, cannot build ciscodump" )
161 if(BUILD_dpauxmon AND HAVE_LIBNL3)
174 set_executable_resources(dpauxmon "dpauxmon")
175 add_executable(dpauxmon ${dpauxmon_FILES})
176 set_extcap_executable_properties(dpauxmon)
177 target_link_libraries(dpauxmon ${dpauxmon_LIBS})
178 target_include_directories(dpauxmon PUBLIC ${NL_INCLUDE_DIR})
179 install(TARGETS dpauxmon RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
180 add_dependencies(extcaps dpauxmon)
181 elseif (BUILD_dpauxmon)
182 #message( WARNING "Cannot find libnl3, cannot build dpauxmon" )
197 set_executable_resources(udpdump "udpdump")
198 add_executable(udpdump ${udpdump_FILES})
199 set_extcap_executable_properties(udpdump)
200 target_link_libraries(udpdump ${udpdump_LIBS})
201 install(TARGETS udpdump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
202 add_dependencies(extcaps udpdump)
205 if(BUILD_randpktdump)
214 set(randpktdump_FILES
219 set_executable_resources(randpktdump "randpktdump")
220 add_executable(randpktdump ${randpktdump_FILES})
221 # XXX Shouldn't we add wsutil to randpktdump_LIBS instead?
222 set_extcap_executable_properties(randpktdump)
223 target_link_libraries(randpktdump ${randpktdump_LIBS})
224 install(TARGETS randpktdump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
225 add_dependencies(extcaps randpktdump)
228 if(BUILD_sdjournal AND SYSTEMD_FOUND)
244 set_executable_resources(sdjournal "sdjournal")
245 add_executable(sdjournal ${sdjournal_FILES})
246 set_extcap_executable_properties(sdjournal)
247 target_link_libraries(sdjournal ${sdjournal_LIBS})
248 install(TARGETS sdjournal RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
249 add_dependencies(extcaps sdjournal)
250 elseif (BUILD_sdjournal)
251 #message( WARNING "Cannot find libsystemd, cannot build sdjournal" )