The configure builds, Android, Apple, UWP and webOS were on the
built-in codec, HAVE_RZSTD; nobody set HAVE_ZSTD, the reference
library, any more; and the console and handheld makefiles - 3DS,
PSP, PS2, Wii U, GameCube, Wii, Vita, Switch, Orbis, Emscripten, DOS,
the Dingux family, the Pandora, the Win32 griffin build - had
neither, so .zst archives, Zstandard CHD hunks, RVZ hashing and
compressed input replays were absent there. HAVE_RZSTD everywhere:
one C file with no dependency, compiled into griffin builds through
griffin.c and into the others through Makefile.common.
ZLIB_LIBS is never assigned anywhere, so every makefile target that set
HAVE_ZLIB=1 compiled trans_stream_zlib.c and archive_file_zlib.c against
<zlib.h> and then failed to link -- there is no longer a vendored
implementation behind them. psl1ght hit this first; MSVC hit the
compile-side variant once the compat/zlib headers went away.
Take HAVE_ZLIB out of every platform. RetroArch decodes PNG with rpng,
so the -lpng that pulled zlib in on vita and wiiu was only ever a
convenience for statically linked cores, and android's -lz went with it.
No target enables zlib by default any more: trans_stream_zlib.c is now
reachable only through the explicit HAVE_ZLIB=1 opt-in in
Makefile.common and its matching guard in griffin.
psl1ght additionally drops freetype for stb font: libfreetype pulls
inflate/inflateEnd in through ftgzip, which is the same undefined
reference by another route.
Also repair damage from the earlier -I removal, which deleted the last
entry of several line-continued lists and left the preceding line with a
trailing backslash: vita and ctr swallowed the following 'else' (vita
lost main() entirely), orbis ended up with a literal '\' argument, and
psp1 and griffin were left with an empty continuation and a bare
'CFLAGS +='.
The database sample never built archive_file_7z's strldup dependency;
add compat_strldup.c. test_rpng and the json sample both compiled
trans_stream_zlib.c without a zlib to link against; point them at the
built-in DEFLATE backend instead.
The DDS loader landed with only the core wiring (Makefile.common,
griffin, qb). Enable it everywhere the WebP loader (HAVE_RWEBP) is
enabled, so DDS decodes on every target rather than only default builds.
- platform Makefiles: mirror every HAVE_RWEBP toggle and inline
-DHAVE_RWEBP with HAVE_RDDS (ctr, dingux, dos, emscripten, griffin,
lfx000, libnx, miyoo, ngc, openpandora, orbis, ps2, psl1ght, psp1,
retrofw, rg350, rg350_odbeta, rs90, switch, vita, webos, wii, wiiu,
msvc).
- MSVC .vcxproj (2010-2022, 360, UWP) and the Android NativeActivity
project: add the HAVE_RDDS preprocessor define next to HAVE_RWEBP.
- Apple .xcodeproj (OSX107, PPC, iOS6-11 incl. Metal/static): add
-DHAVE_RDDS to OTHER_CFLAGS next to -DHAVE_RWEBP.
- pkg/android Android.mk: add -DHAVE_RDDS.
- feature reporting: SUPPORTS_RDDS (config.features.h), the retroarch
--features string, the menu Core Information image-format list, and
the imageviewer core extension list (adds |dds).
All these targets build the image loaders through the griffin unity TU,
which already includes rdds.c under HAVE_RDDS, so defining the flag is
sufficient to compile and enable the loader.
The WebP decoder was only enabled through the qb configure default, so
platforms with static build files never compiled it. Wire HAVE_RWEBP
everywhere HAVE_RPNG is wired, following each file's existing style:
- Variable assignments (routed through Makefile.common's define/object
block or Makefile.griffin's CFLAGS emit): dingux, dos, emscripten,
lfx000, libnx, miyoo, msvc, ngc, retrofw, rg350, rg350_odbeta, rs90,
webos, wii, and every per-platform block in Makefile.griffin, which
also gains the matching CFLAGS emit.
- Platforms with both a griffin branch (inline -D defines) and a
default Makefile.common branch (variable assignments) get both:
ps2, ctr, switch, orbis, wiiu.
- Continuation-style define lists: psl1ght, psp1, vita, openpandora,
and the Android NDK build.
- MSVC project files (griffin-based, PreprocessorDefinitions):
msvc-2010 through msvc-2022, UWP, Xbox 360, and the legacy Android
NativeActivity project.
- Xcode projects (griffin-based, -D flag lists): all eleven, including
the PPC and legacy iOS projects.
The decoder itself is C89-clean scalar C on platforms without SSE2 or
NEON (the SIMD paths are compile-time gated), so no platform needs
anything beyond the define. The salamander Makefiles are deliberately
left alone: the loaders do not decode images beyond their existing
boot path. Console targets are not buildable in this environment; the
edits mechanically mirror the existing HAVE_RPNG wiring in each file,
and the Makefile.common route they rely on is the same one exercised
by the regular Linux build.
ever implemented for OpenGL2 driver, lots of code debt, best to
instead just keep improving the overlay system instead which is
already available for most video drivers