menuconfig BR2_PACKAGE_LIBDRM
	bool "libdrm"
	depends on BR2_TOOLCHAIN_HAS_THREADS # libpthread-stubs
	select BR2_PACKAGE_LIBPTHREAD_STUBS
	help
	  Direct Rendering Manager

	  http://dri.freedesktop.org/libdrm/

if BR2_PACKAGE_LIBDRM

config BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	bool
	default y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \
		BR2_TOOLCHAIN_HAS_SYNC_4

config BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	bool
	select BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4

config BR2_PACKAGE_LIBDRM_INTEL
	bool "intel"
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	select BR2_PACKAGE_LIBPCIACCESS
	help
	  Install intel graphics driver.

config BR2_PACKAGE_LIBDRM_RADEON
	bool "radeon"
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	help
	  Install AMD/ATI graphics driver.

config BR2_PACKAGE_LIBDRM_AMDGPU
	bool "amdgpu"
	depends on BR2_USE_MMU # fork()
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	help
	  Install AMD GPU driver.

config BR2_PACKAGE_LIBDRM_NOUVEAU
	bool "nouveau"
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	help
	  Install NVIDIA graphics driver.

config BR2_PACKAGE_LIBDRM_VMWGFX
	bool "vmwgfx"
	depends on BR2_i386 || BR2_x86_64
	help
	  Installs Vmware graphics driver.

config BR2_PACKAGE_LIBDRM_OMAP
	bool "omap (experimental)"
	depends on BR2_arm
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	help
	  Install the TI OMAP driver using an experimental API.

config BR2_PACKAGE_LIBDRM_ETNAVIV
	bool "etnaviv (experimental)"
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	help
	  Install the Etnaviv/Vivante driver using an experimental API.

config BR2_PACKAGE_LIBDRM_EXYNOS
	bool "exynos (experimental)"
	depends on BR2_arm
	help
	  Install Samsung Exynos driver using an experimental API.

config BR2_PACKAGE_LIBDRM_FREEDRENO
	bool "freedreno"
	depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	help
	  Install Qualcomm Snapdragon driver.

config BR2_PACKAGE_LIBDRM_TEGRA
	bool "tegra (experimental)"
	depends on BR2_arm
	depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
	select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
	help
	  Install NVIDIA Tegra driver using an experimental API.

config BR2_PACKAGE_LIBDRM_VC4
	bool "vc4"
	depends on BR2_aarch64 || BR2_arm
	help
	  Install vc4 (Raspberry Pi) driver.

config BR2_PACKAGE_LIBDRM_INSTALL_TESTS
	bool "Install test programs"
	help
	  This option allows to install the libdrm test programs.

endif

comment "libdrm needs a toolchain w/ threads"
	depends on !BR2_TOOLCHAIN_HAS_THREADS
