# Forked from Alpine Linux to provide latest git builds, useful for bleeding # edge driver support # # Any new drivers should be upstreamed to Alpine Linux once they appear in a # new Mesa stable release pkgname=mesa-git pkgver=0_git20200323 pkgrel=0 _commit="41412cc4b74e0b4b16f09df8c716adc57df851d7" pkgdesc="Mesa DRI OpenGL library (Git)" url="https://www.mesa3d.org" arch="all" license="MIT SGI-B-2.0 BSL-1.0" subpackages=" $pkgname-dev $pkgname-dri-classic:_dri $pkgname-dri-gallium:_dri $pkgname-va-gallium:_va $pkgname-vdpau-gallium:_vdpau $pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles $pkgname-xatracker $pkgname-osmesa $pkgname-gbm $pkgname-vulkan-ati:_vulkan $pkgname-dri-ati:_dri_deprecated $pkgname-dri-nouveau:_dri_deprecated " _llvmver=9 depends_dev=" libdrm-dev libxext-dev libxdamage-dev libxcb-dev libxshmfence-dev " # FIXME: Remove glslang when pmbootstrap can handle the conditional makedepends below makedepends=" $depends_dev bison eudev-dev expat-dev findutils flex gettext glslang elfutils-dev libtool libxfixes-dev libva-dev libvdpau-dev libx11-dev libxrandr-dev libxt-dev libxvmc-dev libxxf86vm-dev llvm$_llvmver-dev makedepend meson py3-mako py3-libxml2 python3 talloc-dev wayland-dev wayland-protocols xorgproto zlib-dev " source=" $pkgname-$_commit.tar.gz::https://gitlab.freedesktop.org/mesa/mesa/-/archive/$_commit.tar.gz adjust-cache-deflate-buffer.patch musl-fix-includes.patch add-use-elf-tls.patch time-fix.patch " provides="mesa" replaces="mesa-dricore mesa" builddir="$srcdir/mesa-$_commit" pcprefix="mesa-git" if [ "$CARCH" = x86 ]; then # Bug upstream that needs to be fixed options="$options textrels" fi _dri_driverdir=/usr/lib/xorg/modules/dri _dri_drivers="r100,r200,nouveau" _gallium_drivers="r300,r600,radeonsi,nouveau,swrast,virgl" _gallium_provides=" $pkgname-dri-swrast=$pkgver-r$pkgrel $pkgname-dri-virtio=$pkgver-r$pkgrel " _vulkan_drivers="amd" _arch_opts="" _vulkan_overlay_layer=false case "$CARCH" in x86*) _dri_drivers="${_dri_drivers},i915,i965" _gallium_drivers="${_gallium_drivers},svga,iris" _vulkan_drivers="${_vulkan_drivers},intel" _vulkan_overlay_layer=true makedepends="$makedepends glslang" subpackages="$subpackages \ $pkgname-dri-intel:_dri_deprecated \ $pkgname-vulkan-intel:_vulkan \ $pkgname-vulkan-layer:_vulkan_layer" _gallium_provides="$_gallium_provides $pkgname-dri-vmwgfx=$pkgver-r$pkgrel" _arch_opts="-Ddri3=true" case "$CARCH" in x86) _arch_opts="$_arch_opts -Dglx-read-only-text=true -Dasm=false";; esac ;; armhf|armv7|aarch64) _gallium_drivers="${_gallium_drivers},vc4,v3d,freedreno,kmsro,lima,panfrost,etnaviv,tegra" _gallium_provides="$_gallium_provides $pkgname-dri-vc4=$pkgver-r$pkgrel $pkgname-dri-v3d=$pkgver-r$pkgrel $pkgname-dri-freedreno=$pkgver-r$pkgrel $pkgname-dri-kmsro=$pkgver-r$pkgrel $pkgname-dri-lima=$pkgver-r$pkgrel $pkgname-dri-panfrost=$pkgver-r$pkgrel $pkgname-dri-etnaviv=$pkgver-r$pkgrel $pkgname-dri-tegra=$pkgver-r$pkgrel " ;; esac build() { export CFLAGS="$CFLAGS -D_XOPEN_SOURCE=700" export PATH=/usr/lib/llvm${_llvmver}/bin:$PATH meson \ --prefix=/usr \ --sysconfdir=/etc \ --mandir=/usr/share/man \ --localstatedir=/var \ --buildtype=debugoptimized \ -Ddri-drivers-path=$_dri_driverdir \ -Dgallium-drivers=$_gallium_drivers \ -Ddri-drivers=$_dri_drivers \ -Dvulkan-drivers=$_vulkan_drivers \ -Dvulkan-overlay-layer=$_vulkan_overlay_layer \ -Dplatforms=x11,drm,wayland \ -Dllvm=true \ -Dshared-llvm=true \ -Dshared-glapi=true \ -Dgbm=true \ -Dglx=dri \ -Dopengl=true \ -Dosmesa=gallium \ -Dgles1=false \ -Dgles2=true \ -Degl=true \ -Dgallium-xa=true \ -Dgallium-vdpau=true \ -Dgallium-va=true \ -Dgallium-xvmc=false \ -Dglx-use-tls=false \ -Dgallium-nine=false \ -Db_ndebug=true \ $_arch_opts \ . output # parallel build workaround ninja -C output src/compiler/nir/nir_intrinsics.h src/git_sha1.h ninja -C output } package() { DESTDIR="$pkgdir" ninja -C output install # Make abuild's version check happy (#386) sed -i s/-devel//g "$pkgdir"/usr/lib/pkgconfig/*.pc } dev() { provides="mesa-dev" replaces="mesa-dev" default_dev } egl() { pkgdesc="Mesa libEGL runtime libraries" depends="$pkgname" replaces="mesa-egl" provides="mesa-egl" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libEGL.so* "$subpkgdir"/usr/lib/ } gl() { pkgdesc="Mesa libGL runtime libraries" depends="$pkgname" replaces="mesa-gl" provides="mesa-gl" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libGL.so* "$subpkgdir"/usr/lib/ } glapi() { pkgdesc="Mesa shared glapi" depends="$pkgname" replaces="mesa-gles mesa-glapi" provides="mesa-glapi" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libglapi.so.* "$subpkgdir"/usr/lib/ } gles() { pkgdesc="Mesa libGLESv2 runtime libraries" depends="$pkgname" replaces="mesa-gles" provides="mesa-gles" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libGLES*.so* "$subpkgdir"/usr/lib/ } xatracker() { pkgdesc="Mesa XA state tracker for vmware" depends="$pkgname" replaces="mesa-xatracker" provides="mesa-xatracker" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libxatracker*.so.* "$subpkgdir"/usr/lib/ } osmesa() { pkgdesc="Mesa offscreen rendering libraries" depends="$pkgname" replaces="mesa-osmesa" provides="mesa-osmesa" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libOSMesa.so.* "$subpkgdir"/usr/lib/ } gbm() { pkgdesc="Mesa gbm library" depends="$pkgname" replaces="mesa-gbm" provides="mesa-gbm" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libgbm.so.* "$subpkgdir"/usr/lib/ } # Move links referencing the same file to the subpackage. # Usage: _mv_links # where is one of the libraries covered by the megadriver. # The example is used to find other links that point to the same file. _mv_links() { install -d "$subpkgdir"/$1 find -L "$pkgdir"/$1 -samefile "$pkgdir"/$1/$2 -print0 \ | xargs -0 -I{} mv {} "$subpkgdir"/$1/ } _mv_vulkan() { local i install -d "$subpkgdir"/usr/lib install -d "$subpkgdir"/usr/share/vulkan/icd.d for i in "$@"; do mv "$pkgdir"/usr/lib/libvulkan_$i.so "$subpkgdir"/usr/lib/ mv "$pkgdir"/usr/share/vulkan/icd.d/${i}* "$subpkgdir"/usr/share/vulkan/icd.d/ done } # Mesa uses "megadrivers" where multiple drivers are linked into one shared # library. This library is then hard-linked to separate files (one for each driver). # Each subpackage contains one megadriver so that all the hard-links are preserved. _dri() { local n=${subpkgname##*-dri-} pkgdesc="Mesa $n DRI drivers (Git)" # List all relevant subpackages to avoid conflicts with main mesa package. depends="$pkgname $pkgname-gl $pkgname-glapi $pkgname-gles $pkgname-egl $pkgname-gbm" provides="mesa-dri-$n" replaces="mesa-dri-$n" case $n in classic) # libmesa_dri_drivers.so _mv_links $_dri_driverdir radeon_dri.so ;; gallium) # libgallium_dri.so _mv_links $_dri_driverdir swrast_dri.so provides="$provides $_gallium_provides" ;; esac } # Compatibility packages for upgrading from the old (driver-specific) subpackages _dri_deprecated() { local n=${subpkgname##*-dri-} pkgdesc="Mesa DRI drivers for $n (DEPRECATED, Git)" depends="$pkgname-dri-classic $pkgname-dri-gallium" provides="mesa-dri-$n" replaces="mesa-dri-$n" case $n in ati|nouveau) depends="$depends $pkgname-va-gallium $pkgname-vdpau-gallium" ;; esac mkdir "$subpkgdir" } _va() { local n=${subpkgname##*-va-} pkgdesc="Mesa $n VAAPI drivers (Git)" depends="$pkgname libva" provides="mesa-va-$n" replaces="mesa-va-$n" case $n in gallium) # libgallium_drv_video.so _mv_links /usr/lib/dri radeonsi_drv_video.so ;; esac } _vdpau() { local n=${subpkgname##*-vdpau-} pkgdesc="Mesa $n VDPAU drivers (Git)" depends="$pkgname libvdpau" provides="mesa-vdpau-$n" replaces="mesa-vdpau-$n" case $n in gallium) # libvdpau_gallium.so.1.0.0 _mv_links /usr/lib/vdpau libvdpau_radeonsi.so.1.0.0 ;; esac } _vulkan() { local n=${subpkgname##*-vulkan-} pkgdesc="Mesa Vulkan API driver for $n (Git)" depends="$pkgname" replaces="mesa-vulkan-$n" provides="mesa-vulkan-$n" case $n in ati) _mv_vulkan radeon ;; intel) _mv_vulkan intel ;; esac } _vulkan_layer() { pkgdesc="Vulkan overlay layer to display information about the application" depends="$pkgname" replaces="mesa-vulkan-layer" provides="mesa-vulkan-layer" mkdir -p "$subpkgdir"/usr/share/vulkan "$subpkgdir"/usr/lib mv "$pkgdir"/usr/share/vulkan/explicit_layer.d "$subpkgdir"/usr/share/vulkan mv "$pkgdir"/usr/lib/libVkLayer_MESA_overlay.so "$subpkgdir"/usr/lib } sha512sums="3fb6f5894f4ba0460c29b4d0d6855e660572908d7829e5a43edf702d5997df8498bb766e7bcb2829572113b29792e4cde2750bba402ccfb09de32dd174937719 mesa-git-41412cc4b74e0b4b16f09df8c716adc57df851d7.tar.gz cdf22d2da3328e116c379264886bd01fd3ad5cc45fe03dc6fd97bdc4794502598ee195c0b9d975fa264d6ac31c6fa108c0535c91800ecf4fcabfd308e53074cc adjust-cache-deflate-buffer.patch cf849044d6cc7d2af4ff015208fb09d70bf9660538699797da21bda2ecb7c1892d312af83d05116afd826708d9caafb1d05a13f09139c558aea6fee931e3eee7 musl-fix-includes.patch 9aa207a38d538abbd8e7a7210e3081508563e85e8c27b2269b8f40fd62d9fc6fee0cb2f573a0e62c42f8ba0fb85740459b761f009d5991cfd9813d7614541908 add-use-elf-tls.patch 6a42ef5d60ccad7e39dee7b3a09b8a884548ce65af3fb17cd1bbd453cee0df7b367968b179e4b54fbc606b29753a1bab74f8c6136b1efaf4cfb9f084d9e76c66 time-fix.patch"