mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-05-13 17:24:19 +02:00
388 lines
8.3 KiB
Text
388 lines
8.3 KiB
Text
# Contributor: David Heidelberg <david@ixit.cz>
|
|
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
|
|
pkgname=mesa
|
|
pkgver=25.0.5
|
|
pkgrel=1
|
|
pkgdesc="Mesa DRI OpenGL library"
|
|
url="https://www.mesa3d.org"
|
|
arch="all"
|
|
license="MIT AND SGI-B-2.0 AND BSL-1.0"
|
|
subpackages="
|
|
$pkgname-dbg
|
|
$pkgname-dev
|
|
$pkgname-dri-gallium:_gallium
|
|
$pkgname-va-gallium:_va
|
|
$pkgname-vdpau-gallium:_vdpau
|
|
$pkgname-egl
|
|
$pkgname-gl
|
|
$pkgname-gles
|
|
$pkgname-xatracker
|
|
$pkgname-gbm
|
|
$pkgname-vulkan-ati:_vulkan
|
|
$pkgname-vulkan-swrast:_vulkan
|
|
$pkgname-vulkan-layers:_vulkan_layers
|
|
$pkgname-libd3dadapter9
|
|
"
|
|
_llvmver=20
|
|
depends_dev="
|
|
libdrm-dev
|
|
libxext-dev
|
|
libxdamage-dev
|
|
libxcb-dev
|
|
libxshmfence-dev
|
|
"
|
|
makedepends="
|
|
$depends_dev
|
|
binutils
|
|
bison
|
|
eudev-dev
|
|
expat-dev
|
|
findutils
|
|
flex
|
|
gettext
|
|
elfutils-dev
|
|
glslang-dev
|
|
libtool
|
|
libxfixes-dev
|
|
libva-dev
|
|
libvdpau-dev
|
|
libx11-dev
|
|
libxml2-dev
|
|
libxrandr-dev
|
|
libxxf86vm-dev
|
|
llvm$_llvmver-dev
|
|
meson
|
|
py3-cparser
|
|
py3-mako
|
|
py3-packaging
|
|
py3-ply
|
|
py3-yaml
|
|
python3
|
|
vulkan-loader-dev
|
|
wayland-dev
|
|
wayland-protocols
|
|
xorgproto
|
|
zlib-dev
|
|
zstd-dev
|
|
"
|
|
source="
|
|
https://mesa.freedesktop.org/archive/mesa-${pkgver/_/-}.tar.xz
|
|
23575.patch
|
|
riscv64-tls.patch
|
|
"
|
|
builddir="$srcdir/mesa-${pkgver/_/-}"
|
|
|
|
_dri_driverdir=/usr/lib/dri
|
|
_gallium_drivers="r300,r600,radeonsi,nouveau,llvmpipe,virgl,zink"
|
|
_vulkan_drivers="amd,swrast"
|
|
_vulkan_layers="device-select,overlay"
|
|
|
|
# extra gallium per arch
|
|
case "$CARCH" in
|
|
x86*)
|
|
_gallium_drivers="$_gallium_drivers,svga,i915,iris,crocus"
|
|
;;
|
|
armhf|armv7|aarch64)
|
|
_gallium_drivers="$_gallium_drivers,vc4,v3d,freedreno,lima,panfrost,etnaviv,tegra"
|
|
_gallium_drivers="${_gallium_drivers//r300,}"
|
|
;;
|
|
riscv64|loongarch64)
|
|
_gallium_drivers="${_gallium_drivers//r300,}"
|
|
esac
|
|
|
|
# extra vulkan per arch
|
|
case "$CARCH" in
|
|
x86*)
|
|
_vulkan_drivers="$_vulkan_drivers,intel,intel_hasvk"
|
|
_vulkan_layers="$_vulkan_layers,intel-nullhw"
|
|
subpackages="
|
|
$subpackages
|
|
$pkgname-vulkan-intel:_vulkan
|
|
"
|
|
;;
|
|
aarch64)
|
|
_vulkan_drivers="$_vulkan_drivers,broadcom,freedreno,panfrost"
|
|
subpackages="
|
|
$subpackages
|
|
$pkgname-vulkan-broadcom:_vulkan
|
|
$pkgname-vulkan-freedreno:_vulkan
|
|
$pkgname-vulkan-panfrost:_vulkan
|
|
"
|
|
;;
|
|
esac
|
|
|
|
_intel_rt=disabled
|
|
case "$CARCH" in
|
|
x86_64) _intel_rt=enabled ;;
|
|
esac
|
|
|
|
case "$CARCH" in
|
|
x86)
|
|
# lto fails on x86 only
|
|
# mostly:
|
|
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21371
|
|
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21180
|
|
_lto=false
|
|
;;
|
|
*)
|
|
# ~5% smaller
|
|
# disable temporarily until resolved:
|
|
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/11846
|
|
_lto=false
|
|
;;
|
|
esac
|
|
|
|
case "$CARCH" in
|
|
armv7|aarch64|x86|x86_64)
|
|
_rusticl=true
|
|
makedepends="
|
|
$makedepends
|
|
clang$_llvmver-dev
|
|
libclc-dev~$_llvmver
|
|
rust
|
|
rust-bindgen
|
|
spirv-llvm-translator-dev
|
|
"
|
|
subpackages="
|
|
$subpackages
|
|
$pkgname-rusticl
|
|
"
|
|
;;
|
|
*)
|
|
_rusticl=false
|
|
;;
|
|
esac
|
|
|
|
build() {
|
|
# use -g1 to generate less debug info:
|
|
# 485 MiB -> ~80 MiB
|
|
export CFLAGS="$CFLAGS -O2 -g1"
|
|
export CXXFLAGS="$CXXFLAGS -O2 -g1"
|
|
export CPPFLAGS="$CPPFLAGS -O2 -g1"
|
|
|
|
PATH="$PATH:/usr/lib/llvm$_llvmver/bin" \
|
|
abuild-meson \
|
|
-Db_ndebug=true \
|
|
-Db_lto=$_lto \
|
|
-Dallow-kcmp=enabled \
|
|
-Dexpat=enabled \
|
|
-Dintel-rt=$_intel_rt \
|
|
-Dpower8=enabled \
|
|
-Dshader-cache=enabled \
|
|
-Dxlib-lease=enabled \
|
|
-Dxmlconfig=enabled \
|
|
-Dzstd=enabled \
|
|
-Dbackend_max_links=2 \
|
|
-Dbuild-tests=true \
|
|
-Ddri-drivers-path=$_dri_driverdir \
|
|
-Dgallium-drivers=$_gallium_drivers \
|
|
-Dvulkan-drivers=$_vulkan_drivers \
|
|
-Dvulkan-layers=$_vulkan_layers \
|
|
-Dplatforms=x11,wayland \
|
|
-Dllvm=enabled \
|
|
-Dshared-llvm=enabled \
|
|
-Dgbm=enabled \
|
|
-Dglx=dri \
|
|
-Dopengl=true \
|
|
-Dosmesa=false \
|
|
-Dgles1=enabled \
|
|
-Dgles2=enabled \
|
|
-Degl=enabled \
|
|
-Dgallium-extra-hud=true \
|
|
-Dgallium-nine=true \
|
|
-Dgallium-rusticl=$_rusticl \
|
|
-Dgallium-va=enabled \
|
|
-Dgallium-vdpau=enabled \
|
|
-Dgallium-xa=enabled \
|
|
-Drust_std=2021 \
|
|
-Dvideo-codecs=all \
|
|
. output
|
|
|
|
# Print config
|
|
meson configure --no-pager output
|
|
|
|
meson compile -C output
|
|
}
|
|
|
|
# Tests workarounds
|
|
case "$CARCH" in
|
|
armhf|armv7|riscv64|loongarch64|ppc64le)
|
|
# https://gitlab.alpinelinux.org/alpine/aports/-/issues/16525
|
|
_tests_opts="$_tests_opts --no-suite mesa:llvmpipe"
|
|
;;
|
|
s390x)
|
|
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/9507
|
|
# mesa:amd / ac_surface_modifier_test timeouts (CI perf issue I assume)
|
|
_tests_opts="$_tests_opts --no-suite mesa:gallium --no-suite mesa:llvmpipe --no-suite mesa:amd"
|
|
;;
|
|
esac
|
|
|
|
check() {
|
|
LC_ALL=C.UTF=8 meson test --print-errorlogs $_tests_opts -C output
|
|
}
|
|
|
|
package() {
|
|
provider_priority=100
|
|
DESTDIR="$pkgdir" meson install --no-rebuild -C output
|
|
}
|
|
|
|
egl() {
|
|
pkgdesc="Mesa libEGL runtime libraries"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
amove usr/lib/libEGL.so*
|
|
}
|
|
|
|
gl() {
|
|
pkgdesc="Mesa libGL runtime libraries"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
amove usr/lib/libGL.so*
|
|
}
|
|
|
|
gles() {
|
|
pkgdesc="Mesa libGLESv2 runtime libraries"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
amove usr/lib/libGLES*.so*
|
|
}
|
|
|
|
xatracker() {
|
|
pkgdesc="Mesa XA state tracker for vmware"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
amove usr/lib/libxatracker*.so.*
|
|
}
|
|
|
|
gbm() {
|
|
pkgdesc="Mesa gbm library"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
amove usr/lib/libgbm.so.*
|
|
}
|
|
|
|
libd3dadapter9() {
|
|
pkgdesc="Mesa directx9 adapter"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
amove usr/lib/d3d/d3dadapter9.so*
|
|
}
|
|
|
|
rusticl() {
|
|
pkgdesc="Mesa OpenCL driver"
|
|
depends="mesa=$pkgver-r$pkgrel clang$_llvmver-headers libclc~$_llvmver"
|
|
provider_priority=100
|
|
|
|
amove usr/lib/libRusticlOpenCL.so.*
|
|
amove etc/OpenCL/vendors/
|
|
}
|
|
|
|
# Move links referencing the same file to the subpackage.
|
|
# Usage: _mv_links <base directory> <example>
|
|
# where <example> 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
|
|
for i in "$@"; do
|
|
amove usr/lib/libvulkan_$i*.so
|
|
amove usr/share/vulkan/icd.d/${i}_*.*
|
|
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.
|
|
|
|
_gallium() {
|
|
pkgdesc="Mesa gallium DRI drivers"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
# libgallium_dri.so
|
|
_mv_links $_dri_driverdir swrast_dri.so
|
|
}
|
|
|
|
_va() {
|
|
local n=${subpkgname##*-va-}
|
|
pkgdesc="Mesa $n VAAPI drivers"
|
|
depends="mesa=$pkgver-r$pkgrel libva"
|
|
provider_priority=100
|
|
|
|
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"
|
|
depends="mesa=$pkgver-r$pkgrel libvdpau"
|
|
provider_priority=100
|
|
|
|
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"
|
|
depends="mesa=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
|
|
case $n in
|
|
ati)
|
|
_mv_vulkan radeon ;;
|
|
intel)
|
|
_mv_vulkan intel ;;
|
|
broadcom)
|
|
_mv_vulkan broadcom ;;
|
|
freedreno)
|
|
_mv_vulkan freedreno ;;
|
|
panfrost)
|
|
_mv_vulkan panfrost ;;
|
|
swrast)
|
|
_mv_vulkan lvp ;;
|
|
esac
|
|
}
|
|
|
|
_vulkan_layers() {
|
|
pkgdesc="collection of vulkan layers from mesa"
|
|
depends="python3"
|
|
provider_priority=100
|
|
|
|
# Remove this after the release of the next stable (3.14)
|
|
# it originally was claed layer as it only packaged the
|
|
# overlay one but now it also packages device-select and
|
|
# intel-nullhw (on x86*)
|
|
provides="$pkgname-vulkan-layer=$pkgver-r$pkgrel"
|
|
provider_priority=100
|
|
replaces="$pkgname-vulkan-layer=$pkgver-r$pkgrel"
|
|
|
|
amove usr/share/vulkan/explicit_layer.d
|
|
amove usr/share/vulkan/implicit_layer.d
|
|
amove usr/lib/libVkLayer_*.so
|
|
amove usr/bin/mesa-overlay-control.py
|
|
}
|
|
|
|
sha512sums="
|
|
d65e027829e3bef60bc0e3e71160e6b3721e797e2157c71dbeef0cd6e202f8f8098b3cd41159cd0e96e520eaf92ea49c2c9bb1af1a54867b6a7c551c2197c068 mesa-25.0.5.tar.xz
|
|
4cfd6532a96103589efd885240ce12414b473aed05956507e0b78a46e44216974adac1a8dc22db0d185e6c8a98988ebaed79ac0e83156c75a41199591f52f944 23575.patch
|
|
ce1887fb7d425b94c375a0547bee40c308809c01f5ce1bcddabcc69a7fcb445efb9d5f5c7bac49b2778ab40687c7bce204d278b0bf028d124c75e59083107fba riscv64-tls.patch
|
|
"
|