Mon Apr 19 18:46:15 2010 UTC ()
clean up atomic ops handling and use devel/libatomic_ops as a fallback.
Based on patch from Dennis den Brok.


(tnn)
diff -r1.11 -r1.12 pkgsrc/x11/libdrm/Makefile
diff -r1.12 -r1.13 pkgsrc/x11/libdrm/distinfo
diff -r0 -r1.1 pkgsrc/x11/libdrm/patches/patch-ad

cvs diff -r1.11 -r1.12 pkgsrc/x11/libdrm/Makefile (expand / switch to unified diff)

--- pkgsrc/x11/libdrm/Makefile 2010/04/16 13:43:36 1.11
+++ pkgsrc/x11/libdrm/Makefile 2010/04/19 18:46:15 1.12
@@ -1,44 +1,40 @@ @@ -1,44 +1,40 @@
1# $NetBSD: Makefile,v 1.11 2010/04/16 13:43:36 tnn Exp $ 1# $NetBSD: Makefile,v 1.12 2010/04/19 18:46:15 tnn Exp $
2# 2#
3 3
4DISTNAME= libdrm-2.4.20 4DISTNAME= libdrm-2.4.20
5CATEGORIES= x11 graphics 5CATEGORIES= x11 graphics
6MASTER_SITES= http://dri.freedesktop.org/libdrm/ 6MASTER_SITES= http://dri.freedesktop.org/libdrm/
7EXTRACT_SUFX= .tar.bz2 7EXTRACT_SUFX= .tar.bz2
8 8
9MAINTAINER= joerg@NetBSD.org 9MAINTAINER= joerg@NetBSD.org
10HOMEPAGE= http://dri.freedesktop.org/wiki/DRM 10HOMEPAGE= http://dri.freedesktop.org/wiki/DRM
11COMMENT= Userspace interface to kernel DRM services 11COMMENT= Userspace interface to kernel DRM services
12 12
13PKG_DESTDIR_SUPPORT= user-destdir 13PKG_DESTDIR_SUPPORT= user-destdir
14 14
15USE_PKGLOCALEDIR= yes 15USE_PKGLOCALEDIR= yes
16USE_TOOLS+= pkg-config 16USE_TOOLS+= pkg-config
17USE_LIBTOOL= yes 17USE_LIBTOOL= yes
18PKGCONFIG_OVERRIDE+= libdrm.pc.in 18PKGCONFIG_OVERRIDE+= libdrm.pc.in
19GNU_CONFIGURE= yes 19GNU_CONFIGURE= yes
20 20
21.include "../../mk/bsd.prefs.mk" 21.include "../../mk/bsd.prefs.mk"
22 22
23ATOMIC_OPS_CHECK?= 0 
24 
25SUBST_CLASSES+= atomic 23SUBST_CLASSES+= atomic
26SUBST_FILES.atomic= xf86drm.h 24SUBST_FILES.atomic= xf86drm.h
27SUBST_MESSAGE.atomic= Configuring xf86drm.h's atomic operations. 25SUBST_MESSAGE.atomic= Configuring xf86drm.h's atomic operations.
28SUBST_STAGE.atomic= pre-configure 26SUBST_STAGE.atomic= pre-configure
29SUBST_VARS.atomic= ATOMIC_OPS_CHECK 27SUBST_VARS.atomic= ATOMIC_OPS_CHECK
30 28
31.if ${OPSYS} == "NetBSD" && !target(netbsd-atomic-ops-check) 29.if ${OPSYS} == "NetBSD" && exists(/usr/include/sys/atomic.h)
32netbsd-atomic-ops-check: 30ATOMIC_OPS_CHECK= 1
33ATOMIC_OPS_CHECK!=\ 31.else
34 if ( ${NM} /usr/lib/libc.so | ${GREP} -q atomic_cas_uint ); then \ 32ATOMIC_OPS_CHECK= 0
35 ${ECHO} "1"; \ 33.include "../../devel/libatomic_ops/buildlink3.mk"
36 else \ 34CONFIGURE_ENV+= drm_cv_atomic_primitives=libatomic-ops
37 ${ECHO} "0"; \ 
38 fi 
39.endif 35.endif
40 36
41CONFIGURE_ARGS+= PTHREADSTUBS_CFLAGS=-I${PREFIX}/include \ 37CONFIGURE_ARGS+= PTHREADSTUBS_CFLAGS=-I${PREFIX}/include \
42 PTHREADSTUBS_LIBS=-L${PREFIX}/lib 38 PTHREADSTUBS_LIBS=-L${PREFIX}/lib
43 39
44.include "../../mk/bsd.pkg.mk" 40.include "../../mk/bsd.pkg.mk"

cvs diff -r1.12 -r1.13 pkgsrc/x11/libdrm/distinfo (expand / switch to unified diff)

--- pkgsrc/x11/libdrm/distinfo 2010/04/16 13:43:36 1.12
+++ pkgsrc/x11/libdrm/distinfo 2010/04/19 18:46:15 1.13
@@ -1,7 +1,8 @@ @@ -1,7 +1,8 @@
1$NetBSD: distinfo,v 1.12 2010/04/16 13:43:36 tnn Exp $ 1$NetBSD: distinfo,v 1.13 2010/04/19 18:46:15 tnn Exp $
2 2
3SHA1 (libdrm-2.4.20.tar.bz2) = f1448ac0f1c7a5f74a86d2fb50941fc12dc932db 3SHA1 (libdrm-2.4.20.tar.bz2) = f1448ac0f1c7a5f74a86d2fb50941fc12dc932db
4RMD160 (libdrm-2.4.20.tar.bz2) = 5581c45abfb9cb2bd0b95d4754d7812bb8323e3a 4RMD160 (libdrm-2.4.20.tar.bz2) = 5581c45abfb9cb2bd0b95d4754d7812bb8323e3a
5Size (libdrm-2.4.20.tar.bz2) = 400812 bytes 5Size (libdrm-2.4.20.tar.bz2) = 400812 bytes
6SHA1 (patch-ab) = 66dadd3244bfa9c69be0982fd2108deb94483de2 6SHA1 (patch-ab) = 66dadd3244bfa9c69be0982fd2108deb94483de2
7SHA1 (patch-ac) = 61635a93d4b83783023114cd96993dc1075cbe1b 7SHA1 (patch-ac) = 61635a93d4b83783023114cd96993dc1075cbe1b
 8SHA1 (patch-ad) = ea3ef8de8db782ddab23f182f1e6bd9d8f612a78

File Added: pkgsrc/x11/libdrm/patches/Attic/patch-ad
$NetBSD: patch-ad,v 1.1 2010/04/19 18:46:15 tnn Exp $

--- xf86atomic.h.orig	2010-03-22 20:39:27.000000000 +0000
+++ xf86atomic.h
@@ -92,6 +92,23 @@ typedef struct { uint_t atomic; } atomic
 
 #endif
 
+#if defined(__NetBSD__) && !defined(HAS_ATOMIC_OPS)  /* NetBSD */
+
+#include <sys/atomic.h>
+#define HAS_ATOMIC_OPS 1
+
+typedef struct { int atomic; } atomic_t;
+
+# define atomic_read(x) (int) ((x)->atomic)
+# define atomic_set(x, val) ((x)->atomic = (val))
+# define atomic_inc(x) (atomic_inc_uint (&(x)->atomic))
+# define atomic_dec_and_test(x) (atomic_dec_uint_nv(&(x)->atomic) == 1)
+# define atomic_add(x, v) (atomic_add_int(&(x)->atomic, (v)))
+# define atomic_dec(x, v) (atomic_add_int(&(x)->atomic, -(v)))
+# define atomic_cmpxchg(x, oldv, newv) atomic_cas_uint (&(x)->atomic, oldv, newv)
+
+#endif
+
 #if ! HAS_ATOMIC_OPS
 #error libdrm requires atomic operations, please define them for your CPU/compiler.
 #endif