--- /dev/null
+From 7384f79f69fdb7b691cc5b0c28c301b3fe8b633e Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Thu, 26 May 2016 10:46:57 +0200
+Subject: [PATCH] xf86atomic: require CAS support in libatomic_ops
+
+Since AO_compare_and_swap_full() is used by libdrm, AO_REQUIRE_CAS
+must be defined before including <atomic_ops.h> so that we are sure
+that CAS support will be provided. This is necessary to make sure that
+the AO_compare_and_swap_full() function will be provided on all
+architectures, including the ones that don't have built-in CAS support
+such as SPARCv8.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ xf86atomic.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/xf86atomic.h b/xf86atomic.h
+index 922b37d..d7017a5 100644
+--- a/xf86atomic.h
++++ b/xf86atomic.h
+@@ -58,6 +58,7 @@ typedef struct {
+ #endif
+
+ #if HAVE_LIB_ATOMIC_OPS
++#define AO_REQUIRE_CAS
+ #include <atomic_ops.h>
+
+ #define HAS_ATOMIC_OPS 1
+--
+2.7.4
+
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_INSTALL_TESTS
bool "Install test programs"
help
config BR2_PACKAGE_LIBDRM_INTEL
bool "intel"
- select BR2_PACKAGE_LIBATOMIC_OPS
select BR2_PACKAGE_LIBPCIACCESS
depends on BR2_i386 || BR2_x86_64
+ depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
+ select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
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_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_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.
LIBDRM_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'
+ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y)
+LIBDRM_DEPENDENCIES += libatomic_ops
+ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)
+LIBDRM_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DAO_NO_SPARC_V9"
+endif
+endif
+
ifeq ($(BR2_PACKAGE_LIBDRM_INTEL),y)
LIBDRM_CONF_OPTS += --enable-intel
-LIBDRM_DEPENDENCIES += libatomic_ops libpciaccess
+LIBDRM_DEPENDENCIES += libpciaccess
else
LIBDRM_CONF_OPTS += --disable-intel
endif