void-packages/srcpkgs/mesa/template
2020-05-28 12:02:36 +02:00

413 lines
11 KiB
Bash

# Template file for 'mesa'
pkgname=mesa
version=20.0.7
revision=1
wrksrc="mesa-${version}"
build_style=meson
configure_args="-Dglvnd=true -Dshared-glapi=true -Dgbm=true -Degl=true
-Dosmesa=gallium -Dgles1=true -Dgles2=true -Dglx=dri -Ddri3=true
-Dlmsensors=true -Dplatforms=x11,drm,$(vopt_if wayland wayland,)surfaceless
-Dllvm=true -Db_lto=false -Dcpp_std=gnu++14"
hostmakedepends="gettext flex libxml2-python llvm pkg-config
python3-Mako $(vopt_if wayland 'wayland-protocols wayland-devel')
glslang"
makedepends="elfutils-devel expat-devel libXdamage-devel libXvMC-devel
libXxf86vm-devel libatomic-devel libdrm-devel libffi-devel libva-devel
libvdpau-devel libxshmfence-devel ncurses-devel talloc-devel zlib-devel
$(vopt_if wayland 'wayland-devel wayland-protocols') llvm
libsensors-devel libXrandr-devel libglvnd-devel libzstd-devel"
depends="libglvnd"
short_desc="Graphics library similar to SGI's OpenGL"
maintainer="Juan RP <xtraeme@gmail.com>"
license="MIT, LGPL-2.1-or-later"
homepage="https://www.mesa3d.org/"
changelog="https://www.mesa3d.org/relnotes/${version}.html"
distfiles="https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz"
checksum=fe6e258fe772c3cd2ac01741bf7408058c3ac02d66acff9a6e669bd72e3ea178
build_options="wayland"
build_options_default="wayland"
# Set subpackages manually to set proper rdeps in 32bit pkgs.
subpackages="libglapi libgbm 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="
# legacy drivers only on x86 and ppc in general
_dri_drivers=" -Ddri-drivers="
# amd drivers only on x86 and ppc
# this also enables clover opencl
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*|ppc*) _have_amd=yes ;;
esac
# hardware video decoding on x86, ppc, aarch64
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*|ppc*|aarch64*) _have_hwdec=yes ;;
esac
# most platforms get nvidia and virgl
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*|ppc*|armv[67]*|aarch64*)
_have_nv=yes
_have_virgl=yes
;;
esac
# x86 additionally gets intel, vmware and gallium nine
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"
_dri_drivers+=",r100,r200"
subpackages+=" mesa-vulkan-radeon"
# transitional dummy packages
subpackages+=" mesa-ati-dri"
fi
if [ "$_have_intel" ]; then
_have_vulkan=yes
_gallium_drivers+=",iris"
_vulkan_drivers+=",intel"
_dri_drivers+=",i915,i965"
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"
else
_dri_drivers+=",nouveau"
fi
# transitional dummy packages
subpackages+=" mesa-nouveau-dri"
fi
if [ "$_have_arm" ]; then
_gallium_drivers+=",kmsro"
_gallium_drivers+=",v3d,vc4,freedreno,etnaviv,lima,panfrost"
# 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"
fi
if [ "$_have_nine" ]; then
configure_args+=" -Dgallium-nine=true"
fi
if [ "$_have_vmware" ]; then
_gallium_drivers+=",svga"
configure_args+=" -Dgallium-xa=true"
subpackages+=" libxatracker"
# transitional dummy packages
subpackages+=" mesa-vmwgfx-dri"
else
configure_args+=" -Dgallium-xa=false"
fi
# enabled currently by amd drivers
if [ "$_have_opencl" ]; then
hostmakedepends+=" clang"
makedepends+=" clang libclc-git"
subpackages+=" mesa-opencl"
configure_args+=" -Dgallium-opencl=icd"
fi
if [ "$_have_hwdec" ]; then
configure_args+=" -Dgallium-vdpau=true -Dgallium-va=true -Dgallium-xvmc=true"
subpackages+=" mesa-vaapi mesa-vdpau mesa-XvMC"
else
configure_args+=" -Dgallium-vdpau=false -Dgallium-va=false -Dgallium-xvmc=false"
fi
configure_args+=" ${_gallium_drivers} ${_vulkan_drivers} ${_dri_drivers}"
if [ "$_have_vulkan" ]; then
configure_args+=" -Dvulkan-overlay-layer=true"
subpackages+=" mesa-vulkan-overlay-layer"
fi
# 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
case "$XBPS_TARGET_MACHINE" in
i686) configure_args+=" -Ddri-drivers-path=/usr/lib32/xorg/modules/drivers";;
*) configure_args+=" -Ddri-drivers-path=/usr/lib/xorg/modules/drivers";;
esac
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
configure_args+=" -Duse-elf-tls=false"
fi
post_configure() {
if [ "$CROSS_BUILD" ]; then
find -iname "*.ninja" -exec sed -i "{}" \
-e "s; /usr/lib/; ${XBPS_CROSS_BASE}/usr/lib/;g" \
-e "s;-L/usr/lib;-L${XBPS_CROSS_BASE}/usr/lib;g" \
-e "s;-I/usr/include;-I${XBPS_CROSS_BASE}/usr/include;g" \
\;
fi
}
post_install() {
vlicense docs/license.html
case "$XBPS_TARGET_MACHINE" in
i686*)
vsed -e 's#/usr/lib/#/usr/lib32/#g' \
-i ${DESTDIR}/usr/share/vulkan/icd.d/radeon_icd.i686.json \
-i ${DESTDIR}/usr/share/vulkan/icd.d/intel_icd.i686.json
;;
esac
}
libglapi_package() {
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.*"
}
}
libOSMesa_package() {
short_desc="Mesa Off-Screen interface library"
pkg_install() {
vmove "usr/lib/libOSMesa.so.*"
}
}
MesaLib-devel_package() {
depends="xorgproto libxshmfence-devel libXext-devel libXxf86vm-devel
libXdamage-devel expat-devel libXfixes-devel libX11-devel libxcb-devel
libdrm-devel libglvnd-devel
libOSMesa>=${version}_${revision} libgbm>=${version}_${revision}
mesa>=${version}_${revision}"
if [ "$_have_vmware" ]; then
depends+=" libxatracker>=${version}_${revision}"
fi
short_desc+=" - development files"
pkg_install() {
vmove usr/include
vmove usr/lib/pkgconfig
vmove "usr/lib/*.so"
}
}
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-git"
pkg_install() {
vmove etc/OpenCL
vmove "usr/lib/libMesaOpenCL.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() {
# Only strip each megadriver once, via its master filename
nostrip_files=$(find "${DESTDIR}/usr/lib/xorg/modules/drivers" \
! -name 'libmesa_dri_drivers.so' ! -name 'libgallium_dri.so' \
-type f -printf '%f ')
vmove "usr/lib/xorg/modules/drivers";
if [ -d "$DESTDIR/usr/lib/gallium-pipe" ]; then
vmove "usr/lib/gallium-pipe/pipe_*.so"
fi
}
}
mesa-vaapi_package() {
short_desc="Mesa VA-API drivers"
shlib_provides="libgallium_drv_video.so" # workaround for mesa-vaapi-32bit
pkg_install() {
nostrip_files=$(find "${DESTDIR}/usr/lib/dri" \
! -name 'libgallium_drv_video.so' -type f -printf '%f ')
vmove "usr/lib/dri/*_drv_video.so"
}
}
mesa-vdpau_package() {
short_desc="Mesa VDPAU drivers"
pkg_install() {
nostrip_files=$(find "${DESTDIR}/usr/lib/vdpau" \
! -name 'libvdpau_gallium.so*' -type f -printf '%f ')
vmove "usr/lib/vdpau/libvdpau_*"
}
}
mesa-XvMC_package() {
short_desc="Mesa XvMC drivers"
pkg_install() {
nostrip_files=$(find "${DESTDIR}/usr/lib/libXvMC"* \
! -name 'libXvMCgallium.so' -type f -printf '%f ')
vmove "usr/lib/libXvMC*"
}
}
mesa-vulkan-intel_package() {
short_desc="Mesa Intel Vulkan driver"
lib32files="/usr/share/vulkan/icd.d/intel_icd.i686.json"
pkg_install() {
vmove "usr/share/vulkan/icd.d/intel_icd*.json"
vmove "usr/lib/libvulkan_intel.so"
}
}
mesa-vulkan-radeon_package() {
short_desc="Mesa Radeon Vulkan driver"
lib32files="/usr/share/vulkan/icd.d/radeon_icd.i686.json"
pkg_install() {
vmove "usr/share/vulkan/icd.d/radeon_icd*.json"
vmove "usr/lib/libvulkan_radeon.so"
}
}
mesa-vulkan-overlay-layer_package() {
short_desc="Vulkan layer to display information about the running application"
pkg_install() {
vmove usr/lib/libVkLayer_MESA_overlay.so
vmove usr/share/vulkan/explicit_layer.d/VkLayer_MESA_overlay.json
}
}
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 mesa-XvMC"
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 mesa-XvMC"
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"
}