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_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
