config BR2_PACKAGE_WIRESHARK
	bool "wireshark"
	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt -> libgpg-error
	depends on !BR2_STATIC_LIBS
	depends on BR2_USE_MMU # fork(), glib2
	depends on BR2_USE_WCHAR # glib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
	select BR2_PACKAGE_LIBPCAP
	select BR2_PACKAGE_LIBGCRYPT
	select BR2_PACKAGE_LIBGLIB2
	select BR2_PACKAGE_SPEEXDSP
	help
	  Network traffic sniffer and protocol decoder.

	  https://www.wireshark.org

if BR2_PACKAGE_WIRESHARK

config BR2_PACKAGE_WIRESHARK_GUI
	bool "Qt5 GUI"
	default y
	depends on BR2_INSTALL_LIBSTDCPP # qt5
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # qt5
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # qt5
	depends on !BR2_arc # qt5
	depends on BR2_PACKAGE_HAS_UDEV # qt5 input
	select BR2_PACKAGE_QT5
	select BR2_PACKAGE_QT5BASE
	select BR2_PACKAGE_QT5BASE_FONTCONFIG # runtime
	select BR2_PACKAGE_QT5BASE_PNG # runtime
	select BR2_PACKAGE_QT5BASE_WIDGETS
	select BR2_PACKAGE_QT5MULTIMEDIA
	select BR2_PACKAGE_QT5SVG
	select BR2_PACKAGE_QT5TOOLS
	select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS
	help
	  Enable Qt5 GUI

comment "Qt5 GUI needs a udev /dev management and a toolchain w/ C++, NPTL, gcc >= 4.8"
	depends on !BR2_arc
	depends on !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP || \
		!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

endif # BR2_PACKAGE_WIRESHARK

comment "wireshark needs a toolchain w/ wchar, threads, dynamic library"
	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
		BR2_STATIC_LIBS
