travankor 1d88a846b1 mesa: Enable open-source ARM GPU drivers.
This commit enables the following GPU drivers for these ARM SoCs:
 Etnaviv: Freescale/NXP i.MX (Librem 5)
 Freedreno: Qualcomm Snapdragon (Windows 10 ARM Laptops)
 Lima: Samsung Exynos, Allwinner (Pinephone)
 Panfrost: Rockchip (Pinebook Pro, ARM Chromebooks)
 V3D: Broadcom (Raspberry Pi 4)
2019-12-25 07:25:11 +01:00

331 lines
10 KiB
Bash

# Template file for 'mesa'
pkgname=mesa
version=19.3.1
revision=1
wrksrc="mesa-${version}"
build_style=meson
configure_args="-Dglvnd=true -Dshared-glapi=true -Dgbm=true -Degl=true
-Dgallium-vdpau=true -Dgallium-xvmc=true -Dosmesa=gallium
-Dgles1=true -Dgles2=true -Dgallium-va=true -Dlmsensors=true
-Dplatforms=x11,drm,$(vopt_if wayland wayland),surfaceless -Dllvm=true
-Db_lto=false"
hostmakedepends="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"
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=cd951db69c56a97ff0570a7ab2c0e39e6c5323f4cd8f4eb8274723e033beae59
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"
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*)
# Enable all x86 drivers.
configure_args+=" -Dgallium-drivers=r300,r600,radeonsi,svga,swrast,nouveau,virgl"
configure_args+=" -Ddri-drivers=i915,i965,r100,r200,nouveau"
configure_args+=" -Dgallium-xa=true -Ddri3=true -Dgallium-nine=true"
configure_args+=" -Dvulkan-drivers=intel,amd"
configure_args+=" -Dgallium-opencl=icd"
configure_args+=" -Dvulkan-overlay-layer=true"
hostmakedepends+=" clang"
makedepends+=" libclc-git"
subpackages+=" libxatracker mesa-ati-dri mesa-intel-dri mesa-nouveau-dri"
subpackages+=" mesa-vmwgfx-dri mesa-opencl mesa-vulkan-overlay-layer"
;;
ppc*)
# Enable all ppc drivers.
configure_args+=" -Dgallium-drivers=r300,r600,radeonsi,swrast,nouveau,virgl"
configure_args+=" -Ddri-drivers=r100,r200,nouveau"
configure_args+=" -Dgallium-xa=false -Ddri3=true -Dgallium-opencl=icd"
configure_args+=" -Dvulkan-drivers=amd"
configure_args+=" -Dvulkan-overlay-layer=true"
# Explicitly control power8 feature usage, disable on BE
case "$XBPS_TARGET_MACHINE" in
ppc64le*) configure_args+=" -Dpower8=true";;
*) configure_args+=" -Dpower8=false";;
esac
hostmakedepends+=" clang"
makedepends+=" libclc-git"
subpackages+=" mesa-ati-dri mesa-nouveau-dri"
subpackages+=" mesa-opencl mesa-vulkan-overlay-layer"
;;
aarch64*)
# Enable all ARM drivers
configure_args+=" -Dgallium-drivers=etnaviv,freedreno,kmsro,lima,panfrost,nouveau,swrast,tegra,v3d,vc4"
configure_args+=" -Dvulkan-drivers= -Ddri-drivers="
configure_args+=" -Dgallium-xa=false -Ddri3=true"
subpackages+=" mesa-kmsro-dri mesa-tegra-dri mesa-nouveau-dri mesa-v3d-dri mesa-vc4-dri"
subpackages+=" mesa-etnaviv-dri mesa-freedreno-dri mesa-lima-dri mesa-panfrost-dri"
;;
armv7l*)
configure_args+=" -Dgallium-drivers=etnaviv,freedreno,kmsro,lima,panfrost,swrast,vc4"
configure_args+=" -Dvulkan-drivers= -Ddri-drivers= -Dgallium-xvmc=false"
configure_args+=" -Dgallium-xa=false -Dgallium-vdpau=false -Dgallium-va=false"
subpackages+=" mesa-etnaviv-dri mesa-freedreno-dri mesa-kmsro-dri mesa-lima-dri mesa-panfrost-dri mesa-vc4-dri"
;;
*)
# Enable swrast driver.
configure_args+=" -Dgallium-drivers=swrast"
configure_args+=" -Ddri-drivers= -Dvulkan-drivers= -Dgallium-va=false"
configure_args+=" -Dgallium-vdpau=false -Dgallium-xvmc=false"
configure_args+=" -Dgallium-xa=false"
;;
esac
case "$XBPS_TARGET_MACHINE" in
armv[5-6]*)
# Enable MISSING_64BIT_ATOMICS for armv[56]*
CFLAGS+=" -DMISSING_64BIT_ATOMICS=1"
CXXFLAGS+=" -DMISSING_64BIT_ATOMICS=1"
;;
esac
# -devel must be the last one for proper order.
subpackages+=" MesaLib-devel"
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
case "$XBPS_TARGET_MACHINE" in
# Disable TLS with musl: https://gitlab.freedesktop.org/mesa/mesa/issues/966
# TODO: maybe this is handled by libglvnd now
*-musl) configure_args+=" -Duse-elf-tls=false";;
*) configure_args+=" -Dglx=dri";;
esac
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}"
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*) depends+=" libxatracker>=${version}_${revision}";;
esac
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-ati-dri_package() {
short_desc="Mesa DRI drivers for ATI GPUs"
depends="mesa-${version}_${revision}"
lib32files="/usr/share/vulkan/icd.d/radeon_icd.i686.json"
pkg_install() {
vmove "usr/lib/libXvMCr[36]00.so.*"
vmove "usr/lib/vdpau/libvdpau_r[36]00.so*"
vmove "usr/lib/vdpau/libvdpau_radeon*.so*"
vmove "usr/lib/xorg/modules/drivers/radeon*"
vmove "usr/lib/xorg/modules/drivers/r[236]00*"
vmove usr/lib/dri/r*
vmove "usr/share/vulkan/icd.d/radeon_icd*.json"
vmove "usr/lib/libvulkan_radeon.so"
vmove "usr/lib/gallium-pipe/pipe_r[36]00.so"
vmove usr/lib/gallium-pipe/pipe_radeonsi.so
}
}
mesa-etnaviv-dri_package() {
short_desc="Mesa DRI drivers for Vivante GPUs"
depends="mesa-${verison}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/etnaviv*"
}
}
mesa-freedreno-dri_package() {
short_desc="Mesa DRI drivers for Adreno GPUs"
depends="mesa-${verison}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/msm*"
vmove "usr/lib/xorg/modules/drivers/kgsl*"
}
}
mesa-intel-dri_package() {
short_desc="Mesa DRI drivers for Intel GPUs"
depends="mesa-${version}_${revision}"
lib32files="/usr/share/vulkan/icd.d/intel_icd.i686.json"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/i9[16]5_dri.*"
vmove "usr/share/vulkan/icd.d/intel_icd*.json"
vmove "usr/lib/libvulkan_intel.so"
}
}
mesa-kmsro-dri_package() {
short_desc="KMS Render-only Mesa DRI drivers"
depends="mesa-${version}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/armada*"
vmove "usr/lib/xorg/modules/drivers/exynos*"
vmove "usr/lib/xorg/modules/drivers/hx8357d*"
vmove "usr/lib/xorg/modules/drivers/ili9225*"
vmove "usr/lib/xorg/modules/drivers/ili9341*"
vmove "usr/lib/xorg/modules/drivers/imx*"
vmove "usr/lib/xorg/modules/drivers/meson*"
vmove "usr/lib/xorg/modules/drivers/mi0283qt*"
vmove "usr/lib/xorg/modules/drivers/mxsfb*"
vmove "usr/lib/xorg/modules/drivers/pl111*"
vmove "usr/lib/xorg/modules/drivers/repaper*"
vmove "usr/lib/xorg/modules/drivers/rockchip*"
vmove "usr/lib/xorg/modules/drivers/st7586*"
vmove "usr/lib/xorg/modules/drivers/st7735r*"
vmove "usr/lib/xorg/modules/drivers/stm*"
vmove "usr/lib/xorg/modules/drivers/sun4i*"
}
}
mesa-lima-dri_package() {
short_desc="Mesa DRI drivers for ARM Mali GPUs (Utgard)"
depends="mesa-${verison}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/lima*"
}
}
mesa-nouveau-dri_package() {
short_desc="Mesa DRI drivers for NVIDIA GPUs (nouveau dri)"
depends="mesa-${version}_${revision}"
pkg_install() {
vmove "usr/lib/libXvMCnouveau.so.*"
vmove "usr/lib/vdpau/libvdpau_nouveau.so*"
vmove "usr/lib/xorg/modules/drivers/nouveau*"
vmove "usr/lib/dri/nouveau*"
case "$XBPS_TARGET_MACHINE" in
aarch64*) ;;
*) vmove usr/lib/gallium-pipe/pipe_nouveau.so ;;
esac
}
}
mesa-panfrost-dri_package() {
short_desc="Mesa DRI drivers for ARM Mali GPUs (Midgard/Bifrost)"
depends="mesa-${verison}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/panfrost*"
}
}
mesa-vmwgfx-dri_package() {
short_desc="Mesa DRI drivers for VMware"
depends="mesa-${version}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/vmwgfx*"
vmove usr/lib/gallium-pipe/pipe_vmwgfx.so
}
}
mesa-v3d-dri_package() {
short_desc="Mesa DRI drivers for Videocore VI GPU"
depends="mesa-${verison}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/v3d*"
}
}
mesa-vc4-dri_package() {
short_desc="Mesa DRI drivers for Videocore IV GPU"
depends="mesa-${version}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/vc4*"
}
}
mesa-opencl_package() {
short_desc="Mesa implementation of OpenCL (r600+ only)"
depends="libclc libOpenCL mesa-${version}_${revision}"
pkg_install() {
vmove etc/OpenCL
vmove "usr/lib/libMesaOpenCL*"
}
}
mesa-tegra-dri_package() {
short_desc="Mesa DRI drivers for Tegra GPU"
depends="mesa-nouveau-dri-${version}_${revision}"
pkg_install() {
vmove "usr/lib/xorg/modules/drivers/tegra*"
}
}
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
}
}