From 5096d33d1b39e1a72aef1072b1ee89ccd448142f Mon Sep 17 00:00:00 2001 From: Susko3 Date: Fri, 19 Sep 2025 14:40:08 +0200 Subject: [PATCH 1/4] Always build SDL3 libs with Android 5.0 (API 21) min version --- External/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/External/build.sh b/External/build.sh index 8b8f8c8..6505fe8 100755 --- a/External/build.sh +++ b/External/build.sh @@ -84,7 +84,7 @@ if [[ $BUILD_PLATFORM != 'Android' ]]; then libdecor-0-dev$TARGET_APT_ARCH fi else - if [[ -z $ANDROID_HOME || -z $NDK_VER || -z $PLATFORM_VER || -z $ANDROID_ABI ]]; then + if [[ -z $ANDROID_HOME || -z $NDK_VER || -z $ANDROID_ABI ]]; then echo "One or more required environment variables are not defined." exit 1 fi @@ -94,7 +94,7 @@ else export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$NDK_VER" export FLAGS="$FLAGS -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ -DANDROID_HOME=$ANDROID_HOME \ - -DANDROID_PLATFORM=$PLATFORM_VER \ + -DANDROID_PLATFORM=21 \ -DANDROID_ABI=$ANDROID_ABI \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH \ From fb36b24faf88593c1f82cee82566d72ada8835d9 Mon Sep 17 00:00:00 2001 From: Susko3 Date: Fri, 19 Sep 2025 15:37:46 +0200 Subject: [PATCH 2/4] Target API 24 to fix 32-bit Android builds 32-bit (x86, arm) builds are failing because libFLAC and opusfile are using fseeko, ftello, etc. which were added in API 24. Why 64-bit builds are not failing is beyond me. --- External/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/External/build.sh b/External/build.sh index 6505fe8..dc685ea 100755 --- a/External/build.sh +++ b/External/build.sh @@ -94,7 +94,7 @@ else export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$NDK_VER" export FLAGS="$FLAGS -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ -DANDROID_HOME=$ANDROID_HOME \ - -DANDROID_PLATFORM=21 \ + -DANDROID_PLATFORM=24 \ -DANDROID_ABI=$ANDROID_ABI \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH \ From 240d00890009d3b48a4d41df494190836d1cfea4 Mon Sep 17 00:00:00 2001 From: Susko3 Date: Fri, 19 Sep 2025 15:49:58 +0200 Subject: [PATCH 3/4] Only build SDL_mixer for API 24 --- External/build.sh | 6 +++++- README.md | 2 +- README_nuget.md | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/External/build.sh b/External/build.sh index dc685ea..5900c44 100755 --- a/External/build.sh +++ b/External/build.sh @@ -94,7 +94,7 @@ else export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$NDK_VER" export FLAGS="$FLAGS -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ -DANDROID_HOME=$ANDROID_HOME \ - -DANDROID_PLATFORM=24 \ + -DANDROID_PLATFORM=21 \ -DANDROID_ABI=$ANDROID_ABI \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH \ @@ -154,6 +154,10 @@ run_cmake() { sed -i 's/#include /#_include /g' CMakeLists.txt fi + if [[ $BUILD_PLATFORM == 'Android' && $LIB_NAME == 'SDL_mixer' ]]; then + export FLAGS="${FLAGS/-DANDROID_PLATFORM=21/-DANDROID_PLATFORM=24}" + fi + rm -rf build cmake -B build $FLAGS -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSDL_SHARED=ON -DSDL_STATIC=OFF "${@:3}" cmake --build build/ --config $BUILD_TYPE --verbose diff --git a/README.md b/README.md index 4854048..5379181 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Contributions to keep the bindings up-to-date with upstream changes are welcome. | `SDL3-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `SDL3_image-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `SDL3_ttf-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -| `SDL3_mixer-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| `SDL3_mixer-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | API 24+ | ## Generating bindings diff --git a/README_nuget.md b/README_nuget.md index 2453519..4bca6c0 100644 --- a/README_nuget.md +++ b/README_nuget.md @@ -16,4 +16,4 @@ Contributions to keep the bindings up-to-date with upstream changes are welcome. | `SDL3-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `SDL3_image-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `SDL3_ttf-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -| `SDL3_mixer-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | \ No newline at end of file +| `SDL3_mixer-CS` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | API 24+ | \ No newline at end of file From d942aece9ed6a59cdc415db873cca5506865d9fc Mon Sep 17 00:00:00 2001 From: Susko3 Date: Fri, 19 Sep 2025 16:32:52 +0200 Subject: [PATCH 4/4] Add explanatory comment about the android API 24 change to SDL_mixer --- External/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/External/build.sh b/External/build.sh index 5900c44..0e41c51 100755 --- a/External/build.sh +++ b/External/build.sh @@ -154,6 +154,7 @@ run_cmake() { sed -i 's/#include /#_include /g' CMakeLists.txt fi + # Change the minumum Android API level for SDL_mixer to API 24 as opusfile and libflac fail to build on lower versions. if [[ $BUILD_PLATFORM == 'Android' && $LIB_NAME == 'SDL_mixer' ]]; then export FLAGS="${FLAGS/-DANDROID_PLATFORM=21/-DANDROID_PLATFORM=24}" fi