menuconfig BR2_PACKAGE_MESA3D
	bool "mesa3d"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on !BR2_STATIC_LIBS
	depends on BR2_TOOLCHAIN_HAS_SYNC_1
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8
	select BR2_PACKAGE_EXPAT
	select BR2_PACKAGE_LIBDRM
	select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND
	select BR2_PACKAGE_ZLIB
	help
	  Mesa 3D, an open-source implementation of the OpenGL
	  specification.

	  http://mesa3d.org

if BR2_PACKAGE_MESA3D

# Some Gallium driver needs libelf when built with LLVM support
config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
	bool

config BR2_PACKAGE_MESA3D_NEEDS_PRECOMP_COMPILER
	bool
	select BR2_PACKAGE_MESA3D_OPENCL
	select BR2_PACKAGE_SPIRV_LLVM_TRANSLATOR
	select BR2_PACKAGE_SPIRV_TOOLS

config BR2_PACKAGE_MESA3D_LLVM
	bool "llvm support"
	depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_INSTALL_LIBSTDCPP
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future
	depends on !BR2_STATIC_LIBS
	depends on BR2_USE_WCHAR # std::wstring
	depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm
	select BR2_PACKAGE_LLVM

comment "llvm support needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7"
	depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_7 \
		|| BR2_STATIC_LIBS || !BR2_USE_WCHAR \
		|| !BR2_HOST_GCC_AT_LEAST_7

comment "llvm support needs a toolchain not affected by GCC bug 64735"
	depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735

config BR2_PACKAGE_MESA3D_LEGACY_BIND_WAYLAND_DISPLAY
	bool "Legacy Wayland EGL_WL_bind_wayland_display support"
	depends on BR2_PACKAGE_WAYLAND
	help
	  Legacy Wayland EGL_WL_bind_wayland_display support.

menuconfig BR2_PACKAGE_MESA3D_OPENCL
	bool "OpenCL support"
	depends on BR2_PACKAGE_MESA3D_LLVM
	depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 || \
		BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST || \
		BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI || \
		BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS || \
		BR2_PACKAGE_MESA3D_VULKAN_DRIVER_AMD || \
		BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL || \
		BR2_PACKAGE_MESA3D_VULKAN_DRIVER_IMAGINATION || \
		BR2_PACKAGE_MESA3D_VULKAN_DRIVER_PANFROST || \
		(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS && \
		 BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER)
	select BR2_PACKAGE_LLVM_RTTI
	select BR2_PACKAGE_CLANG
	select BR2_PACKAGE_LIBCLC
	select BR2_PACKAGE_HAS_LIBOPENCL
if BR2_PACKAGE_MESA3D_OPENCL
# libclc dependency is satisfied by
# BR2_PACKAGE_MESA3D_LLVM
config BR2_PACKAGE_MESA3D_RUSTICL
	bool "RustiCL"
	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
	depends on BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
	select BR2_PACKAGE_HOST_RUSTC
	select BR2_PACKAGE_LLVM_DUMP
	select BR2_PACKAGE_SPIRV_TOOLS
	select BR2_PACKAGE_SPIRV_LLVM_TRANSLATOR
	select BR2_PACKAGE_OPENCL_ICD_LOADER
	help
	  RustiCL is an OpenCL implementation written in Rust.
	  By default, devices are disabled in RustiCL. If you want
	  to enable a device, you need to set the environment variable
	  RUSTICL_ENABLE to the driver you are using.

	  https://docs.mesa3d.org/envvars.html#envvar-RUSTICL_ENABLE

endif # BR2_PACKAGE_MESA3D_OPENCL

config BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
	bool

# inform the .mk file of gallium or vulkan driver selection
config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	bool
	select BR2_PACKAGE_MESA3D_DRIVER

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	bool
	select BR2_PACKAGE_MESA3D_DRIVER

config BR2_PACKAGE_MESA3D_DRIVER
	bool
	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7

# OpenGL GLX needs X11
config BR2_PACKAGE_MESA3D_NEEDS_X11
	bool
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_LIBXCB
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXDAMAGE
	select BR2_PACKAGE_XLIB_LIBXEXT
	select BR2_PACKAGE_XLIB_LIBXFIXES
	select BR2_PACKAGE_XLIB_LIBXRANDR
	select BR2_PACKAGE_XLIB_LIBXXF86VM
	select BR2_PACKAGE_XORGPROTO

comment "Gallium drivers"

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS
	bool "Gallium crocus driver"
	depends on BR2_i386 || BR2_x86_64
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	help
	  Mesa driver for gen4-7 Intel GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV
	bool "Gallium Etnaviv driver"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_ETNAVIV
	help
	  Mesa driver for Vivante GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
	bool "Gallium freedreno driver"
	depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be # libdrm-freedreno
	# libdrm's freedreno option depends on LIBDRM_HAS_ATOMIC. Propagating
	# that dependency here causes a circular dependency that Kconfig
	# can't see is just spurious. However, that dependency is about
	# the toolchain having sync4 primitives, which is always a given
	# for arm/aarch64.
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_FREEDRENO
	help
	  Mesa driver for Freedreno GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915
	bool "Gallium i915 driver"
	depends on BR2_i386 || BR2_x86_64
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_INTEL
	help
	  Support for i915-based Intel GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS
	bool "Gallium iris driver"
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_MESA3D_NEEDS_PRECOMP_COMPILER
	select BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
	help
	  Mesa driver for iris-based Intel GPUs.

comment "iris driver needs llvm"
	depends on !BR2_PACKAGE_MESA3D_LLVM

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA
	bool "Gallium lima driver"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	help
	  Mesa driver for ARM Mali Utgard GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LLVMPIPE
	bool "Gallium llvmpipe driver"
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
	help
	  This is a llvm opengl implementation using the Gallium3D
	  infrastructure.

comment "llvmpipe driver needs llvm"
	depends on !BR2_PACKAGE_MESA3D_LLVM

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU
	bool "Gallium nouveau driver"
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_NOUVEAU
	select BR2_PACKAGE_LLVM_RTTI if BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
	help
	  Supports all Nvidia GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST
	bool "Gallium panfrost driver"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_MESA3D_NEEDS_PRECOMP_COMPILER
	select BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
	help
	  Mesa driver for ARM Mali Midgard and Bifrost GPUs.

comment "panfrost driver needs llvm"
	depends on !BR2_PACKAGE_MESA3D_LLVM

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300
	bool "Gallium Radeon R300 driver"
	depends on BR2_i386 || BR2_x86_64
	# lbdrm's radeon option depends on LIBDRM_HAS_ATOMIC. Propagating
	# that dependency here causes a circular dependency that Kconfig
	# can't see is just spurious. However, that dependency is about
	# the toolchain having sync4 primitives, which is always a given
	# for x86.
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_RADEON
	help
	  Driver for ATI/AMD Radeon R300/R400/R500 GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600
	bool "Gallium Radeon R600 driver"
	depends on BR2_i386 || BR2_x86_64
	depends on !BR2_PACKAGE_MESA3D_LLVM || \
		(BR2_PACKAGE_MESA3D_LLVM && (BR2_TOOLCHAIN_USES_UCLIBC || \
			BR2_TOOLCHAIN_USES_GLIBC)) # elfutils
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_RADEON
	select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM
	help
	  Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.

# R600 needs libelf when Mesa3D is built with LLVM support
# musl is not currently compatible with elfutils
comment "R600 driver needs a uClibc or glibc toolchain when llvm is enabled"
	depends on BR2_PACKAGE_MESA3D_LLVM
	depends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI
	bool "Gallium Radeon SI driver"
	depends on BR2_USE_MMU # libdrm
	depends on BR2_i386 || BR2_x86_64
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_AMDGPU
	select BR2_PACKAGE_LIBDRM_RADEON
	select BR2_PACKAGE_LLVM_AMDGPU
	select BR2_PACKAGE_ELFUTILS
	select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
	select BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
	help
	  Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA
	bool "Gallium vmware svga driver"
	depends on BR2_i386 || BR2_x86_64
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_VMWGFX
	help
	  This is a virtual GPU driver for VMWare virtual machines.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SOFTPIPE
	bool "Gallium softpipe driver"
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	help
	  This is a software opengl implementation using the Gallium3D
	  infrastructure.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA
	bool "Gallium tegra driver"
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU
	select BR2_PACKAGE_LIBDRM_NOUVEAU
	help
	  Adds support for Nvidia Tegra GPUs, requires nouveau.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D
	bool "Gallium v3d driver"
	depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 # runtime
	select BR2_PACKAGE_MESA3D_OPENGL_EGL
	help
	  Driver for Broadcom VC6/7 (rpi4/5) GPUs (needs vc4).

	  It requires a kernel 4.18+ with DRM V3D support enabled:

	  - CONFIG_DRM_V3D
	  - CONFIG_DRM_VC4

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
	bool "Gallium vc4 driver"
	depends on BR2_arm || BR2_aarch64
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_LIBDRM_VC4
	select BR2_PACKAGE_MESA3D_OPENGL_EGL
	help
	  Driver for Broadcom VC4 (rpi0/1/2/3) GPUs.

	  It requires a vanilla 4.5+ kernel with drm vc4 (open) support.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL
	bool "Gallium virgl driver"
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_MESA3D_OPENGL_EGL
	help
	  virgl is the 3D acceleration backend for the virtio-gpu
	  shipping with qemu.

config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ZINK
	bool "Gallium zink driver"
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	select BR2_PACKAGE_VULKAN_LOADER
	help
	  Zink is a Gallium driver that emits Vulkan API calls,
	  providing OpenGL support on devices that only support
	  Vulkan.

comment "Vulkan drivers"

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_AMD
	bool "Vulkan AMD driver (radv)"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	select BR2_PACKAGE_LIBDRM_AMDGPU
	select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	help
	  RADV is a userspace driver that implements the
	  Vulkan API on most modern AMD GPUs.

	  https://docs.mesa3d.org/drivers/radv.html

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM
	bool "Vulkan broadcom driver"
	depends on BR2_arm || BR2_aarch64
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libxshmfence
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	help
	  Vulkan broadcom driver.

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_IMAGINATION
	bool "Vulkan imagination driver"
	depends on BR2_arm || BR2_aarch64
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_NEEDS_PRECOMP_COMPILER
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	help
	  Vulkan imagination driver.

comment "imagination vulkan needs llvm"
	depends on !BR2_PACKAGE_MESA3D_LLVM

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
	bool "Vulkan Intel driver"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_NEEDS_PRECOMP_COMPILER
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	help
	  Vulkan driver for Intel hardware from Ivy Bridge onward.

comment "intel vulkan needs llvm"
	depends on !BR2_PACKAGE_MESA3D_LLVM

comment "intel vulkan needs a glibc toolchain w/ headers >= 3.17"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7
	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \
		!BR2_TOOLCHAIN_USES_GLIBC

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_PANFROST
	bool "Vulkan panfrost driver"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_LLVM_RTTI if BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_NEEDS_PRECOMP_COMPILER
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	help
	  Vulkan panfrost driver.

comment "panfrost vulkan needs llvm"
	depends on !BR2_PACKAGE_MESA3D_LLVM

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST
	bool "Vulkan swrast driver"
	depends on BR2_PACKAGE_MESA3D_LLVM
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SOFTPIPE
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	help
	  Vulkan swrast driver.

config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_VIRTIO
	bool "Vulkan VirtIO driver (Venus)"
	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
	help
	  Vulkan VirtIO (venus) driver.

if BR2_PACKAGE_MESA3D_DRIVER

comment "OpenGL API Support"

config BR2_PACKAGE_MESA3D_GBM
	bool "gbm"
	depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && \
		BR2_PACKAGE_MESA3D_OPENGL_EGL
	select BR2_PACKAGE_HAS_LIBGBM
	select BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT
	select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
	help
	  Enable Generic Buffer Management (gbm)

comment "gbm support needs a gallium driver w/ EGL support."
	depends on !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && BR2_PACKAGE_MESA3D_OPENGL_EGL)

config BR2_PACKAGE_MESA3D_OPENGL_GLX
	bool "OpenGL GLX"
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_HAS_LIBGL if !BR2_PACKAGE_LIBGLVND
	select BR2_PACKAGE_LIBGLVND_DISPATCH_GL if BR2_PACKAGE_LIBGLVND
	select BR2_PACKAGE_MESA3D_NEEDS_X11
	help
	  Enable GLX graphic acceleration (OpenGL + X11).

comment "OpenGL GLX support needs X11"
	depends on !BR2_PACKAGE_XORG7

config BR2_PACKAGE_MESA3D_OPENGL_EGL
	bool "OpenGL EGL"
	depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
	select BR2_PACKAGE_HAS_LIBEGL if !BR2_PACKAGE_LIBGLVND
	select BR2_PACKAGE_LIBGLVND_DISPATCH_EGL if BR2_PACKAGE_LIBGLVND
	select BR2_PACKAGE_MESA3D_GBM
	help
	  Use the Khronos EGL APIs. EGL is a window manager for OpenGL
	  applications similar to GLX, for X, and WGL, for Windows.

config BR2_PACKAGE_MESA3D_OPENGL_ES
	bool "OpenGL ES"
	select BR2_PACKAGE_HAS_LIBGLES if !BR2_PACKAGE_LIBGLVND
	select BR2_PACKAGE_LIBGLVND_DISPATCH_GLES if BR2_PACKAGE_LIBGLVND
	help
	  Use the Khronos OpenGL ES APIs. This is commonly used on
	  embedded systems and represents a subset of the OpenGL API.

endif # BR2_PACKAGE_MESA3D_DRIVER

config BR2_PACKAGE_PROVIDES_LIBGBM
	default "mesa3d" if BR2_PACKAGE_MESA3D_GBM

config BR2_PACKAGE_PROVIDES_LIBGL
	default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_GLX && !BR2_PACKAGE_LIBGLVND

config BR2_PACKAGE_PROVIDES_LIBEGL
	default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_LIBGLVND

config BR2_PACKAGE_PROVIDES_LIBGLES
	default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_ES && !BR2_PACKAGE_LIBGLVND

config BR2_PACKAGE_PROVIDES_LIBOPENCL
	default "mesa3d" if BR2_PACKAGE_MESA3D_OPENCL

endif # BR2_PACKAGE_MESA3D

comment "mesa3d needs a toolchain w/ gcc >=8, C++, NPTL, dynamic library"
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \
		BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8
	depends on BR2_TOOLCHAIN_HAS_SYNC_1
