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