# Updated by make-version.pl
set(GIT_REVISION 0)
set(PROJECT_MAJOR_VERSION 2)
-set(PROJECT_MINOR_VERSION 1)
+set(PROJECT_MINOR_VERSION 3)
set(PROJECT_PATCH_VERSION 0)
set(PROJECT_BUILD_VERSION ${GIT_REVISION})
-set(PROJECT_VERSION_EXTENSION "$ENV{WIRESHARK_VERSION_EXTRA}")
+set(PROJECT_VERSION_EXTENSION "")
+
+if(DEFINED ENV{WIRESHARK_VERSION_EXTRA})
+ set(PROJECT_VERSION_EXTENSION "$ENV{WIRESHARK_VERSION_EXTRA}")
+endif()
+
set(PROJECT_VERSION "${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}${PROJECT_VERSION_EXTENSION}")
# Banner shown at top right of Qt welcome screen.
/DWIN32_LEAN_AND_MEAN
"/DMSC_VER_REQUIRED=${MSC_VER_REQUIRED}"
/D_CRT_SECURE_NO_DEPRECATE
- /D_CRT_NONSTDC_NO_DEPRECATE
# NOMINMAX keeps windows.h from defining "min" and "max" via windef.h.
# This avoids conflicts with the C++ standard library.
/DNOMINMAX
set(LOCAL_CFLAGS ${LOCAL_CFLAGS} "/Zo")
elseif(MSVC14)
# /Zo Enhanced debugging of optimised code
+ # /utf-8 Set Source and Executable character sets to UTF-8
# VS2015(MSVC14): On by default when /Zi or /Z7 used.
- set(LOCAL_CFLAGS ${LOCAL_CFLAGS} "/Zo")
+ set(LOCAL_CFLAGS ${LOCAL_CFLAGS} "/Zo" "/utf-8")
endif()
if(ENABLE_CODE_ANALYSIS)
${WARNINGS_CFLAGS}
)
- # Set in Makefile.nmake
set(WS_LINK_FLAGS "/LARGEADDRESSAWARE /MANIFEST:NO /INCREMENTAL:NO /RELEASE")
else()
-Wextra
-Wendif-labels
-Wpointer-arith
- -Warray-bounds
-Wformat-security
-fwrapv
-fno-strict-overflow
-Wno-overlength-strings
-Wno-long-long
-Wheader-guard
- -Wunused-const-variable
)
set(WIRESHARK_C_ONLY_FLAGS
-Wstrict-prototypes
-Wlogical-op
-Wjump-misses-init
+ -Wunused-const-variable
# The Qt headers generate a ton of shortening errors on 64-bit systems
# so only enable this for C for now.
-Wshorten-64-to-32
+ # Clang only
+ -Wc99-extensions
)
set(WIRESHARK_CXX_ONLY_FLAGS
)
endif()
- set(WIRESHARK_ASAN_FLAGS
- # With Clang >= 3.5 Leak detection is enable by default
- # and no yet all leak is fixed...
- # use ASAN_OPTIONS=detect_leaks=0 to disable detect_leaks
- -fsanitize=address
- -fsanitize=undefined # compile and runtime checks
- # -fsanitize=float-divide-by-zero
- # -fsanitize=float-cast-overflow
- # -fno-sanitize-recover # Abort during runtime
- )
-
- if(ENABLE_ASAN)
- set(WIRESHARK_COMMON_FLAGS ${WIRESHARK_COMMON_FLAGS} ${WIRESHARK_ASAN_FLAGS})
- endif()
-
if(ENABLE_EXTRA_COMPILER_WARNINGS) # This overrides -Werror
set(WIRESHARK_COMMON_FLAGS ${WIRESHARK_COMMON_FLAGS} ${WIRESHARK_EXTRA_COMPILER_COMMON_FLAGS})
set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS} ${WIRESHARK_EXTRA_COMPILER_C_ONLY_FLAGS})
endforeach()
set(CMAKE_CXX_FLAGS "${ADDED_CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
+if(ENABLE_ASAN)
+ set(CMAKE_REQUIRED_LIBRARIES "-fsanitize=address")
+ check_c_compiler_flag(-fsanitize=address C__fsanitize_address_VALID)
+ check_cxx_compiler_flag(-fsanitize=address CXX__fsanitize_address_VALID)
+ set(CMAKE_REQUIRED_LIBRARIES "")
+ if(NOT C__fsanitize_address_VALID OR NOT CXX__fsanitize_address_VALID)
+ message(FATAL_ERROR "ENABLE_ASAN was requested, but not supported!")
+ endif()
+ set(CMAKE_C_FLAGS "-fsanitize=address ${CMAKE_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS "-fsanitize=address ${CMAKE_CXX_FLAGS}")
+endif()
+
if(NOT DISABLE_WERROR AND NOT ENABLE_EXTRA_COMPILER_WARNINGS)
if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
set(WERROR_COMMON_FLAGS "/WX")
endif()
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- set (C_UNUSED "__attribute__((unused))" )
+ set (C_UNUSED "__attribute__((unused))" )
+ set (WS_NORETURN "__attribute__((noreturn))")
+elseif(MSVC)
+ set (C_UNUSED "")
+ set (WS_NORETURN "__declspec(noreturn)")
else()
- set (C_UNUSED "" )
+ set (C_UNUSED "")
+ set (WS_NORETURN "")
endif()
set(WIRESHARK_LD_FLAGS
set(M_REQUIRED TRUE)
endif()
-set(PACKAGELIST ${PACKAGELIST} HtmlViewer)
-
set(PACKAGELIST ${PACKAGELIST} LIBSSH)
set(LIBSSH_OPTIONS "0.6")
set(PACKAGE_VAR "PYTHONINTERP")
elseif(${PACKAGE} STREQUAL "Gettext")
set(PACKAGE_VAR "GETTEXT")
- elseif(${PACKAGE} STREQUAL "HtmlViewer")
- set(PACKAGE_VAR "HTML_VIEWER")
elseif(${PACKAGE} STREQUAL "Perl")
set(PACKAGE_VAR "PERL")
else()
if(GTK2_FOUND OR GTK3_FOUND)
set(GTK_FOUND ON)
endif()
-# That's the name autofoo uses
+
if(HAVE_LIBZLIB)
- set(HAVE_LIBZ 1)
+ set(HAVE_ZLIB 1)
# Always include the "true" zlib includes first. This works around a
# bug in the Windows setup of GTK[23] which has a faulty zconf.h.
include_directories(BEFORE ${ZLIB_INCLUDE_DIRS})
#
list(REMOVE_ITEM Qt5Widgets_EXECUTABLE_COMPILE_FLAGS "-fPIC")
endif()
+ if (Qt5Widgets_VERSION VERSION_GREATER 5.6
+ AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang"))
+ # Qt 5.7 and later require C++ 11. If our minmimu required CMake version
+ # is ever >= 3.1 we can use CXX_STANDARD + CXX_STANDARD_REQUIRED.
+ message(STATUS "Checking for C++ 11 support (Required by Qt 5.7 and later)")
+ check_cxx_compiler_flag(-std=c++11 CXX__std_c__11_VALID)
+ if(NOT CXX__std_c__11_VALID)
+ message(FATAL_ERROR "Qt ${Qt5Widgets_VERSION} requires C++ 11")
+ endif()
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
set (QT_FOUND ON)
set (QT_LIBRARIES ${Qt5Widgets_LIBRARIES} ${Qt5PrintSupport_LIBRARIES})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+# The top level checkAPIs target, add before subdirectory calls so it's avaiable to all
+add_custom_target(checkAPI)
+set_target_properties(checkAPI
+ PROPERTIES
+ FOLDER "Auxiliary"
+ EXCLUDE_FROM_ALL True
+ EXCLUDE_FROM_DEFAULT_BUILD True
+)
+
add_subdirectory( capchild )
add_subdirectory( caputils )
add_subdirectory( codecs )
add_definitions( -DTOP_SRCDIR=\"${CMAKE_SOURCE_DIR}\" )
if(WIN32)
- set(WS_MSVC_NORETURN "__declspec(noreturn)")
-
# Disable deprecation
if(MSVC80 OR MSVC90)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
endif()
-else()
- set(WS_MSVC_NORETURN " ")
endif()
if (${GIT_EXECUTABLE})
set(GIT_BIN_PARAM "--git-bin ${GIT_EXECUTABLE}")
endif()
set( VERSION ${PROJECT_VERSION} )
-execute_process(
+add_custom_target(version
COMMAND ${PERL_EXECUTABLE}
- ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
- --print-vcs ${GIT_BIN_PARAM}
- ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE VERSION_H_CONTENT
+ ${CMAKE_SOURCE_DIR}/make-version.pl
+ --set-vcs ${GIT_BIN_PARAM}
+ ${CMAKE_SOURCE_DIR}
)
+set_target_properties(version PROPERTIES FOLDER "Auxiliary")
+
set( configure_input "Built with CMake ${CMAKE_VERSION}" )
configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h)
-configure_file(${CMAKE_SOURCE_DIR}/version.h.in ${CMAKE_BINARY_DIR}/version.h)
-#set_target_properties(${CMAKE_BINARY_DIR}/version.h PROPERTIES FOLDER "Auxiliary")
set( prefix "${CMAKE_INSTALL_PREFIX}" )
set( exec_prefix "\${prefix}" )
cfile.c
frame_tvbuff.c
sync_pipe_write.c
+ ws_version_info.c
)
# sources for external capture interfaces
${SHARK_COMMON_SRC}
extcap.c
extcap_parser.c
+ extcap_spawn.c
)
endif()
${CMAKE_BINARY_DIR}/doc/androiddump.html
${CMAKE_BINARY_DIR}/doc/capinfos.html
${CMAKE_BINARY_DIR}/doc/captype.html
+ ${CMAKE_BINARY_DIR}/doc/ciscodump.html
${CMAKE_BINARY_DIR}/doc/dftest.html
${CMAKE_BINARY_DIR}/doc/dumpcap.html
${CMAKE_BINARY_DIR}/doc/editcap.html
)
endforeach(_dll)
-
- # Don't overwrite an exe if it's already there. We don't want to
- # clobber any previous code signing.
- file(GLOB _gspawn_helpers
- RELATIVE "${GLIB2_DLL_DIR}"
- "${GLIB2_DLL_DIR}/gspawn*.exe"
- )
- foreach(_gspawn_helper ${_gspawn_helpers})
- add_custom_command(TARGET copy_cli_dlls PRE_BUILD
- COMMAND if not exist \"${_dll_output_dir_win}\\${_gspawn_helper}\" xcopy ${_gspawn_helper} "${_dll_output_dir_win}" /D /Y
- WORKING_DIRECTORY "${GLIB2_DLL_DIR}"
- )
- endforeach()
-
# Optional
if (AIRPCAP_FOUND)
add_custom_command(TARGET copy_cli_dlls PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"${_dll_output_dir}/snmp/mibs"
COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${SMI_SHARE_DIR}/${SMI_DLL}/mibs/iana"
+ "${SMI_SHARE_DIR}/mibs/iana"
"${_dll_output_dir}/snmp/mibs"
COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${SMI_SHARE_DIR}/${SMI_DLL}/mibs/ietf"
+ "${SMI_SHARE_DIR}/mibs/ietf"
"${_dll_output_dir}/snmp/mibs"
COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${SMI_SHARE_DIR}/${SMI_DLL}/mibs/irtf"
+ "${SMI_SHARE_DIR}/mibs/irtf"
"${_dll_output_dir}/snmp/mibs"
COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${SMI_SHARE_DIR}/${SMI_DLL}/mibs/site"
+ "${SMI_SHARE_DIR}/mibs/site"
"${_dll_output_dir}/snmp/mibs"
COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${SMI_SHARE_DIR}/${SMI_DLL}/mibs/tubs"
+ "${SMI_SHARE_DIR}/mibs/tubs"
"${_dll_output_dir}/snmp/mibs"
COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${SMI_SHARE_DIR}/${SMI_DLL}/pibs"
+ "${SMI_SHARE_DIR}/pibs"
"${_dll_output_dir}/snmp/mibs"
COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${SMI_SHARE_DIR}/${SMI_DLL}/yang"
+ "${SMI_SHARE_DIR}/yang"
"${_dll_output_dir}/snmp/mibs"
+ #remove the extra directories copied (shallow copying the above would remove the need for this)
+ COMMAND ${CMAKE_COMMAND} -E remove_directory
+ "${_dll_output_dir}/snmp/mibs/iana"
+ COMMAND ${CMAKE_COMMAND} -E remove_directory
+ "${_dll_output_dir}/snmp/mibs/ietf"
+ COMMAND ${CMAKE_COMMAND} -E remove_directory
+ "${_dll_output_dir}/snmp/mibs/site"
+ COMMAND ${CMAKE_COMMAND} -E remove_directory
+ "${_dll_output_dir}/snmp/mibs/tubs"
)
endif(SMI_FOUND)
if (WINSPARKLE_FOUND)
endif()
add_executable(wireshark WIN32 MACOSX_BUNDLE wireshark-qt.cpp ${wireshark_FILES} ${EXTRA_BUNDLE_FILES})
+ add_dependencies(wireshark version)
set(PROGLIST ${PROGLIST} wireshark)
set_target_properties(wireshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
set_target_properties(wireshark PROPERTIES FOLDER "Executables")
# convenience but makes debugging more difficult.
file(REMOVE ${CMAKE_BINARY_DIR}/run/wireshark)
file(WRITE ${CMAKE_BINARY_DIR}/run/wireshark "#!/bin/sh\n")
- file(APPEND ${CMAKE_BINARY_DIR}/run/wireshark "open ${CMAKE_BINARY_DIR}/run/Wireshark.app --args \"\$\@\"\n")
+ file(APPEND ${CMAKE_BINARY_DIR}/run/wireshark "# Generated by ${CMAKE_CURRENT_LIST_FILE}\n")
+ file(APPEND ${CMAKE_BINARY_DIR}/run/wireshark "exec ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/Wireshark \"\$\@\"\n")
execute_process(COMMAND chmod a+x ${CMAKE_BINARY_DIR}/run/wireshark)
endif()
# wireshark and wireshark-gtk share wireshark_FILES
add_executable(wireshark-gtk WIN32 ${wireshark_FILES})
+ add_dependencies(wireshark-gtk version)
set(PROGLIST ${PROGLIST} wireshark-gtk)
set_target_properties(wireshark-gtk PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
set_target_properties(wireshark-gtk PROPERTIES FOLDER "Executables")
${CMAKE_BINARY_DIR}/image/tshark.rc
)
add_executable(tshark ${tshark_FILES})
+ add_dependencies(tshark version)
set_extra_executable_properties(tshark "Executables")
target_link_libraries(tshark ${tshark_LIBS})
install(TARGETS tshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
${CMAKE_BINARY_DIR}/image/tfshark.rc
)
add_executable(tfshark ${tfshark_FILES})
+ add_dependencies(tfshark version)
set_extra_executable_properties(tfshark "Executables")
target_link_libraries(tfshark ${tfshark_LIBS})
install(TARGETS tfshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
${CMAKE_BINARY_DIR}/image/rawshark.rc
)
add_executable(rawshark ${rawshark_FILES})
+ add_dependencies(rawshark version)
set_extra_executable_properties(rawshark "Executables")
target_link_libraries(rawshark ${rawshark_LIBS})
install(TARGETS rawshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
ui/util.c
)
add_executable(dftest ${dftest_FILES})
+ add_dependencies(dftest version)
set_extra_executable_properties(dftest "Tests")
target_link_libraries(dftest ${dftest_LIBS})
install(TARGETS dftest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
)
set(randpkt_FILES
randpkt.c
+ ws_version_info.c
)
add_executable(randpkt ${randpkt_FILES})
+ add_dependencies(randpkt version)
set_extra_executable_properties(randpkt "Executables")
target_link_libraries(randpkt ${randpkt_LIBS})
install(TARGETS randpkt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
)
set(text2pcap_CLEAN_FILES
text2pcap.c
+ ws_version_info.c
)
set(text2pcap_FILES
${text2pcap_CLEAN_FILES}
${CMAKE_BINARY_DIR}/image/text2pcap.rc
)
- add_lex_files(text2pcap_FILES
+ add_lex_files(text2pcap_LEX_FILES text2pcap_GENERATED_FILES
text2pcap-scanner.l
)
- add_executable(text2pcap ${text2pcap_FILES})
+ add_executable(text2pcap ${text2pcap_FILES} ${text2pcap_GENERATED_FILES})
+ add_dependencies(text2pcap version)
set_extra_executable_properties(text2pcap "Executables")
target_link_libraries(text2pcap ${text2pcap_LIBS})
install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
)
set(mergecap_FILES
mergecap.c
+ ws_version_info.c
${CMAKE_BINARY_DIR}/image/mergecap.rc
)
add_executable(mergecap ${mergecap_FILES})
+ add_dependencies(mergecap version)
set_extra_executable_properties(mergecap "Executables")
target_link_libraries(mergecap ${mergecap_LIBS})
install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
)
set(reordercap_FILES
reordercap.c
+ ws_version_info.c
${CMAKE_BINARY_DIR}/image/reordercap.rc
)
add_executable(reordercap ${reordercap_FILES})
+ add_dependencies(reordercap version)
set_extra_executable_properties(reordercap "Executables")
target_link_libraries(reordercap ${reordercap_LIBS})
install(TARGETS reordercap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
)
set(capinfos_FILES
capinfos.c
+ ws_version_info.c
${CMAKE_BINARY_DIR}/image/capinfos.rc
)
add_executable(capinfos ${capinfos_FILES})
+ add_dependencies(capinfos version)
set_extra_executable_properties(capinfos "Executables")
target_link_libraries(capinfos ${capinfos_LIBS})
install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
)
set(captype_FILES
captype.c
+ ws_version_info.c
${CMAKE_BINARY_DIR}/image/captype.rc
)
add_executable(captype ${captype_FILES})
+ add_dependencies(captype version)
set_extra_executable_properties(captype "Executables")
target_link_libraries(captype ${captype_LIBS})
install(TARGETS captype RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
)
set(editcap_FILES
editcap.c
+ ws_version_info.c
${CMAKE_BINARY_DIR}/image/editcap.rc
)
add_executable(editcap ${editcap_FILES})
+ add_dependencies(editcap version)
set_extra_executable_properties(editcap "Executables")
target_link_libraries(editcap ${editcap_LIBS})
install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
filter_files.c
ringbuffer.c
sync_pipe_write.c
+ ws_version_info.c
${CMAKE_BINARY_DIR}/image/dumpcap.rc
)
add_executable(dumpcap ${dumpcap_FILES})
+ add_dependencies(dumpcap version)
set_extra_executable_properties(dumpcap "Executables")
target_link_libraries(dumpcap ${dumpcap_LIBS})
install(TARGETS dumpcap
ADD_NSIS_PACKAGE_TARGET()
endif()
+ find_package( WiX )
+
+ if (NOT "${WIX_CANDLE_EXECUTABLE}" STREQUAL "WIX_CANDLE_EXECUTABLE-NOTFOUND")
+ add_subdirectory( packaging/wix EXCLUDE_FROM_ALL )
+ ADD_WIX_PACKAGE_TARGET()
+ endif()
+
find_package( PortableApps )
if (
NOT "${PORTABLEAPPS_LAUNCHER_GENERATOR_EXECUTABLE}" STREQUAL "PORTABLEAPPS_LAUNCHER_GENERATOR_EXECUTABLE-NOTFOUND"
${LIBSSH_LIBRARIES}
)
if (WIN32)
- set(sshdump_LIBS wsutil ${sshdump_LIBS})
+ set(sshdump_LIBS wsutil ${sshdump_LIBS})
endif()
set(sshdump_FILES
extcap/sshdump.c
${LIBSSH_LIBRARIES}
)
if (WIN32)
- set(ciscodump_LIBS wsutil ${ciscodump_LIBS})
+ set(ciscodump_LIBS wsutil ${ciscodump_LIBS})
endif()
set(ciscodump_FILES
extcap/ciscodump.c
PATTERN "faq.py" EXCLUDE
)
-include( UseCheckAPI )
-CHECKAPI(
- ${TSHARK_TAP_SRC}
- ${WIRESHARK_SRC}
-)
-
set(CMAKE_INSTALL_MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/${CPACK_PACKAGE_NAME})
configure_file("${CMAKE_MODULE_PATH}/WiresharkConfig.cmake.in" "${CMAKE_BINARY_DIR}/WiresharkConfig.cmake" @ONLY)
configure_file("${CMAKE_MODULE_PATH}/WiresharkConfigVersion.cmake.in" "${CMAKE_BINARY_DIR}/WiresharkConfigVersion.cmake" @ONLY)
endif()
endif()
+include( UseCheckAPI )
+CHECKAPI(
+ NAME
+ main
+ SWITCHES
+ -build
+ SOURCES
+ ${WIRESHARK_SRC}
+ ${TSHARK_TAP_SRC}
+)
+
#
# Editor modelines - http://www.wireshark.org/tools/modelines.html
#