mesa: update to 25.0.5
authorDaniel Golle <[email protected]>
Sat, 3 May 2025 03:38:05 +0000 (04:38 +0100)
committerDaniel Golle <[email protected]>
Mon, 12 May 2025 18:01:45 +0000 (19:01 +0100)
Improve build and make dependency on LLVM conditional.

Fixes: #60
Signed-off-by: Daniel Golle <[email protected]>
libs/mesa/Makefile
libs/mesa/patches/100-use-llvm-subproject-vars.patch

index f26c43a31c671873b6b371641684ac0b0019eb48..ef3477b6e276f41b1a12e125545d056392b324ee 100644 (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 <[email protected]>
 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
-$(call Package/mesa/Default)
-  DEPENDS:=+libglapi +libstdcpp +zlib +libdrm +libsensors +libwayland +libzstd \
-          +wayland-protocols
-  TITLE+= OpenGL and friends
-  PROVIDES:=libmesa
-endef
-
-
-define Package/libglapi
+define Package/mesa3d
 $(call Package/mesa/Default)
-  TITLE+= libglapi
-  DEPENDS:=+libpthread +libatomic
-  VARIANT:=softpipe
-endef
-
-define Package/libglapi/description
-Free implementation of the GL API.
+  HIDDEN:=1
 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))
index d293793a506d6261982a7498c7ae83b9c872feee..b6b5cf7d8db8a349bf029e6d33e7e9d433ce6d77 100644 (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',