2025-02-08 12:30:19 -05:00

183 lines
6.0 KiB
Bash

# Template file for 'mesa-asahi'
pkgname=mesa-asahi
version=25.0.0+20241211
revision=2
_llvmver=19
_mesaver=${version%+*}
archs="aarch64*"
build_style=meson
build_helper="qemu"
#Disable LTO flag should be present, see https://gitlab.freedesktop.org/mesa/mesa/-/issues/6911
configure_args="-Dglvnd=enabled -Dshared-glapi=enabled -Dgbm=enabled -Degl=enabled
-Dosmesa=true -Dgles1=enabled -Dgles2=enabled -Dglx=dri
-Dlmsensors=enabled -Dplatforms=x11$(vopt_if wayland ,wayland)
-Dllvm=enabled -Db_lto=false -Dcpp_std=gnu++17
-Dgallium-vdpau=enabled -Dgallium-va=enabled
-Dvulkan-drivers=swrast,virtio,asahi -Dvulkan-layers=device-select,overlay
-Dgallium-drivers=swrast,asahi,virgl,zink
-Dgallium-opencl=icd -Dgallium-rusticl=true -Drust_std=2021"
hostmakedepends="gettext flex pkg-config python3-Mako glslang llvm${_llvmver}
$(vopt_if wayland 'wayland-protocols wayland-devel') python3-pycparser python3-yaml
clang${_llvmver} rust rust-bindgen"
makedepends="elfutils-devel expat-devel libXdamage-devel
libXxf86vm-devel libdrm-devel libffi-devel libva-devel
libvdpau-devel libxshmfence-devel ncurses-devel zlib-devel
$(vopt_if wayland 'wayland-devel wayland-protocols') llvm${_llvmver}-devel libsensors-devel
libXrandr-devel libglvnd-devel libzstd-devel libxml2-devel lua53-devel
libarchive-devel vulkan-loader clang${_llvmver} libclc${_llvmver} rust
SPIRV-LLVM-Translator${_llvmver}-devel SPIRV-Tools-devel"
depends="libglvnd"
short_desc="Open source implementation of OpenGL and Vulkan - Asahi"
maintainer="dkwo <npiazza@disroot.org>"
license="MIT, LGPL-2.1-or-later"
homepage="https://www.mesa3d.org/"
changelog="https://docs.mesa3d.org/relnotes.html"
distfiles="https://gitlab.freedesktop.org/asahi/mesa/-/archive/asahi-${version#*+}/mesa-asahi-${version#*+}.tar.gz"
checksum=b92a8a2bf034fd29aa1f619eda241e874be1a4cbd3db0bafaba534eef6674145
replaces="mesa>=0 mesa-libgallium>=0 libglapi>=0"
provides="mesa-${_mesaver}_${revision} mesa-libgallium-${_mesaver}_${revision} libglapi-${_mesaver}_${revision}"
shlib_provides="libglapi.so libgallium-${_mesaver}-devel.so"
# alphabetical order is not good
subpackages="libgbm-asahi libgbm-asahi-devel libOSMesa-asahi MesaLib-asahi-devel
mesa-asahi-opencl mesa-asahi-vaapi mesa-asahi-vdpau mesa-asahi-vulkan-overlay-layer
mesa-asahi-dri"
build_options="wayland"
build_options_default="wayland"
# Replace old mesa pkgs, superseded by libglvnd.
replaces="libGL>=10_1<19.2.5_2 libEGL>=10_1<19.2.5_2 libGLES>=10_1<19.2.5_2"
post_configure() {
if [ "$CROSS_BUILD" ]; then
find -iname "*.ninja" -exec sed -i "{}" \
-e "/rustc/s; --sysroot ${XBPS_CROSS_BASE}/usr;;g" \
-e "s|-isystem/usr/include||g" \
\;
fi
}
post_install() {
vlicense docs/license.rst
# ensure that each eligible architecture ships its multilib icd files
# in some cases, multiple counterpart architectures may exist (aarch64)
# this allows us to not have to ship these files in the current *-32bit packages
local arch=${XBPS_TARGET_MACHINE%-*}
local oarchs
local olibdir="/usr/lib32/"
if [ "$XBPS_TARGET_WORDSIZE" = "32" ]; then
olibdir="/usr/lib64/"
fi
oarchs="armv6l armv7l"
for oarch in $oarchs; do
for icd in ${DESTDIR}/usr/share/vulkan/icd.d/*_icd.${arch}.json; do
sed "s#/usr/lib${XBPS_TARGET_WORDSIZE}/#${olibdir}#g" \
${icd} > ${icd/.${arch}/.${oarch}}
done
done
}
libgbm-asahi_package() {
short_desc="Mesa Generic buffer management API - runtime"
replaces="libgbm>=0"
provides="libgbm-${_mesaver}_${revision}"
pkg_install() {
vmove "usr/lib/libgbm.so.*"
}
}
libgbm-asahi-devel_package() {
short_desc="Mesa Generic buffer management API - development files"
depends="libgbm-asahi>=${version}_${revision}"
replaces="libgbm-devel>=0"
provides="libgbm-devel-${_mesaver}_${revision}"
pkg_install() {
vmove usr/include/gbm.h
vmove usr/lib/libgbm.so
vmove usr/lib/pkgconfig/gbm.pc
}
}
libOSMesa-asahi_package() {
short_desc="Mesa Off-Screen interface library"
replaces="libOSMesa>=0"
provides="libOSMesa-${_mesaver}_${revision}"
pkg_install() {
vmove "usr/lib/libOSMesa.so.*"
}
}
MesaLib-asahi-devel_package() {
depends="mesa-asahi>=${version}_${revision} libOSMesa-asahi>=${version}_${revision}
libgbm-asahi-devel>=${version}_${revision}"
depends+=" libdrm-devel libglvnd-devel"
replaces="MesaLib-devel>=0"
provides="MesaLib-devel-${_mesaver}_${revision}"
short_desc+=" - development files"
pkg_install() {
vmove usr/include
vmove usr/lib/pkgconfig
vmove usr/lib/libEGL_mesa.so
vmove usr/lib/libGLX_mesa.so
vmove usr/lib/libOSMesa.so
vmove usr/lib/libglapi.so
}
}
mesa-asahi-dri_package() {
short_desc="Mesa DRI drivers"
depends="mesa-asahi-${version}_${revision}"
replaces="mesa-dri>=0"
provides="mesa-dri-${_mesaver}_${revision}"
shlib_provides="libgallium_dri.so" # workaround for mesa-dri-32bit
pkg_install() {
vmove usr/lib/dri
}
}
mesa-asahi-opencl_package() {
short_desc="Mesa implementation of OpenCL (r600+ only)"
depends="libclc${_llvmver}"
replaces="mesa-opencl>=0"
provides="mesa-opencl-${_mesaver}_${revision}"
pkg_install() {
vmove etc/OpenCL
vmove usr/lib/gallium-pipe
vmove "usr/lib/libMesaOpenCL.so.*"
vmove "usr/lib/libRusticlOpenCL.so.*"
}
}
mesa-asahi-vaapi_package() {
short_desc="Mesa VA-API drivers"
replaces="mesa-vaapi>=0"
provides="mesa-vaapi-${_mesaver}_${revision}"
shlib_provides="libgallium_drv_video.so" # workaround for mesa-vaapi-32bit
pkg_install() {
vmove "usr/lib/dri/*_drv_video.so"
}
}
mesa-asahi-vdpau_package() {
short_desc="Mesa VDPAU drivers"
replaces="mesa-vdpau>=0"
provides="mesa-vdpau-${_mesaver}_${revision}"
pkg_install() {
vmove "usr/lib/vdpau/libvdpau_*"
}
}
mesa-asahi-vulkan-overlay-layer_package() {
short_desc="Vulkan layer to display information about the running application"
replaces="mesa-vulkan-overlay-layer>=0"
provides="mesa-vulkan-overlay-layer-${_mesaver}_${revision}"
pkg_install() {
vmove "usr/share/vulkan/explicit_layer.d/VkLayer_*.json"
vmove "usr/share/vulkan/implicit_layer.d/VkLayer_*.json"
vmove "usr/bin/mesa-overlay-control.py"
vmove "usr/lib/libVkLayer_*.so"
}
}