29 Commits
Author SHA1 Message Date
LibretroAdmin 45dc0a99c3 input: Dingux rumble through evdev and the output writer; drop libShake
libShake was used by one driver, sdl_dingux, for its vibration motor,
and linked on webOS for nothing. What it did there is a few evdev calls:
find the node that plays a periodic sine, upload a sine per motor, play
and stop it, set the gain. input/common/linux_ff.h does those with no
allocation (libShake scanned /dev/input with scandir and malloc'd a node
per entry) and none of its bugs (an open that failed was taken as
success).

The uploads and plays now go out from the shared output writer, as
udev's and XInput's rumble do, so a motor's driver never holds the
frame; the frontend's thread notes the strengths, both in one word, and
returns. A core asking the same strength each frame costs no call at
all. On MIPS (-O2, mips32) that path is 15 to 19 instructions with no
stack frame, where it was about 32 with a frame and four spills.

Every SDL Dingux target gets the motor now, not only the three that
built libShake; one without a motor finds none and has no rumble, as
before.

The output writer makes no syscall for a wake while one is still on its
way, which every driver on it gains from. xinput_rumble_test says a call
did not wait by the write not being done yet, not by a time a loaded
runner can overrun.

samples/input/dingux_rumble runs the real driver against a stand-in
/dev/input and SDL, with threads and without.
2026-10-28 08:02:03 +01:00
Codex 7a3bcbdc28 media: route image and movie activation to the internal viewer
Open supported external media in the fullscreen menu viewer and keep image confirmation there across all four menu drivers. Disable the legacy imageviewer core in normal build configurations while preserving its sources and Griffin guard.
2026-10-24 01:00:53 +02:00
libretroadmin f516093bc4 deps: drop the bundled mbedtls, BearSSL and libsmb2; library backends by option
Every build uses the built-in TLS, SMB and NFS clients, so the
bundled deps/mbedtls, deps/bearssl-0.6 and deps/libsmb2 are removed.
A system library can still stand in for a built-in client, off by
default: --enable-mbedtls and --enable-bearssl replace the TLS client
with a system mbedTLS or BearSSL, and --enable-libsmb the SMB client
with a system libsmb2; a library asked for and not found is a
configure error, and two TLS libraries at once are refused. The
older builtin/system switches go, as do the platform files' bundled
selections, and the libsmb2 backend follows the library's current
share-enumeration API.

Linux-library-net-backends.yml replaces the legacy lane with one lane
per library: each configures with its option, builds RetroArch to
the link, checks the library's backend is linked and the built-in
client is not, and operates it - the cheevos login transport over a
local HTTPS server for mbedTLS and BearSSL, the SMB VFS tests against
a local smbd for libsmb2 (built from upstream; Ubuntu has no package).
The cheevos_login sample links the system BearSSL, the smb_backup
sample carries stand-in libsmb2 headers for its fake share, and the
samples workflow installs libbearssl-dev.
2026-09-30 05:01:22 +02:00
libretroadmin f85123b0f5 consoles: the cleanroom crypto and TLS client on 3DS, Vita, Switch and OpenDingux
The last builds carrying another TLS library: the 3DS and Vita
makefiles compiled the bundled mbedtls, the Switch linked devkitPro's,
and the OpenDingux family had the bundled mbedtls (dingux) or a
HAVE_OPENSSL that linked a library no backend used (rg350, retrofw).
All six now select HAVE_CRYPTO, the keychain and HAVE_RETROSSL, as the
desktop, mobile and Windows builds do: the TLS 1.2/1.3 client with
certificate verification and the encrypted keychain, from sources the
tree already has, with nothing to link. The crypto's random source
already had a path for each of them (PS_GenerateRandomBytes,
sceKernelGetRandomNumber, randomGet). The 3DS makefile's note that TLS
could not go through griffin no longer holds, the unity lane proving
it, and the mbedtls include path goes with it.

The compile matrix compiles the crypto and keychain in the 3DS and
Vita shapes and the whole TLS client in the Switch shape, with the SDK
stand-ins the random sources need added to the stubs, and the whole
set with a MIPS cross compiler for the OpenDingux family; the matrix
job installs that compiler. The Vita, 3DS, Switch and RetroFW
workflows build the real things.
2026-09-30 02:38:53 +02:00
LibretroAdmin f46c6019dd (CHD) Every platform reads CHD with rchd
The built-in reader was opt-in and almost nothing opted in. Only
Makefile.webos set HAVE_RCHD; the configure default was no, so every
configure-based build took libchdr, and ten platform makefiles enabled
HAVE_CHD without ever mentioning rchd - dingux, dos and its salamander,
lfx000, libnx, miyoo, orbis, retrofw, rg350 and rg350_odbeta.

So the answer to "which platforms still use libchdr" was: all of them
but one.

The configure default is yes now and those ten set it, which leaves no
build in the tree enabling CHD without rchd. Where HAVE_RCHD is set,
Makefile.common compiles formats/chd/rchd.c and none of libchdr at
all - confirmed by configuring here and finding no libchdr object in
config.mk.

What the reader needs is already handled in that branch: deflate and
LZMA unconditionally, FLAC where HAVE_FLAC or HAVE_RFLAC is on, zstd
where HAVE_RZSTD is, and encoding_huffman always, because a version 5
map is Huffman-coded and is needed to open an image whatever its hunks
use.

Worth saying plainly: nothing exercises rchd automatically.
libretro-common/tools/chd carries six rchd_*_test.c programs, and none
of them has a Makefile or a workflow step, so this flip rests on the
reader being right rather than on anything measured. Wiring those up
is the obvious next thing.

Every makefile I touched still parses - clean is reached on all of
them. The thirteen that do not parse here need their own toolchains
and failed identically before this change, which was checked rather
than assumed.
2026-09-14 01:05:42 +02:00
LibretroAdmin ef6e003b2b Every platform build has the built-in Zstandard codec
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.
2026-09-09 10:55:24 +02:00
S 0a9fc6d4f7 (Font) Always build stb_truetype
stb_truetype was optional and seven targets turned it off - the
Dingux-family handhelds (rg350, rg350_odbeta, retrofw, rs90, miyoo,
lfx000), which also build without FreeType, leaving
bitmap_font_renderer as their only font renderer.

The cost of always having it is small: 8.2 KB of text at -Os, against
a multi-megabyte binary. The cost of it being optional is 44
references across fifteen makefiles, the configure script, three
feature-reporting sites and two preprocessor conditionals in
menu_screensaver.c that are unreadable precisely because they encode
which platforms happen to enable it.

Drop the option. stb is now guaranteed present, which is also what
lets the next commit make it the single fallback renderer.

The two menu_screensaver.c conditionals become unconditional: both
were asking "is any font renderer available", and now one always is.
2026-08-08 04:44:46 +02:00
libretroadmin dfd4a95327 Remove HAVE_BUILTINZLIB and the vendored deps/libz
The clean-room DEFLATE/inflate codec in encodings/deflate.c is now the
only decompression path. Every consumer already selected it when
HAVE_ZLIB was undefined -- archive_file_zlib, libchdr's zlib codec and
trans_stream all carry the fallback -- so the vendored zlib copy had no
remaining purpose.

Makefile.common: drop the HAVE_BUILTINZLIB object list and the
HAVE_ZLIB_COMMON aggregate. HAVE_ZLIB=1 now only adds
trans_stream_zlib.o, -DHAVE_ZLIB and $(ZLIB_LIBS). HAVE_CHD is gated on
itself rather than on zlib; HAVE_7ZIP and HAVE_RFLAC were already
outside the zlib gate and are unchanged.

griffin: drop the deps/libz includes and the HAVE_NO_BUILTINZLIB guard,
and unnest the CHD block from HAVE_ZLIB.

Platform makefiles: remove HAVE_BUILTINZLIB/HAVE_ZLIB and -DHAVE_ZLIB,
and drop -lz where zlib was its only consumer. wiiu additionally loses
its portlibs -lpng, which was a convenience for statically linked cores;
RetroArch itself builds HAVE_RPNG. libnx keeps -lpng -lz because its
ffmpeg chain links against both.

qb: drop the HAVE_BUILTINZLIB knob, its check_enabled entry and the
macOS workaround that existed only to avoid the vendored copy.
2026-07-24 09:55:04 +02:00
libretroadmin 825b899a41 compat: use compat_strcasestr by name on every platform
The portable implementation was only compiled where the C library
lacked strcasestr, and shadowed the real name with a macro when it was.
So most targets never used it - qb probes for the function and sets
HAVE_STRCASESTR whenever the library has one, which covers Linux, macOS
and the BSDs, and eight handheld makefiles set it outright.

That left the choice of implementation to the platform, and the
platform's is not reliably the better one. glibc's measured 1.63 ms
against 0.031 ms for this one on a representative search - fifty times
slower - and glibc is the favourable case. The handhelds that opt in
are the slowest machines RetroArch runs on and the least likely to ship
a good version, so the targets with the least headroom were the ones
most exposed.

Call it by its own name instead, and build it everywhere. No macro
shadowing a standard function, no conditional compilation, no probe:
one implementation with one set of semantics on every target. The
callers all switch to compat_strcasestr; the qb check, the
HAVE_STRCASESTR guards in Makefile.common and griffin, and the flag in
the handheld makefiles all go.

It also settles the case folding. The library versions fold according
to the locale; this one folds ASCII, which is what every caller means -
file extensions, driver names, search terms - and no longer varies by
platform.

Checked against glibc's implementation over four hundred thousand
random haystack and needle pairs drawn from an alphabet with both cases
and a multi-byte character: no difference in result. The behavioural
tests from the earlier rewrite still pass, and the frontend builds and
runs.
2026-07-23 15:54:46 +02:00
LibretroAdmin 867b2b2857 deps: remove stb
stb_truetype.h and stb_rect_pack.h are no longer referenced by
anything in the tree (the rect packer had been unused since the
plain stb renderer was removed). Drop the vendored headers and the
dead -Ideps/stb include paths from all platform Makefiles.
2026-07-22 01:04:31 +02:00
t 4b81bae553 buildsystem: HAVE_IBXM -> HAVE_RMODTRACKER everywhere; remove deps/ibxm
The vendored ibxm dependency is gone; the module replayer is now a
libretro-common citizen (formats/mod/rmodtracker.c) built like the
other decoders.  Mechanical flag migration across the tree:

  - Makefile.common: flag block renamed, object path moved from
    $(DEPS_DIR)/ibxm/ibxm.o to
    $(LIBRETRO_COMM_DIR)/formats/mod/rmodtracker.o (the rvorbis /
    rflac object pattern).
  - griffin: define and single-TU include swapped to the new file.
  - qb/config.params.sh and Makefile.griffin: flag renamed.
  - 15 platform Makefiles (dingux, dos, dos.salamander, emscripten,
    lfx000, libnx, miyoo, ngc, retrofw, rg350, rg350_odbeta, rs90,
    switch, webos, wii): flag renamed, values preserved (including
    ngc's =0).
  - retroarch.c, msg_hash.c, audio/audio_driver.c,
    menu/cbs/menu_cbs_deferred_push.c: the mod/s3m/xm extension
    gates renamed.
  - msvc-uwp vcxproj: 9 PreprocessorDefinitions entries renamed
    (define-only; UWP compiles via griffin, so there is no per-file
    entry to swap).  BOM and line endings preserved.
  - The iOS9 xcodeproj needed nothing: its apparent matches are the
    substring 'ibxm' inside 'libxml2'.
  - deps/ibxm: removed.

Tree-wide residual check: zero HAVE_IBXM / deps/ibxm references
remain; the only 'ibxm' tokens left are the provenance attribution
and licence retention inside rmodtracker itself.
2026-07-07 06:11:40 +02:00
LibretroAdmin c18bd6466a build: enable the DDS (RDDS) image loader on all RWEBP platforms
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.
2026-07-04 23:17:55 +02:00
LibretroAdmin 74ea2f1008 (build) Enable HAVE_RWEBP on all platforms
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.
2026-07-03 13:21:30 +02:00
libretroadmin 0db16c8898 formats: add rmp3 backend to audio_transfer; repoint mixer MP3; drop dr_mp3
Carve the vendored dr_mp3 single-header decoder into a first-party in-tree
decoder (rmp3), wire it under the codec-agnostic audio_transfer layer as the
AUDIO_TYPE_MP3 backend, repoint the audio mixer's MP3 voice onto
audio_transfer, and remove deps/dr/dr_mp3.h (deps/dr is now empty).

rmp3 is the whole dr_mp3 decoder with every exported symbol namespaced from
drmp3/DRMP3/dr_mp3 to rmp3/RMP3, so a statically-linked console core
vendoring its own dr_mp3 cannot collide at link with RetroArch's copy: the
object exports rmp3_* symbols only. dr_mp3 is already memory-only (no file
I/O to strip) and self-includes its CRT headers, so the impl wrapper is just
RMP3_IMPLEMENTATION plus the include.

dr_mp3 exposes only a float decode path (rmp3_read_f32) and no integer API,
so the backend reads f32 natively and quantises to s16 at the boundary via
the shared audio_transfer_f32_to_s16 helper (round-half-away, clamp) that
now also serves the Vorbis backend. Unlike FLAC/Vorbis the drmp3 handle is
embedded in the transfer context by value (dr_mp3 initialises in place), so
validity is tracked with a flag. The mixer's MP3 voice holds an opaque
audio_transfer context and drives it through
new/start/info/read_f32/seek/free.

Build: HAVE_DR_MP3 is renamed HAVE_RMP3 across the platform makefiles, the qb
knob and Android.mk. The existing Makefile.common HAVE_RMP3 branch gains
formats/mp3/rmp3.o (and audio_transfer.o once, guarded against the FLAC and
Vorbis branches). griffin includes rmp3.c under HAVE_RMP3 and shares
audio_transfer.c across all three backends.
2026-07-02 04:27:11 +02:00
libretroadmin cba7bef984 formats: add rvorbis backend to audio_transfer; repoint mixer OGG; drop stb_vorbis
Carve the vendored stb_vorbis single-header decoder into a first-party
in-tree decoder (rvorbis), wire it under the codec-agnostic audio_transfer
layer as the AUDIO_TYPE_VORBIS backend, repoint the audio mixer's OGG voice
onto audio_transfer, and remove deps/stb/stb_vorbis.h.

rvorbis is the whole stb_vorbis decoder with file I/O stripped
(RVORBIS_NO_STDIO) and every exported symbol namespaced from
stb_vorbis/STB_VORBIS/STBVorbis/VORBIS_ to rvorbis/RVORBIS/RVorbis/RVORBIS_,
so a statically-linked console core vendoring its own stb_vorbis cannot
collide at link with RetroArch's copy: the object exports rvorbis_* symbols
only. The header carries its own <stdint.h>/<stddef.h> and keeps the
fixed-width types the vendored copy already used.

Vorbis is a float-internal codec with no integer decode API, so the backend
reads f32 natively and quantises to s16 at the boundary (round-half-away,
clamp) rather than round-tripping. The mixer's OGG voice holds an opaque
audio_transfer context and drives it through
new/start/info/read_f32/seek/free; loop-to-start routes through
rvorbis_seek_start, since stb_vorbis's seek(0) does not rewind.

Build: HAVE_STB_VORBIS is renamed HAVE_RVORBIS across the platform
makefiles, the qb knob and Android.mk. Makefile.common gains a HAVE_RVORBIS
branch adding formats/vorbis/rvorbis.o (and audio_transfer.o once, guarded
against the FLAC branch). griffin includes rvorbis.c under HAVE_RVORBIS and
shares audio_transfer.c across both backends.
2026-07-02 04:13:53 +02:00
pstef 6bfb7862e7 Make -ffast-math exclusive to sinc_resampler.c
-ffast-math was added in ff14092d8d with a comment that it "helps SINC
resampler to auto-vectorize". The flag is an alias for "-fno-math-errno
-funsafe-math-optimizations -ffp-contract=fast -fno-honor-infinities
-fno-honor-nans". The last two of those cause compiler complaints
because while the flag was meant for this file, it's shared across the
codebase that includes statements that operate on infinities and NaNs.

GCC 13.3 with -fopt-info-vec reports 18 vectorizations for `-O3
-ffast-math`, 17 for `-O3 -fno-math-errno -funsafe-math-optimizations
-ffp-contract=fast` and also 17 for plain `-O3`. So using the subset of
-ffast-math without the offending flags buys nothing and loses 1
vectorization.

Both GCC and Clang provide the "fast-math" pragma directive, which I add
to this one file that benefits from it, under the condition that it's
supported. -ffast-math is removed from most of the makefiles.
2025-05-02 17:26:19 +00:00
pstef 0c838c14e9 Makefiles: don't print info unconditionally
The point of making the default "semi-silent" (each target is printed,
but not the entire invocation verbatim) was to factor out information
about invocation to a one-time target (info) and not repeating it ever
again. With V=1, the info target is silent, because each command
invocation will be printed verbatim, which needs no herald.

The undesired side effect of me introducing the info target and making
it a dependency of the default all target is that info doesn't respect
the --silent make option, so in this use case it was more noisy, not
less.

I believe the most elegant solution that satisfies all use cases is to
stop printing info unconditionally, and instead list it explicitly in
make invocations in CI, together with the all target. Then this info is
kept available for inspection from logs, but it's not repeated on each
invocation. The intention was to make the logs easier to read and scroll
in search for new compiler warnings.
2025-04-29 18:36:48 +00:00
pstef 011469d7ef Fix broken logic in the clean target 2025-04-14 08:07:55 +00:00
pstef eb53b4174f Makefile.retrofw: print variables once in silent mode 2025-04-11 17:12:07 +00:00
pstef e907399419 Makefile.retrofw: don't print all objects removed by the clean target in silent mode 2025-04-11 17:12:07 +00:00
pstef edbe0f032c Makefile.retrofw: make silent mode toggable 2025-04-11 17:12:07 +00:00
Jesse Talavera-Greenberg cbf49a0b77 XDelta patch support (Take 2) (#15915)
* Add xdelta in deps

* Include <assert.h> in xdelta3.h

- Otherwise the static_assert calls can fail

* Build xdelta3 in Makefile.common

* Add xdelta support to the softpatching infrastructure

- The patching itself isn't fully implemented yet

* Adjust how xdelta3.h checks the sizes of some types

- Now checks max values instead of relying on autotools

* Add some enums that were excluded by the cherry-pick

* Remove stray whitespace

* Adjust SIZE macros in xdelta3.h

- Move them outside the XD3_USE_LARGEFILE64 block
- Add more SIZE declarations
- Make SIZEOF_UNSIGNED_LONG_LONG contingent on the presence of ULLONG_MAX

* Reintegrate xdelta support

* Enable support for xdelta's secondary compressors

- Necessary for some patches

* Fix some format specifiers

* Remove unnecessary files from xdelta

* Include xdelta3.h with a relative path

* Add xdelta3 headers to HEADERS variable

* Gate Xdelta support behind HAVE_XDELTA

- HAVE_XDELTA is on by default
- HAVE_PATCH is still required for HAVE_XDELTA to be meaningful
- Support is mostly contingent on the availability of LZMA
- Anything modern should be okay
- Legacy platforms (e.g. DOS) may need to have Xdelta support disabled
- At least until some other solution can be found

* Disable HAVE_XDELTA on platforms where the build recently failed

- These come from looking at the failed builds on GitHub
- These are guesses, and may turn out to be wrong

* Fix a potential memory leak

- Whoops, looks like I need to call two cleanup functions
- xd3_close_stream exists separately from xd3_free_stream

* Split the --help printout for --xdelta into its own strlcat call

- GCC was complaining about #ifdefs within macro arguments being non-portable

* Fix some incorrect printf format specifiers

* Modify Xdelta to adhere to C89

- It's mostly using RetroArch's INLINE macro instead of the inline keyword

* Slight cleanups

* Remove a stray comma that was hindering C89 builds

* Add XDelta support to CHANGES.md

* Change how the xdelta patch's name is computed

- To be in line with other recent refactoring

* Fix an incorrect merge

- Whoops, this part was from before I figured out how to get the size of a patched file

* Explain the song-and-dance behind computing a patched file's size

* Define some XDelta3-related constants to 0 on 32-bit platforms

* Adjust some Xdelta-related macro definitions

- Exclude the encoder, since we're not making patches
- Move some #defines to after inclusion of <stdint.h>, to fix undefined behavior
- Remove _WIN32_WINNT overrides, since they were for code that we're not using

* Fix Xdelta support

* Wrap an encoder-only function in `#if XD3_ENCODER`
2023-11-23 20:19:07 -08:00
LibretroAdmin f5133d8cc4 Revert "Add Xdelta support for softpatching (#14706)" (#14743)
This reverts commit aaad220836.
2022-12-19 03:29:46 +01:00
Jesse Talavera-Greenberg aaad220836 Add Xdelta support for softpatching (#14706)
* Add xdelta in deps

* Include <assert.h> in xdelta3.h

- Otherwise the static_assert calls can fail

* Build xdelta3 in Makefile.common

* Add xdelta support to the softpatching infrastructure

- The patching itself isn't fully implemented yet

* Adjust how xdelta3.h checks the sizes of some types

- Now checks max values instead of relying on autotools

* First crack at xdelta softpatching support

- There may be undiscovered edge cases or bugs

* Add xdelta in deps

* Include <assert.h> in xdelta3.h

- Otherwise the static_assert calls can fail

* Build xdelta3 in Makefile.common

* Add xdelta support to the softpatching infrastructure

- The patching itself isn't fully implemented yet

* Adjust how xdelta3.h checks the sizes of some types

- Now checks max values instead of relying on autotools

* First crack at xdelta softpatching support

- There may be undiscovered edge cases or bugs

* Remove trailing commas from the enums I modified

- C89 doesn't allow them

* Remove stray whitespace

* Adjust SIZE macros in xdelta3.h

- Move them outside the XD3_USE_LARGEFILE64 block
- Add more SIZE declarations
- Make SIZEOF_UNSIGNED_LONG_LONG contingent on the presence of ULLONG_MAX

* Add some RARCH_DBG calls for xdelta patching

* Enable support for xdelta's secondary compressors

- Necessary for some patches

* Fix some format specifiers

* Remove unnecessary files from xdelta

* Include xdelta3.h with a relative path

* Add xdelta3 headers to HEADERS variable

* Gate Xdelta support behind HAVE_XDELTA

- HAVE_XDELTA is on by default
- HAVE_PATCH is still required for HAVE_XDELTA to be meaningful
- Support is mostly contingent on the availability of LZMA
- Anything modern should be okay
- Legacy platforms (e.g. DOS) may need to have Xdelta support disabled
- At least until some other solution can be found

* Disable HAVE_XDELTA on platforms where the build recently failed

- These come from looking at the failed builds on GitHub
- These are guesses, and may turn out to be wrong

* Fix a potential memory leak

- Whoops, looks like I need to call two cleanup functions
- xd3_close_stream exists separately from xd3_free_stream

* Split the --help printout for --xdelta into its own strlcat call

- GCC was complaining about #ifdefs within macro arguments being non-portable

* Fix some incorrect printf format specifiers

* Modify Xdelta to adhere to C89

- It's mostly using RetroArch's INLINE macro instead of the inline keyword
2022-12-19 01:10:04 +01:00
LibretroAdmin 14f4f35445 Exclude unused HAVE_HID for Miyoo and RetroFW 2022-09-10 00:01:20 +02:00
PoligrafandPoligraf b4ef32cfce add oss audio to retrofw (#13303)
Co-authored-by: Poligraf <>
2021-12-01 17:19:39 +01:00
twinaphex 28cac5c5a4 Add HAVE_CORE_INFO_CACHE - disable this for Steam build 2021-10-14 15:57:28 +02:00
jdgleaver e90f352c2f (.gitlab-ci.yml) Add RetroFW target 2021-07-29 13:18:52 +01:00
Poligraf 9000e81498 Add retrofw port 2021-07-29 22:16:59 +12:00