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

View File

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