457 lines
12 KiB
Bash
457 lines
12 KiB
Bash
# Template file for 'mesa'
|
|
pkgname=mesa
|
|
version=24.0.2
|
|
revision=2
|
|
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 <orphan@voidlinux.org>"
|
|
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=94e28a8edad06d8ed2b83eb53f253b9eb5aa62c3080f939702e1b3039b56c9e8
|
|
|
|
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=all"
|
|
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" \
|
|
-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
|
|
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"
|
|
}
|