Changeset View
Changeset View
Standalone View
Standalone View
x11/nvidia-driver/Makefile
# Created by: Stijn Hoop <stijn@win.tue.nl> | # Created by: Stijn Hoop <stijn@win.tue.nl> | ||||
# | # | ||||
# For those wondering why this port is not under `x11-drivers' category, | # For those wondering why this port is not under `x11-drivers' category, | ||||
# have a look at https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=121930. | # have a look at https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=121930. | ||||
# | # | ||||
# Starting with version 1.0-7667, NVidia has dropped support for numerous | # Starting with version 1.0-7667, NVidia has dropped support for numerous | ||||
# "legacy" GPUs. Consult NVidia README (the Appendix) to find out whether | # "legacy" GPUs. Consult NVidia README (the Appendix) to find out whether | ||||
# you need to use legacy driver version and install one of corresponding | # you need to use legacy driver version and install one of corresponding | ||||
# slave ports instead (`x11/nvidia-driver-390', `x11/nvidia-driver-340', | # slave ports instead (`x11/nvidia-driver-390', `x11/nvidia-driver-340', | ||||
# or `x11/nvidia-driver-304'). | # or `x11/nvidia-driver-304'). | ||||
# | # | ||||
# To simplify testing of new feature branches and beta driver versions, | # To simplify testing of new feature branches and beta driver versions, | ||||
# the port aims to support building against arbitrary DISTVERSION, i.e. | # the port aims to support building against arbitrary DISTVERSION, i.e. | ||||
pete_nomadlogic.org: DISTVERSION upstream has been bumped to 460.80 so the patch needs to be updated or resync'd to… | |||||
# ``make DISTVERSION=xxx.yy.zz -DNO_CHECKSUM'' should typically work. | # ``make DISTVERSION=xxx.yy.zz -DNO_CHECKSUM'' should typically work. | ||||
PORTNAME= nvidia-driver | PORTNAME?= nvidia-driver | ||||
DISTVERSION?= 460.80 | DISTVERSION?= 460.80 | ||||
# Always try to set PORTREVISION as it can be overridden by the slave ports | # Always try to set PORTREVISION as it can be overridden by the slave ports | ||||
PORTREVISION?= 0 | PORTREVISION?= 0 | ||||
CATEGORIES= x11 | CATEGORIES= x11 | ||||
MASTER_SITES= NVIDIA/XFree86/FreeBSD-${ARCH_SUFX}/${DISTVERSION} | MASTER_SITES= NVIDIA/XFree86/FreeBSD-${ARCH_SUFX}/${DISTVERSION} | ||||
DISTNAME= NVIDIA-FreeBSD-${ARCH_SUFX}-${DISTVERSION} | DISTNAME= NVIDIA-FreeBSD-${ARCH_SUFX}-${DISTVERSION} | ||||
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} | ||||
MAINTAINER= danfe@FreeBSD.org | MAINTAINER?= danfe@FreeBSD.org | ||||
COMMENT= NVidia graphics card binary drivers for hardware OpenGL rendering | COMMENT?= NVidia graphics card binary drivers for hardware OpenGL rendering | ||||
LICENSE_FILE= ${WRKSRC}/doc/license.txt | LICENSE_FILE= ${WRKSRC}/doc/license.txt | ||||
.include "${.CURDIR}/../nvidia-driver/Makefile.common" | .include "${.CURDIR}/../nvidia-driver/Makefile.common" | ||||
# Pull GNU sed(1) for "binary" patching of obj/libglvnd/libEGL.so.1 and | # Pull GNU sed(1) for "binary" patching of obj/libglvnd/libEGL.so.1 and | ||||
# obj/libEGL_nvidia.so.0 (see below) | # obj/libEGL_nvidia.so.0 (see below) | ||||
.if ${NVVERSION} >= 410.057 | .if ${NVVERSION} >= 410.057 | ||||
PATCH_DEPENDS= gsed:textproc/gsed | PATCH_DEPENDS= gsed:textproc/gsed | ||||
.endif | .endif | ||||
USES= kmod uidfix xorg | USES= kmod uidfix xorg | ||||
USE_XORG= x11 xorg-server xext | USE_XORG= x11 xorg-server xext | ||||
USE_LDCONFIG= yes | USE_LDCONFIG= yes | ||||
GLVND_JSON_PATH= ${PREFIX}/share/glvnd/egl_vendor.d | GLVND_JSON_PATH= ${PREFIX}/share/glvnd/egl_vendor.d | ||||
WAYLAND_JSON_PATH= ${PREFIX}/share/egl/egl_external_platform.d | WAYLAND_JSON_PATH= ${PREFIX}/share/egl/egl_external_platform.d | ||||
MAKE_ENV= DEBUG_FLAGS=${DEBUG_FLAGS} \ | MAKE_ENV= DEBUG_FLAGS=${DEBUG_FLAGS} \ | ||||
EGL_GLVND_JSON_PATH=${STAGEDIR}${GLVND_JSON_PATH} \ | EGL_GLVND_JSON_PATH=${STAGEDIR}${GLVND_JSON_PATH} \ | ||||
EGL_WAYLAND_JSON_PATH=${STAGEDIR}${WAYLAND_JSON_PATH} | EGL_WAYLAND_JSON_PATH=${STAGEDIR}${WAYLAND_JSON_PATH} | ||||
SUB_FILES= pkg-message nvidia.conf | SUB_FILES= pkg-message | ||||
.if !defined(LIBGLDIR) | |||||
SUB_FILES+= nvidia.conf | |||||
.endif | |||||
.if ${NVVERSION} < 410.057 | .if ${NVVERSION} < 410.057 | ||||
SUB_FILES+= pkg-deinstall pkg-install | SUB_FILES+= pkg-deinstall pkg-install | ||||
.endif | .endif | ||||
SUB_PATCHES= extra-patch-src-Makefile \ | SUB_PATCHES= extra-patch-src-Makefile \ | ||||
extra-patch-src-nv-freebsd.h \ | extra-patch-src-nv-freebsd.h \ | ||||
extra-patch-src-nv-misc.h \ | extra-patch-src-nv-misc.h \ | ||||
extra-patch-src-nvidia_dev.c \ | extra-patch-src-nvidia_dev.c \ | ||||
extra-patch-src-nvidia_pci.c | extra-patch-src-nvidia_pci.c | ||||
DOCSDIR= ${PREFIX}/share/doc/NVIDIA_GLX-1.0 | DOCSDIR= ${PREFIX}/share/doc/NVIDIA_GLX-1.0 | ||||
MODULESDIR= lib/xorg/modules | MODULESDIR= lib/xorg/modules | ||||
EXTENSIONSDIR?= ${MODULESDIR}/extensions/.nvidia | |||||
PORTDOCS= * | PORTDOCS= * | ||||
Done Inline ActionsWhy hiding the directory? danfe: Why hiding the directory? | |||||
Done Inline ActionsThis is the existing implementation, both x11/nvidia-driver and x11-servers/xorg-server's install script know about this directory. I merely refactored it to its own variable so nvidia-secondary-driver may override it. theron.tarigo_gmail.com: This is the existing implementation, both x11/nvidia-driver and x11-servers/xorg-server's… | |||||
.if ${NVVERSION} >= 331.013 | .if ${NVVERSION} >= 331.013 | ||||
SUB_LIST+= NVGL="" | SUB_LIST+= NVGL="" | ||||
.else | .else | ||||
SUB_LIST+= NVGL="\# " | SUB_LIST+= NVGL="\# " | ||||
.endif | .endif | ||||
.if ${NVVERSION} < 355.006 | .if ${NVVERSION} < 355.006 | ||||
NVSRC= . | NVSRC= . | ||||
Show All 24 Lines | |||||
WBINVD_DESC= Flush CPU caches directly with WBINVD | WBINVD_DESC= Flush CPU caches directly with WBINVD | ||||
.if ${NVVERSION} < 310.014 | .if ${NVVERSION} < 310.014 | ||||
OPTIONS_DEFINE+= FREEBSD_AGP | OPTIONS_DEFINE+= FREEBSD_AGP | ||||
FREEBSD_AGP_DESC= Use FreeBSD AGP GART driver | FREEBSD_AGP_DESC= Use FreeBSD AGP GART driver | ||||
.endif | .endif | ||||
PLIST_SUB+= MODULESDIR=${MODULESDIR} | PLIST_SUB+= MODULESDIR=${MODULESDIR} | ||||
.if ${NVVERSION} < 410.057 | |||||
PLIST_SUB+= EXTENSIONSDIR=${EXTENSIONSDIR} | |||||
.else | |||||
Done Inline ActionsIn ports, it should be spelled as .if defined(LIBGLDIR). danfe: In ports, it should be spelled as `.if defined(LIBGLDIR)`. | |||||
PLIST_SUB+= EXTENSIONSDIR="@comment " | |||||
.endif | |||||
.if defined(LIBGLDIR) | |||||
PLIST_SUB+= LIBGLDIR=${LIBGLDIR} LIBGLMAP="@comment " | |||||
.else | |||||
PLIST_SUB+= LIBGLDIR="@comment " LIBGLMAP="" | |||||
Done Inline ActionsSeparate NO_LIBMAP thingy looks redundant as it's always aligned LIBGLDIR, no? danfe: Separate `NO_LIBMAP` thingy looks redundant as it's always aligned `LIBGLDIR`, no? | |||||
.endif | |||||
.if ${PORTNAME} != nvidia-secondary-driver | |||||
CONFLICTS_INSTALL+= nvidia-secondary-driver | |||||
.endif | |||||
.include <bsd.port.pre.mk> | .include <bsd.port.pre.mk> | ||||
pre-patch: | pre-patch: | ||||
.for p in ${SUB_PATCHES} | .for p in ${SUB_PATCHES} | ||||
@${SED} 's/%%NVSRC%%/${NVSRC}/g' ${PATCHDIR}/${p}.in > ${WRKDIR}/${p} | @${SED} 's/%%NVSRC%%/${NVSRC}/g' ${PATCHDIR}/${p}.in > ${WRKDIR}/${p} | ||||
.endfor | .endfor | ||||
.for p in ${SUB_PATCHES} | .for p in ${SUB_PATCHES} | ||||
EXTRA_PATCHES+= ${WRKDIR}/${p} | EXTRA_PATCHES+= ${WRKDIR}/${p} | ||||
▲ Show 20 Lines • Show All 165 Lines • ▼ Show 20 Lines | |||||
.if ${NVVERSION} >= 331.013 | .if ${NVVERSION} >= 331.013 | ||||
${LN} -sf libEGL-NVIDIA.so.1 \ | ${LN} -sf libEGL-NVIDIA.so.1 \ | ||||
${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so | ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so | ||||
${MV} -f ${STAGEDIR}${PREFIX}/lib/libEGL.so.1 \ | ${MV} -f ${STAGEDIR}${PREFIX}/lib/libEGL.so.1 \ | ||||
${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so.1 | ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so.1 | ||||
${RM} ${STAGEDIR}${PREFIX}/lib/libEGL.so | ${RM} ${STAGEDIR}${PREFIX}/lib/libEGL.so | ||||
${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv1_CM.so | ${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv1_CM.so | ||||
${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv1_CM.so.1 | ${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv1_CM.so.1 | ||||
${LN} -sf libGLESv2-NVIDIA.so.2 \ | ${LN} -sf libGLESv2-NVIDIA.so.2 \ | ||||
Done Inline ActionsDitto. danfe: Ditto. | |||||
${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so | ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so | ||||
${MV} -f ${STAGEDIR}${PREFIX}/lib/libGLESv2.so.2 \ | ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGLESv2.so.2 \ | ||||
${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 | ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 | ||||
${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv2.so | ${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv2.so | ||||
.endif | .endif | ||||
# Configuration of Nvidia as secondary GPU requires preserving Mesa libraries | |||||
Done Inline ActionsDitto. danfe: Ditto. | |||||
# as default implementation; a libmap must not override in this case. | |||||
.if !defined(LIBGLDIR) | |||||
@${MKDIR} ${STAGEDIR}${PREFIX}/etc/libmap.d/ | @${MKDIR} ${STAGEDIR}${PREFIX}/etc/libmap.d/ | ||||
${INSTALL_DATA} ${WRKDIR}/nvidia.conf \ | ${INSTALL_DATA} ${WRKDIR}/nvidia.conf \ | ||||
${STAGEDIR}${PREFIX}/etc/libmap.d/ | ${STAGEDIR}${PREFIX}/etc/libmap.d/ | ||||
.else | |||||
# libgl proxies require a library path containing unrenamed lib*GL*.so | |||||
${MKDIR} ${STAGEDIR}${PREFIX}/${LIBGLDIR} | |||||
${RLN} ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 \ | |||||
${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGL.so.1 | |||||
${RLN} ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so.1 \ | |||||
${STAGEDIR}${PREFIX}/${LIBGLDIR}/libEGL.so.1 | |||||
${RLN} ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 \ | |||||
${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGLESv2.so.2 | |||||
.endif | |||||
# Configuration of Nvidia as secondary GPU requires preserving xorg-server's | |||||
# libglx.so and moving Nvidia's glx to where it can be found by a secondary | |||||
# Xorg instance. | |||||
Done Inline ActionsSuperfluous blank line. danfe: Superfluous blank line. | |||||
# Not needed since 410.057: Nvidia driver finds libglxserver_nvidia.so instead. | |||||
.if ${NVVERSION} < 410.057 | |||||
.if ${EXTENSIONSDIR} != ${MODULESDIR}/extensions/.nvidia | |||||
${MKDIR} ${STAGEDIR}${PREFIX}/${EXTENSIONSDIR} | |||||
${MV} ${STAGEDIR}${PREFIX}/${MODULESDIR}/extensions/.nvidia/* \ | |||||
${STAGEDIR}${PREFIX}/${EXTENSIONSDIR}/ | |||||
.endif | |||||
.endif | |||||
.include <bsd.port.post.mk> | .include <bsd.port.post.mk> |
DISTVERSION upstream has been bumped to 460.80 so the patch needs to be updated or resync'd to ensure the portname change gets picked up.