comment "weston needs udev and a toolchain w/ threads"
	depends on !BR2_avr32
	depends on !BR2_PACKAGE_UDEV || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_WESTON
	bool "weston"
	select BR2_PACKAGE_WAYLAND
	select BR2_PACKAGE_LIBXKBCOMMON
	select BR2_PACKAGE_CAIRO
	select BR2_PACKAGE_CAIRO_PNG
	select BR2_PACKAGE_LIBPNG
	select BR2_PACKAGE_JPEG
	select BR2_PACKAGE_MTDEV
	depends on BR2_PACKAGE_UDEV
	depends on !BR2_avr32 # wayland
	depends on BR2_TOOLCHAIN_HAS_THREADS # wayland
	# Runtime dependency
	select BR2_PACKAGE_XKEYBOARD_CONFIG
	# Make sure at least one compositor is selected.
	select BR2_PACKAGE_WESTON_FBDEV if !BR2_PACKAGE_WESTON_HAS_COMPOSITOR
	help
	  Weston is the reference implementation of a Wayland
	  compositor, and a useful compositor in its own right.
	  Weston has various backends that lets it run on Linux kernel
	  modesetting and evdev input as well as under X11.

	  http://wayland.freedesktop.org/

if BR2_PACKAGE_WESTON

# Helper to make sure at least one compositor is selected.
config BR2_PACKAGE_WESTON_HAS_COMPOSITOR
	bool

config BR2_PACKAGE_WESTON_FBDEV
	bool "fbdev compositor"

comment "RPi compositor needs a toolchain w/ C++, largefile, threads"
	depends on BR2_arm
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_WESTON_RPI
	bool "RPi compositor"
	depends on BR2_arm                      # rpi-userland
	depends on BR2_INSTALL_LIBSTDCPP        # rpi-userland
	depends on BR2_LARGEFILE                # rpi-userland
	depends on BR2_TOOLCHAIN_HAS_THREADS    # rpi-userland
	select BR2_PACKAGE_RPI_USERLAND
	select BR2_PACKAGE_WESTON_HAS_COMPOSITOR

endif
