comment "kismet needs a toolchain w/ threads, C++, gcc >= 5, host gcc >= 7"
	depends on BR2_USE_MMU
	depends on !BR2_INSTALL_LIBSTDCPP || \
		!BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \
		!BR2_HOST_GCC_AT_LEAST_7
	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS

config BR2_PACKAGE_KISMET
	bool "kismet"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_USE_MMU # fork()
	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c
	depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
	select BR2_PACKAGE_LIBPCAP
	select BR2_PACKAGE_PROTOBUF_C
	select BR2_PACKAGE_SQLITE
	select BR2_PACKAGE_ZLIB
	help
	  Kismet is a wireless network and device detector, sniffer,
	  wardriving tool, and WIDS (wireless intrusion detection)
	  framework.

	  Kismet works with Wi-Fi interfaces, Bluetooth interfaces, some
	  SDR (software defined radio) hardware like the RTLSDR, and
	  other specialized capture hardware.

	  http://www.kismetwireless.net

if BR2_PACKAGE_KISMET

config BR2_PACKAGE_KISMET_PYTHON_TOOLS
	bool "Install python tools"
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf
	depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS # python-numpy
	depends on BR2_PACKAGE_PYTHON3
	depends on !BR2_STATIC_LIBS # protobuf
	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy
	select BR2_PACKAGE_PROTOBUF
	select BR2_PACKAGE_PYTHON_NUMPY # runtime for RTLAMR and RTLADSB
	select BR2_PACKAGE_PYTHON_PROTOBUF # runtime
	select BR2_PACKAGE_PYTHON_SERIAL # runtime for Freaklabs Zigbee
	select BR2_PACKAGE_PYTHON_SETUPTOOLS
	help
	  Enable Python and Python-related tools (RTL_433, RTLAMR,
	  RTLADSB and Freaklabs Zigbee)

comment "python tools needs python3"
	depends on !BR2_PACKAGE_PYTHON3
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
	depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS

comment "python tools needs a glibc or musl toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
	depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS
	depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)

config BR2_PACKAGE_KISMET_SERVER
	bool "Install server"
	default y
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf
	depends on !BR2_STATIC_LIBS # dlfcn.h
	depends on BR2_USE_WCHAR
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future
	select BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_PROTOBUF

comment "server needs a toolchain w/ dynamic library, wchar"
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735
	depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR

comment "server needs a toolchain not affected by GCC bug 64735"
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735

endif
