aboutsummaryrefslogtreecommitdiffstats
path: root/x11
diff options
context:
space:
mode:
authortijl <tijl@FreeBSD.org>2018-12-15 00:24:02 +0800
committertijl <tijl@FreeBSD.org>2018-12-15 00:24:02 +0800
commitbc59baf5a8db19094b9e257e552082fc7dc3d6c5 (patch)
treef6139bfaceb181693a1cc4f81c941195adc47ada /x11
parent3f9d01e59ae22df8fac9a837cb64a1350881c244 (diff)
downloadfreebsd-ports-gnome-bc59baf5a8db19094b9e257e552082fc7dc3d6c5.tar.gz
freebsd-ports-gnome-bc59baf5a8db19094b9e257e552082fc7dc3d6c5.tar.zst
freebsd-ports-gnome-bc59baf5a8db19094b9e257e552082fc7dc3d6c5.zip
Install both 32 bit and 64 bit Linux libraries from the official Linux
driver distribution instead of the ones bundled with the FreeBSD driver which are incomplete and 32 bit only. This makes amd64 Linux OpenGL programs work on FreeBSD 12.0 and recent 11-STABLE. This does not enable CUDA. - Initialise DISTFILES so a file can be added by the LINUX option. - Set EXTRACT_ONLY because the file added by the LINUX option is a self-extracting archive handled in post-extract. - The patches for <355.06 and >=355.06 are identical except for the path. Keep only one set (listed in SUB_PATCHES) because more patches have been added. Modify their path in pre-patch. The patches have been renamed from extra-patch-* to extra-patch-*.in. - Set OPTIONS_SUB and use option helpers for the LINUX option. - Define LINUX_ARCH_SUFX like ARCH_SUFX because LINUX_ARCH can be i386 on amd64. - Set LINUX_LIBDIR to the main lib directory: (/compat/linux)/usr/lib on i386 and (/compat/linux)/usr/lib64 on amd64. (The compat32 directory is (/compat/linux)/usr/lib.) - Define LINUX_LIBS, LINUX_LINKS, LINUX32_LIBS, LINUX32_LINKS, LINUX_PROGS, LINUX_MANS, and LINUX_DATA for all driver versions from 304.137 to 390.87. LINUX_LIBS and LINUX32_LIBS contain main libraries (i386/amd64) and compat32 libraries respectively. These are installed with INSTALL_LIB in post-install. LINUX_LINKS and LINUX32_LINKS contain symbolic link sources and their target. LINUX_PROGS are binaries installed with INSTALL_PROGRAM. LINUX_MANS are manuals installed with INSTALL_MAN. LINUX_DATA are data files and their destination, installed with INSTALL_DATA. The .if blocks for the different versions are sorted alphabetically on the first file. - Define PLIST_RE for all versions. These are sed commands applied to TMPPLIST in post-install. - Include bsd.port.pre.mk instead of bsd.port.options.mk to obtain LINUX_ARCH. - Adjust post-patch to disable installation of Linux libraries bundled with the FreeBSD driver. - Add post-patch-LINUX-on to setup nvidia_icd.json like nvidia-installer does on Linux. - Adjust existing post-install TMPPLIST edits to apply only to non-Linux files. - Add post-install-LINUX-on to install the Linux files. - Add files/extra-patch-src-nvidia_ctl.c.in and extra-patch-src-nvidia_dev.c.in. These patches make Linux stat(2) return the right major and minor number for /dev/nvidiactl and /dev/nvidia[0-9]+. Recent versions of the Linux libraries verify these. [1] Define the struct passed to linux_device_register_handler on the stack in nvidia_*_attach instead of as a global variable in case multiple graphics cards are attached in parallel. - Add files/extra-patch-src-nvidia_linux.c.in. It rewrites the Linux ioctl handler. The current implementation does not copyin arguments leading to kernel panics on FreeBSD 12 on machines that support Supervisor Mode Access Prevention (SMAP). - Add files/extra-patch-src-nvidia_pci.c.in. It adds a dependency on the linux_common kernel module for linux_device_register_handler. - Modify files/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c to add major/minor numbers (global struct here, because it is constant), rewrite ioctl, and add a dependency on linux_common for /dev/nvidia-modeset. PR: 217901 Analysed by: Alex S <iwtcex@gmail.com> [1] Tested by: Hannes Hauswedell <h2+fbsdports@fsfe.org> (390.87) Tested by: tijl (304.137) Approved by: maintainer timeout (15 days)
Diffstat (limited to 'x11')
-rw-r--r--x11/nvidia-driver-304/Makefile2
-rw-r--r--x11/nvidia-driver-340/Makefile2
-rw-r--r--x11/nvidia-driver/Makefile406
-rw-r--r--x11/nvidia-driver/distinfo12
-rw-r--r--x11/nvidia-driver/files/extra-patch-src-Makefile.in (renamed from x11/nvidia-driver/files/extra-patch-src-Makefile)6
-rw-r--r--x11/nvidia-driver/files/extra-patch-src-nv-freebsd.h.in (renamed from x11/nvidia-driver/files/extra-patch-src-nv-freebsd.h)6
-rw-r--r--x11/nvidia-driver/files/extra-patch-src-nv-misc.h.in (renamed from x11/nvidia-driver/files/extra-patch-src-nv-misc.h)4
-rw-r--r--x11/nvidia-driver/files/extra-patch-src-nvidia_ctl.c.in75
-rw-r--r--x11/nvidia-driver/files/extra-patch-src-nvidia_dev.c.in66
-rw-r--r--x11/nvidia-driver/files/extra-patch-src-nvidia_linux.c.in35
-rw-r--r--x11/nvidia-driver/files/extra-patch-src-nvidia_pci.c.in10
-rw-r--r--x11/nvidia-driver/files/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c97
-rw-r--r--x11/nvidia-driver/files/extra-patch-src_nvidia_Makefile18
-rw-r--r--x11/nvidia-driver/files/extra-patch-src_nvidia_nv-freebsd.h14
-rw-r--r--x11/nvidia-driver/files/extra-patch-src_nvidia_nv-misc.h11
-rw-r--r--x11/nvidia-driver/pkg-plist206
16 files changed, 845 insertions, 125 deletions
diff --git a/x11/nvidia-driver-304/Makefile b/x11/nvidia-driver-304/Makefile
index d7c5e6ea1f10..e58271c8757d 100644
--- a/x11/nvidia-driver-304/Makefile
+++ b/x11/nvidia-driver-304/Makefile
@@ -3,7 +3,7 @@
DISTVERSION= 304.137
# Explicitly set PORTREVISION as it can be overridden by the master port
-PORTREVISION= 1
+PORTREVISION= 2
MASTERDIR= ${.CURDIR}/../nvidia-driver
PKGNAMESUFFIX= -304
diff --git a/x11/nvidia-driver-340/Makefile b/x11/nvidia-driver-340/Makefile
index 05199c736155..771e930c6405 100644
--- a/x11/nvidia-driver-340/Makefile
+++ b/x11/nvidia-driver-340/Makefile
@@ -3,7 +3,7 @@
DISTVERSION= 340.107
# Explicitly set PORTREVISION as it can be overridden by the master port
-PORTREVISION= 1
+PORTREVISION= 2
MASTERDIR= ${.CURDIR}/../nvidia-driver
PKGNAMESUFFIX= -340
diff --git a/x11/nvidia-driver/Makefile b/x11/nvidia-driver/Makefile
index 71eda17c42df..c405976f27ed 100644
--- a/x11/nvidia-driver/Makefile
+++ b/x11/nvidia-driver/Makefile
@@ -12,10 +12,12 @@
PORTNAME= nvidia-driver
DISTVERSION?= 390.87
# Always try to set PORTREVISION as it can be overridden by the slave ports
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= x11
MASTER_SITES= NVIDIA/XFree86/FreeBSD-${ARCH_SUFX}/${DISTVERSION}
DISTNAME= NVIDIA-FreeBSD-${ARCH_SUFX}-${DISTVERSION}
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
+EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= danfe@FreeBSD.org
COMMENT= NVidia graphics card binary drivers for hardware OpenGL rendering
@@ -40,7 +42,15 @@ USE_LDCONFIG= yes
# hack below to universally set NVIDIA_ROOT. Also provide X11BASE value
# since it is still used by legacy drivers.
MAKE_ENV= NVIDIA_ROOT=${WRKSRC} X11BASE=${LOCALBASE}
+PLIST_RE= # empty
SUB_FILES= pkg-deinstall pkg-install pkg-message nvidia.conf
+SUB_PATCHES= extra-patch-src-Makefile \
+ extra-patch-src-nv-freebsd.h \
+ extra-patch-src-nv-misc.h \
+ extra-patch-src-nvidia_ctl.c \
+ extra-patch-src-nvidia_dev.c \
+ extra-patch-src-nvidia_linux.c \
+ extra-patch-src-nvidia_pci.c
DOCSDIR= ${PREFIX}/share/doc/NVIDIA_GLX-1.0
MODULESDIR= lib/xorg/modules
PORTDOCS= *
@@ -64,14 +74,8 @@ SUB_LIST+= NVGL="\# "
.endif
.if ${NVVERSION} < 355.006
-EXTRA_PATCHES= ${FILESDIR}/extra-patch-src-Makefile \
- ${FILESDIR}/extra-patch-src-nv-freebsd.h \
- ${FILESDIR}/extra-patch-src-nv-misc.h
NVSRC= .
.else
-EXTRA_PATCHES= ${FILESDIR}/extra-patch-src_nvidia_Makefile \
- ${FILESDIR}/extra-patch-src_nvidia_nv-freebsd.h \
- ${FILESDIR}/extra-patch-src_nvidia_nv-misc.h
NVSRC= nvidia
.endif
@@ -85,6 +89,7 @@ EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src_nvidia-modeset_nvidia-modeset-freebs
OPTIONS_DEFINE= ACPI_PM LINUX WBINVD DOCS
OPTIONS_DEFINE_i386= PAE
OPTIONS_DEFAULT= LINUX
+OPTIONS_SUB= yes
ACPI_PM_DESC= ACPI Power Management support
LINUX_DESC= Linux compatibility support
@@ -96,22 +101,315 @@ OPTIONS_DEFINE+= FREEBSD_AGP
FREEBSD_AGP_DESC= Use FreeBSD AGP GART driver
.endif
-PLIST_SUB+= LINUXBASE=${LINUXBASE} SHLIB_VERSION=${PORTVERSION} \
+LINUX_MASTER_SITES=NVIDIA/XFree86/Linux-${LINUX_ARCH_SUFX}/${DISTVERSION}/:linux
+LINUX_DISTFILES=NVIDIA-Linux-${LINUX_ARCH_SUFX}-${DISTVERSION}.run:linux
+LINUX_USES= linux
+LINUX_USE= LINUX=xorglibs
+
+LINUX_ARCH_SUFX=${LINUX_ARCH:S/i386/x86/}
+LINUX_LIBDIR= /usr/lib${LINUX_ARCH:S/i386//:S/x86_64/64/}
+LINUX_WRKSRC= ${WRKDIR}/NVIDIA-Linux-${LINUX_ARCH_SUFX}-${DISTVERSION}
+
+LINUX_LIBS= libcuda.so.${PORTVERSION} \
+ libnvcuvid.so.${PORTVERSION} \
+ libnvidia-cfg.so.${PORTVERSION} \
+ libnvidia-compiler.so.${PORTVERSION} \
+ libnvidia-glcore.so.${PORTVERSION} \
+ libnvidia-ml.so.${PORTVERSION} \
+ libnvidia-opencl.so.${PORTVERSION} \
+ libnvidia-tls.so.${PORTVERSION} \
+ libvdpau_nvidia.so.${PORTVERSION} \
+ tls/libnvidia-tls.so.${PORTVERSION}
+LINUX_LINKS= libcuda.so.${PORTVERSION} libcuda.so.1 \
+ libcuda.so.${PORTVERSION} libcuda.so \
+ libnvcuvid.so.${PORTVERSION} libnvcuvid.so.1 \
+ libnvcuvid.so.${PORTVERSION} libnvcuvid.so \
+ libnvidia-cfg.so.${PORTVERSION} libnvidia-cfg.so.1 \
+ libnvidia-cfg.so.${PORTVERSION} libnvidia-cfg.so \
+ libnvidia-ml.so.${PORTVERSION} libnvidia-ml.so.1 \
+ libnvidia-ml.so.${PORTVERSION} libnvidia-ml.so \
+ libnvidia-opencl.so.${PORTVERSION} libnvidia-opencl.so.1 \
+ libvdpau_nvidia.so.${PORTVERSION} vdpau/libvdpau_nvidia.so.1
+LINUX32_LIBS= libcuda.so.${PORTVERSION} \
+ libnvidia-compiler.so.${PORTVERSION} \
+ libnvidia-glcore.so.${PORTVERSION} \
+ libnvidia-ml.so.${PORTVERSION} \
+ libnvidia-opencl.so.${PORTVERSION} \
+ libnvidia-tls.so.${PORTVERSION} \
+ libvdpau_nvidia.so.${PORTVERSION} \
+ tls/libnvidia-tls.so.${PORTVERSION}
+LINUX32_LINKS= libcuda.so.${PORTVERSION} libcuda.so.1 \
+ libcuda.so.${PORTVERSION} libcuda.so \
+ libnvidia-ml.so.${PORTVERSION} libnvidia-ml.so.1 \
+ libnvidia-ml.so.${PORTVERSION} libnvidia-ml.so \
+ libnvidia-opencl.so.${PORTVERSION} libnvidia-opencl.so.1 \
+ libvdpau_nvidia.so.${PORTVERSION} vdpau/libvdpau_nvidia.so.1
+LINUX_PROGS= nvidia-debugdump nvidia-settings nvidia-smi nvidia-xconfig
+LINUX_MANS= nvidia-settings nvidia-smi nvidia-xconfig
+LINUX_DATA= nvidia.icd /etc/OpenCL/vendors
+.if ${NVVERSION} >= 375.010
+LINUX_DATA+= 10_nvidia.json /usr/share/glvnd/egl_vendor.d
+.else
+PLIST_RE+= '\,${LINUXBASE}/usr/share/glvnd,d'
+.endif
+.if ${NVVERSION} >= 378.009
+LINUX_DATA+= 10_nvidia_wayland.json /usr/share/egl/egl_external_platform.d
+.else
+PLIST_RE+= '\,${LINUXBASE}/usr/share/egl,d'
+.endif
+.if ${NVVERSION} >= 390.042
+LINUX_LIBS+= libEGL.so.1.1.0
+LINUX_LINKS+= libEGL.so.1.1.0 libEGL.so.1
+LINUX32_LIBS+= libEGL.so.1.1.0
+LINUX32_LINKS+= libEGL.so.1.1.0 libEGL.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libEGL\.so)\.X/\1.1.1.0/'
+.elif ${NVVERSION} >= 355.006
+LINUX_LIBS+= libEGL.so.1
+LINUX32_LIBS+= libEGL.so.1
+PLIST_RE+= '\,${LINUXBASE}.*libEGL\.so\.X,d'
+.elif ${NVVERSION} >= 331.013
+LINUX_LIBS+= libEGL.so.${PORTVERSION}
+LINUX_LINKS+= libEGL.so.${PORTVERSION} libEGL.so.1
+LINUX32_LIBS+= libEGL.so.${PORTVERSION}
+LINUX32_LINKS+= libEGL.so.${PORTVERSION} libEGL.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libEGL\.so)\.X/\1.${PORTVERSION}/'
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libEGL\.so,d'
+.endif
+.if ${NVVERSION} >= 361.016
+LINUX_LIBS+= libEGL_nvidia.so.${PORTVERSION}
+LINUX_LINKS+= libEGL_nvidia.so.${PORTVERSION} libEGL_nvidia.so.0
+LINUX32_LIBS+= libEGL_nvidia.so.${PORTVERSION}
+LINUX32_LINKS+= libEGL_nvidia.so.${PORTVERSION} libEGL_nvidia.so.0
+.elif ${NVVERSION} >= 355.006
+LINUX_LIBS+= libEGL_nvidia.so.0
+PLIST_RE+= '\,${LINUXBASE}.*libEGL_nvidia\.so\.${PORTVERSION},d'
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libEGL_nvidia\.so,d'
+.endif
+.if ${NVVERSION} >= 390.042
+LINUX_LIBS+= libGL.so.1.7.0
+LINUX_LINKS+= libGL.so.1.7.0 libGL.so.1
+LINUX32_LIBS+= libGL.so.1.7.0
+LINUX32_LINKS+= libGL.so.1.7.0 libGL.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libGL\.so)\.X/\1.1.7.0/'
+.elif ${NVVERSION} >= 361.028
+LINUX_LIBS+= libGL.so.1.0.0
+LINUX_LINKS+= libGL.so.1.0.0 libGL.so.1
+LINUX32_LIBS+= libGL.so.1.0.0
+LINUX32_LINKS+= libGL.so.1.0.0 libGL.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libGL\.so)\.X/\1.1.0.0/'
+.elif ${NVVERSION} >= 361.016
+LINUX_LIBS+= libGL.so.1
+LINUX32_LIBS+= libGL.so.1
+PLIST_RE+= '\,${LINUXBASE}.*libGL\.so\.X,d'
+.else
+LINUX_LIBS+= libGL.so.${PORTVERSION}
+LINUX_LINKS+= libGL.so.${PORTVERSION} libGL.so.1
+LINUX32_LIBS+= libGL.so.${PORTVERSION}
+LINUX32_LINKS+= libGL.so.${PORTVERSION} libGL.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libGL\.so)\.X/\1.${PORTVERSION}/'
+.endif
+.if ${NVVERSION} >= 390.042
+LINUX_LIBS+= libGLESv1_CM.so.1.2.0 \
+ libGLESv2.so.2.1.0
+LINUX_LINKS+= libGLESv1_CM.so.1.2.0 libGLESv1_CM.so.1 \
+ libGLESv2.so.2.1.0 libGLESv2.so.2
+LINUX32_LIBS+= libGLESv1_CM.so.1.2.0 \
+ libGLESv2.so.2.1.0
+LINUX32_LINKS+= libGLESv1_CM.so.1.2.0 libGLESv1_CM.so.1 \
+ libGLESv2.so.2.1.0 libGLESv2.so.2
+PLIST_RE+= '\,${LINUXBASE},s/(libGLESv1_CM\.so)\.X/\1.1.2.0/' \
+ '\,${LINUXBASE},s/(libGLESv2\.so)\.X/\1.2.1.0/'
+.elif ${NVVERSION} >= 361.016
+LINUX_LIBS+= libGLESv1_CM.so.1 \
+ libGLESv2.so.2
+LINUX32_LIBS+= libGLESv1_CM.so.1 \
+ libGLESv2.so.2
+PLIST_RE+= '\,${LINUXBASE}.*GLESv(1_CM|2)\.so\.X,d'
+.elif ${NVVERSION} >= 331.013
+LINUX_LIBS+= libGLESv1_CM.so.${PORTVERSION} \
+ libGLESv2.so.${PORTVERSION}
+LINUX_LINKS+= libGLESv1_CM.so.${PORTVERSION} libGLESv1_CM.so.1 \
+ libGLESv2.so.${PORTVERSION} libGLESv2.so.2
+LINUX32_LIBS+= libGLESv1_CM.so.${PORTVERSION} \
+ libGLESv2.so.${PORTVERSION}
+LINUX32_LINKS+= libGLESv1_CM.so.${PORTVERSION} libGLESv1_CM.so.1 \
+ libGLESv2.so.${PORTVERSION} libGLESv2.so.2
+PLIST_RE+= '\,${LINUXBASE},s/(libGLESv(1_CM|2)\.so)\.X/\1.${PORTVERSION}/'
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libGLESv(1_CM|2)\.so,d'
+.endif
+.if ${NVVERSION} >= 361.016
+LINUX_LIBS+= libGLESv1_CM_nvidia.so.${PORTVERSION} \
+ libGLESv2_nvidia.so.${PORTVERSION} \
+ libGLX.so.0 \
+ libGLX_nvidia.so.${PORTVERSION} \
+ libnvidia-fatbinaryloader.so.${PORTVERSION} \
+ libnvidia-ptxjitcompiler.so.${PORTVERSION}
+LINUX_LINKS+= libGLESv1_CM_nvidia.so.${PORTVERSION} libGLESv1_CM_nvidia.so.1 \
+ libGLESv2_nvidia.so.${PORTVERSION} libGLESv2_nvidia.so.2 \
+ libGLX.so.0 libGLX.so \
+ libGLX_nvidia.so.${PORTVERSION} libGLX_nvidia.so.0 \
+ libGLX_nvidia.so.${PORTVERSION} libGLX_indirect.so.0 \
+ libnvidia-ptxjitcompiler.so.${PORTVERSION} libnvidia-ptxjitcompiler.so.1 \
+ libnvidia-ptxjitcompiler.so.${PORTVERSION} libnvidia-ptxjitcompiler.so
+LINUX32_LIBS+= libGLESv1_CM_nvidia.so.${PORTVERSION} \
+ libGLESv2_nvidia.so.${PORTVERSION} \
+ libGLX.so.0 \
+ libGLX_nvidia.so.${PORTVERSION} \
+ libnvidia-fatbinaryloader.so.${PORTVERSION} \
+ libnvidia-ptxjitcompiler.so.${PORTVERSION}
+LINUX32_LINKS+= libGLESv1_CM_nvidia.so.${PORTVERSION} libGLESv1_CM_nvidia.so.1 \
+ libGLESv2_nvidia.so.${PORTVERSION} libGLESv2_nvidia.so.2 \
+ libGLX.so.0 libGLX.so \
+ libGLX_nvidia.so.${PORTVERSION} libGLX_nvidia.so.0 \
+ libGLX_nvidia.so.${PORTVERSION} libGLX_indirect.so.0 \
+ libnvidia-ptxjitcompiler.so.${PORTVERSION} libnvidia-ptxjitcompiler.so.1 \
+ libnvidia-ptxjitcompiler.so.${PORTVERSION} libnvidia-ptxjitcompiler.so
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libGLESv(1_CM|2)_nvidia\.so,d' \
+ '\,${LINUXBASE}.*libGLX(_nvidia|_indirect)?\.so,d' \
+ '\,${LINUXBASE}.*libnvidia-fatbinaryloader\.so,d' \
+ '\,${LINUXBASE}.*libnvidia-ptxjitcompiler\.so,d'
+.endif
+.if ${NVVERSION} >= 355.006
+LINUX_LIBS+= libGLdispatch.so.0 \
+ libOpenGL.so.0
+LINUX_LINKS+= libOpenGL.so.0 libOpenGL.so
+LINUX32_LIBS+= libGLdispatch.so.0 \
+ libOpenGL.so.0
+LINUX32_LINKS+= libOpenGL.so.0 libOpenGL.so
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libGLdispatch\.so,d' \
+ '\,${LINUXBASE}.*libOpenGL\.so,d'
+.endif
+.if ${NVVERSION} >= 387.012
+LINUX_LIBS+= libnvidia-egl-wayland.so.1.0.2
+LINUX_LINKS+= libnvidia-egl-wayland.so.1.0.2 libnvidia-egl-wayland.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libnvidia-egl-wayland\.so)\.X/\1.1.0.2/'
+.elif ${NVVERSION} >= 378.013
+LINUX_LIBS+= libnvidia-egl-wayland.so.1.0.1
+LINUX_LINKS+= libnvidia-egl-wayland.so.1.0.1 libnvidia-egl-wayland.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libnvidia-egl-wayland\.so)\.X/\1.1.0.1/'
+.elif ${NVVERSION} >= 378.009
+LINUX_LIBS+= libnvidia-egl-wayland.so.1.0.0
+LINUX_LINKS+= libnvidia-egl-wayland.so.1.0.0 libnvidia-egl-wayland.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libnvidia-egl-wayland\.so)\.X/\1.1.0.0/'
+.elif ${NVVERSION} >= 364.012
+LINUX_LIBS+= libnvidia-egl-wayland.so.${PORTVERSION}
+LINUX_LINKS+= libnvidia-egl-wayland.so.${PORTVERSION} libnvidia-egl-wayland.so.1
+PLIST_RE+= '\,${LINUXBASE},s/(libnvidia-egl-wayland\.so)\.X/\1.${PORTVERSION}/'
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libnvidia-egl-wayland\.so,d'
+.endif
+.if ${NVVERSION} >= 331.013
+LINUX_LIBS+= libnvidia-eglcore.so.${PORTVERSION} \
+ libnvidia-fbc.so.${PORTVERSION} \
+ libnvidia-glsi.so.${PORTVERSION} \
+ libnvidia-ifr.so.${PORTVERSION}
+LINUX_LINKS+= libnvidia-fbc.so.${PORTVERSION} libnvidia-fbc.so.1 \
+ libnvidia-fbc.so.${PORTVERSION} libnvidia-fbc.so \
+ libnvidia-ifr.so.${PORTVERSION} libnvidia-ifr.so.1 \
+ libnvidia-ifr.so.${PORTVERSION} libnvidia-ifr.so
+LINUX32_LIBS+= libnvidia-eglcore.so.${PORTVERSION} \
+ libnvidia-fbc.so.${PORTVERSION} \
+ libnvidia-glsi.so.${PORTVERSION} \
+ libnvidia-ifr.so.${PORTVERSION}
+LINUX32_LINKS+= libnvidia-fbc.so.${PORTVERSION} libnvidia-fbc.so.1 \
+ libnvidia-fbc.so.${PORTVERSION} libnvidia-fbc.so \
+ libnvidia-ifr.so.${PORTVERSION} libnvidia-ifr.so.1 \
+ libnvidia-ifr.so.${PORTVERSION} libnvidia-ifr.so
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libnvidia-(eglcore|fbc|glsi|ifr),d'
+.endif
+.if ${NVVERSION} >= 310.014
+LINUX_LIBS+= libnvidia-encode.so.${PORTVERSION}
+LINUX_LINKS+= libnvidia-encode.so.${PORTVERSION} libnvidia-encode.so.1 \
+ libnvidia-encode.so.${PORTVERSION} libnvidia-encode.so
+LINUX32_LIBS+= libnvidia-encode.so.${PORTVERSION}
+LINUX32_LINKS+= libnvidia-encode.so.${PORTVERSION} libnvidia-encode.so.1 \
+ libnvidia-encode.so.${PORTVERSION} libnvidia-encode.so
+PLIST_RE+= '\,${LINUXBASE}.*libXvMCNVIDIA,d'
+.else
+LINUX_LIBS+= libXvMCNVIDIA.so.${PORTVERSION}
+LINUX_LINKS+= libXvMCNVIDIA.so.${PORTVERSION} libXvMCNVIDIA_dynamic.so.1 \
+ libXvMCNVIDIA.so.${PORTVERSION} libXvMCNVIDIA_dynamic.so
+PLIST_RE+= '\,${LINUXBASE}.*libnvidia-encode,d'
+.endif
+.if ${NVVERSION} >= 346.016
+LINUX_LIBS+= libnvidia-gtk2.so.${PORTVERSION} \
+ libnvidia-gtk3.so.${PORTVERSION}
+.else
+PLIST_RE+= '\,${LINUXBASE}.*libnvidia-gtk(2|3)\.so,d'
+.endif
+.if ${NVVERSION} >= 331.049 && ${NVVERSION} < 352.009
+LINUX_DATA+= monitoring.conf /usr/share/nvidia \
+ ${WRKSRC}/pci.ids /usr/share/nvidia
+.else
+PLIST_RE+= '\,${LINUXBASE}.*monitoring\.conf,d' \
+ '\,${LINUXBASE}.*pci\.ids,d'
+.endif
+.if ${NVVERSION} >= 334.016
+LINUX_DATA+= nvidia-application-profiles-${PORTVERSION}-key-documentation /usr/share/nvidia
+.else
+PLIST_RE+= '\,${LINUXBASE}.*application-profiles-${PORTVERSION}-key-documentation,d'
+.endif
+.if ${NVVERSION} >= 319.012
+LINUX_DATA+= nvidia-application-profiles-${PORTVERSION}-rc /usr/share/nvidia
+.else
+PLIST_RE+= '\,${LINUXBASE}.*share/nvidia,d'
+.endif
+.if ${NVVERSION} >= 319.017
+LINUX_PROGS+= nvidia-cuda-mps-control nvidia-cuda-mps-server \
+ nvidia-persistenced
+LINUX_MANS+= nvidia-cuda-mps-control nvidia-persistenced
+.else
+LINUX_PROGS+= nvidia-cuda-proxy-control nvidia-cuda-proxy-server
+LINUX_MANS+= nvidia-cuda-proxy-control
+PLIST_RE+= '\,${LINUXBASE},s/cuda-mps/cuda-proxy/' \
+ '\,${LINUXBASE}.*nvidia-persistenced,d'
+.endif
+.if ${NVVERSION} >= 364.012
+LINUX_DATA+= nvidia_icd.json /etc/vulkan/icd.d
+.else
+PLIST_RE+= '\,${LINUXBASE}/etc/vulkan,d'
+.endif
+
+PLIST_SUB+= LINUXBASE=${LINUXBASE} \
+ LINUX_LIBDIR=${LINUX_LIBDIR} \
+ SHLIB_VERSION=${PORTVERSION} \
MODULESDIR=${MODULESDIR}
-.include <bsd.port.options.mk>
+.include <bsd.port.pre.mk>
+
+.if ${NVVERSION} >= 310.014
+LINUX32_LIBS+= libnvcuvid.so.${PORTVERSION}
+LINUX32_LINKS+= libnvcuvid.so.${PORTVERSION} libnvcuvid.so.1 \
+ libnvcuvid.so.${PORTVERSION} libnvcuvid.so
+.elif "${LINUX_ARCH}" == "x86_64"
+PLIST_RE+= '\,${LINUXBASE}/usr/lib/libnvcuvid\.so,d'
+.endif
-.if ${PORT_OPTIONS:MLINUX}
-CONFLICTS_INSTALL= linux[-_]dri-[0-9]* linux-f10-dri-[0-9]*
-USES+= linux
-USE_LINUX= base:build,run xorglibs
-PLIST_SUB+= LINUX=""
+.if "${LINUX_ARCH}" == "x86_64"
+PLIST_SUB+= LINUX32=""
.else
-PLIST_SUB+= LINUX="@comment "
-# Propagate WITHOUT_LINUX variable down to inner Makefiles
-MAKE_ENV+= WITHOUT_LINUX=yes
+PLIST_SUB+= LINUX32="@comment "
.endif
+post-extract-LINUX-on:
+ @(cd ${WRKDIR} && ${SH} \
+ ${DISTDIR}/NVIDIA-Linux-${LINUX_ARCH_SUFX}-${DISTVERSION}.run \
+ --extract-only > /dev/null)
+
+pre-patch:
+.for p in ${SUB_PATCHES}
+ @${SED} 's/%%NVSRC%%/${NVSRC}/g' ${PATCHDIR}/${p}.in > ${WRKDIR}/${p}
+.endfor
+.for p in ${SUB_PATCHES}
+EXTRA_PATCHES+= ${WRKDIR}/${p}
+.endfor
+
post-patch: .SILENT
# We should support -CURRENT: kill the check
${REINPLACE_CMD} -e '24,26d' ${WRKSRC}/src/${NVSRC}/nv-freebsd.h
@@ -136,8 +434,8 @@ post-patch: .SILENT
-e 's/kmem_free(kmem_arena, /kmem_free(/' \
${WRKSRC}/src/${NVSRC}/nvidia_subr.c
.endif
-# Respect WITHOUT_LINUX setting
- ${REINPLACE_CMD} -e 's/exists(\/.*/& \&\& !defined(WITHOUT_LINUX)/' \
+# Disable installation of Linux libraries
+ ${REINPLACE_CMD} -e 's/exists(\/.*/& \&\& 0/' \
${WRKSRC}/lib/Makefile
# Do not install VDPAU libraries which are provided by `multimedia/libvdpau'
# port for a while now
@@ -197,6 +495,13 @@ post-patch: .SILENT
${REINPLACE_CMD} -E 's/(x11).*/\1/ ; /doc/d' ${WRKSRC}/Makefile
.endif
+post-patch-LINUX-on:
+.if ${NVVERSION} >= 384.047
+ @${SED} 's/__NV_VK_ICD__/libGLX_nvidia.so.0/' \
+ ${LINUX_WRKSRC}/nvidia_icd.json.template > \
+ ${LINUX_WRKSRC}/nvidia_icd.json
+.endif
+
pre-install:
@${MKDIR} ${STAGEDIR}${PREFIX}/${MODULESDIR}/drivers \
${STAGEDIR}${PREFIX}/${MODULESDIR}/extensions
@@ -206,37 +511,41 @@ post-install: .SILENT
${STAGEDIR}${PREFIX}/bin
# pkg-plist is already overbloated, so use these hacks instead of PLIST_SUB's
.if ${NVVERSION} >= 304.128 && ${NVVERSION} < 310.019 || ${NVVERSION} >= 361.016
- ${REINPLACE_CMD} -E '/libvdpau(_trace)?\.so/d' ${TMPPLIST}
+ ${REINPLACE_CMD} -E '\,${LINUXBASE},!{/libvdpau(_trace)?\.so/d;}' \
+ ${TMPPLIST}
.endif
.if ${NVVERSION} >= 310.019
- ${REINPLACE_CMD} -e '/libXvMCNVIDIA/d' ${TMPPLIST}
+ ${REINPLACE_CMD} -e '\,${LINUXBASE},!{/libXvMCNVIDIA/d;}' ${TMPPLIST}
.else # some applications need this symlink (see PR ports/72877)
${LN} -sf libXvMCNVIDIA.so.1 \
${STAGEDIR}${PREFIX}/lib/libXvMCNVIDIA_dynamic.so.1
.endif
.if ${NVVERSION} < 331.013 || ${ARCH} == amd64 && ${NVVERSION} < 334.016
- ${REINPLACE_CMD} -E '/lib(nvidia-)?(EGL|eglcore|GLESv|glsi)/d' \
+ ${REINPLACE_CMD} -E '\,${LINUXBASE},!{/lib(nvidia-)?(EGL|eglcore|GLESv|glsi)/d;}' \
${TMPPLIST}
.endif
.if ${NVVERSION} < 352.009
- ${REINPLACE_CMD} -E '/(lib)?nvidia-(debugdump|smi|ml)/d' ${TMPPLIST}
+ ${REINPLACE_CMD} -E '\,${LINUXBASE},!{/(lib)?nvidia-(debugdump|smi|ml)/d;}' \
+ ${TMPPLIST}
.endif
.if ${NVVERSION} < 355.006
- ${REINPLACE_CMD} -E '/(libEGL_nvidia|GLdispatch|OpenGL)/d' ${TMPPLIST}
+ ${REINPLACE_CMD} -E '\,${LINUXBASE},!{/(libEGL_nvidia|GLdispatch|OpenGL)/d;}' \
+ ${TMPPLIST}
.else
- ${REINPLACE_CMD} 's/libEGL\.so\.${PORTVERSION}/libEGL.so/' \
+ ${REINPLACE_CMD} '\,${LINUXBASE},!s/libEGL\.so\.${PORTVERSION}/libEGL.so/' \
${TMPPLIST}
.endif
.if ${NVVERSION} < 358.009
${REINPLACE_CMD} '/nvidia-modeset.ko/d' ${TMPPLIST}
.endif
.if ${NVVERSION} >= 361.028
- ${REINPLACE_CMD} -E '/(EGL_nvidia\.so|GLESv[12](_CM)?(\.so\.[0-9]+\.[0-9]+))$$/d' \
+ ${REINPLACE_CMD} -E '\,${LINUXBASE},!{/(EGL_nvidia\.so|GLESv[12](_CM)?(\.so\.[0-9]+\.[0-9]+))$$/d;}' \
${TMPPLIST}
.else
- ${REINPLACE_CMD} -E '/\/lib\/libGLESv[12](_CM)?(\.so)?(_nvidia.so(\.[0-9]|\.[0-9]+\.[0-9]+)?)?$$/d ; \
- /libEGL_nvidia\.so\.${PORTVERSION}/d' ${TMPPLIST}
+ ${REINPLACE_CMD} -E '\,${LINUXBASE},!{/\/lib\/libGLESv[12](_CM)?(\.so)?(_nvidia.so(\.[0-9]|\.[0-9]+\.[0-9]+)?)?$$/d ; \
+ /libEGL_nvidia\.so\.${PORTVERSION}/d;}' ${TMPPLIST}
.endif
+ ${REINPLACE_CMD} -E ${PLIST_RE:S/^/-e /} ${TMPPLIST}
# rename libGL.so, libEGL.so and libGLESv2.so
${MV} -f ${STAGEDIR}${PREFIX}/lib/libGL.so \
${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so
@@ -256,6 +565,45 @@ post-install: .SILENT
${INSTALL_DATA} ${WRKDIR}/nvidia.conf \
${STAGEDIR}${PREFIX}/etc/libmap.d/
+post-install-LINUX-on:
+.for f d in ${LINUX_DATA}
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}${d}
+ ${INSTALL_DATA} ${LINUX_WRKSRC}/${f} ${STAGEDIR}${LINUXBASE}${d}
+.endfor
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}/usr/bin
+ ${INSTALL_SCRIPT} ${LINUX_WRKSRC}/nvidia-bug-report.sh \
+ ${STAGEDIR}${LINUXBASE}/usr/bin
+.for p in ${LINUX_PROGS}
+ ${INSTALL_PROGRAM} ${LINUX_WRKSRC}/${p} ${STAGEDIR}${LINUXBASE}/usr/bin
+.endfor
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}/usr/share/man/man1
+.for m in ${LINUX_MANS}
+ ${INSTALL_MAN} ${LINUX_WRKSRC}/${m}.1.gz \
+ ${STAGEDIR}${LINUXBASE}/usr/share/man/man1
+.endfor
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}${LINUX_LIBDIR}/tls
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}${LINUX_LIBDIR}/vdpau
+.for l in ${LINUX_LIBS}
+ ${INSTALL_LIB} ${LINUX_WRKSRC}/${l} \
+ ${STAGEDIR}${LINUXBASE}${LINUX_LIBDIR}/${l}
+.endfor
+.for s t in ${LINUX_LINKS}
+ ${RLN} ${STAGEDIR}${LINUXBASE}${LINUX_LIBDIR}/${s} \
+ ${STAGEDIR}${LINUXBASE}${LINUX_LIBDIR}/${t}
+.endfor
+.if "${LINUX_ARCH}" == "x86_64"
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}/usr/lib/tls
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}/usr/lib/vdpau
+.for l in ${LINUX32_LIBS}
+ ${INSTALL_LIB} ${LINUX_WRKSRC}/32/${l} \
+ ${STAGEDIR}${LINUXBASE}/usr/lib/${l}
+.endfor
+.for s t in ${LINUX32_LINKS}
+ ${RLN} ${STAGEDIR}${LINUXBASE}/usr/lib/${s} \
+ ${STAGEDIR}${LINUXBASE}/usr/lib/${t}
+.endfor
+.endif
+
# Target below can be used instead of standard `makesum' to correctly
# update distinfo (i.e., keeping other driver version entries intact)
.if ${.TARGETS:Mupdate-distinfo}
@@ -269,4 +617,4 @@ update-distinfo: makesum .SILENT
${MASTERDIR}/distinfo
${RM} ${DISTINFO_FILE} ${MASTERDIR}/distinfo.bak
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
diff --git a/x11/nvidia-driver/distinfo b/x11/nvidia-driver/distinfo
index 9850adc99e85..ecd7ea942839 100644
--- a/x11/nvidia-driver/distinfo
+++ b/x11/nvidia-driver/distinfo
@@ -1,13 +1,25 @@
TIMESTAMP = 1482026038
SHA256 (NVIDIA-FreeBSD-x86_64-390.87.tar.gz) = 221c80982378a333f541646d5d2030c72311c491f5a0f98b93fdd95cd5be11fc
SIZE (NVIDIA-FreeBSD-x86_64-390.87.tar.gz) = 63648591
+SHA256 (NVIDIA-Linux-x86_64-390.87.run) = 38290a0b19e86037112f22397e02be9cdd6bcd677dd926b2977bbd49119e611e
+SIZE (NVIDIA-Linux-x86_64-390.87.run) = 82690871
SHA256 (NVIDIA-FreeBSD-x86-390.87.tar.gz) = a2e61b0c541aa9bdcde7de43cd88a7ce5ff3de9fdafe60fa7d6e10942186d7d4
SIZE (NVIDIA-FreeBSD-x86-390.87.tar.gz) = 64326801
+SHA256 (NVIDIA-Linux-x86-390.87.run) = 5c29c5f9d80a07ea71219c6323fe5fc9b7577847b970f23161685d4b890b9966
+SIZE (NVIDIA-Linux-x86-390.87.run) = 47959124
SHA256 (NVIDIA-FreeBSD-x86_64-340.107.tar.gz) = 047efae28cc81e4d56c64d2a0c15d9b7ff07f09bba22696464de8276334a4df7
SIZE (NVIDIA-FreeBSD-x86_64-340.107.tar.gz) = 61179967
+SHA256 (NVIDIA-Linux-x86_64-340.107.run) = e3e359964ed568008584c4fb2dbcb76b76a848591d1456a783e94dd0c7f6695f
+SIZE (NVIDIA-Linux-x86_64-340.107.run) = 70233686
SHA256 (NVIDIA-FreeBSD-x86-340.107.tar.gz) = 1978ae48512d8a693979b153463c76954d2aec91a6b2a568b3aa1198e5b3d199
SIZE (NVIDIA-FreeBSD-x86-340.107.tar.gz) = 60305952
+SHA256 (NVIDIA-Linux-x86-340.107.run) = 8d8bd2b04019eaa55d848534e2dbdc460be918e7731ecd8da87199ef9c1a0856
+SIZE (NVIDIA-Linux-x86-340.107.run) = 39016798
SHA256 (NVIDIA-FreeBSD-x86_64-304.137.tar.gz) = 231693189e1bdf5c1dd02315cde5ef9ed6c0854564314438f2f40f9788a34120
SIZE (NVIDIA-FreeBSD-x86_64-304.137.tar.gz) = 36474676
+SHA256 (NVIDIA-Linux-x86_64-304.137.run) = eb1f56db3a2bea13e3ccde7b5ae14abe8cd6c6dbe69af4c71c68a623cc96e3e2
+SIZE (NVIDIA-Linux-x86_64-304.137.run) = 70087133
SHA256 (NVIDIA-FreeBSD-x86-304.137.tar.gz) = 5f874133853eacc5b9a10311cec22d3c4898db7f75b92bb6c12d5be5126516fb
SIZE (NVIDIA-FreeBSD-x86-304.137.tar.gz) = 35399011
+SHA256 (NVIDIA-Linux-x86-304.137.run) = ca98379fc2090bdfe8b74113d6ac7bcc7eadbd86a489c3c4ec4cd5ba9f6064f8
+SIZE (NVIDIA-Linux-x86-304.137.run) = 41504115
diff --git a/x11/nvidia-driver/files/extra-patch-src-Makefile b/x11/nvidia-driver/files/extra-patch-src-Makefile.in
index 818a79ba30f5..8fd6ad2db371 100644
--- a/x11/nvidia-driver/files/extra-patch-src-Makefile
+++ b/x11/nvidia-driver/files/extra-patch-src-Makefile.in
@@ -1,6 +1,6 @@
---- src/Makefile.orig 2014-04-04 23:24:59.000000000 +0200
-+++ src/Makefile 2014-05-06 14:31:07.000000000 +0200
-@@ -24,6 +24,15 @@
+--- src/%%NVSRC%%/Makefile.orig 2017-09-14 20:46:30 UTC
++++ src/%%NVSRC%%/Makefile
+@@ -30,6 +30,15 @@ NOOBJ= true
stdarg.h:
@ln -s machine/stdarg.h stdarg.h
diff --git a/x11/nvidia-driver/files/extra-patch-src-nv-freebsd.h b/x11/nvidia-driver/files/extra-patch-src-nv-freebsd.h.in
index 4662aecb8331..b437b1e13e60 100644
--- a/x11/nvidia-driver/files/extra-patch-src-nv-freebsd.h
+++ b/x11/nvidia-driver/files/extra-patch-src-nv-freebsd.h.in
@@ -1,6 +1,6 @@
---- src/nv-freebsd.h.orig 2014-02-13 05:07:44.000000000 +0100
-+++ src/nv-freebsd.h 2014-05-05 18:38:59.000000000 +0200
-@@ -143,6 +143,11 @@
+--- src/%%NVSRC%%/nv-freebsd.h.orig 2017-09-14 20:46:30 UTC
++++ src/%%NVSRC%%/nv-freebsd.h
+@@ -157,6 +157,11 @@ MALLOC_DECLARE(M_NVIDIA);
#define NV_SUPPORT_ACPI_PM
/*
diff --git a/x11/nvidia-driver/files/extra-patch-src-nv-misc.h b/x11/nvidia-driver/files/extra-patch-src-nv-misc.h.in
index 1a43fb40f029..8d7432070651 100644
--- a/x11/nvidia-driver/files/extra-patch-src-nv-misc.h
+++ b/x11/nvidia-driver/files/extra-patch-src-nv-misc.h.in
@@ -1,5 +1,5 @@
---- src/nv-misc.h.orig 2014-02-13 05:07:44.000000000 +0100
-+++ src/nv-misc.h 2014-05-05 18:45:44.000000000 +0200
+--- src/%%NVSRC%%/nv-misc.h.orig 2017-09-14 20:46:30 UTC
++++ src/%%NVSRC%%/nv-misc.h
@@ -11,6 +11,8 @@
#ifndef _NV_MISC_H_
#define _NV_MISC_H_
diff --git a/x11/nvidia-driver/files/extra-patch-src-nvidia_ctl.c.in b/x11/nvidia-driver/files/extra-patch-src-nvidia_ctl.c.in
new file mode 100644
index 000000000000..a187792bd1cd
--- /dev/null
+++ b/x11/nvidia-driver/files/extra-patch-src-nvidia_ctl.c.in
@@ -0,0 +1,75 @@
+--- src/%%NVSRC%%/nvidia_ctl.c.orig 2017-09-14 20:46:30 UTC
++++ src/%%NVSRC%%/nvidia_ctl.c
+@@ -13,6 +13,12 @@
+ #include "nv.h"
+ #include "nv-freebsd.h"
+
++#ifdef NV_SUPPORT_LINUX_COMPAT /* (COMPAT_LINUX || COMPAT_LINUX32) */
++#include <compat/linux/linux_util.h>
++
++const char nvidia_driver_name[] = "nvidia";
++#endif
++
+ static d_open_t nvidia_ctl_open;
+ static void nvidia_ctl_dtor(void *arg);
+ static d_ioctl_t nvidia_ctl_ioctl;
+@@ -138,6 +144,18 @@ static int nvidia_ctl_poll(
+
+ int nvidia_ctl_attach(void)
+ {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ struct linux_device_handler nvidia_ctl_linux_handler = {
++ .bsd_driver_name = __DECONST(char *, nvidia_driver_name),
++ .linux_driver_name = __DECONST(char *, nvidia_driver_name),
++ .bsd_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_major = NV_MAJOR_DEVICE_NUMBER,
++ .linux_minor = 255,
++ .linux_char_device = 1
++ };
++#endif
++
+ if (nvidia_count == 0) {
+ nvidia_ctl_cdev = make_dev(&nvidia_ctl_cdevsw,
+ CDEV_CTL_MINOR,
+@@ -145,6 +163,10 @@ int nvidia_ctl_attach(void)
+ "%s", nvidia_ctl_cdevsw.d_name);
+ if (nvidia_ctl_cdev == NULL)
+ return ENOMEM;
++
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ (void)linux_device_register_handler(&nvidia_ctl_linux_handler);
++#endif
+ }
+
+ nvidia_count++;
+@@ -153,13 +175,28 @@ int nvidia_ctl_attach(void)
+
+ int nvidia_ctl_detach(void)
+ {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ struct linux_device_handler nvidia_ctl_linux_handler = {
++ .bsd_driver_name = __DECONST(char *, nvidia_driver_name),
++ .linux_driver_name = __DECONST(char *, nvidia_driver_name),
++ .bsd_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_device_name = __DECONST(char *, nvidia_ctl_cdevsw.d_name),
++ .linux_major = NV_MAJOR_DEVICE_NUMBER,
++ .linux_minor = 255,
++ .linux_char_device = 1
++ };
++#endif
+ struct nvidia_softc *sc;
+
+ sc = &nvidia_ctl_sc;
+ nvidia_count--;
+
+- if (nvidia_count == 0)
++ if (nvidia_count == 0) {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ (void)linux_device_unregister_handler(&nvidia_ctl_linux_handler);
++#endif
+ destroy_dev(nvidia_ctl_cdev);
++ }
+
+ return 0;
+ }
diff --git a/x11/nvidia-driver/files/extra-patch-src-nvidia_dev.c.in b/x11/nvidia-driver/files/extra-patch-src-nvidia_dev.c.in
new file mode 100644
index 000000000000..a38bb8f28f92
--- /dev/null
+++ b/x11/nvidia-driver/files/extra-patch-src-nvidia_dev.c.in
@@ -0,0 +1,66 @@
+--- src/%%NVSRC%%/nvidia_dev.c.orig 2017-09-14 20:46:30 UTC
++++ src/%%NVSRC%%/nvidia_dev.c
+@@ -13,6 +13,12 @@
+ #include "nv.h"
+ #include "nv-freebsd.h"
+
++#ifdef NV_SUPPORT_LINUX_COMPAT /* (COMPAT_LINUX || COMPAT_LINUX32) */
++#include <compat/linux/linux_util.h>
++
++extern const char nvidia_driver_name[];
++#endif
++
+ static d_open_t nvidia_dev_open;
+ static void nvidia_dev_dtor(void *arg);
+ static d_ioctl_t nvidia_dev_ioctl;
+@@ -162,6 +168,18 @@ static int nvidia_dev_mmap_single(
+
+ int nvidia_dev_attach(struct nvidia_softc *sc)
+ {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ struct linux_device_handler nvidia_dev_linux_handler = {
++ .bsd_driver_name = __DECONST(char *, nvidia_driver_name),
++ .linux_driver_name = __DECONST(char *, nvidia_driver_name),
++ .bsd_device_name = NULL,
++ .linux_device_name = NULL,
++ .linux_major = NV_MAJOR_DEVICE_NUMBER,
++ .linux_minor = device_get_unit(sc->dev),
++ .linux_char_device = 1
++ };
++#endif
++
+ sc->cdev = make_dev(&nvidia_dev_cdevsw,
+ device_get_unit(sc->dev),
+ UID_ROOT, GID_WHEEL, 0666,
+@@ -172,11 +190,31 @@ int nvidia_dev_attach(struct nvidia_softc *sc)
+
+ sc->cdev->si_drv1 = sc;
+
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ nvidia_dev_linux_handler.bsd_device_name = sc->cdev->si_name;
++ nvidia_dev_linux_handler.linux_device_name = sc->cdev->si_name;
++ (void)linux_device_register_handler(&nvidia_dev_linux_handler);
++#endif
++
+ return 0;
+ }
+
+ int nvidia_dev_detach(struct nvidia_softc *sc)
+ {
++#ifdef NV_SUPPORT_LINUX_COMPAT
++ struct linux_device_handler nvidia_dev_linux_handler = {
++ .bsd_driver_name = __DECONST(char *, nvidia_driver_name),
++ .linux_driver_name = __DECONST(char *, nvidia_driver_name),
++ .bsd_device_name = sc->cdev->si_name,
++ .linux_device_name = sc->cdev->si_name,
++ .linux_major = NV_MAJOR_DEVICE_NUMBER,
++ .linux_minor = device_get_unit(sc->dev),
++ .linux_char_device = 1
++ };
++
++ (void)linux_device_unregister_handler(&nvidia_dev_linux_handler);
++#endif
++
+ destroy_dev(sc->cdev);
+ return 0;
+ }
diff --git a/x11/nvidia-driver/files/extra-patch-src-nvidia_linux.c.in b/x11/nvidia-driver/files/extra-patch-src-nvidia_linux.c.in
new file mode 100644
index 000000000000..f6cffc57748f
--- /dev/null
+++ b/x11/nvidia-driver/files/extra-patch-src-nvidia_linux.c.in
@@ -0,0 +1,35 @@
+--- src/%%NVSRC%%/nvidia_linux.c.orig 2017-09-14 20:46:30 UTC
++++ src/%%NVSRC%%/nvidia_linux.c
+@@ -35,23 +35,16 @@ int linux_ioctl_nvidia(
+ struct linux_ioctl_args *args
+ )
+ {
+- struct file *fp;
+- int error;
+-#if __FreeBSD_version >= 1000053
+- cap_rights_t rights;
+-#endif
+- u_long cmd;
++ static const uint32_t dir[4] = { IOC_VOID, IOC_IN, IOC_OUT, IOC_INOUT };
+
+- error = fget(td, args->fd, cap_rights_init(&rights, CAP_IOCTL), &fp);
+- if (error != 0)
+- return error;
+-
+- cmd = args->cmd;
+-
+- error = fo_ioctl(fp, cmd, (caddr_t)args->arg, td->td_ucred, td);
+- fdrop(fp, td);
+-
+- return error;
++ if ((args->cmd & (1<<29)) != 0) {
++ /* FreeBSD has only 13 bits to encode the size. */
++ printf("nvidia: pid %d (%s): ioctl cmd=0x%x size too large\n",
++ (int)td->td_proc->p_pid, td->td_proc->p_comm, args->cmd);
++ return (EINVAL);
++ }
++ args->cmd = (args->cmd & ~IOC_DIRMASK) | dir[args->cmd >> 30];
++ return (sys_ioctl(td, (struct ioctl_args *)args));
+ }
+
+ struct linux_ioctl_handler nvidia_handler = {
diff --git a/x11/nvidia-driver/files/extra-patch-src-nvidia_pci.c.in b/x11/nvidia-driver/files/extra-patch-src-nvidia_pci.c.in
new file mode 100644
index 000000000000..78b5add6a867
--- /dev/null
+++ b/x11/nvidia-driver/files/extra-patch-src-nvidia_pci.c.in
@@ -0,0 +1,10 @@
+--- src/%%NVSRC%%/nvidia_pci.c.orig 2017-09-14 20:46:30 UTC
++++ src/%%NVSRC%%/nvidia_pci.c
+@@ -405,4 +405,7 @@ MODULE_DEPEND(nvidia, agp, 1, 1, 1);
+
+ #ifdef NV_SUPPORT_LINUX_COMPAT /* (COMPAT_LINUX || COMPAT_LINUX32) */
+ MODULE_DEPEND(nvidia, linux, 1, 1, 1);
++#if defined(NVCPU_X86_64)
++MODULE_DEPEND(nvidia, linux_common, 1, 1, 1);
++#endif
+ #endif
diff --git a/x11/nvidia-driver/files/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c b/x11/nvidia-driver/files/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c
index 75214a8db0e4..d129820b5988 100644
--- a/x11/nvidia-driver/files/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c
+++ b/x11/nvidia-driver/files/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c
@@ -1,6 +1,22 @@
---- src/nvidia-modeset/nvidia-modeset-freebsd.c.orig 2016-05-28 15:44:11 UTC
+--- src/nvidia-modeset/nvidia-modeset-freebsd.c.orig 2018-08-21 23:09:28 UTC
+++ src/nvidia-modeset/nvidia-modeset-freebsd.c
-@@ -245,7 +245,7 @@ struct nvkms_ref_ptr {
+@@ -25,6 +25,7 @@
+ #include <sys/poll.h>
+ #include <sys/file.h>
+ #include <sys/proc.h>
++#include <sys/sysproto.h>
+
+ #include "nvkms-ioctl.h"
+ #include "nvidia-modeset-os-interface.h"
+@@ -48,6 +49,7 @@
+ #include "machine/../linux32/linux32_proto.h"
+ #endif
+ #include <compat/linux/linux_ioctl.h>
++ #include <compat/linux/linux_util.h>
+ #endif
+
+
+@@ -250,7 +252,7 @@ struct nvkms_ref_ptr {
struct nvkms_ref_ptr* NVKMS_API_CALL nvkms_alloc_ref_ptr(void *ptr)
{
@@ -9,3 +25,80 @@
if (ref_ptr) {
mtx_init(&ref_ptr->lock, "nvkms-ref-ptr-lock", NULL, MTX_SPIN);
// The ref_ptr owner counts as a reference on the ref_ptr itself.
+@@ -867,33 +869,31 @@ static int nvkms_poll(
+ *************************************************************************/
+
+ #if defined(NVKMS_SUPPORT_LINUX_COMPAT)
++static struct linux_device_handler nvkms_linux_device_handler = {
++ .bsd_driver_name = "nvidia-modeset",
++ .linux_driver_name = "nvidia-modeset",
++ .bsd_device_name = "nvidia-modeset",
++ .linux_device_name = "nvidia-modeset",
++ .linux_major = 195,
++ .linux_minor = 254,
++ .linux_char_device = 1
++};
+
+ static int nvkms_linux_ioctl_function(
+ struct thread *td,
+ struct linux_ioctl_args *args
+ )
+ {
+- struct file *fp;
+- int status;
+- u_long cmd;
++ static const uint32_t dir[4] = { IOC_VOID, IOC_IN, IOC_OUT, IOC_INOUT };
+
+-#if NV_FGET_HAS_CAP_RIGHTS_T_ARG
+- cap_rights_t rights;
+- status = fget(td, args->fd, cap_rights_init(&rights, CAP_IOCTL), &fp);
+-#else
+- status = fget(td, args->fd, &fp);
+-#endif
+-
+- if (status != 0) {
+- return status;
++ if ((args->cmd & (1<<29)) != 0) {
++ /* FreeBSD has only 13 bits to encode the size. */
++ printf("nvidia: pid %d (%s): ioctl cmd=0x%x size too large\n",
++ (int)td->td_proc->p_pid, td->td_proc->p_comm, args->cmd);
++ return (EINVAL);
+ }
+-
+- cmd = args->cmd;
+-
+- status = fo_ioctl(fp, cmd, (caddr_t)args->arg, td->td_ucred, td);
+- fdrop(fp, td);
+-
+- return status;
++ args->cmd = (args->cmd & ~IOC_DIRMASK) | dir[args->cmd >> 30];
++ return (sys_ioctl(td, (struct ioctl_args *)args));
+ }
+
+ #define NVKMS_LINUX_IOCTL_MIN _IOC(0, NVKMS_IOCTL_MAGIC, NVKMS_IOCTL_CMD, 0)
+@@ -909,6 +909,7 @@ static struct linux_ioctl_handler nvkms_linux_ioctl_ha
+ static void nvkms_linux_compat_load(void)
+ {
+ #if defined(NVKMS_SUPPORT_LINUX_COMPAT)
++ linux_device_register_handler(&nvkms_linux_device_handler);
+ linux_ioctl_register_handler(&nvkms_linux_ioctl_handler);
+ #endif
+ }
+@@ -917,6 +918,7 @@ static void nvkms_linux_compat_unload(void)
+ {
+ #if defined(NVKMS_SUPPORT_LINUX_COMPAT)
+ linux_ioctl_unregister_handler(&nvkms_linux_ioctl_handler);
++ linux_device_unregister_handler(&nvkms_linux_device_handler);
+ #endif
+ }
+
+@@ -1100,4 +1102,9 @@ MODULE_DEPEND(nvidia_modeset, /* module
+ MODULE_DEPEND(nvidia_modeset, /* module name */
+ linux, /* prerequisite module */
+ 1, 1, 1); /* vmin, vpref, vmax */
++#if defined(NVCPU_X86_64)
++MODULE_DEPEND(nvidia_modeset, /* module name */
++ linux_common, /* prerequisite module */
++ 1, 1, 1); /* vmin, vpref, vmax */
++#endif
+ #endif
diff --git a/x11/nvidia-driver/files/extra-patch-src_nvidia_Makefile b/x11/nvidia-driver/files/extra-patch-src_nvidia_Makefile
deleted file mode 100644
index f596b4b4505a..000000000000
--- a/x11/nvidia-driver/files/extra-patch-src_nvidia_Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
---- src/nvidia/Makefile.orig 2014-04-04 23:24:59.000000000 +0200
-+++ src/nvidia/Makefile 2014-05-06 14:31:07.000000000 +0200
-@@ -24,6 +24,15 @@
- stdarg.h:
- @ln -s machine/stdarg.h stdarg.h
-
-+SRCS+= opt_global.h
-+.if ${MACHINE_ARCH} == "i386" && !defined(KERNBUILDDIR)
-+PAE!= sed -n '/define NV_SUPPORT_PAE/p' nv-freebsd.h
-+.if !empty(PAE)
-+opt_global.h:
-+ echo "#define PAE 1" > ${.TARGET}
-+.endif
-+.endif
-+
- *.c: stdarg.h
-
- beforeinstall: ${KMOD}.ko
diff --git a/x11/nvidia-driver/files/extra-patch-src_nvidia_nv-freebsd.h b/x11/nvidia-driver/files/extra-patch-src_nvidia_nv-freebsd.h
deleted file mode 100644
index a5d18e2d190e..000000000000
--- a/x11/nvidia-driver/files/extra-patch-src_nvidia_nv-freebsd.h
+++ /dev/null
@@ -1,14 +0,0 @@
---- src/nvidia/nv-freebsd.h.orig 2015-10-30 22:40:02 UTC
-+++ src/nvidia/nv-freebsd.h
-@@ -144,6 +144,11 @@ MALLOC_DECLARE(M_NVIDIA);
- #endif
-
- /*
-+ * Enable/Disable support for PAE on i386.
-+ */
-+#undef NV_SUPPORT_PAE
-+
-+/*
- * Enable/Disable support for ACPI Power Management.
- */
-
diff --git a/x11/nvidia-driver/files/extra-patch-src_nvidia_nv-misc.h b/x11/nvidia-driver/files/extra-patch-src_nvidia_nv-misc.h
deleted file mode 100644
index 3bd04fc8e9ae..000000000000
--- a/x11/nvidia-driver/files/extra-patch-src_nvidia_nv-misc.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/nvidia/nv-misc.h.orig 2014-02-13 05:07:44.000000000 +0100
-+++ src/nvidia/nv-misc.h 2014-05-05 18:45:44.000000000 +0200
-@@ -11,6 +11,8 @@
- #ifndef _NV_MISC_H_
- #define _NV_MISC_H_
-
-+#include "opt_global.h"
-+
- #include "nvtypes.h"
- #include "rmretval.h"
-
diff --git a/x11/nvidia-driver/pkg-plist b/x11/nvidia-driver/pkg-plist
index 70d52033a060..bedbfb414320 100644
--- a/x11/nvidia-driver/pkg-plist
+++ b/x11/nvidia-driver/pkg-plist
@@ -34,47 +34,171 @@ man/man1/nvidia-smi.1.gz
%%MODULESDIR%%/extensions/.nvidia/libglx.so.1
/%%KMODDIR%%/nvidia.ko
/%%KMODDIR%%/nvidia-modeset.ko
-%%LINUX%%%%LINUXBASE%%/usr/lib/libEGL.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libEGL.so.1
-%%LINUX%%@postunexec [ ! -e %%LINUXBASE%%/usr/lib/libEGL.so.1.0.0 ] || ln -sf libEGL.so.1.0.0 %%LINUXBASE%%/usr/lib/libEGL.so.1
-%%LINUX%%%%LINUXBASE%%/usr/lib/libEGL_nvidia.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libEGL_nvidia.so.0
-%%LINUX%%%%LINUXBASE%%/usr/lib/libEGL_nvidia.so
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGL.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGL.so.1
-%%LINUX%%@postunexec [ ! -e %%LINUXBASE%%/usr/lib/libGL.so.1.2.0 ] || ln -sf libGL.so.1.2.0 %%LINUXBASE%%/usr/lib/libGL.so.1
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv1_CM.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv1_CM.so.1
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv1_CM.so
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv1_CM_nvidia.so.1
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv1_CM_nvidia.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv2.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv2.so.2
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv2.so
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv2_nvidia.so.2
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLESv2_nvidia.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLdispatch.so
-%%LINUX%%%%LINUXBASE%%/usr/lib/libGLdispatch.so.0
-%%LINUX%%%%LINUXBASE%%/usr/lib/libOpenGL.so
-%%LINUX%%%%LINUXBASE%%/usr/lib/libOpenGL.so.0
-%%LINUX%%%%LINUXBASE%%/usr/lib/libcuda.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libcuda.so.1
-%%LINUX%%%%LINUXBASE%%/usr/lib/libnvidia-eglcore.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libnvidia-glcore.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libnvidia-glsi.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libnvidia-tls.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libvdpau.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/libvdpau.so.1
-%%LINUX%%%%LINUXBASE%%/usr/lib/libvdpau_nvidia.so
-%%LINUX%%%%LINUXBASE%%/usr/lib/libvdpau_trace.so
-%%LINUX%%%%LINUXBASE%%/usr/lib/vdpau/libvdpau_nvidia.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/vdpau/libvdpau_nvidia.so.1
-%%LINUX%%%%LINUXBASE%%/usr/lib/vdpau/libvdpau_trace.so.%%SHLIB_VERSION%%
-%%LINUX%%%%LINUXBASE%%/usr/lib/vdpau/libvdpau_trace.so.1
-%%LINUX%%@postexec %%LINUXBASE%%/sbin/ldconfig -r %%LINUXBASE%%
-%%LINUX%%@postunexec %%LINUXBASE%%/sbin/ldconfig -r %%LINUXBASE%%
-%%LINUX%%@dir %%LINUXBASE%%/usr/lib/vdpau
-%%LINUX%%@dir %%LINUXBASE%%/usr/lib
+%%LINUX%%%%LINUXBASE%%/etc/OpenCL/vendors/nvidia.icd
+%%LINUX%%%%LINUXBASE%%/etc/vulkan/icd.d/nvidia_icd.json
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-bug-report.sh
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-cuda-mps-control
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-cuda-mps-server
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-debugdump
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-persistenced
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-settings
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-smi
+%%LINUX%%%%LINUXBASE%%/usr/bin/nvidia-xconfig
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libEGL.so.1
+%%LINUX32%%@postunexec [ ! -e %%LINUXBASE%%/usr/lib/libEGL.so.1.0.0 ] || ln -sf libEGL.so.1.0.0 %%LINUXBASE%%/usr/lib/libEGL.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libEGL.so.X
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libEGL_nvidia.so.0
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libEGL_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGL.so.1
+%%LINUX32%%@postunexec [ ! -e %%LINUXBASE%%/usr/lib/libGL.so.1.2.0 ] || ln -sf libGL.so.1.2.0 %%LINUXBASE%%/usr/lib/libGL.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGL.so.X
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLdispatch.so.0
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv1_CM.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv1_CM.so.X
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv1_CM_nvidia.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv1_CM_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv2.so.2
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv2.so.X
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv2_nvidia.so.2
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLESv2_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLX.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLX.so.0
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLX_indirect.so.0
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLX_nvidia.so.0
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libGLX_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libOpenGL.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libOpenGL.so.0
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libcuda.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libcuda.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libcuda.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvcuvid.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvcuvid.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvcuvid.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-compiler.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-eglcore.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-encode.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-encode.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-encode.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-fatbinaryloader.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-fbc.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-fbc.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-fbc.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-glcore.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-glsi.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ifr.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ifr.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ifr.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ml.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ml.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ml.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-opencl.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-opencl.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ptxjitcompiler.so
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ptxjitcompiler.so.1
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-ptxjitcompiler.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libnvidia-tls.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/libvdpau_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/tls/libnvidia-tls.so.%%SHLIB_VERSION%%
+%%LINUX32%%%%LINUXBASE%%/usr/lib/vdpau/libvdpau_nvidia.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libEGL.so.1
+%%LINUX%%@postunexec [ ! -e %%LINUXBASE%%%%LINUX_LIBDIR%%/libEGL.so.1.0.0 ] || ln -sf libEGL.so.1.0.0 %%LINUXBASE%%%%LINUX_LIBDIR%%/libEGL.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libEGL.so.X
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libEGL_nvidia.so.0
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libEGL_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGL.so.1
+%%LINUX%%@postunexec [ ! -e %%LINUXBASE%%%%LINUX_LIBDIR%%/libGL.so.1.2.0 ] || ln -sf libGL.so.1.2.0 %%LINUXBASE%%%%LINUX_LIBDIR%%/libGL.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGL.so.X
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLdispatch.so.0
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv1_CM.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv1_CM.so.X
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv1_CM_nvidia.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv1_CM_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv2.so.2
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv2.so.X
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv2_nvidia.so.2
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLESv2_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLX.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLX.so.0
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLX_indirect.so.0
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLX_nvidia.so.0
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libGLX_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libOpenGL.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libOpenGL.so.0
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libXvMCNVIDIA.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libXvMCNVIDIA_dynamic.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libXvMCNVIDIA_dynamic.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libcuda.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libcuda.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libcuda.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvcuvid.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvcuvid.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvcuvid.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-cfg.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-cfg.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-cfg.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-compiler.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-egl-wayland.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-egl-wayland.so.X
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-eglcore.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-encode.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-encode.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-encode.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-fatbinaryloader.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-fbc.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-fbc.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-fbc.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-glcore.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-glsi.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-gtk2.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-gtk3.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ifr.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ifr.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ifr.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ml.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ml.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ml.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-opencl.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-opencl.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ptxjitcompiler.so
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ptxjitcompiler.so.1
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-ptxjitcompiler.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libnvidia-tls.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/libvdpau_nvidia.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/tls/libnvidia-tls.so.%%SHLIB_VERSION%%
+%%LINUX%%%%LINUXBASE%%%%LINUX_LIBDIR%%/vdpau/libvdpau_nvidia.so.1
+%%LINUX%%%%LINUXBASE%%/usr/share/egl/egl_external_platform.d/10_nvidia_wayland.json
+%%LINUX%%%%LINUXBASE%%/usr/share/glvnd/egl_vendor.d/10_nvidia.json
+%%LINUX%%%%LINUXBASE%%/usr/share/man/man1/nvidia-cuda-mps-control.1.gz
+%%LINUX%%%%LINUXBASE%%/usr/share/man/man1/nvidia-persistenced.1.gz
+%%LINUX%%%%LINUXBASE%%/usr/share/man/man1/nvidia-settings.1.gz
+%%LINUX%%%%LINUXBASE%%/usr/share/man/man1/nvidia-smi.1.gz
+%%LINUX%%%%LINUXBASE%%/usr/share/man/man1/nvidia-xconfig.1.gz
+%%LINUX%%%%LINUXBASE%%/usr/share/nvidia/monitoring.conf
+%%LINUX%%%%LINUXBASE%%/usr/share/nvidia/nvidia-application-profiles-%%SHLIB_VERSION%%-key-documentation
+%%LINUX%%%%LINUXBASE%%/usr/share/nvidia/nvidia-application-profiles-%%SHLIB_VERSION%%-rc
+%%LINUX%%%%LINUXBASE%%/usr/share/nvidia/pci.ids
+%%LINUX%%@postexec %%LINUXBASE%%/sbin/ldconfig
+%%LINUX%%@postunexec %%LINUXBASE%%/sbin/ldconfig
+%%LINUX%%@dir %%LINUXBASE%%/etc/OpenCL/vendors
+%%LINUX%%@dir %%LINUXBASE%%/etc/OpenCL
+%%LINUX%%@dir %%LINUXBASE%%/etc/vulkan/icd.d
+%%LINUX%%@dir %%LINUXBASE%%/etc/vulkan
+%%LINUX%%@dir %%LINUXBASE%%/etc
+%%LINUX%%@dir %%LINUXBASE%%/usr/bin
+%%LINUX32%%@dir %%LINUXBASE%%/usr/lib/tls
+%%LINUX32%%@dir %%LINUXBASE%%/usr/lib/vdpau
+%%LINUX32%%@dir %%LINUXBASE%%/usr/lib
+%%LINUX%%@dir %%LINUXBASE%%%%LINUX_LIBDIR%%/tls
+%%LINUX%%@dir %%LINUXBASE%%%%LINUX_LIBDIR%%/vdpau
+%%LINUX%%@dir %%LINUXBASE%%%%LINUX_LIBDIR%%
+%%LINUX%%@dir %%LINUXBASE%%/usr/share/egl/egl_external_platform.d
+%%LINUX%%@dir %%LINUXBASE%%/usr/share/egl
+%%LINUX%%@dir %%LINUXBASE%%/usr/share/glvnd/egl_vendor.d
+%%LINUX%%@dir %%LINUXBASE%%/usr/share/glvnd
+%%LINUX%%@dir %%LINUXBASE%%/usr/share/man/man1
+%%LINUX%%@dir %%LINUXBASE%%/usr/share/man
+%%LINUX%%@dir %%LINUXBASE%%/usr/share/nvidia
+%%LINUX%%@dir %%LINUXBASE%%/usr/share
%%LINUX%%@dir %%LINUXBASE%%/usr
%%LINUX%%@dir %%LINUXBASE%%
%%LINUX%%@dir /compat