git: b44acc9409bd - main - graphics/mesa-libs: enable libglvnd support
Kevin Bowling
kevin.bowling at kev009.com
Thu Jun 17 04:30:10 UTC 2021
Approved by: maintainer timeout
On Wed, Jun 16, 2021 at 9:26 PM Kevin Bowling <kbowling at freebsd.org> wrote:
>
> The branch main has been updated by kbowling:
>
> URL: https://cgit.FreeBSD.org/ports/commit/?id=b44acc9409bd3bdd92e86e35c06d50e2134b02f2
>
> commit b44acc9409bd3bdd92e86e35c06d50e2134b02f2
> Author: Jan Beich <jbeich at FreeBSD.org>
> AuthorDate: 2021-06-16 15:48:02 +0000
> Commit: Kevin Bowling <kbowling at FreeBSD.org>
> CommitDate: 2021-06-17 04:25:27 +0000
>
> graphics/mesa-libs: enable libglvnd support
>
> PR: 246767
> Reviewed by: kbowling
> Tested by: kbowling
> Differential Revision: https://reviews.freebsd.org/D25020
> ---
> Mk/Uses/gl.mk | 10 ++---
> Mk/bsd.default-versions.mk | 4 +-
> graphics/glad/Makefile | 2 +-
> graphics/libglvnd/Makefile | 4 +-
> graphics/mesa-devel/Makefile | 1 +
> graphics/mesa-libs/Makefile | 9 ++++-
> graphics/mesa-libs/pkg-plist | 76 +++++++++++++++++++-------------------
> misc/raspberrypi-userland/Makefile | 2 +-
> x11/nvidia-driver/Makefile | 30 +++++++++------
> x11/nvidia-driver/pkg-plist | 6 +--
> 10 files changed, 81 insertions(+), 63 deletions(-)
>
> diff --git a/Mk/Uses/gl.mk b/Mk/Uses/gl.mk
> index eb8850774b29..7d71d9724d92 100644
> --- a/Mk/Uses/gl.mk
> +++ b/Mk/Uses/gl.mk
> @@ -13,12 +13,12 @@
> .if !defined(_INCLUDE_USES_GL_MK)
> _INCLUDE_USES_GL_MK=yes
>
> -_GL_egl_LIB_DEPENDS= libEGL.so:graphics/mesa-libs
> -_GL_gbm_LIB_DEPENDS= libgbm.so:graphics/mesa-libs
> -_GL_gl_LIB_DEPENDS= libGL.so:graphics/mesa-libs
> +_GL_egl_LIB_DEPENDS= libEGL.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> +_GL_gbm_LIB_DEPENDS= libgbm.so:graphics/${GL_DEFAULT:S/,/ /g:[-1]}
> +_GL_gl_LIB_DEPENDS= libGL.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> _GL_gl_USE_XORG= xorgproto
> -_GL_glesv1_LIB_DEPENDS= libGLESv1_CM.so:graphics/mesa-libs
> -_GL_glesv2_LIB_DEPENDS= libGLESv2.so:graphics/mesa-libs
> +_GL_glesv1_LIB_DEPENDS= libGLESv1_CM.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> +_GL_glesv2_LIB_DEPENDS= libGLESv2.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> _GL_glew_LIB_DEPENDS= libGLEW.so:graphics/glew
> _GL_glu_LIB_DEPENDS= libGLU.so:graphics/libGLU
> _GL_glu_USE_XORG= xorgproto
> diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
> index f923ca84ff36..a3b836ea2fee 100644
> --- a/Mk/bsd.default-versions.mk
> +++ b/Mk/bsd.default-versions.mk
> @@ -17,7 +17,7 @@ _INCLUDE_BSD_DEFAULT_VERSIONS_MK= yes
>
> LOCALBASE?= /usr/local
>
> -.for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC GHOSTSCRIPT \
> +.for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC GHOSTSCRIPT GL \
> IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM LUA MYSQL NINJA PERL5 \
> PGSQL PHP PYTHON PYTHON2 PYTHON3 RUBY RUST SAMBA SSL TCLTK VARNISH
> .if defined(${lang}_DEFAULT)
> @@ -51,6 +51,8 @@ GCC_DEFAULT?= 8
> .else
> GCC_DEFAULT?= 10
> .endif
> +# Possible values (tuple): libglvnd, mesa-libs, mesa-devel
> +GL_DEFAULT?= libglvnd,mesa-libs
> # Possible values: 7, 8, 9, agpl
> GHOSTSCRIPT_DEFAULT?= agpl
> # Possible values: 6, 6-nox11, 7, 7-nox11
> diff --git a/graphics/glad/Makefile b/graphics/glad/Makefile
> index df7f0cb77d73..e1508f82da6e 100644
> --- a/graphics/glad/Makefile
> +++ b/graphics/glad/Makefile
> @@ -16,6 +16,6 @@ USE_LDCONFIG= yes
>
> CMAKE_ON= GLAD_INSTALL BUILD_SHARED_LIBS GLAD_REPRODUCIBLE
>
> -CONFLICTS_INSTALL= mesa-libs # include/KHR/khrplatform.h, see https://github.com/Dav1dde/glad/issues/260
> +CONFLICTS_INSTALL= libglvnd # include/KHR/khrplatform.h, see https://github.com/Dav1dde/glad/issues/260
>
> .include <bsd.port.mk>
> diff --git a/graphics/libglvnd/Makefile b/graphics/libglvnd/Makefile
> index f0f2e55f8c1d..c8babe24ac12 100644
> --- a/graphics/libglvnd/Makefile
> +++ b/graphics/libglvnd/Makefile
> @@ -2,14 +2,12 @@ PORTNAME= libglvnd
> DISTVERSION= 1.3.2
> CATEGORIES= graphics
>
> -MAINTAINER= greg at unrelenting.technology
> +MAINTAINER= x11 at FreeBSD.org
> COMMENT= GL Vendor-Neutral Dispatch library
>
> LICENSE= APACHE20 MIT
> LICENSE_COMB= multi
>
> -CONFLICTS_INSTALL= mesa-libs # include/GL/gl.h
> -
> USES= localbase meson pkgconfig
> USE_LDCONFIG= yes
>
> diff --git a/graphics/mesa-devel/Makefile b/graphics/mesa-devel/Makefile
> index 55792878a42d..07eec60ddd30 100644
> --- a/graphics/mesa-devel/Makefile
> +++ b/graphics/mesa-devel/Makefile
> @@ -1,6 +1,7 @@
> PORTNAME= mesa
> DISTVERSION= 21.1-branchpoint-3077
> DISTVERSIONSUFFIX= -geb272f65715
> +PORTREVISION= 1
> CATEGORIES= graphics
> PKGNAMESUFFIX= -devel
>
> diff --git a/graphics/mesa-libs/Makefile b/graphics/mesa-libs/Makefile
> index 02155a2ace99..5ebe41c1078e 100644
> --- a/graphics/mesa-libs/Makefile
> +++ b/graphics/mesa-libs/Makefile
> @@ -2,11 +2,12 @@
>
> PORTNAME= mesa-libs
> PORTVERSION= ${MESAVERSION}
> +PORTREVISION= 1
> CATEGORIES= graphics
>
> COMMENT= OpenGL libraries that support GLX and EGL clients
>
> -CONFLICTS_INSTALL= libglvnd # include/GL/gl.h
> +BUILD_DEPENDS= libglvnd>0:graphics/libglvnd
>
> OPTIONS_GROUP= PLATFORM
> OPTIONS_GROUP_PLATFORM= PLATFORM_X11 PLATFORM_WAYLAND
> @@ -43,6 +44,7 @@ MESON_ARGS+= -Dgallium-drivers="" \
> -Degl=enabled \
> -Dgbm=enabled \
> -Dvulkan-drivers="" \
> + -Dglvnd=true \
> -Dprefer-iris=true
> # Building EGL and GBM requires a dri driver so add swrast
> MESON_ARGS+= -Ddri-drivers="swrast"
> @@ -72,4 +74,9 @@ USE_GCC= yes
>
> .include "${MASTERDIR}/Makefile.targets"
>
> +post-install:
> +# Fallback if GLX_EXT_libglvnd is missing or vendor library doesn't exist
> + @${ECHO_CMD} "libGLX_indirect.so.0 libGLX_mesa.so.0" \
> + >${STAGEDIR}${PREFIX}/etc/libmap.d/mesa.conf
> +
> .include <bsd.port.post.mk>
> diff --git a/graphics/mesa-libs/pkg-plist b/graphics/mesa-libs/pkg-plist
> index 04dcaa4f87a5..4f4924cfd8b1 100644
> --- a/graphics/mesa-libs/pkg-plist
> +++ b/graphics/mesa-libs/pkg-plist
> @@ -1,41 +1,42 @@
> -include/EGL/egl.h
> -include/EGL/eglext.h
> +etc/libmap.d/mesa.conf
> + at comment include/EGL/egl.h
> + at comment include/EGL/eglext.h
> include/EGL/eglextchromium.h
> include/EGL/eglmesaext.h
> -include/EGL/eglplatform.h
> -include/GL/gl.h
> -include/GL/glcorearb.h
> -include/GL/glext.h
> -%%GLX%%include/GL/glx.h
> -%%GLX%%include/GL/glxext.h
> + at comment include/EGL/eglplatform.h
> + at comment include/GL/gl.h
> + at comment include/GL/glcorearb.h
> + at comment include/GL/glext.h
> +%%GLX%%@comment include/GL/glx.h
> +%%GLX%%@comment include/GL/glxext.h
> @comment include/GL/internal/dri_interface.h
> -include/GLES/egl.h
> -include/GLES/gl.h
> -include/GLES/glext.h
> -include/GLES/glplatform.h
> -include/GLES2/gl2.h
> -include/GLES2/gl2ext.h
> -include/GLES2/gl2platform.h
> -include/GLES3/gl3.h
> -include/GLES3/gl31.h
> -include/GLES3/gl32.h
> -include/GLES3/gl3ext.h
> -include/GLES3/gl3platform.h
> -include/KHR/khrplatform.h
> + at comment include/GLES/egl.h
> + at comment include/GLES/gl.h
> + at comment include/GLES/glext.h
> + at comment include/GLES/glplatform.h
> + at comment include/GLES2/gl2.h
> + at comment include/GLES2/gl2ext.h
> + at comment include/GLES2/gl2platform.h
> + at comment include/GLES3/gl3.h
> + at comment include/GLES3/gl31.h
> + at comment include/GLES3/gl32.h
> + at comment include/GLES3/gl3ext.h
> + at comment include/GLES3/gl3platform.h
> + at comment include/KHR/khrplatform.h
> include/gbm.h
> @comment lib/dri/swrast_dri.so
> -lib/libEGL.so
> -lib/libEGL.so.1
> -lib/libEGL.so.1.0.0
> -%%GLX%%lib/libGL.so
> -%%GLX%%lib/libGL.so.1
> -%%GLX%%lib/libGL.so.1.2.0
> -lib/libGLESv1_CM.so
> -lib/libGLESv1_CM.so.1
> -lib/libGLESv1_CM.so.1.1.0
> -lib/libGLESv2.so
> -lib/libGLESv2.so.2
> -lib/libGLESv2.so.2.0.0
> +lib/libEGL_mesa.so
> +lib/libEGL_mesa.so.0
> +lib/libEGL_mesa.so.0.0.0
> + at comment lib/libGLESv1_CM.so
> + at comment lib/libGLESv1_CM.so.1
> + at comment lib/libGLESv1_CM.so.1.1.0
> + at comment lib/libGLESv2.so
> + at comment lib/libGLESv2.so.2
> + at comment lib/libGLESv2.so.2.0.0
> +%%GLX%%lib/libGLX_mesa.so
> +%%GLX%%lib/libGLX_mesa.so.0
> +%%GLX%%lib/libGLX_mesa.so.0.0.0
> lib/libgbm.so
> lib/libgbm.so.1
> lib/libgbm.so.1.0.0
> @@ -43,9 +44,10 @@ lib/libglapi.so
> lib/libglapi.so.0
> lib/libglapi.so.0.0.0
> @comment libdata/pkgconfig/dri.pc
> -libdata/pkgconfig/egl.pc
> + at comment libdata/pkgconfig/egl.pc
> libdata/pkgconfig/gbm.pc
> -%%GLX%%libdata/pkgconfig/gl.pc
> -libdata/pkgconfig/glesv1_cm.pc
> -libdata/pkgconfig/glesv2.pc
> +%%GLX%%@comment libdata/pkgconfig/gl.pc
> + at comment libdata/pkgconfig/glesv1_cm.pc
> + at comment libdata/pkgconfig/glesv2.pc
> @comment share/drirc.d/00-mesa-defaults.conf
> +share/glvnd/egl_vendor.d/50_mesa.json
> diff --git a/misc/raspberrypi-userland/Makefile b/misc/raspberrypi-userland/Makefile
> index 5dfa743da18c..42fad99b9736 100644
> --- a/misc/raspberrypi-userland/Makefile
> +++ b/misc/raspberrypi-userland/Makefile
> @@ -11,7 +11,7 @@ LICENSE= BSD3CLAUSE
>
> ONLY_FOR_ARCHS= armv6 armv7
>
> -CONFLICTS_INSTALL= mesa-libs
> +CONFLICTS_INSTALL= libglvnd
>
> USES= cmake pkgconfig shebangfix
>
> diff --git a/x11/nvidia-driver/Makefile b/x11/nvidia-driver/Makefile
> index daa727149404..23efd76bbbda 100644
> --- a/x11/nvidia-driver/Makefile
> +++ b/x11/nvidia-driver/Makefile
> @@ -16,7 +16,7 @@
> PORTNAME?= nvidia-driver
> DISTVERSION?= 460.80
> # 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}
> @@ -32,6 +32,7 @@ LICENSE_FILE= ${WRKSRC}/doc/license.txt
> # obj/libEGL_nvidia.so.0 (see below)
> .if ${NVVERSION} >= 410.057
> PATCH_DEPENDS= gsed:textproc/gsed
> +BUILD_DEPENDS= pkg-config:devel/pkgconf libglvnd>0:graphics/libglvnd
> .endif
>
> USES= kmod uidfix xorg
> @@ -281,6 +282,7 @@ post-install: .SILENT
> .elif ${NVVERSION} < 465.01901
> ${REINPLACE_CMD} -e '/lib32\/libnvidia-glvkspirv\.so/d' ${TMPPLIST}
> .endif
> +.if ${NVVERSION} < 410.057
> # Rename some libraries and install a libmap file to resolve conflict with
> # Mesa libraries.
> ${LN} -sf libGL-NVIDIA.so.1 \
> @@ -288,7 +290,7 @@ post-install: .SILENT
> ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGL.so.1 \
> ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1
> ${RM} ${STAGEDIR}${PREFIX}/lib/libGL.so
> -.if ${NVVERSION} >= 331.013
> +. if ${NVVERSION} >= 331.013
> ${LN} -sf libEGL-NVIDIA.so.1 \
> ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so
> ${MV} -f ${STAGEDIR}${PREFIX}/lib/libEGL.so.1 \
> @@ -301,14 +303,14 @@ post-install: .SILENT
> ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGLESv2.so.2 \
> ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2
> ${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv2.so
> -.endif
> -# Configuration of Nvidia as secondary GPU requires preserving Mesa libraries
> -# as default implementation; a libmap must not override in this case.
> -.if !defined(LIBGLDIR)
> +. endif
> +# Configuration of Nvidia as secondary GPU requires preserving libglvnd or mesa
> +# libraries as default implementation; a libmap must not override in this case.
> +. if !defined(LIBGLDIR)
> @${MKDIR} ${STAGEDIR}${PREFIX}/etc/libmap.d/
> ${INSTALL_DATA} ${WRKDIR}/nvidia.conf \
> ${STAGEDIR}${PREFIX}/etc/libmap.d/
> -.else
> +. else
> # libgl proxies require a library path containing unrenamed lib*GL*.so
> ${MKDIR} ${STAGEDIR}${PREFIX}/${LIBGLDIR}
> ${RLN} ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 \
> @@ -317,17 +319,23 @@ post-install: .SILENT
> ${STAGEDIR}${PREFIX}/${LIBGLDIR}/libEGL.so.1
> ${RLN} ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 \
> ${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGLESv2.so.2
> -.endif
> +. 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.
> # 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}
> ${MV} ${STAGEDIR}${PREFIX}/${MODULESDIR}/extensions/.nvidia/* \
> ${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
>
> .include <bsd.port.post.mk>
> diff --git a/x11/nvidia-driver/pkg-plist b/x11/nvidia-driver/pkg-plist
> index 85156cdb6eff..caa1dc84ae52 100644
> --- a/x11/nvidia-driver/pkg-plist
> +++ b/x11/nvidia-driver/pkg-plist
> @@ -17,9 +17,9 @@ lib/libGLESv2-NVIDIA.so
> lib/libGLESv2-NVIDIA.so.2
> lib/libGLESv2_nvidia.so
> lib/libGLESv2_nvidia.so.2
> -lib/libGLX.so
> -lib/libGLX.so.0
> -lib/libGLX_indirect.so.0
> +%%LIBGLDIR%%/libGLX.so
> +%%LIBGLDIR%%/libGLX.so.0
> + at comment lib/libGLX_indirect.so.0
> lib/libGLX_nvidia.so
> lib/libGLX_nvidia.so.0
> lib/libGLdispatch.so
More information about the dev-commits-ports-all
mailing list