mesa: add missing dependencies
[feed/video.git] / libs / mesa / Makefile
1 include $(TOPDIR)/rules.mk
2
3 PKG_NAME:=mesa
4 PKG_VERSION:=21.3.0
5 PKG_RELEASE:=$(AUTORELEASE)
6
7 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
8 PKG_SOURCE_URL:=https://archive.mesa3d.org/
9 PKG_HASH:=a2753c09deef0ba14d35ae8a2ceff3fe5cd13698928c7bb62c2ec8736eb09ce1
10
11 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
12 PKG_LICENSE:=BSD-3-Clause
13
14 PKG_INSTALL:=1
15 PKG_BUILD_DEPENDS:=python3/host
16
17 PKG_CONFIG_DEPENDS:= \
18 CONFIG_LIBDRM_INTEL \
19 CONFIG_LIBDRM_NOUVEAU \
20 CONFIG_LIBDRM_RADEON
21
22 TARGET_CPPFLAGS+=-Wno-format -Wno-format-security
23
24 PYTHON3_PKG_BUILD:=0
25 HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:=./host-pip-requirements.txt
26
27 include $(INCLUDE_DIR)/package.mk
28 include $(INCLUDE_DIR)/meson.mk
29 include $(TOPDIR)/feeds/packages/lang/python/python3-package.mk
30
31 DRI_PLUGINS := \
32 armada-drm:@(aarch64||arm) \
33 etnaviv:@(aarch64||arm) \
34 exynos:@(aarch64||arm) \
35 hx8357d \
36 i915:@LIBDRM_INTEL \
37 i965:@LIBDRM_INTEL \
38 ili9225 \
39 ili9341 \
40 imx-dcss:@(aarch64||arm) \
41 imx-drm:@(aarch64||arm) \
42 ingenic-drm:@(aarch64||arm||mipsel) \
43 kgsl:@(aarch64||arm) \
44 kms_swrast \
45 lima:@(aarch64||arm) \
46 mcde:@arm \
47 mediatek:@(aarch64||arm) \
48 meson:@(aarch64||arm) \
49 mi0283qt \
50 msm:@(aarch64||arm) \
51 mxsfb-drm:@(aarch64||arm) \
52 nouveau:@LIBDRM_NOUVEAU \
53 nouveau_vieux:@LIBDRM_NOUVEAU \
54 panfrost:@(aarch64||arm) \
55 pl111:@(aarch64||arm) \
56 r200:@LIBDRM_RADEON \
57 r300:@LIBDRM_RADEON \
58 radeon:@LIBDRM_RADEON \
59 repaper \
60 rockchip:@(aarch64||arm) \
61 st7586 \
62 st7735r \
63 stm:@(aarch64||arm) \
64 sun4i-drm:@(aarch64||arm) \
65 swrast \
66 tegra:@((aarch64||arm)&&LIBDRM_NOUVEAU) \
67 vmwgfx:@(i386||i686||x86_64) \
68 virtio_gpu
69
70
71 define Package/libxatracker
72 SECTION:=libs
73 CATEGORY:=Libraries
74 SUBMENU:=Video
75 TITLE:=Mesa3D libxatracker
76 URL:=https://www.mesa3d.org
77 DEPENDS:=+libstdcpp +zlib +libdrm +libexpat +libzstd @(aarch64||arm||i386||i686||x86_64)
78 endef
79
80 define Package/libxatracker/description
81 endef
82
83 define Package/libglapi
84 SECTION:=libs
85 CATEGORY:=Libraries
86 SUBMENU:=Video
87 TITLE:=Mesa3D libglapi
88 URL:=https://www.mesa3d.org
89 DEPENDS:=+libpthread +libatomic
90 endef
91
92 define Package/libglapi/description
93 endef
94
95 define Package/libmesa
96 SECTION:=libs
97 CATEGORY:=Libraries
98 SUBMENU:=Video
99 DEPENDS:=+libglapi +libstdcpp +zlib +libdrm +libwayland +wayland-protocols
100 TITLE:=Mesa3D OpenGL and friends
101 URL:=https://www.mesa3d.org
102 endef
103
104 define Package/libmesa/description
105 endef
106
107 define Package/libosmesa
108 SECTION:=libs
109 CATEGORY:=Libraries
110 SUBMENU:=Video
111 DEPENDS:=+libglapi +libstdcpp +zlib +libwayland +libzstd +wayland-protocols
112 TITLE:=off-screen Mesa library
113 URL:=https://www.mesa3d.org
114 endef
115
116 define Package/libosmesa/description
117 endef
118
119 define Package/libvulkan-broadcom
120 SECTION:=libs
121 CATEGORY:=Libraries
122 SUBMENU:=Video
123 DEPENDS:=libmesa @(arm||aarch64) @BROKEN
124 TITLE:=Broadcom Vulkan driver
125 URL:=https://www.mesa3d.org
126 endef
127
128 define Package/libvulkan-broadcom/description
129 endef
130
131 define Package/libvulkan-freedreno
132 SECTION:=libs
133 CATEGORY:=Libraries
134 SUBMENU:=Video
135 DEPENDS:=libmesa @(arm||aarch64)
136 TITLE:=Freedreno Vulkan driver
137 URL:=https://www.mesa3d.org
138 endef
139
140 define Package/libvulkan-freedreno/description
141 endef
142
143 define Package/libvulkan-intel
144 SECTION:=libs
145 CATEGORY:=Libraries
146 SUBMENU:=Video
147 DEPENDS:=libmesa @(i386||i686||x86_64)
148 TITLE:=Intel Vulkan driver
149 URL:=https://www.mesa3d.org
150 endef
151
152 define Package/libvulkan-intel/description
153 endef
154
155 define PluginGen
156 define Package/libmesadri-$(subst _,-,$(firstword $(subst :, ,$(1))))
157 SECTION:=libs
158 CATEGORY:=Libraries
159 SUBMENU:=Video
160 TITLE:=Mesa3D DRI $(firstword $(subst :, ,$(1))) plugin
161 URL:=https://www.mesa3d.org
162 DEPENDS:=libmesa +libsensors +libzstd $(wordlist 2,$(words $(subst :, ,$(1))),$(subst :, ,$(1)))
163 endef
164 endef
165
166 $(foreach file,$(DRI_PLUGINS),$(eval $(call PluginGen,$(file))))
167
168 DRI_DRIVERS:=
169 GALLIUM_DRIVERS:=kmsro swrast vc4 virgl
170
171 # requires LLVM:
172 # VULKAN_DRIVERS:=swrast
173
174 ifneq ($(CONFIG_LIBDRM_INTEL),)
175 DRI_DRIVERS+=i965
176 GALLIUM_DRIVERS+=i915
177 endif
178
179 ifneq ($(CONFIG_LIBDRM_NOUVEAU),)
180 DRI_DRIVERS+=nouveau
181 GALLIUM_DRIVERS+=nouveau
182 endif
183
184 ifneq ($(CONFIG_LIBDRM_RADEON),)
185 DRI_DRIVERS+=r100 r200
186 GALLIUM_DRIVERS+=r300
187 # r600 and radeonsi require LLVM
188 endif
189
190 ifeq ($(ARCH),aarch64)
191 GALLIUM_DRIVERS+=freedreno etnaviv panfrost lima
192 ifneq ($(CONFIG_LIBDRM_NOUVEAU),)
193 GALLIUM_DRIVERS+=tegra
194 endif
195 endif
196
197 ifeq ($(ARCH),arm)
198 GALLIUM_DRIVERS+=freedreno etnaviv panfrost lima
199 ifneq ($(CONFIG_LIBDRM_NOUVEAU),)
200 GALLIUM_DRIVERS+=tegra
201 endif
202 endif
203
204 ifeq ($(ARCH),mips)
205 GALLIUM_DRIVERS+=etnaviv
206 endif
207
208 ifeq ($(ARCH),mipsel)
209 GALLIUM_DRIVERS+=etnaviv
210 endif
211
212 ifeq ($(ARCH),x86_64)
213 GALLIUM_DRIVERS+=svga
214 endif
215
216 ifeq ($(ARCH),i386)
217 GALLIUM_DRIVERS+=svga
218 endif
219
220 ifeq ($(ARCH),i686)
221 GALLIUM_DRIVERS+=svga
222 endif
223
224 ifneq ($(CONFIG_PACKAGE_libvulkan-broadcom),)
225 VULKAN_DRIVERS+=broadcom
226 endif
227
228 ifneq ($(CONFIG_PACKAGE_libvulkan-freedreno),)
229 VULKAN_DRIVERS+=freedreno
230 endif
231
232 ifneq ($(CONFIG_PACKAGE_libvulkan-intel),)
233 VULKAN_DRIVERS+=intel
234 endif
235
236 MESON_ARGS += \
237 -Dplatforms=wayland \
238 -Dglx=disabled \
239 -Ddri3=enabled \
240 -Degl=enabled \
241 -Dgbm=enabled \
242 -Dgles1=enabled \
243 -Dgles2=enabled \
244 -Dglvnd=false \
245 -Dopengl=true \
246 -Dandroid-stub=false \
247 -Ddri-drivers=$(subst $(space),$(comma),$(strip $(DRI_DRIVERS))) \
248 -Dgallium-drivers=$(subst $(space),$(comma),$(strip $(GALLIUM_DRIVERS))) \
249 -Dvulkan-drivers=$(subst $(space),$(comma),$(strip $(VULKAN_DRIVERS))) \
250 -Dosmesa=true \
251 -Dtools= \
252 -Dllvm=disabled \
253 -Dshared-glapi=enabled \
254 -Ddraw-use-llvm=false \
255 -Dscanner_bin="$(STAGING_DIR_HOSTPKG)/bin/wayland-scanner"
256
257 TARGET_CFLAGS += -I$(MESON_BUILD_DIR)/src/broadcom/
258
259 define Build/Configure
260 $(call Py3Build/InstallBuildDepends)
261 $(call Build/Configure/Meson)
262 endef
263
264 define Build/InstallDev
265 $(INSTALL_DIR) $(1)/usr/include
266 $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
267 $(INSTALL_DIR) $(1)/usr/lib
268 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
269 $(INSTALL_DIR) $(1)/usr/lib/dri
270 $(CP) $(PKG_INSTALL_DIR)/usr/lib/dri/* $(1)/usr/lib/dri/
271 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
272 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
273 endef
274
275 define Package/libglapi/install
276 $(INSTALL_DIR) $(1)/usr/lib
277 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libglapi.so* $(1)/usr/lib/
278 endef
279
280 define Package/libxatracker/install
281 $(INSTALL_DIR) $(1)/usr/lib
282 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxatracker.so* $(1)/usr/lib/
283 endef
284
285 define Package/libmesa/install
286 $(INSTALL_DIR) $(1)/usr/lib
287 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*GL*.so* $(1)/usr/lib/
288 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgbm.so* $(1)/usr/lib/
289 $(INSTALL_DIR) $(1)/usr/share/drirc.d
290 $(CP) $(PKG_INSTALL_DIR)/usr/share/drirc.d/* $(1)/usr/share/drirc.d/
291 endef
292
293 define Package/libosmesa/install
294 $(INSTALL_DIR) $(1)/usr/lib
295 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libOSMesa.so* $(1)/usr/lib/
296 endef
297
298 define Package/libvulkan-broadcom/install
299 $(INSTALL_DIR) $(1)/usr/lib
300 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvulkan_broadcom.so $(1)/usr/lib/
301 $(INSTALL_DIR) $(1)/usr/share/vulkan/icd.d
302 $(CP) $(PKG_INSTALL_DIR)/usr/share/vulkan/icd.d/broadcom_icd.generic.json $(1)/usr/share/vulkan/icd.d/
303 endef
304
305 define Package/libvulkan-freedreno/install
306 $(INSTALL_DIR) $(1)/usr/lib
307 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvulkan_freedreno.so $(1)/usr/lib/
308 $(INSTALL_DIR) $(1)/usr/share/vulkan/icd.d
309 $(CP) $(PKG_INSTALL_DIR)/usr/share/vulkan/icd.d/freedreno_icd.generic.json $(1)/usr/share/vulkan/icd.d/
310 endef
311
312 define Package/libvulkan-intel/install
313 $(INSTALL_DIR) $(1)/usr/lib
314 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvulkan_intel.so $(1)/usr/lib/
315 $(INSTALL_DIR) $(1)/usr/share/vulkan/icd.d
316 $(CP) $(PKG_INSTALL_DIR)/usr/share/vulkan/icd.d/intel_icd.generic.json $(1)/usr/share/vulkan/icd.d/
317 endef
318
319 define PluginInstall
320 define Package/libmesadri-$(subst _,-,$(firstword $(subst :, ,$(1))))/install
321 $(INSTALL_DIR) $$(1)/usr/lib/dri
322 $(INSTALL_BIN) \
323 $(PKG_INSTALL_DIR)/usr/lib/dri/$(firstword $(subst :, ,$(1)))_dri.so \
324 $$(1)/usr/lib/dri
325 endef
326 endef
327
328 $(foreach file,$(DRI_PLUGINS),$(eval $(call PluginInstall,$(file))))
329 $(foreach file,$(DRI_PLUGINS),$(eval $(call BuildPackage,libmesadri-$(subst _,-,$(firstword $(subst :, ,$(file)))))))
330 $(eval $(call BuildPackage,libxatracker))
331 $(eval $(call BuildPackage,libglapi))
332 $(eval $(call BuildPackage,libmesa))
333 $(eval $(call BuildPackage,libosmesa))
334 $(eval $(call BuildPackage,libvulkan-intel))
335 $(eval $(call BuildPackage,libvulkan-broadcom))
336 $(eval $(call BuildPackage,libvulkan-freedreno))