pmaports/temp/mesa-git/APKBUILD
Minecrell aa353fab03
temp/mesa-git: list relevant subpackages as depends for -dri- package (!896)
At the moment, every device that wants to make use of mesa-git needs
to depend on all relevant mesa-git subpackages.

We can simplify this by adding these directly as depends for the
-dri- package that most devices will be depending on. That way,
the fact that you need to depend on all relevant subpackages is
mostly hidden away as "implementation detail" in the mesa-git
package, and no special care is required when using mesa-git.
2020-01-26 02:38:08 +01:00

362 lines
9.2 KiB
Text

# Forked from Alpine Linux to provide latest git builds, useful for bleeding
# edge driver support
#
# Any new drivers should be upstreamed to Alpine Linux once they appear in a
# new Mesa stable release
pkgname=mesa-git
pkgver=0_git20200116
pkgrel=1
_commit="68abc0731715b2ec3048d0944250b96a5302b4bc"
pkgdesc="Mesa DRI OpenGL library (Git)"
url="https://www.mesa3d.org"
arch="all"
license="MIT SGI-B-2.0 BSL-1.0"
subpackages="
$pkgname-dev
$pkgname-dri-classic:_dri
$pkgname-dri-gallium:_dri
$pkgname-va-gallium:_va
$pkgname-vdpau-gallium:_vdpau
$pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles
$pkgname-xatracker $pkgname-osmesa $pkgname-gbm
$pkgname-vulkan-ati:_vulkan
$pkgname-dri-ati:_dri_deprecated
$pkgname-dri-nouveau:_dri_deprecated
"
_llvmver=9
depends_dev="
libdrm-dev
libxext-dev
libxdamage-dev
libxcb-dev
libxshmfence-dev
"
# FIXME: Remove glslang when pmbootstrap can handle the conditional makedepends below
makedepends="
$depends_dev
bison
eudev-dev
expat-dev
findutils
flex
gettext
glslang
elfutils-dev
libtool
libxfixes-dev
libva-dev
libvdpau-dev
libx11-dev
libxrandr-dev
libxt-dev
libxvmc-dev
libxxf86vm-dev
llvm$_llvmver-dev
makedepend
meson
py3-mako
py3-libxml2
python3
talloc-dev
wayland-dev
wayland-protocols
xorgproto
zlib-dev
"
source="
$pkgname-$_commit.tar.gz::https://gitlab.freedesktop.org/mesa/mesa/-/archive/$_commit.tar.gz
adjust-cache-deflate-buffer.patch
musl-fix-includes.patch
add-use-elf-tls.patch
time-fix.patch
"
provides="mesa"
replaces="mesa-dricore mesa"
builddir="$srcdir/mesa-$_commit"
pcprefix="mesa-git"
if [ "$CARCH" = x86 ]; then
# Bug upstream that needs to be fixed
options="$options textrels"
fi
_dri_driverdir=/usr/lib/xorg/modules/dri
_dri_drivers="r100,r200,nouveau"
_gallium_drivers="r300,r600,radeonsi,nouveau,swrast,virgl"
_gallium_provides="
$pkgname-dri-swrast=$pkgver-r$pkgrel
$pkgname-dri-virtio=$pkgver-r$pkgrel
"
_vulkan_drivers="amd"
_arch_opts=""
_vulkan_overlay_layer=false
case "$CARCH" in
x86*)
_dri_drivers="${_dri_drivers},i915,i965"
_gallium_drivers="${_gallium_drivers},svga,iris"
_vulkan_drivers="${_vulkan_drivers},intel"
_vulkan_overlay_layer=true
makedepends="$makedepends glslang"
subpackages="$subpackages \
$pkgname-dri-intel:_dri_deprecated \
$pkgname-vulkan-intel:_vulkan \
$pkgname-vulkan-layer:_vulkan_layer"
_gallium_provides="$_gallium_provides $pkgname-dri-vmwgfx=$pkgver-r$pkgrel"
_arch_opts="-Ddri3=true"
case "$CARCH" in
x86)
_arch_opts="$_arch_opts -Dglx-read-only-text=true -Dasm=false";;
esac
;;
armhf|armv7|aarch64)
_gallium_drivers="${_gallium_drivers},vc4,v3d,freedreno,kmsro,lima,panfrost,etnaviv,tegra"
_gallium_provides="$_gallium_provides
$pkgname-dri-vc4=$pkgver-r$pkgrel
$pkgname-dri-v3d=$pkgver-r$pkgrel
$pkgname-dri-freedreno=$pkgver-r$pkgrel
$pkgname-dri-kmsro=$pkgver-r$pkgrel
$pkgname-dri-lima=$pkgver-r$pkgrel
$pkgname-dri-panfrost=$pkgver-r$pkgrel
$pkgname-dri-etnaviv=$pkgver-r$pkgrel
$pkgname-dri-tegra=$pkgver-r$pkgrel
"
;;
esac
build() {
export CFLAGS="$CFLAGS -D_XOPEN_SOURCE=700"
export PATH=/usr/lib/llvm${_llvmver}/bin:$PATH
meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
--buildtype=debugoptimized \
-Ddri-drivers-path=$_dri_driverdir \
-Dgallium-drivers=$_gallium_drivers \
-Ddri-drivers=$_dri_drivers \
-Dvulkan-drivers=$_vulkan_drivers \
-Dvulkan-overlay-layer=$_vulkan_overlay_layer \
-Dplatforms=x11,drm,wayland \
-Dllvm=true \
-Dshared-llvm=true \
-Dshared-glapi=true \
-Dgbm=true \
-Dglx=dri \
-Dopengl=true \
-Dosmesa=gallium \
-Dgles1=false \
-Dgles2=true \
-Degl=true \
-Dgallium-xa=true \
-Dgallium-vdpau=true \
-Dgallium-va=true \
-Dgallium-xvmc=false \
-Dglx-use-tls=false \
-Dgallium-nine=false \
-Db_ndebug=true \
$_arch_opts \
. output
# parallel build workaround
ninja -C output src/compiler/nir/nir_intrinsics.h src/git_sha1.h
ninja -C output
}
package() {
DESTDIR="$pkgdir" ninja -C output install
# Make abuild's version check happy (#386)
sed -i s/-devel//g "$pkgdir"/usr/lib/pkgconfig/*.pc
}
egl() {
pkgdesc="Mesa libEGL runtime libraries"
depends="$pkgname"
replaces="mesa-egl"
provides="mesa-egl"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libEGL.so* "$subpkgdir"/usr/lib/
}
gl() {
pkgdesc="Mesa libGL runtime libraries"
depends="$pkgname"
replaces="mesa-gl"
provides="mesa-gl"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libGL.so* "$subpkgdir"/usr/lib/
}
glapi() {
pkgdesc="Mesa shared glapi"
depends="$pkgname"
replaces="mesa-gles mesa-glapi"
provides="mesa-glapi"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libglapi.so.* "$subpkgdir"/usr/lib/
}
gles() {
pkgdesc="Mesa libGLESv2 runtime libraries"
depends="$pkgname"
replaces="mesa-gles"
provides="mesa-gles"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libGLES*.so* "$subpkgdir"/usr/lib/
}
xatracker() {
pkgdesc="Mesa XA state tracker for vmware"
depends="$pkgname"
replaces="mesa-xatracker"
provides="mesa-xatracker"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libxatracker*.so.* "$subpkgdir"/usr/lib/
}
osmesa() {
pkgdesc="Mesa offscreen rendering libraries"
depends="$pkgname"
replaces="mesa-osmesa"
provides="mesa-osmesa"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libOSMesa.so.* "$subpkgdir"/usr/lib/
}
gbm() {
pkgdesc="Mesa gbm library"
depends="$pkgname"
replaces="mesa-gbm"
provides="mesa-gbm"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libgbm.so.* "$subpkgdir"/usr/lib/
}
# Move links referencing the same file to the subpackage.
# Usage: _mv_links <base directory> <example>
# where <example> is one of the libraries covered by the megadriver.
# The example is used to find other links that point to the same file.
_mv_links() {
install -d "$subpkgdir"/$1
find -L "$pkgdir"/$1 -samefile "$pkgdir"/$1/$2 -print0 \
| xargs -0 -I{} mv {} "$subpkgdir"/$1/
}
_mv_vulkan() {
local i
install -d "$subpkgdir"/usr/lib
install -d "$subpkgdir"/usr/share/vulkan/icd.d
for i in "$@"; do
mv "$pkgdir"/usr/lib/libvulkan_$i.so "$subpkgdir"/usr/lib/
mv "$pkgdir"/usr/share/vulkan/icd.d/${i}* "$subpkgdir"/usr/share/vulkan/icd.d/
done
}
# Mesa uses "megadrivers" where multiple drivers are linked into one shared
# library. This library is then hard-linked to separate files (one for each driver).
# Each subpackage contains one megadriver so that all the hard-links are preserved.
_dri() {
local n=${subpkgname##*-dri-}
pkgdesc="Mesa $n DRI drivers (Git)"
# List all relevant subpackages to avoid conflicts with main mesa package.
depends="$pkgname $pkgname-gl $pkgname-glapi $pkgname-gles $pkgname-egl $pkgname-gbm"
provides="mesa-dri-$n"
replaces="mesa-dri-$n"
case $n in
classic)
# libmesa_dri_drivers.so
_mv_links $_dri_driverdir radeon_dri.so ;;
gallium)
# libgallium_dri.so
_mv_links $_dri_driverdir swrast_dri.so
provides="$provides $_gallium_provides"
;;
esac
}
# Compatibility packages for upgrading from the old (driver-specific) subpackages
_dri_deprecated() {
local n=${subpkgname##*-dri-}
pkgdesc="Mesa DRI drivers for $n (DEPRECATED, Git)"
depends="$pkgname-dri-classic $pkgname-dri-gallium"
provides="mesa-dri-$n"
replaces="mesa-dri-$n"
case $n in
ati|nouveau)
depends="$depends $pkgname-va-gallium $pkgname-vdpau-gallium" ;;
esac
mkdir "$subpkgdir"
}
_va() {
local n=${subpkgname##*-va-}
pkgdesc="Mesa $n VAAPI drivers (Git)"
depends="$pkgname libva"
provides="mesa-va-$n"
replaces="mesa-va-$n"
case $n in
gallium)
# libgallium_drv_video.so
_mv_links /usr/lib/dri radeonsi_drv_video.so ;;
esac
}
_vdpau() {
local n=${subpkgname##*-vdpau-}
pkgdesc="Mesa $n VDPAU drivers (Git)"
depends="$pkgname libvdpau"
provides="mesa-vdpau-$n"
replaces="mesa-vdpau-$n"
case $n in
gallium)
# libvdpau_gallium.so.1.0.0
_mv_links /usr/lib/vdpau libvdpau_radeonsi.so.1.0.0 ;;
esac
}
_vulkan() {
local n=${subpkgname##*-vulkan-}
pkgdesc="Mesa Vulkan API driver for $n (Git)"
depends="$pkgname"
replaces="mesa-vulkan-$n"
provides="mesa-vulkan-$n"
case $n in
ati)
_mv_vulkan radeon ;;
intel)
_mv_vulkan intel ;;
esac
}
_vulkan_layer() {
pkgdesc="Vulkan overlay layer to display information about the application"
depends="$pkgname"
replaces="mesa-vulkan-layer"
provides="mesa-vulkan-layer"
mkdir -p "$subpkgdir"/usr/share/vulkan "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/share/vulkan/explicit_layer.d "$subpkgdir"/usr/share/vulkan
mv "$pkgdir"/usr/lib/libVkLayer_MESA_overlay.so "$subpkgdir"/usr/lib
}
sha512sums="c8a47a898a5d6f94a5b3d7f80ee1f0872265f578ab23d2e70d04a1397a9555c734a488cfa1cc349191150323e5ba166608b152970de2c056f677fe5129bf9319 mesa-git-68abc0731715b2ec3048d0944250b96a5302b4bc.tar.gz
cdf22d2da3328e116c379264886bd01fd3ad5cc45fe03dc6fd97bdc4794502598ee195c0b9d975fa264d6ac31c6fa108c0535c91800ecf4fcabfd308e53074cc adjust-cache-deflate-buffer.patch
cf849044d6cc7d2af4ff015208fb09d70bf9660538699797da21bda2ecb7c1892d312af83d05116afd826708d9caafb1d05a13f09139c558aea6fee931e3eee7 musl-fix-includes.patch
9aa207a38d538abbd8e7a7210e3081508563e85e8c27b2269b8f40fd62d9fc6fee0cb2f573a0e62c42f8ba0fb85740459b761f009d5991cfd9813d7614541908 add-use-elf-tls.patch
6a42ef5d60ccad7e39dee7b3a09b8a884548ce65af3fb17cd1bbd453cee0df7b367968b179e4b54fbc606b29753a1bab74f8c6136b1efaf4cfb9f084d9e76c66 time-fix.patch"