Index: Makefile =================================================================== RCS file: /cvsroot/pkgsrc/x11/libdrm/Makefile,v retrieving revision 1.3 diff -u -b -r1.3 Makefile --- Makefile 23 Mar 2007 16:28:30 -0000 1.3 +++ Makefile 30 Apr 2008 16:45:24 -0000 @@ -2,7 +2,7 @@ # DISTNAME= libdrm-2.3.0 -PKGREVISION= 1 +PKGREVISION= 2 CATEGORIES= x11 graphics MASTER_SITES= http://dri.freedesktop.org/libdrm/ EXTRACT_SUFX= .tar.bz2 @@ -18,4 +18,24 @@ PKGCONFIG_OVERRIDE+= libdrm.pc.in GNU_CONFIGURE= yes +.include "../../mk/bsd.prefs.mk" + +ATOMIC_OPS_CHECK?= 0 + +SUBST_CLASSES+= atomic +SUBST_FILES.atomic= libdrm/xf86drm.h +SUBST_MESSAGE.atomic= Configuring xf86drm.h's atomic operations. +SUBST_STAGE.atomic= pre-configure +SUBST_VARS.atomic= ATOMIC_OPS_CHECK + +.if ${OPSYS} == "NetBSD" && !target(netbsd-atomic-ops-check) +netbsd-atomic-ops-check: +ATOMIC_OPS_CHECK!=\ + if ( ${NM} /usr/lib/libc.so | ${GREP} -q atomic_cas_uint ); then \ + ${ECHO} "1"; \ + else \ + ${ECHO} "0"; \ + fi +.endif + .include "../../mk/bsd.pkg.mk" Index: distinfo =================================================================== RCS file: /cvsroot/pkgsrc/x11/libdrm/distinfo,v retrieving revision 1.3 diff -u -b -r1.3 distinfo --- distinfo 23 Mar 2007 16:28:30 -0000 1.3 +++ distinfo 30 Apr 2008 16:45:24 -0000 @@ -5,3 +5,4 @@ Size (libdrm-2.3.0.tar.bz2) = 267949 bytes SHA1 (patch-aa) = cc63dd837d6c25925e3a4d70c1ebd4860da1edd8 SHA1 (patch-ab) = 46a47c10afd42d3138dfefc855511a9138564b83 +SHA1 (patch-ac) = 5ec8e94e952c1f7681076ab85e9a47335e64eb1e Index: patches/patch-ac =================================================================== RCS file: patches/patch-ac diff -N patches/patch-ac --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-ac 30 Apr 2008 16:45:24 -0000 @@ -0,0 +1,30 @@ +$NetBSD$ + +--- libdrm/xf86drm.h.orig 2006-11-08 16:55:14.000000000 -0500 ++++ libdrm/xf86drm.h +@@ -37,7 +37,11 @@ + #define _XF86DRM_H_ + + #include ++#if @ATOMIC_OPS_CHECK@ /* configured by pkgsrc */ ++#include ++#else + #include ++#endif + #include + + /* Defaults, if nothing set in xf86config */ +@@ -305,7 +309,12 @@ typedef struct _drmSetVersion { + #define DRM_LOCK_HELD 0x80000000U /**< Hardware lock is held */ + #define DRM_LOCK_CONT 0x40000000U /**< Hardware lock is contended */ + +-#if defined(__GNUC__) && (__GNUC__ >= 2) ++#if @ATOMIC_OPS_CHECK@ /* configured by pkgsrc */ ++ ++#define DRM_CAS(lock, old, new, __ret) \ ++ (__ret = atomic_cas_uint(&__drm_dummy_lock(lock), (old), (new)) != (old)); ++ ++#elif defined(__GNUC__) && (__GNUC__ >= 2) + # if defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__) + /* Reflect changes here to drmP.h */ + #define DRM_CAS(lock,old,new,__ret) \