pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

libdrm-dfbsd: Update wip/libdrm-dfbsd to 2.4.99



Module Name:	pkgsrc-wip
Committed By:	David Shao <davshao%gmail.com@localhost>
Pushed By:	dshao
Date:		Mon Jul 22 22:01:30 2019 -0700
Changeset:	2051b61279b7a6dd4d7749ac9017fc5762e7c404

Modified Files:
	libdrm-dfbsd/Makefile
	libdrm-dfbsd/PLIST
	libdrm-dfbsd/PLIST.DragonFly
	libdrm-dfbsd/PLIST.FreeBSD
	libdrm-dfbsd/builtin.mk
	libdrm-dfbsd/distinfo
	libdrm-dfbsd/patches/patch-include_drm_drm.h
	libdrm-dfbsd/patches/patch-xf86atomic.h
	libdrm-dfbsd/patches/patch-xf86drm.c
Added Files:
	libdrm-dfbsd/patches/patch-intel_intel__bufmgr__gem.c
	libdrm-dfbsd/patches/patch-intel_uthash.h
	libdrm-dfbsd/patches/patch-meson.build

Log Message:
libdrm-dfbsd: Update wip/libdrm-dfbsd to 2.4.99

Changes:
* Meson build
* Knobs for NetBSD xsrc patches on NetBSD

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=2051b61279b7a6dd4d7749ac9017fc5762e7c404

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 libdrm-dfbsd/Makefile                              |  65 +++++++++--
 libdrm-dfbsd/PLIST                                 |  31 ++++--
 libdrm-dfbsd/PLIST.DragonFly                       |   9 +-
 libdrm-dfbsd/PLIST.FreeBSD                         |   9 +-
 libdrm-dfbsd/builtin.mk                            |   2 +-
 libdrm-dfbsd/distinfo                              |  19 ++--
 libdrm-dfbsd/patches/patch-include_drm_drm.h       |  26 ++++-
 .../patches/patch-intel_intel__bufmgr__gem.c       |  14 +++
 libdrm-dfbsd/patches/patch-intel_uthash.h          |  13 +++
 libdrm-dfbsd/patches/patch-meson.build             |  29 +++++
 libdrm-dfbsd/patches/patch-xf86atomic.h            |  29 ++++-
 libdrm-dfbsd/patches/patch-xf86drm.c               | 122 +++++++++++----------
 12 files changed, 272 insertions(+), 96 deletions(-)

diffs:
diff --git a/libdrm-dfbsd/Makefile b/libdrm-dfbsd/Makefile
index a3022b5aa5..3c8312aa8e 100644
--- a/libdrm-dfbsd/Makefile
+++ b/libdrm-dfbsd/Makefile
@@ -1,6 +1,21 @@
-# $NetBSD: Makefile,v 1.91 2019/01/22 21:50:47 wiz Exp $
+# $NetBSD: Makefile,v 1.92 2019/04/23 09:51:47 wiz Exp $
 
-DISTNAME=		libdrm-2.4.97
+# 2019-07-02		Bump version to 2.4.99
+# COMMIT_ID=		b2103fa3257daa6acfdc6f4d4d8565abebaec4a8
+
+# 2019-05-16		amdgpu: Add amdgpu_cs_syncobj_transfer to amdgpu-symbol-check
+# COMMIT_ID=		922d92994267743266024ecceb734ce0ebbca808
+
+# PORTNAME=		drm
+
+# DISTNAME=		${PORTNAME}-${COMMIT_ID}
+# PKGNAME=		libdrm-2.4.98
+# PKGREVISION=	2
+# CATEGORIES=		x11 graphics
+# MASTER_SITES=		http://cgit.freedesktop.org/mesa/${PORTNAME}/snapshot/
+# EXTRACT_SUFX=		.tar.xz
+
+DISTNAME=		libdrm-2.4.99
 CATEGORIES=		x11 graphics
 MASTER_SITES=		http://dri.freedesktop.org/libdrm/
 EXTRACT_SUFX=		.tar.bz2
@@ -14,9 +29,9 @@ ONLY_FOR_PLATFORM=	NetBSD-*-* DragonFly-*-* FreeBSD-*-* OpenBSD-*-* \
 
 USE_PKGLOCALEDIR=	yes
 USE_TOOLS+=		gmake pkg-config
-USE_LIBTOOL=		yes
+# USE_LIBTOOL=		yes
 PKGCONFIG_OVERRIDE+=	libdrm.pc.in
-GNU_CONFIGURE=		yes
+# GNU_CONFIGURE=		yes
 
 .include "../../mk/bsd.prefs.mk"
 
@@ -31,28 +46,30 @@ ATOMIC_OPS_CHECK=	0
 ATOMIC_OPS_CHECK=	1
 .else
 # Intel driver no longer needs libatomic_ops
-.  if ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != x86_64
-.    include "../../devel/libatomic_ops/buildlink3.mk"
+.if ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != x86_64
+.  include "../../devel/libatomic_ops/buildlink3.mk"
 CONFIGURE_ENV+=		drm_cv_atomic_primitives=libatomic-ops
-.  endif
+.endif
 .endif
 
 CONFIGURE_ARGS+=	PTHREADSTUBS_CFLAGS=-I${PREFIX}/include \
 			PTHREADSTUBS_LIBS=-L${PREFIX}/lib
 CONFIGURE_ARGS+=	--disable-manpages
 CONFIGURE_ARGS+=	--disable-valgrind
+MESON_ARGS+=	-Dman-pages=false
+MESON_ARGS+=	-Dvalgrind=false
 
 LDFLAGS.NetBSD+=	-lpci
 
 PLIST_VARS+=	intel arm
-.if ${MACHINE_ARCH} == i386 || ${MACHINE_ARCH} == x86_64
+.if !empty(MACHINE_ARCH:Mi386) || !empty(MACHINE_ARCH:Mx86_64)
 # libpciaccess is needed to build support for the intel KMS API,
 # libdrm_intel.so.
 .include "../../sysutils/libpciaccess/buildlink3.mk"
 PLIST.intel=	yes
 .elif !empty(MACHINE_ARCH:Marm*) || \
       !empty(MACHINE_ARCH:Mearm*) || \
-      ${MACHINE_ARCH} == aarch64
+      !empty(MACHINE_ARCH:Maarch64)
 PLIST.arm=	yes
 #.else
 #CONFIGURE_ARGS+=	--disable-intel
@@ -62,19 +79,43 @@ PKG_OPTIONS_VAR=	PKG_OPTIONS.libdrm
 PKG_SUPPORTED_OPTIONS=	libkms
 PKG_SUGGESTED_OPTIONS=
 
+PKG_SUPPORTED_OPTIONS+=	invert_atomic_add_unless
+.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "DragonFly"
+PKG_SUGGESTED_OPTIONS+=	invert_atomic_add_unless 
+.endif
+
 # .if !empty(MACHINE_ARCH:Mi386) || !empty(MACHINE_ARCH:Mx86_64)
 # PKG_SUGGESTED_OPTIONS+=	libkms
 # .endif
 
+PKG_SUPPORTED_OPTIONS+= strict_xsrc_netbsd
+.if ${OPSYS} == "NetBSD"
+PKG_SUGGESTED_OPTIONS+= strict_xsrc_netbsd
+.endif
+
 .include "../../mk/bsd.options.mk"
 
-PLIST_VARS+=		libkms
+PLIST_VARS+=	libkms	
 .if !empty(PKG_OPTIONS:Mlibkms)
 PKGCONFIG_OVERRIDE+=	libkms.pc.in
-PLIST.libkms=		yes
+PLIST.libkms=	yes
 CONFIGURE_ARGS+=	--enable-libkms
+MESON_ARGS+=	-Dlibkms=true
 .else
-#CONFIGURE_ARGS+=	--disable-libkms
+CONFIGURE_ARGS+=	--disable-libkms
+MESON_ARGS+=	-Dlibkms=false
+.endif
+
+.if !empty(PKG_OPTIONS:Minvert_atomic_add_unless)
+CPPFLAGS+=	-DINVERT_ATOMIC_ADD_UNLESS
 .endif
 
+.if !empty(PKG_OPTIONS:Mstrict_xsrc_netbsd)
+CPPFLAGS+=	-DSTRICT_XSRC_NETBSD
+.endif
+
+# Meson
+# CPPFLAGS+=	-Wno-return-type
+.include "../../devel/py-meson/build.mk"
+
 .include "../../mk/bsd.pkg.mk"
diff --git a/libdrm-dfbsd/PLIST b/libdrm-dfbsd/PLIST
index 29d088617c..a5f0496422 100644
--- a/libdrm-dfbsd/PLIST
+++ b/libdrm-dfbsd/PLIST
@@ -38,22 +38,39 @@ include/libdrm/savage_drm.h
 include/libdrm/sis_drm.h
 include/libdrm/tegra_drm.h
 include/libdrm/vc4_drm.h
+${PLIST.libkms}include/libkms/libkms.h
 ${PLIST.arm}include/libdrm/vc4_packet.h
 ${PLIST.arm}include/libdrm/vc4_qpu_defines.h
 include/libdrm/via_drm.h
 include/libdrm/virtgpu_drm.h
 include/libdrm/vmwgfx_drm.h
-${PLIST.libkms}include/libkms/libkms.h
 include/libsync.h
 include/xf86drm.h
 include/xf86drmMode.h
-lib/libdrm.la
-lib/libdrm_amdgpu.la
+@comment lib/libdrm.la
+lib/libdrm.so
+lib/libdrm.so.2
+lib/libdrm.so.2.4.0
+@comment lib/libdrm_amdgpu.la
+lib/libdrm_amdgpu.so
+lib/libdrm_amdgpu.so.1
+lib/libdrm_amdgpu.so.1.0.0
 ${PLIST.arm}lib/libdrm_freedreno.la
-${PLIST.intel}lib/libdrm_intel.la
-lib/libdrm_nouveau.la
-lib/libdrm_radeon.la
-${PLIST.libkms}lib/libkms.la
+@comment ${PLIST.intel}lib/libdrm_intel.la
+${PLIST.intel}lib/libdrm_intel.so
+${PLIST.intel}lib/libdrm_intel.so.1
+${PLIST.intel}lib/libdrm_intel.so.1.0.0
+@comment lib/libdrm_nouveau.la
+lib/libdrm_nouveau.so
+lib/libdrm_nouveau.so.2
+lib/libdrm_nouveau.so.2.0.0
+@comment lib/libdrm_radeon.la
+lib/libdrm_radeon.so
+lib/libdrm_radeon.so.1
+lib/libdrm_radeon.so.1.0.1
+${PLIST.libkms}lib/libkms.so
+${PLIST.libkms}lib/libkms.so.1
+${PLIST.libkms}lib/libkms.so.1.0.0
 lib/pkgconfig/libdrm.pc
 lib/pkgconfig/libdrm_amdgpu.pc
 ${PLIST.arm}lib/pkgconfig/libdrm_freedreno.pc
diff --git a/libdrm-dfbsd/PLIST.DragonFly b/libdrm-dfbsd/PLIST.DragonFly
index 14df7d9da5..799d3b721e 100644
--- a/libdrm-dfbsd/PLIST.DragonFly
+++ b/libdrm-dfbsd/PLIST.DragonFly
@@ -1,4 +1,7 @@
 @comment $NetBSD: PLIST.DragonFly,v 1.1 2014/06/01 06:37:46 ryoon Exp $
-include/libkms/libkms.h
-lib/libkms.la
-lib/pkgconfig/libkms.pc
+@comment include/libkms/libkms.h
+@comment lib/libkms.la
+@comment ${PLIST.libkms}lib/libkms.so
+@comment ${PLIST.libkms}lib/libkms.so.1
+@comment ${PLIST.libkms}lib/libkms.so.1.0.0
+@comment lib/pkgconfig/libkms.pc
diff --git a/libdrm-dfbsd/PLIST.FreeBSD b/libdrm-dfbsd/PLIST.FreeBSD
index 12622ca3fd..7f094e5b99 100644
--- a/libdrm-dfbsd/PLIST.FreeBSD
+++ b/libdrm-dfbsd/PLIST.FreeBSD
@@ -1,4 +1,7 @@
 @comment $NetBSD: PLIST.FreeBSD,v 1.1 2014/04/18 09:43:29 asau Exp $
-include/libkms/libkms.h
-lib/libkms.la
-lib/pkgconfig/libkms.pc
+@comment include/libkms/libkms.h
+@comment lib/libkms.la
+@comment ${PLIST.libkms}lib/libkms.so
+@comment ${PLIST.libkms}lib/libkms.so.1
+@comment ${PLIST.libkms}lib/libkms.so.1.0.0
+@comment lib/pkgconfig/libkms.pc
diff --git a/libdrm-dfbsd/builtin.mk b/libdrm-dfbsd/builtin.mk
index f1ee32ffef..ffe2489949 100644
--- a/libdrm-dfbsd/builtin.mk
+++ b/libdrm-dfbsd/builtin.mk
@@ -1,6 +1,6 @@
 # $NetBSD: builtin.mk,v 1.4 2018/06/01 15:05:43 maya Exp $
 
-BUILTIN_PKG:=		libdrm
+BUILTIN_PKG:=	libdrm
 .for pcfile in libdrm libdrm_amdgpu libdrm_intel libdrm_nouveau libdrm_radeon
 PKGCONFIG_FILE.libdrm+=	${X11BASE}/lib/pkgconfig/${pcfile}.pc
 PKGCONFIG_FILE.libdrm+=	${X11BASE}/lib${LIBABISUFFIX}/pkgconfig/${pcfile}.pc
diff --git a/libdrm-dfbsd/distinfo b/libdrm-dfbsd/distinfo
index e7248739db..cdb5159e43 100644
--- a/libdrm-dfbsd/distinfo
+++ b/libdrm-dfbsd/distinfo
@@ -1,14 +1,17 @@
-$NetBSD: distinfo,v 1.92 2019/01/22 21:50:47 wiz Exp $
+$NetBSD: distinfo,v 1.93 2019/04/23 09:51:47 wiz Exp $
 
-SHA1 (libdrm-2.4.97.tar.bz2) = 7635bec769a17edd140282fa2c46838c4a44bc91
-RMD160 (libdrm-2.4.97.tar.bz2) = eb9b715aef37af8b879f45fb2ee5fbb9adbba31b
-SHA512 (libdrm-2.4.97.tar.bz2) = 3e08ee9d6c9ce265d783a59b51e22449905ea73aa27f25a082a1e9e1532f7c99e1c9f7cb966eb0970be2a08e2e5993dc9aa55093b1bff548689fdb465e7145ed
-Size (libdrm-2.4.97.tar.bz2) = 837329 bytes
+SHA1 (libdrm-2.4.99.tar.bz2) = e15a3fcc2d321b03d233a245a8593abde7feefd4
+RMD160 (libdrm-2.4.99.tar.bz2) = 6561915eeba4a5348d342620c2495dabed99d63f
+SHA512 (libdrm-2.4.99.tar.bz2) = 04702eebe8dca97fac61653623804fdcb0b8b3714bdc6f5e72f0dfdce9c9524cf16f69d37aa9feac79ddc1c11939be44a216484563a612414668ea5eaeadf191
+Size (libdrm-2.4.99.tar.bz2) = 853659 bytes
 SHA1 (patch-ac) = 67c998df7dfc0dabc86320ea6d015cede3e464ea
-SHA1 (patch-include_drm_drm.h) = 48a912f40bf2b2a1c23edbe4446fa7869212f17b
+SHA1 (patch-include_drm_drm.h) = 964d1af410469f8995a7be8c603e33ae3701c0d4
+SHA1 (patch-intel_intel__bufmgr__gem.c) = 29598cfacd6b6f7432001d0d884b4e4204c18d4a
+SHA1 (patch-intel_uthash.h) = fba0a7bb2437760b06640a3d69f1a44b62726a3a
 SHA1 (patch-libkms_vmwgfx.c) = de56a4f1724bef5f237f183eca889b8cef3b81af
 SHA1 (patch-libsync.h) = 1e0603e72a54a069fc9d2ab2c9559d22381a69d3
-SHA1 (patch-xf86atomic.h) = 887db95db00125bdfa1ab298b2ccc555dec70366
-SHA1 (patch-xf86drm.c) = 3cd8c6a6e26728d92ec3fc03cfffa778a65c286b
+SHA1 (patch-meson.build) = f010ba233e8a50ec59f323a8a6669758b3bdb7bf
+SHA1 (patch-xf86atomic.h) = e8af89dfefe0537e33dce16609b083261792b1ad
+SHA1 (patch-xf86drm.c) = 84aa5b4bd19a86ce449c9757db55e39e1fd61f73
 SHA1 (patch-xf86drmMode.c) = d7c6617ef54f76dc3dac00098adbb2f6fb02d685
 SHA1 (patch-xf86drmMode.h) = 265989e670cc7ead9bb5002e116e5ab56439ede6
diff --git a/libdrm-dfbsd/patches/patch-include_drm_drm.h b/libdrm-dfbsd/patches/patch-include_drm_drm.h
index adff81aaef..b17a5cd1e4 100644
--- a/libdrm-dfbsd/patches/patch-include_drm_drm.h
+++ b/libdrm-dfbsd/patches/patch-include_drm_drm.h
@@ -1,10 +1,32 @@
 $NetBSD: patch-include_drm_drm.h,v 1.4 2016/04/29 11:17:34 wiz Exp $
 
+NetBSD xsrc:
+protect from redefinition
+
 Fix compilation on systems that don't provide O_CLOEXEC.
 
---- include/drm/drm.h.orig	2016-04-28 00:44:16.000000000 +0000
+--- include/drm/drm.h.orig	2019-07-02 18:36:50.000000000 +0000
 +++ include/drm/drm.h
-@@ -674,7 +674,11 @@ struct drm_set_client_cap {
+@@ -47,6 +47,10 @@ typedef unsigned int drm_handle_t;
+ #include <stdint.h>
+ #include <sys/ioccom.h>
+ #include <sys/types.h>
++#if !defined(__NetBSD__) || !defined(__linux_sized_types__)
++#if defined(__NetBSD__) && !defined(__linux_sized_types__)
++#define __linux_sized_types__
++#endif /* __NetBSD__ */
+ typedef int8_t   __s8;
+ typedef uint8_t  __u8;
+ typedef int16_t  __s16;
+@@ -55,6 +59,7 @@ typedef int32_t  __s32;
+ typedef uint32_t __u32;
+ typedef int64_t  __s64;
+ typedef uint64_t __u64;
++#endif /* __linux_sized_types__ */
+ typedef size_t   __kernel_size_t;
+ typedef unsigned long drm_handle_t;
+ 
+@@ -699,7 +704,11 @@ struct drm_set_client_cap {
  };
  
  #define DRM_RDWR O_RDWR
diff --git a/libdrm-dfbsd/patches/patch-intel_intel__bufmgr__gem.c b/libdrm-dfbsd/patches/patch-intel_intel__bufmgr__gem.c
new file mode 100644
index 0000000000..e1757c4e40
--- /dev/null
+++ b/libdrm-dfbsd/patches/patch-intel_intel__bufmgr__gem.c
@@ -0,0 +1,14 @@
+$NetBSD$
+
+--- intel/intel_bufmgr_gem.c.orig	2019-03-12 11:55:31.000000000 +0000
++++ intel/intel_bufmgr_gem.c
+@@ -43,6 +43,9 @@
+ #include <unistd.h>
+ #include <assert.h>
+ #include <pthread.h>
++#if defined(STRICT_XSRC_NETBSD)
++#include <stddef.h>
++#endif
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
diff --git a/libdrm-dfbsd/patches/patch-intel_uthash.h b/libdrm-dfbsd/patches/patch-intel_uthash.h
new file mode 100644
index 0000000000..980a5cc120
--- /dev/null
+++ b/libdrm-dfbsd/patches/patch-intel_uthash.h
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- intel/uthash.h.orig	2019-03-12 11:55:31.000000000 +0000
++++ intel/uthash.h
+@@ -71,7 +71,7 @@ do {                                    
+ typedef unsigned int uint32_t;
+ typedef unsigned char uint8_t;
+ #endif
+-#elif defined(__GNUC__) && !defined(__VXWORKS__)
++#elif ((defined(STRICT_XSRC_NETBSD) && defined(__lint__)) || defined(__GNUC__)) && !defined(__VXWORKS__)
+ #include <stdint.h>
+ #else
+ typedef unsigned int uint32_t;
diff --git a/libdrm-dfbsd/patches/patch-meson.build b/libdrm-dfbsd/patches/patch-meson.build
new file mode 100644
index 0000000000..c9ae994f2a
--- /dev/null
+++ b/libdrm-dfbsd/patches/patch-meson.build
@@ -0,0 +1,29 @@
+$NetBSD$
+
+From FreeBSD ports graphics/libdrm 2.4.98
+- sys/sysctl.h isn't self-sufficient
+
+--- meson.build.orig	2019-04-19 15:52:29.000000000 +0000
++++ meson.build
+@@ -35,11 +35,7 @@ config.set10('UDEV', get_option('udev'))
+ with_freedreno_kgsl = get_option('freedreno-kgsl')
+ with_install_tests = get_option('install-test-programs')
+ 
+-if ['freebsd', 'dragonfly', 'netbsd'].contains(host_machine.system())
+-  dep_pthread_stubs = dependency('pthread-stubs', version : '>= 0.4')
+-else
+-  dep_pthread_stubs = []
+-endif
++dep_pthread_stubs = []
+ dep_threads = dependency('threads')
+ 
+ cc = meson.get_compiler('c')
+@@ -181,7 +177,7 @@ endif
+ dep_m = cc.find_library('m', required : false)
+ foreach header : ['sys/sysctl.h', 'sys/select.h', 'alloca.h']
+   config.set('HAVE_' + header.underscorify().to_upper(),
+-    cc.compiles('#include <@0@>'.format(header), name : '@0@ works'.format(header)))
++    cc.compiles('#include <sys/types.h>\n#include <@0@>'.format(header), name : '@0@ works'.format(header)))
+ endforeach
+ if cc.has_header_symbol('sys/sysmacros.h', 'major')
+   config.set10('MAJOR_IN_SYSMACROS', true)
diff --git a/libdrm-dfbsd/patches/patch-xf86atomic.h b/libdrm-dfbsd/patches/patch-xf86atomic.h
index da8af22050..d6d0dcaf7d 100644
--- a/libdrm-dfbsd/patches/patch-xf86atomic.h
+++ b/libdrm-dfbsd/patches/patch-xf86atomic.h
@@ -1,17 +1,40 @@
 $NetBSD$
 
+Option to define atomic types similar to current NetBSD xsrc.
+
 This single patch allows glxgears to run properly on
 an Intel integrated graphics IvyBridge machine on DragonFly.
 libdrm atomic_add_unless() may reverse return value meaning
 https://bugs.freedesktop.org/show_bug.cgi?id=100077
 
---- xf86atomic.h.orig	2015-09-22 04:34:51.000000000 +0000
+--- xf86atomic.h.orig	2019-03-12 11:55:31.000000000 +0000
 +++ xf86atomic.h
-@@ -111,7 +111,11 @@ static inline int atomic_add_unless(atom
+@@ -79,12 +79,20 @@ typedef struct {
+ #define HAS_ATOMIC_OPS 1
+ 
+ #if defined(__NetBSD__)
++#if defined(STRICT_XSRC_NETBSD)
++#define LIBDRM_ATOMIC_TYPE unsigned int
++#else /* !STRICT_XSRC_NETBSD */
+ #define LIBDRM_ATOMIC_TYPE int
++#endif /*STRICT_XSRC_NETBSD */
+ #else
+ #define LIBDRM_ATOMIC_TYPE uint_t
+ #endif
+ 
++#if defined(STRICT_XSRC_NETBSD)
++typedef struct { volatile LIBDRM_ATOMIC_TYPE atomic; } atomic_t;
++#else /* !STRICT_XSRC_NETBSD */
+ typedef struct { LIBDRM_ATOMIC_TYPE atomic; } atomic_t;
++#endif /*STRICT_XSRC_NETBSD */
+ 
+ # define atomic_read(x) (int) ((x)->atomic)
+ # define atomic_set(x, val) ((x)->atomic = (LIBDRM_ATOMIC_TYPE)(val))
+@@ -107,7 +115,11 @@ static inline int atomic_add_unless(atom
  	c = atomic_read(v);
  	while (c != unless && (old = atomic_cmpxchg(v, c, c + add)) != c)
  		c = old;
-+#if defined(__FreeBSD__) || defined(__DragonFly__)
++#if defined(INVERT_ATOMIC_ADD_UNLESS)
 +	return c != unless;
 +#else
  	return c == unless;
diff --git a/libdrm-dfbsd/patches/patch-xf86drm.c b/libdrm-dfbsd/patches/patch-xf86drm.c
index 5f5fc685af..541c1f48f5 100644
--- a/libdrm-dfbsd/patches/patch-xf86drm.c
+++ b/libdrm-dfbsd/patches/patch-xf86drm.c
@@ -2,15 +2,15 @@ $NetBSD: patch-xf86drm.c,v 1.4 2019/01/22 21:50:47 wiz Exp $
 
 Implement drmParseSubsystemType, drmParsePciBusInfo for NetBSD
 
-Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
+Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.98.
 
---- xf86drm.c.orig	2019-01-22 16:32:41.000000000 +0000
+--- xf86drm.c.orig	2019-04-19 15:52:29.000000000 +0000
 +++ xf86drm.c
 @@ -46,6 +46,11 @@
  #include <signal.h>
  #include <time.h>
  #include <sys/types.h>
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +#ifdef HAVE_SYS_SYSCTL_H
 +#include <sys/sysctl.h>
 +#endif
@@ -22,7 +22,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  #endif
  #include <math.h>
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +#include <sys/pciio.h>
 +#endif
 +
@@ -37,7 +37,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
 +#define DRM_MAJOR 0	/* Major ID unused on systems with devfs */
 +#endif
 +
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +#define DRM_NODE_NAME_MAX                   \
 +    (sizeof(DRM_DIR_NAME) +                 \
 +     MAX3(sizeof(DRM_PRIMARY_MINOR_NAME),   \
@@ -55,20 +55,11 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  #endif
  
  #ifdef __OpenBSD__
-@@ -101,7 +122,7 @@
- #define DRM_MAJOR 226 /* Linux */
- #endif
- 
--#if defined(__OpenBSD__) || defined(__DragonFly__)
-+#if defined(__OpenBSD__)
- struct drm_pciinfo {
- 	uint16_t	domain;
- 	uint8_t		bus;
 @@ -222,6 +243,35 @@ drm_public drmHashEntry *drmGetEntry(int
      return entry;
  }
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +static int drmGetMinorBase(int type);
 +static int drmGetMinorType(int minor);
 +
@@ -95,7 +86,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
 +}
 +
 +static int drmGetNodeType(const char *name);
-+#endif /* __FreeBSD__ || __DragonFly__ */
++#endif /* __FreeBSD__ */
 +
  /**
   * Compare two busid strings
@@ -104,7 +95,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
          return -EINVAL;
      };
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    sprintf(buf, dev_name, DRM_DIR_NAME, minor + drmGetMinorBase(type));
 +#else
      sprintf(buf, dev_name, DRM_DIR_NAME, minor);
@@ -116,7 +107,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
          return -EINVAL;
      };
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    sprintf(buf, dev_name, DRM_DIR_NAME, minor + drmGetMinorBase(type));
 +#else
      sprintf(buf, dev_name, DRM_DIR_NAME, minor);
@@ -128,19 +119,19 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  static int drmGetMinorBase(int type)
  {
      switch (type) {
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +        case DRM_NODE_PRIMARY:
 +        case DRM_NODE_CONTROL:
 +        case DRM_NODE_RENDER:
 +            return type << 6;
-+#else /* !__FreeBSD__ && !__DragonFly__ */
++#else /* !__FreeBSD__ */
      case DRM_NODE_PRIMARY:
          return 0;
      case DRM_NODE_CONTROL:
          return 64;
      case DRM_NODE_RENDER:
          return 128;
-+#endif /* __FreeBSD__ || __DragonFly__ */
++#endif /* __FreeBSD__ */
      default:
          return -1;
      };
@@ -160,13 +151,25 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  
  /**
   * Open the device by bus ID.
-@@ -2779,12 +2846,29 @@ static bool drmNodeIsDRM(int maj, int mi
+@@ -2571,7 +2638,7 @@ drm_public int drmCommandNone(int fd, un
+ {
+     unsigned long request;
+ 
+-    request = DRM_IO( DRM_COMMAND_BASE + drmCommandIndex);
++    request = DRM_IO( (DRM_COMMAND_BASE + drmCommandIndex) );
+ 
+     if (drmIoctl(fd, request, NULL)) {
+         return -errno;
+@@ -2796,13 +2863,32 @@ static bool drmNodeIsDRM(int maj, int mi
+     snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device/drm",
               maj, min);
      return stat(path, &sbuf) == 0;
- #else
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
-+    return !DRM_MAJOR || maj == DRM_MAJOR;
++#elif defined(__DragonFly__)
++    return true;	/* DragonFly BSD has no fixed major device numbers */
 +#else
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++    return !DRM_MAJOR || maj == DRM_MAJOR;
+ #else
      return maj == DRM_MAJOR;
  #endif
 +#endif
@@ -174,14 +177,14 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  
  drm_public int drmGetNodeTypeFromFd(int fd)
  {
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    char *name = drmGetDeviceNameFromFd2(fd);
 +    if (!name) {
 +        errno = ENODEV;
 +        return -1;
 +    }
 +
-+    int type = drmGetNodeType(name);
++    int type = drmGetNodeType(strrchr(name, '/') + 1);
 +    free(name);
 +    if (type < 0)
 +        errno = ENODEV;
@@ -190,7 +193,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
      struct stat sbuf;
      int maj, min, type;
  
-@@ -2803,6 +2887,7 @@ drm_public int drmGetNodeTypeFromFd(int
+@@ -2821,6 +2907,7 @@ drm_public int drmGetNodeTypeFromFd(int
      if (type == -1)
          errno = ENODEV;
      return type;
@@ -198,11 +201,11 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  }
  
  drm_public int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags,
-@@ -2881,6 +2966,25 @@ static char *drmGetMinorNameForFD(int fd
+@@ -2899,6 +2986,25 @@ static char *drmGetMinorNameForFD(int fd
  
      closedir(sysdir);
      return NULL;
-+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    const char *dev_name = drmGetDeviceName(type);
 +    if (!dev_name)
 +        return NULL;
@@ -224,7 +227,16 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  #else
      struct stat sbuf;
      char buf[PATH_MAX + 1];
-@@ -3014,7 +3118,66 @@ static int drmParseSubsystemType(int maj
+@@ -2934,7 +3040,7 @@ static char *drmGetMinorNameForFD(int fd
+         return NULL;
+ 
+     n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min - base);
+-    if (n == -1 || n >= sizeof(buf))
++    if (n == -1 || n >= (int)sizeof(buf))
+         return NULL;
+ 
+     return strdup(buf);
+@@ -3032,7 +3138,66 @@ static int drmParseSubsystemType(int maj
      }
  
      return -EINVAL;
@@ -292,7 +304,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
      return DRM_BUS_PCI;
  #else
  #warning "Missing implementation of drmParseSubsystemType"
-@@ -3022,6 +3185,7 @@ static int drmParseSubsystemType(int maj
+@@ -3040,6 +3205,7 @@ static int drmParseSubsystemType(int maj
  #endif
  }
  
@@ -300,13 +312,13 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  static void
  get_pci_path(int maj, int min, char *pci_path)
  {
-@@ -3037,8 +3201,14 @@ get_pci_path(int maj, int min, char *pci
+@@ -3055,8 +3221,14 @@ get_pci_path(int maj, int min, char *pci
      if (term && strncmp(term, "/virtio", 7) == 0)
          *term = 0;
  }
 +#endif
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +static int drmParsePciBusInfo(const char *node, int node_type,
 +                              int maj, int min, drmPciBusInfoPtr info)
 +#else
@@ -315,11 +327,10 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  {
  #ifdef __linux__
      unsigned int domain, bus, dev, func;
-@@ -3063,7 +3233,74 @@ static int drmParsePciBusInfo(int maj, i
+@@ -3081,6 +3253,73 @@ static int drmParsePciBusInfo(int maj, i
      info->func = func;
  
      return 0;
--#elif defined(__OpenBSD__) || defined(__DragonFly__)
 +#elif defined(__NetBSD__)
 +    int type, fd;
 +    drmSetVersion sv;
@@ -387,15 +398,14 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
 +
 +    /* Success!  */
 +    return 0;
-+#elif defined(__OpenBSD__)
+ #elif defined(__OpenBSD__) || defined(__DragonFly__)
      struct drm_pciinfo pinfo;
      int fd, type;
- 
-@@ -3087,6 +3324,61 @@ static int drmParsePciBusInfo(int maj, i
+@@ -3105,6 +3344,61 @@ static int drmParsePciBusInfo(int maj, i
      info->func = pinfo.func;
  
      return 0;
-+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    /*
 +     * Only the primary nodes can be mapped to hw.dri.%i via major/minor
 +     * Determine the primary node by offset and use its major/minor pair
@@ -453,33 +463,32 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  #else
  #warning "Missing implementation of drmParsePciBusInfo"
      return -EINVAL;
-@@ -3135,7 +3427,11 @@ static int drmGetNodeType(const char *na
+@@ -3153,7 +3447,11 @@ static int drmGetNodeType(const char *na
          sizeof(DRM_RENDER_MINOR_NAME) - 1) == 0)
          return DRM_NODE_RENDER;
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    return -1;
-+#else /* !__FreeBSD__ || __DragonFly__ */
++#else /* !__FreeBSD__ */
      return -EINVAL;
-+#endif /* __FreeBSD__ || __DragonFly__ */
++#endif /* __FreeBSD__ */
  }
  
  static int drmGetMaxNodeName(void)
-@@ -3218,6 +3514,9 @@ static int parse_config_sysfs_file(int m
+@@ -3236,6 +3534,9 @@ static int parse_config_sysfs_file(int m
  #endif
  
  static int drmParsePciDeviceInfo(int maj, int min,
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +                                 drmPciBusInfoPtr info,
 +#endif
                                   drmPciDeviceInfoPtr device,
                                   uint32_t flags)
  {
-@@ -3229,7 +3528,49 @@ static int drmParsePciDeviceInfo(int maj
+@@ -3247,6 +3548,48 @@ static int drmParsePciDeviceInfo(int maj
          return parse_config_sysfs_file(maj, min, device);
  
      return 0;
--#elif defined(__OpenBSD__) || defined(__DragonFly__)
 +#elif defined(__NetBSD__)
 +    drmPciBusInfo businfo;
 +    char fname[PATH_MAX];
@@ -522,15 +531,14 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
 +	ret = -errno;
 +    close(pcifd);
 +    return ret;
-+#elif defined(__OpenBSD__)
+ #elif defined(__OpenBSD__) || defined(__DragonFly__)
      struct drm_pciinfo pinfo;
      int fd, type;
- 
-@@ -3254,6 +3595,43 @@ static int drmParsePciDeviceInfo(int maj
+@@ -3272,6 +3615,43 @@ static int drmParsePciDeviceInfo(int maj
      device->subdevice_id = pinfo.subdevice_id;
  
      return 0;
-+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    struct pci_conf_io pc;
 +    struct pci_match_conf patterns[1];
 +    struct pci_conf results[1];
@@ -570,11 +578,11 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
  #else
  #warning "Missing implementation of drmParsePciDeviceInfo"
      return -EINVAL;
-@@ -3380,18 +3758,42 @@ static int drmProcessPciDevice(drmDevice
+@@ -3398,18 +3778,42 @@ static int drmProcessPciDevice(drmDevice
  
      dev->businfo.pci = (drmPciBusInfoPtr)addr;
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    ret = drmParsePciBusInfo(node, node_type, maj, min, dev->businfo.pci);
 +#else
      ret = drmParsePciBusInfo(maj, min, dev->businfo.pci);
@@ -592,7 +600,7 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
          addr += sizeof(drmPciBusInfo);
          dev->deviceinfo.pci = (drmPciDeviceInfoPtr)addr;
  
-+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +        ret = drmParsePciDeviceInfo(maj, min, dev->businfo.pci, dev->deviceinfo.pci, flags);
 +#else
          ret = drmParsePciDeviceInfo(maj, min, dev->deviceinfo.pci, flags);
@@ -613,11 +621,11 @@ Patches from FreeBSD ports / DragonFly dports for graphics/libdrm 2.4.84.
      }
  
      *device = dev;
-@@ -4099,6 +4501,23 @@ drm_public char *drmGetDeviceNameFromFd2
+@@ -4078,6 +4482,23 @@ drm_public char *drmGetDeviceNameFromFd2
      free(value);
  
      return strdup(path);
-+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 +    stat_t sbuf;
 +    if (fstat(fd, &sbuf))
 +        return NULL;


Home | Main Index | Thread Index | Old Index