diff options
| author | crueter <crueter@eden-emu.dev> | 2026-09-02 00:29:58 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-09-02 00:29:58 +0200 |
| commit | aa4e494c08075f5d048e8e3d6e0f7426d88d0f0a (patch) | |
| tree | 3055c96bf4c84efcc24f768acc4545c1147f5c2d /externals/CMakeLists.txt | |
| parent | 858f9e5aeac89503c331dfe4588cc3c83ab2223b (diff) | |
[android] Replace Oboe audio with SDL3 audio (#4338)
Supersedes #4335.
Replaces the Oboe audio backend with SDL3, since we already support it.
A few caveats:
- SDL defines a JVM OnLoad method already, so we have to instead hijack
NativeLibrary for id_cache initialization
- This also means some internal fields in Double/Integer/Boolean (namely
`value`) can't be accessed, so I switched those to methods for now.
- SDL Java sources are pulled in from the CI package.
- Since we can't use SDLActivity, `SDL.setupJNI()` handles everything
Signed-off-by: crueter <crueter@eden-emu.dev>
- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md)
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.
-------------------
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4338
Reviewed-by: Lizzie and Samuel <lizzie@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Diffstat (limited to 'externals/CMakeLists.txt')
| -rw-r--r-- | externals/CMakeLists.txt | 80 |
1 files changed, 37 insertions, 43 deletions
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 6e324ce9f6..0682f643e2 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -136,48 +136,49 @@ if(ENABLE_CUBEB) endif() endif() -if (NOT ANDROID) - if (NOT YUZU_USE_BUNDLED_SDL3) - if (NOT WIN32) - # Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers - # Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095) - # Yuzu-cmd also needs: Video (depends on Loadso/Dlopen) - # CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809) - set(SDL_UNUSED_SUBSYSTEMS - File Filesystem - Locale Power Render) - foreach(_SUB ${SDL_UNUSED_SUBSYSTEMS}) - string(TOUPPER ${_SUB} _OPT) - set(SDL_${_OPT} OFF) - endforeach() - - set(HIDAPI ON) - endif() - - if (APPLE) - set(SDL_FILE ON) - endif() +if (NOT YUZU_USE_BUNDLED_SDL3) + if (NOT WIN32) + # Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers + # Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095) + # Yuzu-cmd also needs: Video (depends on Loadso/Dlopen) + # CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809) + set(SDL_UNUSED_SUBSYSTEMS + File Filesystem + Locale Power Render) + foreach(_SUB ${SDL_UNUSED_SUBSYSTEMS}) + string(TOUPPER ${_SUB} _OPT) + set(SDL_${_OPT} OFF) + endforeach() + + set(HIDAPI ON) + endif() - AddJsonPackage(sdl3) - else() - message(STATUS "Using bundled SDL3") - AddJsonPackage(sdl3-ci) + if (APPLE) + set(SDL_FILE ON) endif() - # Normalize SDL3 link target across package variants. - # Some SDL3 packages export only SDL3::SDL3-shared or SDL3::SDL3-static. - if (NOT TARGET SDL3::SDL3) - if (TARGET SDL3::SDL3-shared) - add_library(SDL3::SDL3 ALIAS SDL3::SDL3-shared) - elseif (TARGET SDL3::SDL3-static) - add_library(SDL3::SDL3 ALIAS SDL3::SDL3-static) - else() - message(FATAL_ERROR "SDL3 package found, but no usable SDL3 target was exported") - endif() + AddJsonPackage(sdl3) +else() + message(STATUS "Using bundled SDL3") + AddJsonPackage(sdl3-ci) + + # copy sdl java sources for consumption by Gradle + if (ANDROID) + file(COPY ${SDL3_SOURCE_DIR}/java DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/generated/sdl) endif() endif() -set(BUILD_SHARED_LIBS OFF) +# Normalize SDL3 link target across package variants. +# Some SDL3 packages export only SDL3::SDL3-shared or SDL3::SDL3-static. +if (NOT TARGET SDL3::SDL3) + if (TARGET SDL3::SDL3-shared) + add_library(SDL3::SDL3 ALIAS SDL3::SDL3-shared) + elseif (TARGET SDL3::SDL3-static) + add_library(SDL3::SDL3 ALIAS SDL3::SDL3-static) + else() + message(FATAL_ERROR "SDL3 package found, but no usable SDL3 target was exported") + endif() +endif() # SPIRV Headers AddJsonPackage(spirv-headers) @@ -385,13 +386,6 @@ if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client) endif() endif() -# oboe -if (ANDROID) - AddJsonPackage(oboe) - - add_library(oboe::oboe ALIAS oboe) -endif() - if (APPLE) # moltenvk if (NOT YUZU_USE_BUNDLED_MOLTENVK) |
