comment "weston needs udev and a toolchain w/ C++, locale, threads, dynamic library, headers >= 3.0"
	depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || BR2_STATIC_LIBS || \
		!BR2_ENABLE_LOCALE || !BR2_INSTALL_LIBSTDCPP

config BR2_PACKAGE_WESTON
	bool "weston"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_PACKAGE_HAS_UDEV
	depends on !BR2_STATIC_LIBS # wayland
	depends on BR2_TOOLCHAIN_HAS_THREADS # wayland
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
	select BR2_PACKAGE_WAYLAND
	select BR2_PACKAGE_WAYLAND_PROTOCOLS
	select BR2_PACKAGE_LIBXKBCOMMON
	select BR2_PACKAGE_CAIRO
	select BR2_PACKAGE_CAIRO_PNG
	select BR2_PACKAGE_LIBPNG
	select BR2_PACKAGE_LIBINPUT
	select BR2_PACKAGE_LIBDISPLAY_INFO
	select BR2_PACKAGE_LIBDRM
	select BR2_PACKAGE_SEATD
	# Runtime dependency
	select BR2_PACKAGE_XKEYBOARD_CONFIG
	select BR2_PACKAGE_WESTON_SHELL_DESKTOP if !BR2_PACKAGE_WESTON_HAS_SHELL
	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

choice
	prompt "default compositor"

config BR2_PACKAGE_WESTON_DEFAULT_DRM
	bool "drm"
	select BR2_PACKAGE_WESTON_DRM

config BR2_PACKAGE_WESTON_DEFAULT_HEADLESS
	bool "headless"
	select BR2_PACKAGE_WESTON_HEADLESS

config BR2_PACKAGE_WESTON_DEFAULT_RDP
	bool "rdp"
	depends on BR2_USE_MMU # freerdp, libglib2
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on BR2_USE_WCHAR # freerdp
	depends on BR2_INSTALL_LIBSTDCPP # freerdp
	depends on BR2_PACKAGE_XORG7 # freerdp-server
	select BR2_PACKAGE_WESTON_RDP

config BR2_PACKAGE_WESTON_DEFAULT_WAYLAND
	bool "wayland (nested)"
	select BR2_PACKAGE_WESTON_WAYLAND

config BR2_PACKAGE_WESTON_DEFAULT_X11
	bool "X11 (nested)"
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_WESTON_X11

comment "X11 (nested) backend needs X.org"
	depends on !BR2_PACKAGE_XORG7

endchoice

config BR2_PACKAGE_WESTON_DEFAULT_COMPOSITOR
	string
	default "drm"      if BR2_PACKAGE_WESTON_DEFAULT_DRM
	default "headless" if BR2_PACKAGE_WESTON_DEFAULT_HEADLESS
	default "rdp"      if BR2_PACKAGE_WESTON_DEFAULT_RDP
	default "wayland"  if BR2_PACKAGE_WESTON_DEFAULT_WAYLAND
	default "x11"      if BR2_PACKAGE_WESTON_DEFAULT_X11

config BR2_PACKAGE_WESTON_DRM
	bool "DRM compositor"

# FreeRDP needs threads and !static, already the case for weston
config BR2_PACKAGE_WESTON_RDP
	bool "RDP compositor"
	depends on BR2_USE_MMU # freerdp, libglib2
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on BR2_USE_WCHAR # freerdp
	depends on BR2_INSTALL_LIBSTDCPP # freerdp
	depends on BR2_PACKAGE_XORG7 # freerdp-server
	select BR2_PACKAGE_FREERDP
	select BR2_PACKAGE_FREERDP_SERVER
	help
	  This enables the RDP backend, which allows accessing weston
	  through the network with any RDP-compliant client.

	  Please note that one must pass those options to weston for RDP
	  to be functional:
	    --rdp-tls-cert=/path/to/server.crt
	    --rdp-tls-key=/path/to/server.key

	  By default, Buildroot installs such files in
	  /etc/freerdp/server/ so you may want to change them in a
	  post-build script or a rootfs overlay.

comment "RDP compositor needs a toolchain w/ wchar, C++, X.org"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \
		!BR2_PACKAGE_XORG7

config BR2_PACKAGE_WESTON_HEADLESS
	bool "headless (testing) compositor"

config BR2_PACKAGE_WESTON_WAYLAND
	bool "Wayland (nested) compositor"

config BR2_PACKAGE_WESTON_X11
	bool "X11 (nested) compositor"
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_LIBXCB
	select BR2_PACKAGE_XLIB_LIBX11

comment "X11 (nested) compositor needs X.org enabled"
	depends on !BR2_PACKAGE_XORG7

config BR2_PACKAGE_WESTON_XWAYLAND
	bool "XWayland support"
	depends on BR2_PACKAGE_HAS_LIBEGL
	depends on BR2_PACKAGE_LIBEPOXY
	depends on BR2_PACKAGE_XORG7 # xwayland
	depends on BR2_USE_MMU # xwayland
	depends on !BR2_STATIC_LIBS # xwayland
	depends on BR2_TOOLCHAIN_HAS_THREADS # xwayland
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # xwayland -> xlib_libxshmfence
	select BR2_PACKAGE_CAIRO
	select BR2_PACKAGE_LIBXCB
	select BR2_PACKAGE_XCB_UTIL_CURSOR
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXCURSOR
	select BR2_PACKAGE_XWAYLAND

comment "XWayland support needs libepoxy w/ EGL and X.org enabled"
	depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_XORG7 || \
		!BR2_PACKAGE_LIBEPOXY

comment "XWayland support needs a toolchain w/ threads, dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS

config BR2_PACKAGE_WESTON_VULKAN
	bool "Vulkan support"
	depends on BR2_PACKAGE_HAS_LIBGBM
	select BR2_PACKAGE_VULKAN_LOADER

comment "Vulkan support needs gbm"
	depends on !BR2_PACKAGE_HAS_LIBGBM

# Weston needs at least one shell; this can be one of the bundled ones,
# below, of from a third-party package, which should then select this.
config BR2_PACKAGE_WESTON_HAS_SHELL
	bool

config BR2_PACKAGE_WESTON_SHELL_DESKTOP
	bool "desktop shell"
	default y

config BR2_PACKAGE_WESTON_SHELL_FULLSCREEN
	bool "fullscreen shell"
	default y
	select BR2_PACKAGE_WESTON_HAS_SHELL

config BR2_PACKAGE_WESTON_SHELL_IVI
	bool "ivi shell"
	default y
	select BR2_PACKAGE_WESTON_HAS_SHELL

config BR2_PACKAGE_WESTON_SHELL_KIOSK
	bool "kiosk shell"
	default y
	select BR2_PACKAGE_WESTON_HAS_SHELL

config BR2_PACKAGE_WESTON_SHELL_LUA
	bool "lua shell"
	default y
	depends on BR2_PACKAGE_LUA_5_4
	select BR2_PACKAGE_WESTON_HAS_SHELL

comment "lua shell needs a Lua >= 5.4"
	depends on !BR2_PACKAGE_LUA_5_4

config BR2_PACKAGE_WESTON_SCREENSHARE
	bool "screenshare"
	default y

config BR2_PACKAGE_WESTON_SIMPLE_CLIENTS
	bool "simple clients"
	help
	  Simple clients includes application such as:
	  damage, dmabuf-feedback, dmabuf-egl, dmabuf-v4l, egl

	  In the target filesystem, simple client program binaries are
	  prefixed with "weston-simple-".

	  Note: Weston has two sets of clients. See also the weston
	  "demo clients" option.

config BR2_PACKAGE_WESTON_DEMO_CLIENTS
	bool "demo clients"
	depends on BR2_USE_MMU # pango
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango
	depends on BR2_INSTALL_LIBSTDCPP # pango
	depends on BR2_TOOLCHAIN_HAS_THREADS # pango
	depends on BR2_USE_WCHAR # pango
	depends on BR2_PACKAGE_HAS_LIBGLES
	depends on BR2_PACKAGE_HAS_LIBEGL
	select BR2_PACKAGE_PANGO
	help
	  This enables the installation of Weston's demo clients.

	  Demo clients includes application such as:
	  clickdot, confine, content_protection, dnd, editor,
	  eventdemo, flower, fullscreen, image, multi-resource,
	  presentation-shm, resizor, scaler, smoke, stacking,
	  subsurfaces, tablet, transformed...

	  In the target filesystem, demo client program binaries are
	  prefixed with "weston-".

	  Note: Weston has two sets of clients. See also the weston
	  "simple clients" option.

comment "demo clients needs an OpenGL ES/EGL provider and a toolchain w/ wchar, threads, C++, gcc >= 4.9"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_USE_WCHAR || !BR2_PACKAGE_HAS_LIBGLES || \
		!BR2_PACKAGE_HAS_LIBEGL || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

endif
