aboutsummaryrefslogtreecommitdiff
path: root/externals
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2026-09-02 00:29:58 +0200
committercrueter <crueter@eden-emu.dev>2026-09-02 00:29:58 +0200
commitaa4e494c08075f5d048e8e3d6e0f7426d88d0f0a (patch)
tree3055c96bf4c84efcc24f768acc4545c1147f5c2d /externals
parent858f9e5aeac89503c331dfe4588cc3c83ab2223b (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')
-rw-r--r--externals/CMakeLists.txt80
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)