Changeset View
Changeset View
Standalone View
Standalone View
x11/nvidia-driver/Makefile
Show All 10 Lines | |||||
# | # | ||||
# 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. | ||||
# ``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?= 1 | ||||
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 | ||||
BUILD_DEPENDS= pkg-config:devel/pkgconf libglvnd>0:graphics/libglvnd | |||||
.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 | ||||
▲ Show 20 Lines • Show All 233 Lines • ▼ Show 20 Lines | .if ${NVVERSION} < 415.013 | ||||
${REINPLACE_CMD} -e '/libnvidia-egl-wayland\.so/d ; \ | ${REINPLACE_CMD} -e '/libnvidia-egl-wayland\.so/d ; \ | ||||
/10_nvidia_wayland\.json/d' ${TMPPLIST} | /10_nvidia_wayland\.json/d' ${TMPPLIST} | ||||
.endif | .endif | ||||
.if ${NVVERSION} < 440.036 | .if ${NVVERSION} < 440.036 | ||||
${REINPLACE_CMD} -e '/lib32\//d' ${TMPPLIST} | ${REINPLACE_CMD} -e '/lib32\//d' ${TMPPLIST} | ||||
.elif ${NVVERSION} < 465.01901 | .elif ${NVVERSION} < 465.01901 | ||||
${REINPLACE_CMD} -e '/lib32\/libnvidia-glvkspirv\.so/d' ${TMPPLIST} | ${REINPLACE_CMD} -e '/lib32\/libnvidia-glvkspirv\.so/d' ${TMPPLIST} | ||||
.endif | .endif | ||||
.if ${NVVERSION} < 410.057 | |||||
# Rename some libraries and install a libmap file to resolve conflict with | # Rename some libraries and install a libmap file to resolve conflict with | ||||
# Mesa libraries. | # Mesa libraries. | ||||
${LN} -sf libGL-NVIDIA.so.1 \ | ${LN} -sf libGL-NVIDIA.so.1 \ | ||||
${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so | ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so | ||||
${MV} -f ${STAGEDIR}${PREFIX}/lib/libGL.so.1 \ | ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGL.so.1 \ | ||||
${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 | ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 | ||||
${RM} ${STAGEDIR}${PREFIX}/lib/libGL.so | ${RM} ${STAGEDIR}${PREFIX}/lib/libGL.so | ||||
.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 \ | ||||
${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 | # Configuration of Nvidia as secondary GPU requires preserving libglvnd or mesa | ||||
# as default implementation; a libmap must not override in this case. | # libraries as default implementation; a libmap must not override in this case. | ||||
.if !defined(LIBGLDIR) | . 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 | . else | ||||
# libgl proxies require a library path containing unrenamed lib*GL*.so | # libgl proxies require a library path containing unrenamed lib*GL*.so | ||||
${MKDIR} ${STAGEDIR}${PREFIX}/${LIBGLDIR} | ${MKDIR} ${STAGEDIR}${PREFIX}/${LIBGLDIR} | ||||
${RLN} ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 \ | ${RLN} ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 \ | ||||
${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGL.so.1 | ${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGL.so.1 | ||||
${RLN} ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so.1 \ | ${RLN} ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so.1 \ | ||||
${STAGEDIR}${PREFIX}/${LIBGLDIR}/libEGL.so.1 | ${STAGEDIR}${PREFIX}/${LIBGLDIR}/libEGL.so.1 | ||||
${RLN} ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 \ | ${RLN} ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 \ | ||||
${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGLESv2.so.2 | ${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGLESv2.so.2 | ||||
.endif | . endif | ||||
# Configuration of Nvidia as secondary GPU requires preserving xorg-server's | # 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 | # libglx.so and moving Nvidia's glx to where it can be found by a secondary | ||||
# Xorg instance. | # Xorg instance. | ||||
# Not needed since 410.057: Nvidia driver finds libglxserver_nvidia.so instead. | # Not needed since 410.057: Nvidia driver finds libglxserver_nvidia.so instead. | ||||
.if ${NVVERSION} < 410.057 | |||||
.if ${EXTENSIONSDIR} != ${MODULESDIR}/extensions/.nvidia | . if ${EXTENSIONSDIR} != ${MODULESDIR}/extensions/.nvidia | ||||
${MKDIR} ${STAGEDIR}${PREFIX}/${EXTENSIONSDIR} | ${MKDIR} ${STAGEDIR}${PREFIX}/${EXTENSIONSDIR} | ||||
${MV} ${STAGEDIR}${PREFIX}/${MODULESDIR}/extensions/.nvidia/* \ | ${MV} ${STAGEDIR}${PREFIX}/${MODULESDIR}/extensions/.nvidia/* \ | ||||
${STAGEDIR}${PREFIX}/${EXTENSIONSDIR}/ | ${STAGEDIR}${PREFIX}/${EXTENSIONSDIR}/ | ||||
.endif | . endif | ||||
.else | |||||
${REINPLACE_CMD} -E '/-NVIDIA/d ; \ | |||||
/lib(Open)?E?GLX?(ESv[12](_CM)?|dispatch)?\.so/d' \ | |||||
${TMPPLIST} | |||||
# Override mesa.conf if GLX_EXT_libglvnd is missing | |||||
@${ECHO_CMD} "libGLX_indirect.so.0 libGLX_nvidia.so.0" \ | |||||
>${STAGEDIR}${PREFIX}/etc/libmap.d/nvidia.conf | |||||
.endif | .endif | ||||
.include <bsd.port.post.mk> | .include <bsd.port.post.mk> |