comment "spice server depends on python (for pyparsing)"
	depends on BR2_i386 || BR2_x86_64
	depends on !BR2_PACKAGE_PYTHON

config BR2_PACKAGE_SPICE
	bool "spice server"
	depends on BR2_i386 || BR2_x86_64
	depends on BR2_PACKAGE_PYTHON
	select BR2_PACKAGE_ALSA_LIB
	select BR2_PACKAGE_CELT051
	select BR2_PACKAGE_JPEG
	select BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_PIXMAN
	select BR2_PACKAGE_PYTHON_PYPARSING
	select BR2_PACKAGE_SPICE_PROTOCOL
	help
	  The Spice project aims to provide a complete open source
	  solution for interaction with virtualized desktop devices.
	  The Spice project deals with both the virtualized devices
	  and the front-end. Interaction between front-end and
	  back-end is done using VD-Interfaces.
	  
	  This package implements the server-part of Spice.
	  
	  http://www.spice-space.org/

if BR2_PACKAGE_SPICE

comment "client depends on X.org"
	depends on !BR2_PACKAGE_XORG7

config BR2_PACKAGE_SPICE_CLIENT
	bool "Enable client"
	depends on BR2_PACKAGE_XORG7
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_INSTALL_LIBSTDCPP
	select BR2_PACKAGE_XLIB_LIBXFIXES
	select BR2_PACKAGE_XLIB_LIBXRANDR

comment "client requires a toolchain with threads and C++"
	depends on BR2_PACKAGE_XORG7
	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP

config BR2_PACKAGE_SPICE_GUI
	bool "Enable GUI"
	depends on BR2_PACKAGE_SPICE_CLIENT
	select BR2_PACKAGE_CEGUI06
	help
	  Say 'y' here to enable the Graphical User Interface (GUI)
	  start dialog.

config BR2_PACKAGE_SPICE_TUNNEL
	bool "Enable network redirection"
	select BR2_PACKAGE_SLIRP
	help
	  Say 'y' here to enable network redirection, aka tunnelling
	  through a SLIP/SLIRP session.

endif # BR2_PACKAGE_SPICE
