comment "gnuradio needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 8"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_8

comment "gnuradio needs a toolchain not affected by GCC bug 43744"
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_43744

config BR2_PACKAGE_GNURADIO
	bool "gnuradio"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on !BR2_STATIC_LIBS
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_USE_MMU # use fork()
	depends on BR2_USE_WCHAR # boost
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-thread
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_43744
	select BR2_PACKAGE_BOOST
	select BR2_PACKAGE_BOOST_ATOMIC
	select BR2_PACKAGE_BOOST_DATE_TIME
	select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
	select BR2_PACKAGE_BOOST_REGEX
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_THREAD
	select BR2_PACKAGE_LOG4CPP
	select BR2_PACKAGE_GMP
	select BR2_PACKAGE_SPDLOG
	select BR2_PACKAGE_VOLK
	help
	  GNU Radio is a free & open-source software development
	  toolkit that provides signal processing blocks to implement
	  software radios. It can be used with readily-available
	  low-cost external RF hardware to create software-defined
	  radios, or without hardware in a simulation-like
	  environment. It is widely used in hobbyist, academic and
	  commercial environments to support both wireless
	  communications research and real-world radio systems.

	  http://gnuradio.org/

if BR2_PACKAGE_GNURADIO

config BR2_PACKAGE_GNURADIO_AUDIO
	bool "gr-audio"
	select BR2_PACKAGE_ALSA_LIB if !BR2_PACKAGE_PORTAUDIO
	help
	  Add audio source/sink to GNU Radio

config BR2_PACKAGE_GNURADIO_BLOCKS
	bool "blocks support"
	help
	  GNU Radio basic block library

config BR2_PACKAGE_GNURADIO_CTRLPORT
	bool "ctrlport support"
	help
	  GNU Radio ctrlport block

config BR2_PACKAGE_GNURADIO_DTV
	bool "gr-dtv support"
	select BR2_PACKAGE_GNURADIO_ANALOG
	select BR2_PACKAGE_GNURADIO_FEC
	select BR2_PACKAGE_GNURADIO_FILTER
	help
	  various digital television standards blocks

config BR2_PACKAGE_GNURADIO_FEC
	bool "gr-fec support"
	select BR2_PACKAGE_GNURADIO_BLOCKS
	select BR2_PACKAGE_GSL
	help
	  FEC signal processing blocks

config BR2_PACKAGE_GNURADIO_PYTHON
	bool "python support"
	depends on BR2_PACKAGE_PYTHON3
	depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy
	depends on BR2_HOST_GCC_AT_LEAST_9 # host-python-numpy
	select BR2_PACKAGE_BOOST_PYTHON
	select BR2_PACKAGE_PYTHON_NUMPY # runtime
	select BR2_PACKAGE_PYTHON_PYBIND
	select BR2_PACKAGE_PYTHON_SIX # runtime
	help
	  Enable python component

comment "python support needs a glibc or musl toolchain w/ host gcc >= 9"
	depends on !BR2_HOST_GCC_AT_LEAST_9 || \
		!(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)

config BR2_PACKAGE_GNURADIO_SOAPY
	bool "gr-soapy support"
	select BR2_PACKAGE_SOAPY_SDR
	help
	  Soapy SDR support

config BR2_PACKAGE_GNURADIO_UTILS
	bool "gr-utils support"
	depends on BR2_PACKAGE_GNURADIO_PYTHON
	help
	  Misc python utilities

config BR2_PACKAGE_GNURADIO_ZEROMQ
	bool "gr-zeromq support"
	select BR2_PACKAGE_CPPZMQ
	select BR2_PACKAGE_PYTHON_PYZMQ if BR2_PACKAGE_GNURADIO_PYTHON
	help
	  zeromq communication support

config BR2_PACKAGE_GNURADIO_ANALOG
	bool "gr-analog support"
	select BR2_PACKAGE_GNURADIO_FILTER
	help
	  Analog communications blocks

config BR2_PACKAGE_GNURADIO_CHANNELS
	bool "gr-channels support"
	select BR2_PACKAGE_GNURADIO_ANALOG
	help
	  Channel model blocks

config BR2_PACKAGE_GNURADIO_DIGITAL
	bool "gr-digital support"
	select BR2_PACKAGE_GNURADIO_ANALOG
	help
	  Digital communications blocks

config BR2_PACKAGE_GNURADIO_FFT
	bool "gr-fft support"
	select BR2_PACKAGE_FFTW
	select BR2_PACKAGE_FFTW_SINGLE
	select BR2_PACKAGE_GNURADIO_BLOCKS
	help
	  FFT signal processing blocks

config BR2_PACKAGE_GNURADIO_FILTER
	bool "gr-filter support"
	select BR2_PACKAGE_GNURADIO_FFT
	help
	  Filter signal processing blocks

config BR2_PACKAGE_GNURADIO_IIO
	bool "gr-iio support"
	select BR2_PACKAGE_LIBIIO
	select BR2_PACKAGE_GNURADIO_BLOCKS
	help
	  IIO support

config BR2_PACKAGE_GNURADIO_NETWORK
	bool "gr-network support"
	select BR2_PACKAGE_GNURADIO_BLOCKS
	help
	  TCP and UDP source/sink blocks

config BR2_PACKAGE_GNURADIO_QTGUI
	bool "gr-qtgui"
	depends on BR2_PACKAGE_GNURADIO_PYTHON
	depends on BR2_PACKAGE_QT5
	select BR2_PACKAGE_GNURADIO_FFT
	select BR2_PACKAGE_GNURADIO_FILTER
	select BR2_PACKAGE_PYTHON_PYQT5
	select BR2_PACKAGE_QT5BASE_FONTCONFIG # runtime
	select BR2_PACKAGE_QT5BASE_GUI # runtime
	select BR2_PACKAGE_QT5BASE_WIDGETS # runtime
	select BR2_PACKAGE_QWT
	help
	  GNU Radio Qt scopes

config BR2_PACKAGE_GNURADIO_TRELLIS
	bool "gr-trellis support"
	select BR2_PACKAGE_GNURADIO_DIGITAL
	help
	  Trellis coded modulation blocks

config BR2_PACKAGE_GNURADIO_UHD
	bool "gr-uhd support"
	select BR2_PACKAGE_UHD
	select BR2_PACKAGE_GNURADIO_ANALOG
	select BR2_PACKAGE_GNURADIO_BLOCKS
	select BR2_PACKAGE_GNURADIO_FILTER
	help
	  UHD support

endif
