324 Commits

Author SHA1 Message Date
Daniel Golle a951381b6c sdl3: keep SDL3_test from linking against libunwind
SDL3's CheckLibUnwind cmake macro autodetects libunwind for the
SDL3_test library and offers no option to disable it. On the buildbots
libunwind is present in staging, so the test programs end up linked
against it and packaging libsdl3-tests fails:

  Package libsdl3-tests is missing dependencies for the following libraries:
  libunwind-x86_64.so.8
  libunwind.so.8

This aborts the whole sdl3 build before anything is staged, taking
down every package depending on SDL3 or SDL2 (sdl2-compat, sdl2-image,
sdl2-mixer, sdl3-image, sdl3-mixer, sdl3-doom, gzdoom, vice).

Preseed the three detection cache variables to OFF so the result no
longer depends on whether libunwind happens to be staged; it is only
used for symbolised backtraces in test leak reports.

Fixes: 51549dadd5 ("sdl3: add SDL3 3.4.10")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-12 01:13:26 +01:00
Daniel Golle a022f83b56 vice: explicitly pin all configure knobs to fix missing library deps
The buildbot reported vice missing dependencies for libbsd.so.0,
libnet.so.9 and libusb-1.0.so.0. All three came from configure
autodetecting libraries that merely happened to be present in
staging_dir:

  - The NETPLAY_LIBS probes run AC_CHECK_LIB(bsd/net/..., gethostbyname)
    and AC_CHECK_LIB(bsd, gettimeofday). On musl these symbols live in
    libc, so every probe spuriously succeeds for any of those libraries
    that exists, appending -lbsd and -lnet.
  - The USBSID-Pico path adds -lusb-1.0 to LIBS whenever
    libusb-1.0/libusb.h is found; it is gated only by the unregistered
    $enable_usbsid shell variable.

Force the offending cache variables off and set enable_usbsid=no, and
pin every remaining dependency-affecting knob to an explicit value so
nothing is auto-detected. Also disable --enable-arch, which defaults to
on and injects -march=native, wrong under cross-compilation.

Verified on x86_64: the binaries no longer link libbsd, libnet or
libusb and the package builds cleanly.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:40:40 +01:00
Daniel Golle b59c3b510d sdl2-doom: drop in favour of sdl3-doom
The orphaned sdl2-doom port is superseded by sdl3-doom, which targets SDL3 directly.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle ed0ecdeb13 sdl3-doom: add SDL3 Doom
A source port of DOOM to SDL3 (raydelto/sdl3_doom), the first real SDL3
application in the feed, replacing the orphaned sdl2-doom. It builds
against libsdl3 and libsdl3-mixer and plays authentic OPL FM music from
the IWAD's GENMIDI lump, needing no soundfont.

The upstream port targets an early SDL3_mixer prerelease (Mix_* API,
removed in SDL_mixer 3.2.0) and had dropped the OPL music backend. Carry
nine patches: port both audio backends to the track-based MIX_* API,
share a single mixer device, link the exported SDL3 CMake targets, build
the sound-effect module (FEATURE_SOUND), restore the Chocolate DOOM OPL
backend for native FM music, fix a pre-existing status-bar crash and drop
the stale SDL2_mixer cmake module. These are also suitable to submit
upstream.

https://github.com/raydelto/sdl3_doom
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle 6dc81a7a4d sdl3-mixer: add SDL3_mixer 3.2.4
SDL3-native audio mixer library (libSDL3_mixer), built directly against
SDL3 so it coexists with sdl2-mixer's libSDL2_mixer. MIDI, Opus, WavPack
and MOD support via libfluidsynth, libopusfile, libwavpack and libxmp.

https://github.com/libsdl-org/SDL_mixer/releases/tag/release-3.2.4
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle 1d087895e9 sdl2-image: use system image libraries instead of the stb backend
Build PNG, JPEG, TIFF and WebP support against the libpng, libjpeg,
libtiff and libwebp packages rather than the bundled stb_image backend.
Listing them as dependencies ensures the cross-built target libraries
are picked up instead of host libraries.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle 37de0f96e2 sdl3-image: add SDL3_image 3.4.4
SDL3-native image loading library (libSDL3_image), built directly
against SDL3 so it coexists with sdl2-image's libSDL2_image. PNG, JPEG,
TIFF and WebP are handled by the libpng, libjpeg, libtiff and libwebp
packages, listed as dependencies so the cross-built target libraries
are used instead of host libraries; the bundled stb backend is disabled.

https://github.com/libsdl-org/SDL_image/releases/tag/release-3.4.4
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle 60bc630b15 sdl2-mixer: update to version 2.8.2
Stay on the SDL2 line (libSDL2_mixer), now built against the sdl2-compat
layer. 2.8.2 is the current latest SDL2-targeting SDL_mixer release; the
SDL3-native line is packaged separately as sdl3-mixer.

https://github.com/libsdl-org/SDL_mixer/releases/tag/release-2.8.2
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle d32c38a240 sdl2-compat: add SDL2 compatibility layer on SDL3
sdl2-compat implements the SDL2 API on top of SDL3, shipping the
libSDL2-2.0 shared library and SDL2 development files. The package is
named libsdl2-compat and only PROVIDES libsdl2, so existing SDL2
consumers resolve to it without a package name collision while the
single SDL3 build backs both APIs.

https://github.com/libsdl-org/sdl2-compat/releases/tag/release-2.32.70
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle 1b663e7555 sdl2: drop standalone SDL2 in favour of sdl2-compat
The SDL2 library is now provided by the sdl2-compat package built on top
of SDL3, so the standalone SDL2 2.32.x package is no longer needed.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle 51549dadd5 sdl3: add SDL3 3.4.10
Core Simple DirectMedia Layer 3 library, the base for the SDL2 to SDL3
transition. CMake build with the same backend selection as the SDL2
package (KMSDRM, Wayland, Vulkan, OpenGL/ES, ALSA and PulseAudio with
dlopen, HIDAPI, dummy video/audio; X11 and dbus off). Provides
libSDL3.so and the SDL3 development files, plus a libsdl3-tests package
with the upstream installed-tests (SDL_INSTALL_TESTS).

https://github.com/libsdl-org/SDL/releases/tag/release-3.4.10
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:09:25 +01:00
Daniel Golle 58f9510cfc wlroots: update to version 0.20.1
Bugfix point release on the 0.20 stable series.

https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.20.1
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:08:18 +01:00
Daniel Golle 59344a8a6f pango: update to version 1.57.1
New 1.57 stable series.

https://gitlab.gnome.org/GNOME/pango/-/blob/1.57.1/NEWS
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 17:08:01 +01:00
Daniel Golle c04292defd zmusic: update to version 1.3.0
Drop 100-fix-endian-detect-with-musl.patch: upstream rewrote the bundled
game-music-emu endian detection (the __GLIBC__ / <endian.h> block is
gone, now defaulting to little-endian), so the musl workaround is
obsolete. Verified gzdoom, the only consumer, still builds against the
updated library.

https://github.com/ZDoom/ZMusic/releases/tag/1.3.0
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-11 00:32:34 +01:00
Daniel Golle 1eea39be15 vkmark: update to latest git HEAD
Update to upstream commit 83a128d (2025-09-08).

https://github.com/vkmark/vkmark
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 21:23:36 +01:00
Daniel Golle a422382c40 mesa: update to version 26.1.2
Bugfix point release on the 26.1 stable series.

https://docs.mesa3d.org/relnotes/26.1.2.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:52:17 +01:00
Daniel Golle 559cb9075e wayland-protocols: update to version 1.49
Adds new and updated Wayland protocol definitions.

https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.49
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:51:48 +01:00
Daniel Golle a5e8aecf2b libxkbcommon: update to version 1.13.2
Pass the xkb-config extensions path options explicitly: 1.13.2 adds
versioned and unversioned extensions directories, and tools/info.c
references DFLT_XKB_CONFIG_*_EXTENSIONS_PATH unconditionally while meson
only defines them when an xkeyboard-config root is detected, which broke
the build otherwise. Refresh 100-no-python.patch for the new source.

https://github.com/xkbcommon/libxkbcommon/blob/xkbcommon-1.13.2/NEWS.md
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:51:29 +01:00
Daniel Golle f3270beefa harfbuzz: update to version 14.2.1
Bugfix point release.

https://github.com/harfbuzz/harfbuzz/releases/tag/14.2.1
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:50:31 +01:00
Daniel Golle c8777c9fa0 vulkan-tools: update to 1.4.350.0 (Vulkan SDK 1.4.350)
Part of the coordinated Vulkan SDK 1.4.350 release (vulkan-sdk-1.4.350.0).

https://vulkan.lunarg.com/doc/sdk/1.4.350.0/linux/release_notes.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:50:14 +01:00
Daniel Golle 7654ea0957 vulkan-loader: update to 1.4.350.0 (Vulkan SDK 1.4.350)
Part of the coordinated Vulkan SDK 1.4.350 release (vulkan-sdk-1.4.350.0).

https://vulkan.lunarg.com/doc/sdk/1.4.350.0/linux/release_notes.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:50:14 +01:00
Daniel Golle 9d7f73ae3e vulkan-headers: update to 1.4.350.0 (Vulkan SDK 1.4.350)
Part of the coordinated Vulkan SDK 1.4.350 release (vulkan-sdk-1.4.350.0).

https://vulkan.lunarg.com/doc/sdk/1.4.350.0/linux/release_notes.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:50:14 +01:00
Daniel Golle 5861eeb090 glslang: update to 16.3.0 (Vulkan SDK 1.4.350)
Part of the coordinated Vulkan SDK 1.4.350 release (vulkan-sdk-1.4.350.0).

https://vulkan.lunarg.com/doc/sdk/1.4.350.0/linux/release_notes.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:50:14 +01:00
Daniel Golle 3344432395 spirv-tools: update to 1.4.350.0 (Vulkan SDK 1.4.350)
Part of the coordinated Vulkan SDK 1.4.350 release (vulkan-sdk-1.4.350.0).

https://vulkan.lunarg.com/doc/sdk/1.4.350.0/linux/release_notes.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:50:14 +01:00
Daniel Golle 076b6bd616 spirv-headers: update to 1.4.350.0 (Vulkan SDK 1.4.350)
Part of the coordinated Vulkan SDK 1.4.350 release (vulkan-sdk-1.4.350.0).

https://vulkan.lunarg.com/doc/sdk/1.4.350.0/linux/release_notes.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-10 04:50:14 +01:00
Daniel Golle d6cd95b81b vice: add package
Package the VICE Commodore emulator 3.10, built against SDL2 with ALSA
sound output.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-09 13:57:05 +01:00
Daniel Golle bb1cdf1439 sdl2-image: add package
Package libsdl2-image (SDL_image 2.8.12) using the bundled stb_image
backend, so it depends only on libsdl2. Required by the vice SDL2 UI.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-09 13:57:05 +01:00
Daniel Golle 5a17838a67 xa: add package
Package the xa65 6502/65816 cross-assembler with both a target build
and a host build. The host tool is required to assemble psiddrv during
the vice build.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-09 13:57:05 +01:00
Daniel Golle 54707e9c30 wpewebkit: fix build on ARMv7 soft-float targets
WebKit's JS JIT only supports ARMv7 with some kind of hard-float
support. Use the (slower) C-loop JS interpreter on soft-float ARMv7
to fix the build.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-06-09 04:03:00 +01:00
Daniel Golle d47edc891a vkmark: fix build if Vulkan is present on host
Make sure to not pick up host headers and libraries by setting
CMAKE_PREFIX_PATH.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-31 14:21:07 +01:00
Daniel Golle 0eb9f1b9ee vulkan-tools: add package
Add vulkan-tools source package providing only 'vulkaninfo' for now.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-31 14:20:28 +01:00
Daniel Golle 897356ac2f mesa: update to version 26.1.1
The first stable release of the Mesa 26.1 release branch comes with
countless new features and bugfixes since 26.0.6.

Link: https://docs.mesa3d.org/relnotes/26.1.0.html
Link: https://docs.mesa3d.org/relnotes/26.1.1.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-31 14:19:37 +01:00
Daniel Golle df0b899123 wpewebkit: update to version 2.52.3
Update WPEWebKit to the 2.52 stable major release branch.

Includes a pending patchset to get WASM BBQJIT working on RISCV64,
upstream PR https://github.com/WebKit/WebKit/pull/65621

Alltogether this brings acceptable performance (even with LLVMPipe
Mesa software renderer) on RISCV64.

Link: https://wpewebkit.org/release/wpewebkit-2.52.0.html
Link: https://wpewebkit.org/release/wpewebkit-2.52.1.html
Link: https://wpewebkit.org/release/wpewebkit-2.52.2.html
Link: https://wpewebkit.org/release/wpewebkit-2.52.3.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-27 19:27:26 +01:00
Daniel Golle be41d2f4dc wpebackend-fdo: update to version 1.16.1
* Support newer versions of Mesa where format/modifier events have
   been deprecated by implementing the needed parts of the DMA-BUF
   feedback protocol in the nested compositor.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-27 19:27:26 +01:00
Daniel Golle 393e8eac5b sdl2: update to 2.32.10
This is a stable bugfix release, with the following changes:

 * Fixed the dock occasionally showing on macOS when launching an SDL app

 * Report the correct device audio format when using Pipewire

 * Fixed signed 8-bit audio on Android

 * Support the "ambient" value for SDL_HINT_AUDIO_CATEGORY on iOS

 * Improved thumbstick range for Nintendo Switch Pro Controllers

 * Fixed loading user calibration for Nintendo Switch Pro Controllers

Patch 110-tests-no-libunwind.patch refreshed for the new upstream
context.

Add patch 120-tests-install-resources-to-datadir.patch which moves
the test resource files (.bmp, .hex, .txt, .dat, .wav) from
${libexecdir}/installed-tests/SDL2/ to
${datadir}/installed-tests/SDL2/, alongside the matching
${exe}.test descriptors. Upstream's install rule put them in
libexecdir, which is both inconsistent with the GNOME
installed-tests convention (data lives under datadir, only
binaries under libexecdir) and trips OpenWrt's package QA which
expects every regular file under /usr/libexec/ to carry the
executable bit. The patch also pins the install permissions to
0644 so the umask of the build host cannot influence the mode
of the installed files.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-20 00:28:53 +01:00
Daniel Golle 4fed050411 kmscube: update to GIT HEAD of 2025-10-24
Update PKG_SOURCE_VERSION to f60e50e887d3c49e91ac9b06d8199b36152632fa
to pick up upstream fixes accumulated since the 2024-11-06 snapshot.

Add libgst1gl to runtime DEPENDS - upstream now uses GstGL helpers.

kmscube has no tagged releases; track upstream master.

Link: https://gitlab.freedesktop.org/mesa/kmscube/-/commits/master
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-19 14:37:17 +01:00
Daniel Golle 751b350662 cage: update to 0.3.0
Bump from 0.2.0. Also fix PKG_SOURCE_URL to use $(PKG_VERSION)
instead of a hardcoded v0.2.0 path.

Link: https://github.com/cage-kiosk/cage/releases/tag/v0.3.0
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-19 14:36:11 +01:00
Daniel Golle ebb4860b96 harfbuzz: update to 14.2.0
Major release stream from 11.2.1 to 14.x. harfbuzz uses linear
versioning with each major bringing new shaping features and
improvements; 14.x is the current stable line.

Add PKG_BUILD_DEPENDS:=glib2/host: harfbuzz's meson.build pulls
glib_mkenums via the glib-2.0 pkg-config 'tool variable', and
OpenWrt's glib2 install rewrites gio-2.0.pc / glib-2.0.pc to point
at $(STAGING_DIR_HOSTPKG)/bin/glib-mkenums. That host binary is
only produced when glib2's host build runs, and without an
explicit dep on glib2/host the host build is skipped on clean CI
images that lack a system glib (failure message: "Program
/builder/staging_dir/hostpkg/bin/glib-mkenums found: NO -
Dependency 'glib-2.0' tool variable 'glib_mkenums' contains
erroneous value").

Link: https://github.com/harfbuzz/harfbuzz/releases/tag/14.2.0
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-19 10:59:51 +01:00
Daniel Golle 2e1072d4c7 gdk-pixbuf: update to 2.44.6
This series introduces the GLib-based gen-resources.py support
(new in 2.44) and other minor improvements over 2.42.12.

Add PKG_BUILD_DEPENDS:=glib2/host: gdk-pixbuf's meson.build now
calls find_program('glib-compile-resources') to invoke the GLib
host-side resource compiler during configure. The binary is
provided by glib2's host build at $(STAGING_DIR_HOSTPKG)/bin/,
so the dep is needed to make that host build actually run on
clean CI images (failure message: "Program glib-compile-resources
found: NO - ERROR: Program 'glib-compile-resources' not found or
not executable").

Drop the leftover '$(eval $(call HostBuild))' line: gdk-pixbuf
never included host-build.mk so the call was a no-op anyway.

Link: https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/blob/2.44.6/NEWS
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-19 10:59:00 +01:00
Daniel Golle 1b3744b6ab weston: update to 15.0.1
Major version update from 14.0.2.

Drop four downstream DRM backend patches (001-004) and the
100-timespec.patch that have all been merged upstream.

Drop the now-removed meson options:
  -Dbackend-drm-screencast-vaapi
  -Dscreenshare
  -Dshell-fullscreen (twice listed)

Add -Dshell-lua=false explicitly (default is auto, requires
Lua >= 5.4 which is not available on OpenWrt).

Add +vulkan-loader to runtime DEPENDS - libweston in 15.x links
against libvulkan unconditionally.

Link: https://gitlab.freedesktop.org/wayland/weston/-/releases/15.0.1
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-19 02:56:49 +01:00
Daniel Golle 5e90d40ce8 mesa: drop symmetric CONFLICTS between libteflon-rocket and libteflon-etnaviv
Make the CONFLICTS declaration asymmetric: only libteflon-rocket
declares CONFLICTS:=libteflon-etnaviv. That single side is
sufficient to force the mutual exclusion at Kconfig time
(selecting either disables the other) while breaking the cycle
that the symmetric form created.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-19 02:32:07 +01:00
Daniel Golle 691aa036dd graphene: update to GIT HEAD of 2025-12-19
Update PKG_SOURCE_VERSION to 98173e59a3d80d3dd5ad6e4eaab919b4649ac7e5
to pick up build-system fixes accumulated since the previous
2025-01-23 snapshot.

graphene has no tagged releases since 1.10.8 (2022); track upstream
master.

Switch Package/libgraphene/install from $(INSTALL_BIN) to $(CP):
INSTALL_BIN does not preserve symlinks, so the installed image was
ending up with three identical 148648-byte copies of the library
(libgraphene-1.0.so, libgraphene-1.0.so.0, libgraphene-1.0.so.0.1101.0)
instead of the upstream-installed symlink chain. The shlibs check
flagged this as "Library has SONAME 'libgraphene-1.0.so.0' but no
corresponding symlink was found in /usr/lib". $(CP), which expands
to "cp -fpR", preserves the symlinks correctly.

Link: https://gitlab.gnome.org/GNOME/graphene/-/commits/master
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-18 12:32:06 +01:00
Daniel Golle b68b93cd1d gtk: update to 4.22.4
Bump from 4.18.6 to current upstream stable.

GTK 4.22 highlights:
 * SVG support: built-in GtkSvg backend with native rendering
 * Updated GPU rendering with broader Vulkan adoption
 * Improved input methods, accessibility and DPI handling
 * Modernised GtkInscription, popovers and menus
 * Major-version glib requirement (>= 2.84)

Add -Dsysprof=disabled to MESON_ARGS - 4.22 pulls in libsysprof
which conflicts with the bundled glib subproject when sysprof
isn't available on the build host.

Drop the now-removed /usr/lib/gtk-4.0 directory copy from
Build/InstallDev (gtk no longer installs anything under that
path).

Link: https://gitlab.gnome.org/GNOME/gtk/-/tags/4.22.4
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-17 12:54:46 +01:00
Daniel Golle 9e78fb7a91 mesa: update to 26.0.6, add virtio + teflon (rocket / etnaviv)
Bump mesa from 25.2.4 to latest stable point release in the 26.0.x
series.

Drop 001-gallivm-support-LLVM-21.patch which has been merged
upstream. Refresh the remaining downstream patches
(100-meson-allow-using-LLVM-as-embedded-project,
200-panfrost-Enable-cross-compilation-of-precompilers-on) for
the new upstream context.

Add +libdisplay-info to the DEPENDS of every libvulkan-* package
(broadcom, imagination, intel, intel-hasvk, lvp, panfrost, radeon,
virtio): Mesa 26.0 unconditionally pulls libdisplay-info into the
WSI Vulkan path on Linux (gated only by host_machine.system() ==
'windows'), so every ICD now NEEDED-links libdisplay-info.so.3
and OpenWrt's shlibs check rejects packages without the explicit
dependency. libvulkan-nouveau is @BROKEN (needs Rust) so it does
not get touched.

The 'imagination-experimental' vulkan-drivers value got renamed to
plain 'imagination' in Mesa 26; update the VULKAN_DRIVERS entry
accordingly.

Add 'imagination' to the host build's -Dtools= list so the
PowerVR pco_clc precompiler is built and installed into
$(STAGING_DIR_HOSTPKG)/bin/ during the host-build stage. The
target vulkan variant uses -Dprecomp-compiler=system and looks
the binary up there via find_program('pco_clc', native:true);
without this, the target configure stage fails with
"Program 'pco_clc' not found or not executable" as soon as the
imagination vulkan driver enters the gallium tree.

New packages:

* libvulkan-virtio: the venus virtio-gpu Vulkan ICD, useful for
  VM/container guests forwarding Vulkan to a host GPU. Mirrors the
  libvulkan-lvp install pattern. Wired via VULKAN_DRIVERS+=virtio.

* libteflon-rocket and libteflon-etnaviv: two flavours of mesa's
  "teflon" TensorFlow Lite delegate. teflon links one or more NPU
  back-ends from gallium into a libteflon.so that TFLite loads as
  an external delegate. The two variants here cover the NPU silicon
  found on OpenWrt-supported hardware:

  - rocket: Rockchip RKNPU on RK3566 / RK3568 / RK3588(s)
    (rockchip/armv8 target).
  - etnaviv: VeriSilicon VIP9000-class NPU on NXP i.MX 8M Plus and
    i.MX 95 (imx/cortexa53 target).

  The Arm Ethos-U back-end is omitted; it targets Cortex-M55 MCUs
  which OpenWrt does not run on.

  Each variant is its own VARIANT= mesa build with
  -Dgallium-drivers=<rocket|etnaviv> -Dteflon=true; both produce
  /usr/lib/libteflon.so so the two packages declare each other as
  CONFLICTS (typical OpenWrt mesa-variant pattern).

A small downstream patch (300-teflon-conditional-npu-drivers.patch)
adjusts src/gallium/targets/teflon/meson.build so that the
driver_etnaviv / driver_rocket / driver_ethosu link_with entries
are conditional on with_gallium_<X> instead of unconditional.
Without it, building libteflon with only one back-end fails because
the other driver_X meson variables are undefined when the
corresponding gallium-driver is not selected.

Add 400-gallivm-lp-bld-misc-auto-iter-llvm22.patch to fix the
32-bit ARM build with the new LLVM 22. lp_bld_misc.cpp's
DETECT_ARCH_ARM branch (only reached on ARM-32) iterates the
feature StringMap with an explicit 'llvm::StringMapIterator<bool>'
type, which LLVM 22 renamed to 'llvm::StringMapIterBase<T, bool>'.
Use 'auto' for the iterator declaration so the code works
regardless of the LLVM major. Other targets (aarch64, x86,
x86_64, mips, ppc, riscv) are unaffected because the failing
loop is gated on DETECT_ARCH_ARM.

Disable -Dllvm and -Ddraw-use-llvm in the per-variant MESON_ARGS
for the gallium drivers where the aux 'draw' module is *dead
code*: softpipe, broadcom (vc4/v3d), lima, etnaviv,
teflon-rocket and teflon-etnaviv. Confirmed by inspecting
26.0.6 source: each of v3d, vc4, lima, etnaviv, panfrost (and
the NPU-only rocket/etnaviv teflon paths) registers its own
pipe_context->draw_vbo and never calls any draw_* aux-module
function (0 draw_create, 0 draw_set_so_targets, 0
draw_set_indirect_buffer, 0 draw_*_geometry, 0 src includes of
draw/*.h apart from one unused header in pan_screen.c).
Transform feedback, geometry shaders and indirect draws are
handled either in hardware or via the driver's own compute path,
never through the aux-draw module. softpipe and llvmpipe are the
only consumers of the aux-draw module; mesa.meson.build also
forces draw-use-llvm=true for llvmpipe/lavapipe/i915/r300-x86.

Net effect on libgallium-26.0.6.so, measured on
arm_cortex-a7+neon-vfpv4 (mediatek/mt7623):

  variant   libgallium before    libgallium after    .apk after
  ----------------------------------------------------------------
  softpipe        57.7 MB             16 MB           2.9 MB
  broadcom        57.7 MB             16 MB           3.2 MB
  lima            57.7 MB             16 MB           3.0 MB
  etnaviv         57.7 MB             16 MB           2.9 MB
  teflon-rocket   ~57 MB             ~16 MB           varies
  teflon-etnaviv  ~57 MB             ~16 MB           varies
  llvmpipe        57.9 MB             55-56 MB        15 MB    (unchanged - keeps LLVM)

LLVM-related strings in the LLVM-disabled variants drop from
208/220 to 5 (just stub strings that survive in the no-LLVM
draw path). The 41 MB removed from each was statically-linked
LLVM JIT that no code path in those drivers ever executed.

Relax the build-time dependency on llvm-mesa: a user who
selects only LLVM-free Mesa variants (softpipe/broadcom/lima/
etnaviv/teflon-*) no longer needs to build the entire llvm-mesa
package (which can take 30+ minutes from source). MESA_USE_LLVM
remains a user-visible toggle (defaults y for backward compat).
With CONFIG_MESA_USE_LLVM=n:

 * HOST_BUILD_DEPENDS drops the unconditional 'llvm' (now
   MESA_USE_LLVM:llvm), matching PKG_BUILD_DEPENDS.
 * MESON_HOST_ARGS skips -Dllvm/-Dmesa-clc/-Dprecomp-compiler/
   -Dstatic-libclc/-Dinstall-mesa-clc/-Dinstall-precomp-compiler
   and trims -Dtools to just 'nir'.
 * Host/Configure factors its LLVM-subproject linkage into a
   Host/Configure/LLVMMesa hook, mirroring the existing
   Build/Configure/LLVMMesa pattern.

Tested locally on arm_cortex-a7+neon-vfpv4 (mediatek/mt7623):

 * MESA_USE_LLVM=y, libmesa-softpipe + libmesa-llvmpipe: builds
   llvm-mesa, then mesa softpipe (38s, no-LLVM libgallium) and
   llvmpipe (42s, LLVM-linked libgallium 56 MB). All correct.

 * MESA_USE_LLVM=n, libmesa-softpipe only: 0 llvm/compile
   invocations, 0 mesa/host-compile invocations, total mesa
   build time 38s. libmesa-softpipe .apk identical (2.9 MB) to
   the MESA_USE_LLVM=y case.

Link: https://docs.mesa3d.org/relnotes/26.0.6.html
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-17 12:46:41 +01:00
Daniel Golle 26e03d11a0 llvm-mesa: update to 22.1.5 / SPIRV-LLVM-Translator 22.1.2
Bump the Mesa-internal LLVM (kept in feeds/video/libs/llvm/) from
21.1.3 to 22.1.5, and the matching SPIRV-LLVM-Translator from
21.1.1 to 22.1.2.

The SPIRV-LLVM-Translator's major version tracks LLVM's major,
so it caps which LLVM major we can move to. Khronos has now
shipped v22.1.2 (latest in the 22.x series), allowing the LLVM
major bump.

Mesa 26.0.6 sets only a minimum LLVM (>= 18 / 15 / 8 depending
on the requested driver set); no upper bound, so LLVM 22.x is
acceptable.

Two LLVM 22 build-system changes need adapting in the Makefile:

 1. LIBCLC_TARGETS_TO_BUILD got stricter target name validation:
    'amdgcn--amdhsa' is rejected in favour of 'amdgcn-amd-amdhsa',
    and the 32-bit nvptx ('nvptx--', 'nvptx--nvidiacl') targets
    were dropped (the 64-bit equivalents remain).

 2. libclc bytecode now installs under
    'usr/lib/clang/<major>/lib/libclc/' rather than the previous
    'usr/share/clc/'. Adjust the SPIR-V .spv copy in Build/Install
    to source from the new location (a glob on the major version
    avoids re-touching this on the next bump).

The downstream 100-allow-arc-target.patch still applies unchanged.

Link: https://github.com/llvm/llvm-project/releases/tag/llvmorg-22.1.5
Link: https://github.com/KhronosGroup/SPIRV-LLVM-Translator/releases/tag/v22.1.2
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-17 12:46:41 +01:00
Daniel Golle 0b52d667b8 pango: update to 1.56.4
Overview of changes in 1.56.4, 27-06-2025:

 * fontconfig: Improve the add_font_file implementation
 * fontconfig: Combine font features and style variants
 * fontconfig: Make sure font faces stay alive
 * win32: Drop some caching
 * win32: Make sure font faces stay alive
 * win32: Modernize and simplify the code
 * win32: Stop synthesizing fonts
 * win32: Implement list models
 * coretext: Support synthetic small caps
 * layout: Avoid assertions in line breaking
 * build: Require GLib 2.82

Link: https://gitlab.gnome.org/GNOME/pango/-/raw/1.56.4/NEWS
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-13 23:10:30 +01:00
Daniel Golle 060d917e70 wlroots: update to 0.20.0
Bump from 0.18.2 to current upstream stable.

Requires libdrm >= 2.4.129 and wayland-protocols 1.48+ with
the enum-header generator.

Link: https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.20.0
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-11 12:30:30 +01:00
Daniel Golle 5ecb069cd4 libxkbcommon: update to 1.13.1
Bump from 1.10.0 to current upstream stable.

Link: https://github.com/xkbcommon/libxkbcommon/blob/xkbcommon-1.13.1/NEWS.md
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-11 12:29:47 +01:00
Daniel Golle f212493fb6 wayland-utils: update to 1.3.0
Update from 1.2.0.

Link: https://gitlab.freedesktop.org/wayland/wayland-utils/-/tags/1.3.0
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-10 00:57:28 +01:00
Daniel Golle ba42527f2a wayland-protocols: update to 1.48
Bump from 1.45 to current upstream stable.

1.48 introduces the new 'enum-header' wayland-scanner mode that
generates a *-enum.h header per protocol. wlroots 0.20+ relies
on these. Extend Build/InstallDev to copy
/usr/include/wayland-protocols/*.h into staging so consumers can
include them via <wayland-protocols/...-enum.h>.

Link: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.48
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-10 00:57:28 +01:00