1################################################################################
2#
3# mesa3d
4#
5################################################################################
6
7# When updating the version, please also update mesa3d-headers
8MESA3D_VERSION = 24.0.7
9MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz
10MESA3D_SITE = https://archive.mesa3d.org
11MESA3D_LICENSE = MIT, SGI, Khronos
12MESA3D_LICENSE_FILES = docs/license.rst
13MESA3D_CPE_ID_VENDOR = mesa3d
14MESA3D_CPE_ID_PRODUCT = mesa
15
16MESA3D_INSTALL_STAGING = YES
17
18MESA3D_PROVIDES =
19
20MESA3D_DEPENDENCIES = \
21	host-bison \
22	host-flex \
23	host-python-mako \
24	expat \
25	libdrm \
26	zlib
27
28MESA3D_CONF_OPTS = \
29	-Dgallium-omx=disabled \
30	-Dpower8=disabled
31
32ifeq ($(BR2_PACKAGE_MESA3D_DRIVER)$(BR2_PACKAGE_XORG7),yy)
33MESA3D_CONF_OPTS += -Ddri3=enabled
34MESA3D_DEPENDENCIES += xlib_libxshmfence
35else
36MESA3D_CONF_OPTS += -Ddri3=disabled
37endif
38
39ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
40MESA3D_DEPENDENCIES += host-llvm llvm
41MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
42MESA3D_CONF_OPTS += -Dllvm=enabled
43ifeq ($(BR2_PACKAGE_LLVM_RTTI),y)
44MESA3D_CONF_OPTS += -Dcpp_rtti=true
45else
46MESA3D_CONF_OPTS += -Dcpp_rtti=false
47endif
48else
49# Avoid automatic search of llvm-config
50MESA3D_CONF_OPTS += -Dllvm=disabled
51endif
52
53# Disable opencl-icd: OpenCL lib will be named libOpenCL instead of
54# libMesaOpenCL and CL headers are installed
55ifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y)
56MESA3D_PROVIDES += libopencl
57MESA3D_DEPENDENCIES += clang libclc
58MESA3D_CONF_OPTS += -Dgallium-opencl=standalone
59else
60MESA3D_CONF_OPTS += -Dgallium-opencl=disabled
61endif
62
63ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y)
64MESA3D_DEPENDENCIES += elfutils
65endif
66
67ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y)
68# Disable-mangling not yet supported by meson build system.
69# glx:
70#  dri          : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi
71#  xlib         : xlib conflicts with any dri driver
72# Always enable glx-direct; without it, many GLX applications don't work.
73MESA3D_CONF_OPTS += \
74	-Dglx=dri \
75	-Dglx-direct=true
76ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y)
77MESA3D_CONF_OPTS += -Dgallium-xa=enabled
78else
79MESA3D_CONF_OPTS += -Dgallium-xa=disabled
80endif
81else
82MESA3D_CONF_OPTS += \
83	-Dglx=disabled \
84	-Dgallium-xa=disabled
85endif
86
87ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
88MESA3D_CONF_OPTS += -Dgallium-vc4-neon=auto
89else
90MESA3D_CONF_OPTS += -Dgallium-vc4-neon=disabled
91endif
92
93# Drivers
94
95#Gallium Drivers
96MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS)   += crocus
97MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV)  += etnaviv
98MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO) += freedreno
99MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915)     += i915
100MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS)     += iris
101MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA)     += lima
102MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU)  += nouveau
103MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST) += panfrost
104MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300)     += r300
105MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600)     += r600
106MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) += radeonsi
107MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA)     += svga
108MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST)   += swrast
109MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA)    += tegra
110MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D)      += v3d
111MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4)      += vc4
112MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL)    += virgl
113# Vulkan Drivers
114MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM) += broadcom
115MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL)   += intel
116MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST) += swrast
117
118ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),)
119MESA3D_CONF_OPTS += \
120	-Dgallium-drivers= \
121	-Dgallium-extra-hud=false
122else
123MESA3D_CONF_OPTS += \
124	-Dshared-glapi=enabled \
125	-Dgallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \
126	-Dgallium-extra-hud=true
127endif
128
129ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)
130MESA3D_CONF_OPTS += \
131	-Dvulkan-drivers=
132else
133MESA3D_DEPENDENCIES += host-python-glslang
134MESA3D_CONF_OPTS += \
135	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
136endif
137
138# APIs
139
140ifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y)
141MESA3D_CONF_OPTS += -Dosmesa=true
142else
143MESA3D_CONF_OPTS += -Dosmesa=false
144endif
145
146# Always enable OpenGL:
147#   - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled.
148MESA3D_CONF_OPTS += -Dopengl=true
149
150# libva and mesa3d have a circular dependency
151# we do not need libva support in mesa3d, therefore disable this option
152MESA3D_CONF_OPTS += -Dgallium-va=disabled
153
154# libGL is only provided for a full xorg stack, without libglvnd
155ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y)
156MESA3D_PROVIDES += $(if $(BR2_PACKAGE_LIBGLVND),,libgl)
157else
158define MESA3D_REMOVE_OPENGL_HEADERS
159	rm -rf $(STAGING_DIR)/usr/include/GL/
160endef
161
162MESA3D_POST_INSTALL_STAGING_HOOKS += MESA3D_REMOVE_OPENGL_HEADERS
163endif
164
165ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_X11),y)
166MESA3D_DEPENDENCIES += \
167	xlib_libX11 \
168	xlib_libXext \
169	xlib_libXdamage \
170	xlib_libXfixes \
171	xlib_libXrandr \
172	xlib_libXxf86vm \
173	xorgproto \
174	libxcb
175MESA3D_PLATFORMS += x11
176endif
177ifeq ($(BR2_PACKAGE_WAYLAND),y)
178MESA3D_DEPENDENCIES += wayland wayland-protocols
179MESA3D_PLATFORMS += wayland
180endif
181
182MESA3D_CONF_OPTS += \
183	-Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))
184
185ifeq ($(BR2_PACKAGE_MESA3D_GBM),y)
186MESA3D_CONF_OPTS += \
187	-Dgbm=enabled
188else
189MESA3D_CONF_OPTS += \
190	-Dgbm=disabled
191endif
192
193ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
194MESA3D_PROVIDES += $(if $(BR2_PACKAGE_LIBGLVND),,libegl)
195MESA3D_CONF_OPTS += \
196	-Degl=enabled
197else
198MESA3D_CONF_OPTS += \
199	-Degl=disabled
200endif
201
202ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y)
203MESA3D_PROVIDES += $(if $(BR2_PACKAGE_LIBGLVND),,libgles)
204MESA3D_CONF_OPTS += -Dgles1=enabled -Dgles2=enabled
205else
206MESA3D_CONF_OPTS += -Dgles1=disabled -Dgles2=disabled
207endif
208
209ifeq ($(BR2_PACKAGE_VALGRIND),y)
210MESA3D_CONF_OPTS += -Dvalgrind=enabled
211MESA3D_DEPENDENCIES += valgrind
212else
213MESA3D_CONF_OPTS += -Dvalgrind=disabled
214endif
215
216ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
217MESA3D_CONF_OPTS += -Dlibunwind=enabled
218MESA3D_DEPENDENCIES += libunwind
219else
220MESA3D_CONF_OPTS += -Dlibunwind=disabled
221endif
222
223ifeq ($(BR2_PACKAGE_MESA3D_VDPAU),y)
224MESA3D_DEPENDENCIES += libvdpau
225MESA3D_CONF_OPTS += -Dgallium-vdpau=enabled
226else
227MESA3D_CONF_OPTS += -Dgallium-vdpau=disabled
228endif
229
230ifeq ($(BR2_PACKAGE_LM_SENSORS),y)
231MESA3D_CONF_OPTS += -Dlmsensors=enabled
232MESA3D_DEPENDENCIES += lm-sensors
233else
234MESA3D_CONF_OPTS += -Dlmsensors=disabled
235endif
236
237ifeq ($(BR2_PACKAGE_ZSTD),y)
238MESA3D_CONF_OPTS += -Dzstd=enabled
239MESA3D_DEPENDENCIES += zstd
240else
241MESA3D_CONF_OPTS += -Dzstd=disabled
242endif
243
244MESA3D_CFLAGS = $(TARGET_CFLAGS)
245
246# m68k needs 32-bit offsets in switch tables to build
247ifeq ($(BR2_m68k),y)
248MESA3D_CFLAGS += -mlong-jump-table-offsets
249endif
250
251ifeq ($(BR2_PACKAGE_LIBGLVND),y)
252ifneq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX)$(BR2_PACKAGE_MESA3D_OPENGL_EGL),)
253MESA3D_DEPENDENCIES += libglvnd
254MESA3D_CONF_OPTS += -Dglvnd=true
255else
256MESA3D_CONF_OPTS += -Dglvnd=false
257endif
258else
259MESA3D_CONF_OPTS += -Dglvnd=false
260endif
261
262$(eval $(meson-package))
263