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