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_i386 || BR2_x86_64
	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_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_arm
	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_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
