mesa: update to 25.0.5

Improve build and make dependency on LLVM conditional.

Fixes: #60
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle
2025-05-03 04:38:05 +01:00
parent 1c22abb81a
commit 2ebf064c05
2 changed files with 60 additions and 68 deletions

View File

@@ -1,22 +1,20 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mesa
PKG_VERSION:=24.3.1
PKG_VERSION:=25.0.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://archive.mesa3d.org/
PKG_HASH:=9c795900449ce5bc7c526ba0ab3532a22c3c951cab7e0dd9de5fcac41b0843af
PKG_HASH:=c0d245dea0aa4b49f74b3d474b16542e4a8799791cd33d676c69f650ad4378d0
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
PKG_INSTALL:=1
# arc, powerpc and powerpc64 LLVM builds are currently broken, but powerpc{,64} would support JIT in theory
LLVM_SUPPORTED:=(aarch64||arm||i386||i686||loongarch64||mips||mipsel||mips64||mips64el||riscv64||x86_64)
PKG_BUILD_DEPENDS:=glslang/host python3/host libva MESA_USE_LLVM:llvm MESA_USE_LLVM:mesa/host
PKG_BUILD_DEPENDS:=glslang/host python3/host libva (x86_64||i386||i686):mesa/host $(LLVM_SUPPORTED):llvm
HOST_BUILD_DEPENDS:=python3/host spirv-tools/host llvm
PKG_CONFIG_DEPENDS:= \
@@ -51,12 +49,6 @@ PYTHON3_PKG_BUILD:=0
MESON_USE_STAGING_PYTHON:=1
HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:=./host-pip-requirements.txt
ifneq ($(CONFIG_aarch64)$(CONFIG_arm)$(CONFIG_i386)$(CONFIG_i686)$(CONFIG_loongarch64)$(CONFIG_mips)$(CONFIG_mipsel)$(CONFIG_mips64)$(CONFIG_mips64el)$(CONFIG_riscv64)$(CONFIG_x86_64),)
MESA_USE_LLVM:=1
else
MESA_USE_LLVM:=
endif
include $(TOPDIR)/feeds/packages/lang/rust/rust-values.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
@@ -72,41 +64,40 @@ define Package/mesa/Default
SECTION:=libs
CATEGORY:=Libraries
SUBMENU:=Video
DEPENDS:=+powerpc:libatomic
TITLE:=Mesa3D
URL:=https://www.mesa3d.org
endef
define Package/libmesa/Default
define Package/mesa3d
$(call Package/mesa/Default)
DEPENDS:=+libglapi +libstdcpp +zlib +libdrm +libsensors +libwayland +libzstd \
+wayland-protocols
TITLE+= OpenGL and friends
PROVIDES:=libmesa
HIDDEN:=1
endef
define Package/libglapi
$(call Package/mesa/Default)
TITLE+= libglapi
DEPENDS:=+libpthread +libatomic
VARIANT:=softpipe
endef
define Package/libglapi/description
Free implementation of the GL API.
endef
define Package/libglapi/config
define Package/mesa3d/config
config HAVE_MESA
bool
default y
config MESA_USE_LLVM
bool "Use LLVM to build MESA"
depends on aarch64||arm||i386||i686||loongarch64||mips||mipsel||mips64||mips64el||riscv64||x86_64
default y
endef
define Package/libmesa/Default
$(call Package/mesa/Default)
DEPENDS+=+libstdcpp +zlib +libdrm +libsensors +libwayland +libzstd \
+wayland-protocols
PROVIDES:=libmesa
TITLE+= OpenGL and friends
endef
define Package/libmesa-amd
$(call Package/libmesa/Default)
TITLE+= (AMD)
DEPENDS+=+libdrm-amdgpu +libdrm-radeon +libelf @$(LLVM_SUPPORTED)
DEPENDS+=+libdrm-amdgpu +libdrm-radeon +libelf @MESA_USE_LLVM
VARIANT:=amd
endef
@@ -130,7 +121,7 @@ endef
define Package/libmesa-intel
$(call Package/libmesa/Default)
DEPENDS+=+libdrm-intel @(i386||i686||x86_64)
DEPENDS+=+libdrm-intel @(i386||i686||x86_64) @MESA_USE_LLVM
TITLE+= (Intel)
VARIANT:=intel
endef
@@ -186,7 +177,7 @@ endef
define Package/libmesa-nouveau
$(call Package/libmesa/Default)
DEPENDS+=+libdrm-nouveau @$(LLVM_SUPPORTED)
DEPENDS+=+libdrm-nouveau @MESA_USE_LLVM
TITLE+= (NVIDIA)
VARIANT:=nouveau
endef
@@ -287,7 +278,7 @@ define Package/libmesa-zink
$(call Package/libmesa/Default)
TITLE+= (Zink GL via Vulkan)
VARIANT:=vulkan
DEPENDS+=@$(LLVM_SUPPORTED)
DEPENDS+=@MESA_USE_LLVM
endef
define Package/libmesa-zink/description
@@ -313,7 +304,7 @@ endef
define Package/libmesa-llvmpipe
$(call Package/libmesa/Default)
TITLE+= (LLVMpipe)
DEPENDS+=@$(LLVM_SUPPORTED)
DEPENDS+=@MESA_USE_LLVM
VARIANT:=llvmpipe
endef
@@ -331,7 +322,8 @@ define Package/libopencl/Default
$(call Package/mesa/Default)
TITLE+= OpenCL
PROVIDES:=libopencl
DEPENDS:=+$(LLVM_SUPPORTED):libclang-cpp +libdrm +libelf +libexpat +libstdcpp +libzstd +zlib @$(LLVM_SUPPORTED)
DEPENDS+=+MESA_USE_LLVM:libclang-cpp +libdrm +libelf +libexpat +libstdcpp \
+libzstd +zlib @MESA_USE_LLVM
endef
@@ -358,7 +350,7 @@ endef
define Package/libosmesa/Default
$(call Package/mesa/Default)
DEPENDS:=+libdrm +libglapi +libstdcpp +zlib +libwayland +libzstd +wayland-protocols
DEPENDS+=+libdrm +libstdcpp +zlib +libwayland +libzstd +wayland-protocols
TITLE+= off-screen rendering library
endef
@@ -385,7 +377,7 @@ endef
define Package/libosmesa-llvmpipe
$(call Package/libosmesa/Default)
TITLE+= (LLVMpipe)
DEPENDS+=@$(LLVM_SUPPORTED)
DEPENDS+=@MESA_USE_LLVM
VARIANT:=llvmpipe
endef
@@ -398,7 +390,7 @@ endef
define Package/libvulkan-broadcom
$(call Package/mesa/Default)
DEPENDS:=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
DEPENDS+=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
@(arm||aarch64) @HAS_FPU
TITLE+= Broadcom Vulkan driver
VARIANT:=vulkan
@@ -411,8 +403,8 @@ endef
define Package/libvulkan-imagination
$(call Package/mesa/Default)
DEPENDS:=+libatomic +libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
@(aarch64||arm||mips||mips64||mipsel||mips64el||riscv64)
DEPENDS+=+libatomic +libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd \
+zlib @(aarch64||arm||mips||mips64||mipsel||mips64el||riscv64)
TITLE+= Imagination PowerVR driver (EXPERIMENTAL)
VARIANT:=vulkan
endef
@@ -435,8 +427,8 @@ endef
define Package/libvulkan-intel
$(call Package/mesa/Default)
DEPENDS:=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
@(i386||i686||x86_64)
DEPENDS+=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
@(i386||i686||x86_64) @MESA_USE_LLVM
TITLE+= Intel Gen9+ Vulkan driver
VARIANT:=vulkan
endef
@@ -448,8 +440,8 @@ endef
define Package/libvulkan-intel-hasvk
$(call Package/mesa/Default)
DEPENDS:=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
@(i386||i686||x86_64)
DEPENDS+=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
@(i386||i686||x86_64) @MESA_USE_LLVM
TITLE+= Intel Gen7/Gen8 Vulkan driver
VARIANT:=vulkan
endef
@@ -461,7 +453,7 @@ endef
define Package/libvulkan-lvp
$(call Package/mesa/Default)
DEPENDS:=+libatomic +libdrm +libstdcpp +libudev +libwayland +libzstd +zlib @$(LLVM_SUPPORTED)
DEPENDS+=+libatomic +libdrm +libstdcpp +libudev +libwayland +libzstd +zlib @MESA_USE_LLVM
TITLE+= LLVM JIT CPU rendering Vulkan driver
VARIANT:=vulkan
endef
@@ -474,7 +466,7 @@ endef
define Package/libvulkan-nouveau
$(call Package/mesa/Default)
TITLE+= nouveau Vulkan driver for nVidia GPUs
DEPENDS:=$(RUST_ARCH_DEPENDS) @BROKEN
DEPENDS+=$(RUST_ARCH_DEPENDS) @MESA_USE_LLVM @BROKEN
VARIANT:=vulkan
# needs rust-bindgen which currently can't be built
endef
@@ -490,7 +482,7 @@ endef
define Package/libvulkan-panfrost
$(call Package/mesa/Default)
DEPENDS:=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
DEPENDS+=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \
@(arm||aarch64)
TITLE+= ARM Mali Midgard/Bifrost/Valhall Vulkan driver
VARIANT:=vulkan
@@ -504,7 +496,8 @@ endef
define Package/libvulkan-radeon
$(call Package/mesa/Default)
TITLE+= AMD Radeon Vulkan driver
DEPENDS:=+libatomic +libdrm-amdgpu +libelf +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib @$(LLVM_SUPPORTED)
DEPENDS+=+libdrm-amdgpu +libelf +libexpat +libstdcpp +libudev +libwayland \
+libzstd +zlib @MESA_USE_LLVM
VARIANT:=vulkan
endef
@@ -562,12 +555,15 @@ MESON_HOST_ARGS += \
-Dgallium-xa=disabled \
-Dtools=nir \
-Dllvm=enabled \
-Dmesa-clc=enabled \
-Dprecomp-compiler=enabled \
-Dshared-llvm=disabled \
-Dshared-glapi=disabled \
-Ddraw-use-llvm=false \
-Dintel-clc=enabled \
-Dstatic-libclc=all \
-Dinstall-intel-clc=true
-Dinstall-intel-clc=true \
-Dinstall-mesa-clc=true \
-Dinstall-precomp-compiler=true
MESON_ARGS += \
-Dplatforms=wayland \
@@ -582,11 +578,12 @@ MESON_ARGS += \
-Dlibunwind=disabled \
-Dvalgrind=disabled \
-Dtools= \
-Dllvm=$(if $(MESA_USE_LLVM),en,dis)abled \
-Dshared-glapi=enabled \
-Dgallium-opencl=$(if $(MESA_USE_LLVM),standalone,disabled) \
-Ddraw-use-llvm=$(if $(MESA_USE_LLVM),true,false) \
-Dintel-clc=system
-Dllvm=$(if $(CONFIG_MESA_USE_LLVM),en,dis)abled \
-Dgallium-opencl=$(if $(CONFIG_MESA_USE_LLVM),standalone,disabled) \
-Ddraw-use-llvm=$(if $(CONFIG_MESA_USE_LLVM),true,false) \
-Dintel-clc=system \
-Dmesa-clc=system \
-Dprecomp-compiler=system
ifeq ($(BUILD_VARIANT),amd)
MESON_ARGS += \
@@ -670,7 +667,7 @@ define Host/Configure
$(LN) $(STAGING_DIR_HOST)/llvm-mesa/include $(HOST_BUILD_DIR)/subprojects/llvm
$(LN) $(STAGING_DIR_HOST)/llvm-mesa/lib $(HOST_BUILD_DIR)/subprojects/llvm
$(CP) ./llvm-meson.build.in $(HOST_BUILD_DIR)/subprojects/llvm/meson.build
LLVM_BUILDDIR=$(wildcard $(BUILD_DIR_HOST)/llvm-mesa/llvm-project-*) ; LLVM_VER=$$$${LLVM_BUILDDIR##*llvm-project-} ; LLVM_VER=$$$${LLVM_VER%%.src} ;\
LLVM_BUILDDIR=$(lastword $(wildcard $(BUILD_DIR_HOST)/llvm-mesa/llvm-project-*)) ; LLVM_VER=$$$${LLVM_BUILDDIR##*llvm-project-} ; LLVM_VER=$$$${LLVM_VER%%.src} ;\
$(SED) "s%@LLVM_VERSION@%$$$${LLVM_VER}%" $(HOST_BUILD_DIR)/subprojects/llvm/meson.build
LLVM_LIBS=$$$$( next_comma='' ; for lib in $(STAGING_DIR_HOST)/llvm-mesa/lib/*.a; do \
lib=$$$${lib##*/lib} ; \
@@ -715,11 +712,6 @@ define Build/InstallDev
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
endef
define Package/libglapi/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libglapi.so* $(1)/usr/lib
endef
define Package/libmesa/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*GL*.so* $(1)/usr/lib
@@ -821,7 +813,7 @@ Package/libopencl-nouveau/install = $(Package/libopencl/install)
Package/libosmesa-softpipe/install = $(Package/libosmesa/install)
Package/libosmesa-llvmpipe/install = $(Package/libosmesa/install)
$(eval $(call BuildPackage,libglapi))
$(eval $(call BuildPackage,mesa3d))
$(eval $(call BuildPackage,libmesa-amd))
$(eval $(call BuildPackage,libmesa-intel))
$(eval $(call BuildPackage,libmesa-tegra))

View File

@@ -1,6 +1,6 @@
--- a/meson.build
+++ b/meson.build
@@ -1748,21 +1748,26 @@ _llvm = get_option('llvm')
@@ -1782,21 +1782,26 @@ _llvm = get_option('llvm')
dep_llvm = null_dep
with_llvm = false
if _llvm.allowed()
@@ -42,7 +42,7 @@
endif
if with_llvm
pre_args += '-DMESA_LLVM_VERSION_STRING="@0@"'.format(dep_llvm.version())
@@ -1861,7 +1866,11 @@ endif
@@ -1895,7 +1900,11 @@ endif
dep_clang = null_dep
if with_clc or with_gallium_clover
@@ -76,8 +76,8 @@
)
--- a/src/gallium/frontends/clover/meson.build
+++ b/src/gallium/frontends/clover/meson.build
@@ -31,6 +31,12 @@ if with_clover_spirv
clover_spirv_cpp_args += '-DHAVE_CLOVER_SPIRV'
@@ -26,6 +26,12 @@ if with_opencl_icd
clover_cpp_args += '-DHAVE_CLOVER_ICD'
endif
+if dep_llvm.type_name() == 'internal'
@@ -89,9 +89,9 @@
libclllvm = static_library(
'clllvm',
files(
@@ -50,7 +56,7 @@ libclllvm = static_library(
@@ -44,7 +50,7 @@ libclllvm = static_library(
clover_cpp_args,
clover_opencl_cpp_args,
clover_spirv_cpp_args,
'-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
- dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir'), 'clang',
+ llvm_libdir, 'clang',