11ba10dd4b
Multi-configuration generators (such as Xcode or VS) append the current build configuration to most paths (eg. Debug/Release). Currently this results in inconsistent paths for the application bundle and the included command line tools. This commit sets the correct path information for multi-configuration generators for macOS application bundles. The standard Makefile behaviour is untouched. One Windows specific configuration was changed, as it was conflicting with these changes. This needs to be checked before merging. Additionally the wrapper scripts are omitted for Xcode, as the path to the binaries depends on the configuration chosen in Xcode. Therefore it is not viable to create these scripts in the cmake run. Bug: 11816 Change-Id: Ib43d82eb04600a0e2f2b020afb44b579ffc7a7c9 Reviewed-on: https://code.wireshark.org/review/28291 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
222 lines
6 KiB
CMake
222 lines
6 KiB
CMake
# CMakeLists.txt
|
|
#
|
|
# Wireshark - Network traffic analyzer
|
|
# By Gerald Combs <gerald@wireshark.org>
|
|
# Copyright 1998 Gerald Combs
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
|
|
if(EXTCAP_ANDROIDDUMP_LIBPCAP)
|
|
set(ANDROIDDUMP_USE_LIBPCAP 1)
|
|
endif()
|
|
|
|
if(LIBSSH_FOUND)
|
|
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBSSH_LIBRARIES})
|
|
CHECK_FUNCTION_EXISTS(ssh_userauth_agent LIBSSH_USERAUTH_AGENT_FOUND)
|
|
if(LIBSSH_USERAUTH_AGENT_FOUND)
|
|
set(HAVE_SSH_USERAUTH_AGENT 1)
|
|
endif()
|
|
endif()
|
|
|
|
# Ensure "run/extcap" exists
|
|
# add_custom_command(OUTPUT "${DATAFILE_DIR}/extcap"
|
|
# COMMAND ${CMAKE_COMMAND} -E make_directory
|
|
# "${DATAFILE_DIR}/extcap"
|
|
# )
|
|
# list(APPEND copy_data_files_depends "${DATAFILE_DIR}/extcap")
|
|
|
|
|
|
macro(set_extcap_executable_properties _executable)
|
|
set_target_properties(${_executable} PROPERTIES FOLDER "Executables/Extcaps")
|
|
|
|
set(PROGLIST ${PROGLIST} ${_executable})
|
|
|
|
if(WIN32)
|
|
set_target_properties(${_executable} PROPERTIES
|
|
LINK_FLAGS "${WS_LINK_FLAGS}"
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/extcap
|
|
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/run/Debug/extcap
|
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/run/Release/extcap
|
|
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/run/MinSizeRel/extcap
|
|
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/run/RelWithDebInfo/extcap
|
|
)
|
|
else()
|
|
set_target_properties(${_executable} PROPERTIES
|
|
LINK_FLAGS "${WS_LINK_FLAGS}"
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/extcap
|
|
)
|
|
if(ENABLE_APPLICATION_BUNDLE)
|
|
if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
|
|
# Xcode
|
|
set_target_properties(${_executable} PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/$<CONFIG>/Wireshark.app/Contents/MacOS/extcap
|
|
)
|
|
else()
|
|
set_target_properties(${_executable} PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/extcap
|
|
)
|
|
# Add a wrapper script which runs each executable from the
|
|
# correct location. This adds convenience but makes debugging
|
|
# more difficult.
|
|
file(REMOVE ${CMAKE_BINARY_DIR}/run/${_executable})
|
|
file(WRITE ${CMAKE_BINARY_DIR}/run/${_executable} "#!/bin/sh\n")
|
|
file(APPEND ${CMAKE_BINARY_DIR}/run/${_executable} "exec ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/extcap/${_executable} \"\$\@\"\n")
|
|
execute_process(COMMAND chmod a+x ${CMAKE_BINARY_DIR}/run/${_executable})
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
add_custom_target(extcaps)
|
|
|
|
if(BUILD_androiddump)
|
|
if(EXTCAP_ANDROIDDUMP_LIBPCAP)
|
|
if(HAVE_LIBPCAP)
|
|
set(androiddump_LIBS
|
|
ui
|
|
${GLIB2_LIBRARIES}
|
|
${PCAP_LIBRARIES}
|
|
)
|
|
else()
|
|
message(FATAL_ERROR "You are trying to build androiddump with libpcap but do not have it")
|
|
endif()
|
|
else()
|
|
set(androiddump_LIBS
|
|
ui
|
|
wiretap
|
|
${GLIB2_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
)
|
|
endif()
|
|
set(androiddump_FILES
|
|
androiddump.c
|
|
extcap-base.c
|
|
)
|
|
|
|
add_executable(androiddump WIN32 ${androiddump_FILES})
|
|
# XXX Shouldn't we add wsutil to androiddump_LIBS instead?
|
|
set_extcap_executable_properties(androiddump)
|
|
target_link_libraries(androiddump ${androiddump_LIBS})
|
|
install(TARGETS androiddump RUNTIME DESTINATION ${EXTCAP_DIR})
|
|
add_dependencies(extcaps androiddump)
|
|
endif()
|
|
|
|
if(BUILD_sshdump AND LIBSSH_FOUND)
|
|
set(sshdump_LIBS
|
|
wsutil
|
|
${GLIB2_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
${LIBSSH_LIBRARIES}
|
|
)
|
|
set(sshdump_FILES
|
|
sshdump.c
|
|
extcap-base.c
|
|
ssh-base.c
|
|
)
|
|
|
|
add_executable(sshdump WIN32 ${sshdump_FILES})
|
|
set_extcap_executable_properties(sshdump)
|
|
target_link_libraries(sshdump ${sshdump_LIBS})
|
|
target_include_directories(sshdump PUBLIC ${LIBSSH_INCLUDE_DIR})
|
|
install(TARGETS sshdump RUNTIME DESTINATION ${EXTCAP_DIR})
|
|
add_dependencies(extcaps sshdump)
|
|
elseif (BUILD_sshdump)
|
|
#message( WARNING "Cannot find libssh, cannot build sshdump" )
|
|
endif()
|
|
|
|
if(BUILD_ciscodump AND LIBSSH_FOUND)
|
|
set(ciscodump_LIBS
|
|
writecap
|
|
wsutil
|
|
${GLIB2_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
${LIBSSH_LIBRARIES}
|
|
)
|
|
set(ciscodump_FILES
|
|
ciscodump.c
|
|
extcap-base.c
|
|
ssh-base.c
|
|
)
|
|
|
|
add_executable(ciscodump WIN32 ${ciscodump_FILES})
|
|
set_extcap_executable_properties(ciscodump)
|
|
target_link_libraries(ciscodump ${ciscodump_LIBS})
|
|
target_include_directories(ciscodump PUBLIC ${LIBSSH_INCLUDE_DIR})
|
|
install(TARGETS ciscodump RUNTIME DESTINATION ${EXTCAP_DIR})
|
|
add_dependencies(extcaps ciscodump)
|
|
elseif (BUILD_ciscodump)
|
|
#message( WARNING "Cannot find libssh, cannot build ciscodump" )
|
|
endif()
|
|
|
|
if(BUILD_dpauxmon AND HAVE_LIBNL3)
|
|
set(dpauxmon_LIBS
|
|
${GLIB2_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
wsutil
|
|
writecap
|
|
${NL_LIBRARIES}
|
|
)
|
|
set(dpauxmon_FILES
|
|
dpauxmon.c
|
|
extcap-base.c
|
|
)
|
|
|
|
add_executable(dpauxmon WIN32 ${dpauxmon_FILES})
|
|
set_extcap_executable_properties(dpauxmon)
|
|
target_link_libraries(dpauxmon ${dpauxmon_LIBS})
|
|
target_include_directories(dpauxmon PUBLIC ${NL_INCLUDE_DIR})
|
|
install(TARGETS dpauxmon RUNTIME DESTINATION ${EXTCAP_DIR})
|
|
add_dependencies(extcaps dpauxmon)
|
|
elseif (BUILD_dpauxmon)
|
|
#message( WARNING "Cannot find libnl3, cannot build dpauxmon" )
|
|
endif()
|
|
|
|
if(BUILD_udpdump)
|
|
set(udpdump_LIBS
|
|
${GLIB2_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
wsutil
|
|
writecap
|
|
)
|
|
set(udpdump_FILES
|
|
udpdump.c
|
|
extcap-base.c
|
|
)
|
|
|
|
add_executable(udpdump WIN32 ${udpdump_FILES})
|
|
set_extcap_executable_properties(udpdump)
|
|
target_link_libraries(udpdump ${udpdump_LIBS})
|
|
install(TARGETS udpdump RUNTIME DESTINATION ${EXTCAP_DIR})
|
|
add_dependencies(extcaps udpdump)
|
|
endif()
|
|
|
|
if(BUILD_randpktdump)
|
|
set(randpktdump_LIBS
|
|
randpkt_core
|
|
ui
|
|
wiretap
|
|
${GLIB2_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
)
|
|
set(randpktdump_FILES
|
|
extcap-base.c
|
|
randpktdump.c
|
|
)
|
|
|
|
add_executable(randpktdump WIN32 ${randpktdump_FILES})
|
|
# XXX Shouldn't we add wsutil to randpktdump_LIBS instead?
|
|
set_extcap_executable_properties(randpktdump)
|
|
target_link_libraries(randpktdump ${randpktdump_LIBS})
|
|
install(TARGETS randpktdump RUNTIME DESTINATION ${EXTCAP_DIR})
|
|
add_dependencies(extcaps randpktdump)
|
|
endif()
|
|
|
|
set(CLEAN_C_FILES
|
|
${dumpcap_FILES}
|
|
${androiddump_FILES}
|
|
${sshdump_FILES}
|
|
${ciscodump_FILES}
|
|
) |