File PKGBUILD of Package mesa
# Maintainer: Yukari Chiba <[email protected]> pkgbase='mesa' pkgname=( mesa opencl-mesa vulkan-gfxstream vulkan-intel vulkan-radeon vulkan-swrast vulkan-virtio vulkan-mesa-layers vulkan-nouveau ) pkgdesc="An open-source implementation of the OpenGL specification" pkgver=26.0.5 pkgrel=1 arch=(x86_64 aarch64 riscv64 loongarch64) depends=('libglvnd' 'libelf' 'zstd' 'libdrm' 'llvm' 'spirv-tools') makedepends=( 'libva' 'glslang' 'meson' 'wayland' 'wayland-protocols' 'python-packaging' 'libpng' 'llvm-devel' 'linux-headers' 'directx-headers' 'libdisplay-info' 'libclc' 'rust' 'rust-bindgen' 'spirv-llvm-translator' 'spirv-tools' 'python-mako' 'python-pycparser' 'python-yaml' 'cbindgen' ) url="https://www.mesa3d.org/" license=('custom') # mold may fails with lto enabled options=(!lto) _syn_pkgver=2.0.87 _quote_pkgver=1.0.35 _proc_macro2_pkgver=1.0.86 _unicode_ident_pkgver=1.0.12 _paste_pkgver=1.0.14 _rustc_hash_pkgver=2.1.1 source=( https://mesa.freedesktop.org/archive/$pkgbase-$pkgver.tar.xz syn-$_syn_pkgver.tar.gz::https://crates.io/api/v1/crates/syn/$_syn_pkgver/download quote-$_quote_pkgver.tar.gz::https://crates.io/api/v1/crates/quote/$_quote_pkgver/download proc-macro2-$_proc_macro2_pkgver.tar.gz::https://crates.io/api/v1/crates/proc-macro2/$_proc_macro2_pkgver/download unicode-ident-$_unicode_ident_pkgver.tar.gz::https://crates.io/api/v1/crates/unicode-ident/$_unicode_ident_pkgver/download paste-$_paste_pkgver.tar.gz::https://crates.io/api/v1/crates/paste/$_paste_pkgver/download rustc-hash-$_rustc_hash_pkgver.tar.gz::https://crates.io/api/v1/crates/rustc-hash/$_rustc_hash_pkgver/download ) sha512sums=('8aa03a46269b2443be15cbd516d523af78fdd35e5273f5346b9142d2d21e245f6d5fd47e7e90176b0444ea967540eaa7c62d217f599ca5a216ef83244ee97d5c' 'bcfff545d6dfefd81e09f8f30a86bdd85759b3a7d4093ef3365ed02718e10dbd604c52b94c9d7fa955d339fdc5b6c079940c6f345b5a48c52b5c8607794ca6f2' 'f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2' '1cdb7e22a35ae231d880c9420784c9acf97bda2db258b3d34aae5061dc1858449defe19a49e12c6a4173906aa72a4115059ac2db0fc760205fd2ab8b5b414434' 'bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920' '3a793f0e5e773a7f7defc798a4c17ae9a40d715144632ea6cb0a8c785e14c4212046491df016bb9838281f8eaf327a79f01c1e2ac5f26785c028bc880faff9ee' '87097d98d47f327d000041ab13acddc366f1500d9c3e5c82169c3358112c7a7c03701c9b3c2c81d9f9da65b7ebac1c479b179dfaf7c059cd0b929b4673e51084') [ "$CARCH" = x86_64 ] && pkgname+=(vulkan-dzn) [ "$CARCH" = aarch64 ] && pkgname+=(vulkan-panfrost vulkan-freedreno) build() { GALLIUM_DRI_COMMON="r300,r600,radeonsi,nouveau,virgl,svga,softpipe,llvmpipe,zink" VULKAN_DRI_COMMON="amd,gfxstream,intel,intel_hasvk,swrast,virtio,nouveau" case "${CARCH}" in x86_64) GALLIUM_DRI="${GALLIUM_DRI_COMMON},i915,iris,crocus,d3d12" VULKAN_DRI="${VULKAN_DRI_COMMON},microsoft-experimental" ;; aarch64) GALLIUM_DRI="${GALLIUM_DRI_COMMON},panfrost,freedreno,lima,etnaviv" VULKAN_DRI="${VULKAN_DRI_COMMON},panfrost,freedreno" ;; riscv64) GALLIUM_DRI="${GALLIUM_DRI_COMMON},etnaviv" VULKAN_DRI="${VULKAN_DRI_COMMON}" ;; loongarch64) GALLIUM_DRI="${GALLIUM_DRI_COMMON}" VULKAN_DRI="${VULKAN_DRI_COMMON}" ;; esac VULKAN_LAYER=device-select,intel-nullhw,overlay,screenshot,vram-report-limit # Let Meson read rust packages download in source(). export MESON_PACKAGE_CACHE_DIR="${srcdir}" ewe-meson $pkgbase-$pkgver build \ --libdir=lib \ -D platforms=wayland \ -Dglvnd=enabled \ -Dllvm=enabled \ -Dshared-glapi=enabled \ -Dglx=disabled \ -Dgles1=enabled \ -Dgles2=enabled \ -Dopengl=true \ -Dvulkan-drivers=${VULKAN_DRI} \ -Dvulkan-layers=${VULKAN_LAYER} \ -Dgallium-drivers=${GALLIUM_DRI} \ -Dgallium-extra-hud=true \ -Dgallium-rusticl=true \ -Dvideo-codecs=all \ -Dmicrosoft-clc=disabled \ -Dxlib-lease=disabled \ -Dandroid-libbacktrace=disabled \ -Dvalgrind=disabled \ -Dlibunwind=disabled \ -Dlmsensors=disabled \ -Ddefault_library=shared \ -Dllvm-orcjit=true \ -Dintel-rt=disabled \ -Dgallium-mediafoundation=disabled meson configure build meson compile -C build } package_mesa() { provides=( libva-mesa-driver mesa-libgl libva-driver opengl-driver ) conflicts=(libva-mesa-driver) replaces=(libva-mesa-driver) DESTDIR="${pkgdir}" meson install -C build cd $pkgdir # opencl-mesa _pick_ opencl-mesa usr/lib/libRusticlOpenCL* _pick_ opencl-mesa etc/OpenCL/vendors/rusticl.icd # vulkan-dzn _pick_ vulkan-dzn usr/share/vulkan/icd.d/dzn_icd.*.json _pick_ vulkan-dzn usr/lib/libvulkan_dzn.so _pick_ vulkan-dzn usr/lib/libspirv_to_dxil.* _pick_ vulkan-dzn usr/bin/spirv2dxil # vulkan-gfxstream _pick_ vulkan-gfxstream usr/share/vulkan/icd.d/gfxstream_vk_icd.*.json _pick_ vulkan-gfxstream usr/lib/libvulkan_gfxstream.so # vulkan-swrast _pick_ vulkan-swrast usr/share/vulkan/icd.d/lvp_icd*.json _pick_ vulkan-swrast usr/lib/libvulkan_lvp.so # vulkan-virtio _pick_ vulkan-virtio usr/share/vulkan/icd.d/virtio_icd*.json _pick_ vulkan-virtio usr/lib/libvulkan_virtio.so # vulkan-mesa-layers _pick_ vulkan-mesa-layers usr/share/vulkan/explicit_layer.d _pick_ vulkan-mesa-layers usr/share/vulkan/implicit_layer.d _pick_ vulkan-mesa-layers usr/lib/libVkLayer_*.so _pick_ vulkan-mesa-layers usr/bin/mesa-overlay-control.py # vulkan-radeon _pick_ vulkan-radeon usr/share/drirc.d/00-radv-defaults.conf _pick_ vulkan-radeon usr/share/vulkan/icd.d/radeon_icd*.json _pick_ vulkan-radeon usr/lib/libvulkan_radeon.so # vulkan-intel _pick_ vulkan-intel usr/share/vulkan/icd.d/intel_*.json _pick_ vulkan-intel usr/lib/libvulkan_intel*.so # vulkan-panfrost _pick_ vulkan-panfrost usr/share/vulkan/icd.d/panfrost_*.json _pick_ vulkan-panfrost usr/lib/libvulkan_panfrost.so # vulkan-freedreno _pick_ vulkan-freedreno usr/share/vulkan/icd.d/freedreno_icd*.json _pick_ vulkan-freedreno usr/lib/libvulkan_freedreno.so # vulkan-nouveau (NVK) _pick_ vulkan-nouveau usr/share/vulkan/icd.d/nouveau_icd*.json _pick_ vulkan-nouveau usr/lib/libvulkan_nouveau.so install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_opencl-mesa() { pkgdesc="Open-source OpenCL drivers" depends=( clang expat libdrm libelf zlib zstd libclc # For /usr/share/clc/ ) optdepends=("opencl-headers: headers necessary for OpenCL development") provides=('opencl-driver') replaces=("opencl-clover-mesa") conflicts=("opencl-clover-mesa") mv "$srcdir/pkgs/$pkgname/"{etc,usr} "${pkgdir}/" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } _vulkan_driver_deps=('expat' 'libdrm' 'llvm' 'vulkan-icd-loader' 'wayland' 'zlib' 'zstd' 'spirv-tools' 'libdisplay-info') package_vulkan-dzn() { pkgdesc="Open-source Vulkan driver for D3D12" depends=(${_vulkan_driver_deps[*]}) optdepends=("vulkan-mesa-layers: additional vulkan layers") provides=(vulkan-driver) mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-gfxstream() { pkgdesc="Open-source Vulkan driver for Graphics Streaming Kit" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-swrast() { pkgdesc="Open-source Vulkan driver for CPUs (Software Rasterizer)" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-virtio() { pkgdesc="Open-source Vulkan driver for Virtio-GPU (Venus)" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-radeon() { pkgdesc="Open-source Vulkan driver for AMD GPUs" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-intel() { pkgdesc="Open-source Vulkan driver for Intel GPUs" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-panfrost() { pkgdesc="Open-source Vulkan driver for Mali-GPUs" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-freedreno() { pkgdesc="Open-source Vulkan driver for Adreno GPUs" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-mesa-layers() { pkgdesc="Mesa's Vulkan layers" depends=('libdrm' 'libpng' 'wayland' 'python') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" } package_vulkan-nouveau() { pkgdesc="Open-source Vulkan driver for Nvidia Nouveau (NVK)" depends=(${_vulkan_driver_deps[*]}) optdepends=('vulkan-mesa-layers: additional vulkan layers') provides=('vulkan-driver') mv "$srcdir/pkgs/$pkgname/usr" "${pkgdir}/usr" install -Dm644 $srcdir/$pkgbase-$pkgver/docs/license.rst \ -t "$pkgdir/usr/share/licenses/$pkgname" }