# Template file for 'mesa' pkgname=mesa version=23.3.5 revision=3 build_style=meson _llvmver=17 #Disable LTO flag should be present, see https://gitlab.freedesktop.org/mesa/mesa/-/issues/6911 configure_args="-Dglvnd=true -Dshared-glapi=enabled -Dgbm=enabled -Degl=enabled -Dosmesa=true -Dgles1=enabled -Dgles2=enabled -Dglx=dri -Ddri3=enabled -Dlmsensors=enabled -Dplatforms=x11$(vopt_if wayland ,wayland) -Dllvm=enabled -Db_lto=false -Dcpp_std=gnu++17" hostmakedepends="gettext flex pkg-config python3-Mako glslang llvm${_llvmver} $(vopt_if wayland 'wayland-protocols wayland-devel')" 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" depends="libglvnd" short_desc="Open source implementation of OpenGL and Vulkan" maintainer="Orphaned " license="MIT, LGPL-2.1-or-later" homepage="https://www.mesa3d.org/" changelog="https://docs.mesa3d.org/relnotes.html" distfiles="https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz" checksum=69ccb1278641ff5bad71ca0f866188aeb1a92aadc4dbb9d35f50aebec5b8b50f build_options="wayland" build_options_default="wayland" # only use llvmpipe on targets where it's supported and reliable # especially on big endian it's all kinds of broken, and e.g. on # 32-bit powerpc it does not work at all, so fall back to softpipe case "$XBPS_TARGET_MACHINE" in i686*|x86_64*|aarch64*|ppc64le*|arm*) ;; *) configure_args+=" -Ddraw-use-llvm=false" ;; esac # Set subpackages manually to set proper rdeps in 32bit pkgs. subpackages="libglapi libgbm libgbm-devel libOSMesa" # 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" # Driver configuration # Check for correctness on major mesa version updates # Particularly, check if any new worthwhile drivers were added # swrast always present _gallium_drivers=" -Dgallium-drivers=swrast" _vulkan_drivers=" -Dvulkan-drivers=" # amd and nvidia drivers on all platforms except where it makes no sense # amd implicitly enables clover opencl, also enable hwdec and virgl too case "$XBPS_TARGET_MACHINE" in armv5*|mips*) ;; *) _have_nv=yes _have_amd=yes _have_hwdec=yes _have_virgl=yes ;; esac # x86 additionally gets intel, vmware and gallium nine # arm gets its own drivers (for mali, tegra etc.) case "$XBPS_TARGET_MACHINE" in i686*|x86_64*) _have_intel=yes _have_vmware=yes _have_nine=yes ;; armv[67]*|aarch64*) _have_arm=yes ;; esac if [ "$_have_amd" ]; then # amd cards can use clover _have_opencl=yes _have_vulkan=yes _gallium_drivers+=",r300,r600,radeonsi" _vulkan_drivers+=",amd" subpackages+=" mesa-vulkan-radeon" # transitional dummy packages subpackages+=" mesa-ati-dri" configure_args+=" -Dvideo-codecs=h264dec,h264enc,h265dec,h265enc,vc1dec" fi if [ "$_have_intel" ]; then _have_vulkan=yes _gallium_drivers+=",crocus,iris,i915" _vulkan_drivers+=",intel,intel_hasvk" subpackages+=" mesa-vulkan-intel" # transitional dummy packages subpackages+=" mesa-intel-dri" fi if [ "$_have_nv" ]; then _gallium_drivers+=",nouveau" if [ "$_have_arm" ]; then _gallium_drivers+=",tegra" # transitional dummy packages subpackages+=" mesa-tegra-dri" fi # transitional dummy packages subpackages+=" mesa-nouveau-dri" fi if [ "$_have_arm" ]; then _have_vulkan=yes _gallium_drivers+=",kmsro" _gallium_drivers+=",v3d,vc4,freedreno,etnaviv,lima,panfrost" _vulkan_drivers+=",broadcom" subpackages+=" mesa-vulkan-broadcom" # transitional dummy packages subpackages+=" mesa-kmsro-dri mesa-v3d-dri mesa-vc4-dri" subpackages+=" mesa-etnaviv-dri mesa-freedreno-dri" subpackages+=" mesa-lima-dri mesa-panfrost-dri" fi if [ "$_have_virgl" ]; then _gallium_drivers+=",virgl" _vulkan_drivers+=",virtio" fi if [ "$_have_nine" ]; then configure_args+=" -Dgallium-nine=true" fi if [ "$_have_vmware" ]; then _gallium_drivers+=",svga" configure_args+=" -Dgallium-xa=enabled" subpackages+=" libxatracker" # transitional dummy packages subpackages+=" mesa-vmwgfx-dri" else configure_args+=" -Dgallium-xa=disabled" fi # enabled currently by amd drivers if [ "$_have_opencl" ]; then hostmakedepends+=" clang${_llvmver} rust rust-bindgen" makedepends+=" clang${_llvmver} libclc rust SPIRV-LLVM-Translator-devel SPIRV-Tools-devel" subpackages+=" mesa-opencl" configure_args+=" -Dgallium-opencl=icd -Dgallium-rusticl=true -Drust_std=2021" fi if [ "$_have_hwdec" ]; then configure_args+=" -Dgallium-vdpau=enabled -Dgallium-va=enabled" subpackages+=" mesa-vaapi mesa-vdpau" else configure_args+=" -Dgallium-vdpau=disabled -Dgallium-va=disabled" fi # empty values introduced by leading comma are not allowed; the whole enumeration can be empty # _gallium_drivers is not affected by this problem _vulkan_drivers=${_vulkan_drivers/=,/=} configure_args+=" ${_vulkan_drivers}" if [ "$_have_vulkan" ]; then _have_zink=yes configure_args+=" -Dvulkan-layers=device-select,overlay" if [ "$_have_intel" ]; then configure_args+=",intel-nullhw" fi subpackages+=" mesa-vulkan-overlay-layer" fi if [ "$_have_zink" ]; then _gallium_drivers+=",zink" makedepends+=" vulkan-loader" fi configure_args+=" ${_gallium_drivers}" # must be the last one for proper order subpackages+=" mesa-dri MesaLib-devel" case "$XBPS_TARGET_MACHINE" in ppc64le*) configure_args+=" -Dpower8=true" ;; ppc*) configure_args+=" -Dpower8=false" ;; esac post_configure() { if [ "$CROSS_BUILD" ]; then find -iname "*.ninja" -exec sed -i "{}" \ -e "/rustc/s; --sysroot ${XBPS_CROSS_BASE}/usr;;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 case "${arch}" in aarch64) oarchs="armv6l armv7l";; armv[67]l) oarchs="aarch64";; x86_64) oarchs="i686";; i686) oarchs="x86_64";; ppc64le) oarchs="ppcle";; ppc64) oarchs="ppc";; ppcle) oarchs="ppc64le";; ppc) oarchs="ppc64";; *) ;; # no counterparts esac 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 } libglapi_package() { # this dependency is wrong, it was added as a hack to allow updating # systems with libglapi-32bit after the switch to glvnd # see 927f17347f9c646047c65312c8e8ce1ad88b7832 # it can be removed when glibc multilib (with *-32bit packages) is removed depends="libglvnd" short_desc="Free implementation of the GL API - shared library" pkg_install() { vmove "usr/lib/libglapi.so.*" } } libgbm_package() { short_desc="Mesa Generic buffer management API - runtime" pkg_install() { vmove "usr/lib/libgbm.so.*" } } libgbm-devel_package() { short_desc="Mesa Generic buffer management API - development files" depends="libgbm>=${version}_${revision}" pkg_install() { vmove usr/include/gbm.h vmove usr/lib/libgbm.so vmove usr/lib/pkgconfig/gbm.pc } } libOSMesa_package() { short_desc="Mesa Off-Screen interface library" pkg_install() { vmove "usr/lib/libOSMesa.so.*" } } MesaLib-devel_package() { depends="mesa>=${version}_${revision} libOSMesa>=${version}_${revision} libgbm-devel>=${version}_${revision}" if [ "$_have_vmware" ]; then depends+=" libxatracker>=${version}_${revision}" fi if [ "$_have_opencl" ]; then depends+=" mesa-opencl>=${version}_${revision}" fi depends+=" libdrm-devel libglvnd-devel" 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 if [ "$_have_vmware" ]; then vmove usr/lib/libxatracker.so fi if [ "$_have_opencl" ]; then vmove usr/lib/libMesaOpenCL.so vmove usr/lib/libRusticlOpenCL.so fi } } libxatracker_package() { short_desc="Mesa XA tracker interface library" pkg_install() { vmove "usr/lib/libxatracker*.so.*" } } mesa-opencl_package() { short_desc="Mesa implementation of OpenCL (r600+ only)" depends="libclc" pkg_install() { vmove etc/OpenCL vmove usr/lib/gallium-pipe vmove "usr/lib/libMesaOpenCL.so.*" vmove "usr/lib/libRusticlOpenCL.so.*" } } mesa-dri_package() { short_desc="Mesa DRI drivers" depends="mesa-${version}_${revision}" shlib_provides="libgallium_dri.so" # workaround for mesa-dri-32bit pkg_install() { vmove usr/lib/dri } } mesa-vaapi_package() { short_desc="Mesa VA-API drivers" shlib_provides="libgallium_drv_video.so" # workaround for mesa-vaapi-32bit pkg_install() { vmove "usr/lib/dri/*_drv_video.so" } } mesa-vdpau_package() { short_desc="Mesa VDPAU drivers" pkg_install() { vmove "usr/lib/vdpau/libvdpau_*" } } mesa-vulkan-intel_package() { short_desc="Mesa Intel Vulkan driver" pkg_install() { vmove "usr/share/vulkan/icd.d/intel*.json" vmove "usr/lib/libvulkan_intel*.so" } } mesa-vulkan-radeon_package() { short_desc="Mesa Radeon Vulkan driver" pkg_install() { vmove "usr/share/drirc.d/00-radv-defaults.conf" vmove "usr/share/vulkan/icd.d/radeon_icd*.json" vmove "usr/lib/libvulkan_radeon.so" } } mesa-vulkan-broadcom_package() { short_desc="Mesa Broadcom Vulkan driver" pkg_install() { vmove "usr/share/vulkan/icd.d/broadcom_icd*.json" vmove "usr/lib/libvulkan_broadcom.so" } } mesa-vulkan-overlay-layer_package() { short_desc="Vulkan layer to display information about the running application" 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" } } mesa-ati-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for ATI GPUs (transitional dummy package)" depends="mesa-dri mesa-vulkan-radeon" if [ "$_have_hwdec" ]; then depends+=" mesa-vaapi mesa-vdpau" fi } mesa-etnaviv-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Vivante GPUs (transitional dummy package)" depends="mesa-dri" } mesa-freedreno-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Adreno GPUs (transitional dummy package)" depends="mesa-dri" } mesa-intel-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Intel GPUs (transitional dummy package)" depends="mesa-dri mesa-vulkan-intel" } mesa-kmsro-dri_package() { build_style=meta lib32mode=full short_desc="KMS Render-only Mesa DRI drivers (transitional dummy package)" depends="mesa-dri" } mesa-lima-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Mali GPUs (Utgard) (transitional dummy package)" depends="mesa-dri" } mesa-nouveau-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for NVIDIA GPUs (transitional dummy package)" depends="mesa-dri" if [ "$_have_hwdec" ]; then depends+=" mesa-vaapi mesa-vdpau" fi } mesa-panfrost-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Mali GPUs (Midgard/Bifrost) (dummy package)" depends="mesa-dri" } mesa-tegra-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Tegra GPU (transitional dummy package)" depends="mesa-dri" } mesa-v3d-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Videocore VI GPU (transitional dummy package)" depends="mesa-dri" } mesa-vmwgfx-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for VMware (transitional dummy package)" depends="mesa-dri" } mesa-vc4-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for Videocore IV GPU (transitional dummy package)" depends="mesa-dri" }