comment "weston-imx needs udev and a toolchain w/ 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
	depends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
	depends on !BR2_PACKAGE_WESTON

comment "weston-imx needs imx-gpu-viv with wyalnd output"
	depends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64 # imx-gpu-viv
	depends on !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
	depends on !BR2_PACKAGE_WESTON

config BR2_PACKAGE_WESTON_IMX
	bool "weston-imx"
	depends on !BR2_STATIC_LIBS # wayland
	depends on BR2_TOOLCHAIN_HAS_THREADS # wayland
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
	depends on BR2_PACKAGE_HAS_UDEV
	depends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
	depends on !BR2_PACKAGE_WESTON
	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_JPEG
	select BR2_PACKAGE_LIBINPUT
	select BR2_PACKAGE_LIBDRM
	# Runtime dependency
	select BR2_PACKAGE_XKEYBOARD_CONFIG
	# Make sure at least one compositor is selected.
	select BR2_PACKAGE_WESTON_IMX_FBDEV if !BR2_PACKAGE_WESTON_IMX_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_IMX

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

config BR2_PACKAGE_WESTON_IMX_DRM
	bool "DRM compositor"
	depends on BR2_PACKAGE_MESA3D_OPENGL_EGL
	select BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR

# Uses libgbm from mesa3d
comment "DRM compositor needs an OpenGL EGL backend provided by mesa3d"
	depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL

config BR2_PACKAGE_WESTON_IMX_FBDEV
	bool "fbdev compositor"

# FreeRDP needs threads and !static, already the case for weston
config BR2_PACKAGE_WESTON_IMX_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
	select BR2_PACKAGE_FREERDP
	select BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR
	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++"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP

config BR2_PACKAGE_WESTON_IMX_X11
	bool "X11 compositor"
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_LIBXCB
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR

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

config BR2_PACKAGE_WESTON_IMX_XWAYLAND
	bool "XWayland support"
	depends on BR2_PACKAGE_XORG7
	depends on BR2_PACKAGE_LIBEPOXY
	select BR2_PACKAGE_CAIRO
	select BR2_PACKAGE_LIBXCB
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXCURSOR

comment "XWayland support needs libepoxy and X.org enabled"
	depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_LIBEPOXY

config BR2_PACKAGE_WESTON_IMX_DEMO_CLIENTS
	bool "demo clients"
	help
	  This enables the installation of Weston's demo clients.

endif
