summaryrefslogtreecommitdiff
path: root/user/mesa/APKBUILD
blob: d45468a6c309b04c190730359990eb354a3696f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mesa
pkgver=24.2.7
_llvmver=18
pkgrel=0
pkgdesc="Mesa DRI OpenGL library"
url="https://www.mesa3d.org"
arch="all"
options="!check"  # No test suite.
license="MIT AND X11 AND SGI-B-2.0 AND BSL-1.0 AND LGPL-2.1+"
depends=""
depends_dev="libdrm-dev libxcb-dev libxdamage-dev libxext-dev libxshmfence-dev
	xorgproto-dev"
makedepends="$depends_dev bison eudev-dev expat-dev flex libelf-dev libglvnd-dev
	libva-dev libvdpau-dev libx11-dev libxfixes-dev libxrandr-dev libxt-dev
	libxv-dev libxvmc-dev libxxf86vm-dev llvm$_llvmver-dev makedepend meson
	ninja python3 py3-libxml2 py3-mako py3-pygments py3-markupsafe
	py3-pyyaml rust wayland-dev wayland-protocols glslang-dev
	zlib-dev zstd-dev bindgen-cli cbindgen"
subpackages="$pkgname-dev $pkgname-dri $pkgname-vulkan-overlay $pkgname-egl
	$pkgname-glapi $pkgname-gbm $pkgname-d3d $pkgname-xatracker
	$pkgname-osmesa"
source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz"

_dri_driverdir=/usr/lib/xorg/modules/dri
_gallium_drivers="r300,r600,radeonsi,nouveau,softpipe,llvmpipe,virgl,zink"
_vulkan_drivers="amd,nouveau,swrast,virtio"

case "$CARCH" in
x86_64)
	_gallium_drivers="${_gallium_drivers},i915,svga,crocus"
	_vulkan_drivers="${_vulkan_drivers},microsoft-experimental"
	_arch_conf="-Dintel-rt=enabled"
	;;
x86* | pmmx)
	_gallium_drivers="${_gallium_drivers},i915,svga,iris,crocus"
	_vulkan_drivers="${_vulkan_drivers},intel,intel_hasvk"
	_arch_conf="-Dsse2=false"
	;;
aarch64 | arm*)
	_gallium_drivers="${_gallium_drivers},vc4,freedreno,tegra,kmsro,v3d,lima,panfrost,etnaviv"
	_vulkan_drivers="${_vulkan_drivers},freedreno,panfrost,broadcom"
	case "$CARCH" in
	armhf) CFLAGS="$CFLAGS -mfpu=neon";;
	esac
	;;
ppc64)
	_arch_conf="-Dpower8=disabled"
	;;
esac

build() {
	# This is to fix #796, and is derived from:
	# https://gitlab.freedesktop.org/mesa/mesa/-/commit/cc2b3a99ccf035a084d768e5c5ffa81478d685c1
	cat > native.file <<EOF
[binaries]
llvm-config = '$(command -v llvm${_llvmver}-config)'
rust = ['rustc', '--target=${CHOST}']
EOF

	meson \
		--native-file=native.file \
		-Dprefix=/usr \
		-Ddri-drivers-path=$_dri_driverdir \
		-Dgallium-drivers=$_gallium_drivers \
		-Dgallium-nine=true \
		-Dgallium-opencl=disabled \
		-Dgallium-rusticl=false \
		-Dgallium-va=enabled \
		-Dgallium-vdpau=enabled \
		-Dgallium-xa=enabled \
		-Dglvnd=enabled \
		-Dglx=dri \
		-Dmicrosoft-clc=disabled \
		-Dopencl-spirv=false \
		-Dosmesa=true \
		-Dplatforms=x11,wayland \
		-Dvideo-codecs=all_free \
		-Dvulkan-drivers=$_vulkan_drivers \
		-Dvulkan-layers=device-select,overlay \
		$_arch_conf \
		build

	ninja -C build
}

package() {
	DESTDIR="$pkgdir" ninja -C build install
}

egl() {
	replaces="mesa"
	pkgdesc="Mesa libEGL runtime libraries"
	install -d "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libEGL*.so* \
		"$subpkgdir"/usr/lib/
}

glapi() {
	replaces="$pkgname-gles"
	pkgdesc="Mesa OpenGL API"
	install -d "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libglapi.so.* \
		"$subpkgdir"/usr/lib/
}

d3d() {
	replaces="mesa"
	pkgdesc="Mesa Direct3D adaptor libraries"
	install -d "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/d3d \
		"$subpkgdir"/usr/lib/
}

xatracker() {
	pkgdesc="Mesa XA state tracker for VMware"
	install -d "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libxatracker*.so.* \
		"$subpkgdir"/usr/lib/
}

osmesa() {
	pkgdesc="Mesa offscreen rendering libraries"
	install -d "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libOSMesa.so.* \
		"$subpkgdir"/usr/lib/
}

gbm() {
	pkgdesc="Mesa GBM library"
	replaces="mesa"
	install -d "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgbm.so.* \
		"$subpkgdir"/usr/lib/
}

overlay() {
	pkgdesc="Vulkan overlays to display information"
	install -d "$subpkgdir"/usr/bin
	install -d "$subpkgdir"/usr/lib
	install -d "$subpkgdir"/usr/share
	mv "$pkgdir"/usr/lib/libVkLayer_MESA_*.so \
		"$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/share/vulkan \
		"$subpkgdir"/usr/share/vulkan
	mv "$pkgdir"/usr/bin/mesa-overlay-control.py "$subpkgdir"/usr/bin
}

dri() {
	pkgdesc="Mesa DRI drivers"
	replaces="mesa-dri-ati mesa-dri-freedreno mesa-dri-intel
	mesa-dri-nouveau mesa-dri-swrast mesa-dri-tegra mesa-dri-vc4
	mesa-dri-virtio mesa-dri-vmwgfx"
	depends="mesa=$pkgver-r$pkgrel"
	provides="$replaces"
	install -d "$subpkgdir"/usr/lib/xorg/modules
	install -d "$subpkgdir"/usr/share/vulkan
	mv "$pkgdir"/usr/lib/dri "$subpkgdir"/usr/lib/
	mv "$pkgdir"/usr/lib/xorg/modules/dri "$subpkgdir"/usr/lib/xorg/modules/
	mv "$pkgdir"/usr/share/drirc.d "$subpkgdir"/usr/share/
	mv "$pkgdir"/usr/share/glvnd "$subpkgdir"/usr/share/
	mv "$pkgdir"/usr/lib/libgallium*.so* "$subpkgdir"/usr/lib/ || true
	# support non-Vulkan arches
	mv "$pkgdir"/usr/lib/libvulkan*.so* "$subpkgdir"/usr/lib/ || true
	mv "$pkgdir"/usr/lib/vdpau "$subpkgdir"/usr/lib/
	mv "$pkgdir"/usr/share/vulkan/icd.d "$subpkgdir"/usr/share/vulkan/
}

sha512sums="8776b45abe5e845c587c0fa9feb22d89f07457265ff63175fb42681ce56dff97b0e163d9e9ac80555ee04decb78754e7331e1015d95c5f84ca3c2549663291dd  mesa-24.2.7.tar.xz"