menuconfig BR2_PACKAGE_MPD
	bool "mpd"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR # flac
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_USE_MMU # fork
	depends on BR2_TOOLCHAIN_HAS_ATOMIC
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr
	select BR2_PACKAGE_BOOST
	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
	help
	  MPD is a flexible, powerful, server-side application
	  for playing music. Through plugins and libraries
	  it can play a variety of sound files while being
	  controlled by its network protocol.

	  http://www.musicpd.org

if BR2_PACKAGE_MPD

comment "Archive plugins"

config BR2_PACKAGE_MPD_BZIP2
	bool "bzip2"
	select BR2_PACKAGE_BZIP2
	help
	  Enable bzip2 archive support.

config BR2_PACKAGE_MPD_SQLITE
	bool "sqlite"
	select BR2_PACKAGE_SQLITE
	help
	  Enable sqlite database support.
	  If you don't use sqlite it will use an ASCII database.

comment "Commercial services"

config BR2_PACKAGE_MPD_QOBUZ
	bool "qobuz"
	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS
	select BR2_PACKAGE_MPD_CURL
	select BR2_PACKAGE_LIBGCRYPT
	select BR2_PACKAGE_YAJL
	help
	  Play songs from the commercial streaming service Qobuz.

config BR2_PACKAGE_MPD_SOUNDCLOUD
	bool "soundcloud"
	select BR2_PACKAGE_MPD_CURL
	select BR2_PACKAGE_YAJL
	help
	  Enable soundcloud.com playlist support.

config BR2_PACKAGE_MPD_TIDAL
	bool "tidal"
	select BR2_PACKAGE_MPD_CURL
	select BR2_PACKAGE_YAJL
	help
	  Play songs from the commercial streaming service TIDAL.

comment "Converter plugins"

config BR2_PACKAGE_MPD_LIBSAMPLERATE
	bool "libsamplerate"
	select BR2_PACKAGE_LIBSAMPLERATE
	help
	  Enable libsamplerate input support.
	  Select this for software sample rate conversion.

config BR2_PACKAGE_MPD_LIBSOXR
	bool "libsoxr"
	select BR2_PACKAGE_LIBSOXR
	help
	  Enable libsoxr resampler support.
	  The SoX Resampler library performs software sample-rate
	  conversion.

comment "Decoder plugins"

config BR2_PACKAGE_MPD_AUDIOFILE
	bool "audiofile"
	select BR2_PACKAGE_AUDIOFILE
	help
	  Enable audiofile input/streaming support.
	  Select this if you want to play back WAV files.

config BR2_PACKAGE_MPD_DSD
	bool "dsd"
	help
	  Enable Digital Speech Decoder (DSD) support to play audio
	  files encoded in a digital speech format.

config BR2_PACKAGE_MPD_FAAD2
	bool "faad2"
	select BR2_PACKAGE_FAAD2
	help
	  Enable faad2 input support.
	  Select this if you want to play back MP4/AAC files.

config BR2_PACKAGE_MPD_FFMPEG
	bool "ffmpeg"
	depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS
	select BR2_PACKAGE_FFMPEG
	help
	  Enable ffmpeg input support.
	  Select this if you want to play back files supported by
	  ffmpeg.

config BR2_PACKAGE_MPD_FLAC
	bool "flac"
	select BR2_PACKAGE_FLAC
	help
	  Enable flac input/streaming support.
	  Select this if you want to play back FLAC files.

config BR2_PACKAGE_MPD_LIBSNDFILE
	bool "libsndfile"
	select BR2_PACKAGE_LIBSNDFILE
	help
	  Enable libsndfile input/streaming support.
	  Select this if you want to play back WAV files.

config BR2_PACKAGE_MPD_MAD
	bool "mad"
	default y
	select BR2_PACKAGE_LIBID3TAG
	select BR2_PACKAGE_LIBMAD
	help
	  Enable mad input support.
	  Select this if you want to play back MP3 files.

config BR2_PACKAGE_MPD_MPG123
	bool "mpg123"
	select BR2_PACKAGE_LIBID3TAG
	select BR2_PACKAGE_MPG123
	help
	  Enable mpg123 input support.
	  Select this if you want to play back MP3 files.

config BR2_PACKAGE_MPD_MUSEPACK
	bool "musepack"
	select BR2_PACKAGE_LIBCUEFILE
	select BR2_PACKAGE_LIBREPLAYGAIN
	select BR2_PACKAGE_MUSEPACK
	help
	  Enable musepack input support.
	  Select this if you want to play back MPC files.

config BR2_PACKAGE_MPD_OPUS
	bool "opus"
	select BR2_PACKAGE_OPUS
	select BR2_PACKAGE_LIBOGG
	help
	  Enable opus input support.
	  Select this if you want to play back OPUS encoded files.

config BR2_PACKAGE_MPD_TREMOR
	bool "tremor"
	depends on !BR2_PACKAGE_MPD_VORBIS
	select BR2_PACKAGE_LIBOGG
	select BR2_PACKAGE_TREMOR
	help
	  Enable vorbis input support.
	  Select this if you want to play back OGG files on softfloat
	  targets.

config BR2_PACKAGE_MPD_VORBIS
	bool "vorbis"
	select BR2_PACKAGE_LIBOGG
	select BR2_PACKAGE_LIBVORBIS
	help
	  Enable vorbis input/streaming support.
	  Select this if you want to play back OGG files on hardfloat
	  targets.

config BR2_PACKAGE_MPD_WAVPACK
	bool "wavpack"
	select BR2_PACKAGE_WAVPACK
	help
	  Enable wavpack input support.
	  Select this if you want to play back WV files.

comment "Encoder plugins"

config BR2_PACKAGE_MPD_LAME
	bool "lame"
	select BR2_PACKAGE_LAME
	help
	  Enable lame (mp3) encoding support.

config BR2_PACKAGE_MPD_TWOLAME
	bool "twolame"
	select BR2_PACKAGE_TWOLAME
	help
	  Enable TwoLAME mp2 encoding.

comment "Input plugins"

config BR2_PACKAGE_MPD_CDIO_PARANOIA
	bool "cdio-paranoia"
	select BR2_PACKAGE_LIBCDIO_PARANOIA
	help
	  Enable cdio-paranoia support.

config BR2_PACKAGE_MPD_CURL
	bool "curl"
	select BR2_PACKAGE_LIBCURL
	help
	  Enable curl streaming (http) support.

config BR2_PACKAGE_MPD_LIBMMS
	bool "mms"
	select BR2_PACKAGE_LIBMMS
	help
	  Enable MMS support.

config BR2_PACKAGE_MPD_LIBNFS
	bool "nfs"
	# libnfs -> libtirpc
	depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS
	select BR2_PACKAGE_LIBNFS
	help
	  Enable Network File System (NFS) support.

comment "nfs support needs a toolchain w/ threads support"
	depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC)

comment "samba support needs a glibc toolchain w/ dynamic library, RPC"
	depends on !BR2_nios2
	depends on !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS || \
		!BR2_TOOLCHAIN_HAS_NATIVE_RPC

config BR2_PACKAGE_MPD_LIBSMBCLIENT
	bool "samba"
	depends on !BR2_nios2 # samba
	depends on BR2_TOOLCHAIN_USES_GLIBC
	depends on !BR2_STATIC_LIBS
	depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	select BR2_PACKAGE_SAMBA4
	help
	  Enable Samba support.

comment "Output plugins"

config BR2_PACKAGE_MPD_ALSA
	bool "alsa"
	default y
	select BR2_PACKAGE_ALSA_LIB
	select BR2_PACKAGE_ALSA_LIB_PCM
	select BR2_PACKAGE_ALSA_LIB_MIXER
	help
	  Enable alsa output support.

config BR2_PACKAGE_MPD_AO
	bool "ao"
	select BR2_PACKAGE_LIBAO
	help
	  Enable libao output support.

config BR2_PACKAGE_MPD_HTTPD_OUTPUT
	bool "httpd output"
	help
	  Enable httpd output support.

config BR2_PACKAGE_MPD_JACK2
	bool "jack2"
	depends on !BR2_STATIC_LIBS # jack2
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	select BR2_PACKAGE_JACK2
	help
	  Enable jack output support.

comment "jack support needs a toolchain w/ dynamic library"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on BR2_STATIC_LIBS

config BR2_PACKAGE_MPD_OSS
	bool "oss"
	help
	  Enable OSS (Open Sound System) output support.

config BR2_PACKAGE_MPD_PULSEAUDIO
	bool "pulseaudio"
	depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on !BR2_STATIC_LIBS
	depends on BR2_USE_MMU
	select BR2_PACKAGE_PULSEAUDIO
	help
	  Enable pulseaudio output support.

comment "pulseaudio support needs a toolchain w/ threads, wchar, dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || !BR2_USE_WCHAR

config BR2_PACKAGE_MPD_SHOUTCAST
	bool "shoutcast"
	select BR2_PACKAGE_LIBSHOUT
	help
	  Enable shoutcast streaming output support.

comment "Miscellaneous plugins"

config BR2_PACKAGE_MPD_AVAHI_SUPPORT
	bool "avahi (zeroconf) support"
	depends on !BR2_STATIC_LIBS # avahi
	select BR2_PACKAGE_AVAHI
	select BR2_PACKAGE_AVAHI_DAEMON
	select BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY
	help
	  Enable Avahi (zeroconf) support.
	  Select this for multicast DNS/DNS-SD service discovery
	  support. This allows MPD to publish service information on a
	  local network.

comment "avahi support needs a toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS

config BR2_PACKAGE_MPD_LIBMPDCLIENT
	bool "libmpdclient"
	select BR2_PACKAGE_LIBMPDCLIENT
	help
	  Enable libmpdclient support.

config BR2_PACKAGE_MPD_NEIGHBOR_DISCOVERY_SUPPORT
	bool "neighbor discovery support"
	depends on BR2_PACKAGE_MPD_LIBSMBCLIENT || BR2_PACKAGE_MPD_UPNP
	help
	  Enable support for neighbor discovery.
	  This option can be used in conjunction with the smbclient
	  plugin to provide a list of SMB/CIFS servers or with the
	  UPnP plugin to provide a list of UPnP servers on the local
	  network. The neighbor plugin needs configuration in
	  mpd.conf. For further information take a look at the MPD
	  documentation.

config BR2_PACKAGE_MPD_TCP
	bool "tcp sockets"
	default y
	help
	  Enable MPD to listen on tcp sockets.

	  You want this on if MPD and the client(s) work
	  on different machines (the usual scenario).

config BR2_PACKAGE_MPD_UPNP
	bool "UPnP"
	select BR2_PACKAGE_EXPAT
	select BR2_PACKAGE_LIBUPNP18 if !BR2_PACKAGE_LIBUPNP
	select BR2_PACKAGE_MPD_CURL
	help
	  Enable MPD UPnP client support.

endif

comment "mpd needs a toolchain w/ C++, threads, wchar, gcc >= 6"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_ATOMIC
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_6

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