# 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 " 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" } }