SDL: android: android release binary should only contain a shared SDL3 library

From 657c0135b1ff1685afa1bad63b0417d92f4bcb46 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 10 Jun 2024 16:41:17 +0200
Subject: [PATCH] android: android release binary should only contain a shared
 SDL3 library

---
 build-scripts/build-release.py | 27 ++++++---------------------
 docs/README-cmake.md           |  4 +++-
 2 files changed, 9 insertions(+), 22 deletions(-)

diff --git a/build-scripts/build-release.py b/build-scripts/build-release.py
index 42863c2093706..9615f90f6eeae 100755
--- a/build-scripts/build-release.py
+++ b/build-scripts/build-release.py
@@ -36,14 +36,6 @@
 ANDROID_MINIMUM_API = 19
 ANDROID_TARGET_API = 29
 ANDROID_MINIMUM_NDK = 21
-ANDROID_LIBRARIES = [
-    "dl",
-    "GLESv1_CM",
-    "GLESv2",
-    "log",
-    "android",
-    "OpenSLES",
-]
 
 
 class Executer:
@@ -632,7 +624,7 @@ def create_android_archives(self, android_api: int, android_home: Path, android_
                         f"-DANDROID_ABI={android_abi}",
                         "-DCMAKE_POSITION_INDEPENDENT_CODE=ON",
                         "-DSDL_SHARED=ON",
-                        "-DSDL_STATIC=ON",
+                        "-DSDL_STATIC=OFF",
                         "-DSDL_TEST_LIBRARY=ON",
                         "-DSDL_DISABLE_ANDROID_JAR=OFF",
                         "-DSDL_TESTS=OFF",
@@ -643,6 +635,7 @@ def create_android_archives(self, android_api: int, android_home: Path, android_
                         "-DCMAKE_INSTALL_LIBDIR=lib",
                         "-DCMAKE_INSTALL_DATAROOTDIR=share",
                         "-DCMAKE_BUILD_TYPE=Release",
+                        f"-DSDL_ANDROID_HOME={android_home}",
                         f"-G{self.cmake_generator}",
                     ]
                     build_args = [
@@ -663,10 +656,6 @@ def create_android_archives(self, android_api: int, android_home: Path, android_
                     logger.debug("Expecting library %s", main_so_library)
                     assert main_so_library.is_file(), "CMake should have built a shared library (e.g. libSDL3.so)"
 
-                    main_static_library = install_dir / "lib" / f"lib{self.project}.a"
-                    logger.debug("Expecting library %s", main_static_library)
-                    assert main_static_library.is_file(), "CMake should have built a static library (e.g. libSDL3.a)"
-
                     test_library = install_dir / "lib" / f"lib{self.project}_test.a"
                     logger.debug("Expecting library %s", test_library)
                     assert test_library.is_file(), "CMake should have built a static test library (e.g. libSDL3_test.a)"
@@ -694,18 +683,14 @@ def create_android_archives(self, android_api: int, android_home: Path, android_
                         zip_object.write(doc_jar_path, arcname="classes-doc.jar")
 
                         for header in (install_dir / "include" / self.project).iterdir():
-                            zip_object.write(header, arcname=f"prefab/modules/{self.project}-shared/include/{self.project}/{header.name}")
-                            zip_object.write(header, arcname=f"prefab/modules/{self.project}-static/include/{self.project}/{header.name}")
+                            zip_object.write(header, arcname=f"prefab/modules/{self.project}/include/{self.project}/{header.name}")
 
-                        zip_object.writestr(f"prefab/modules/{self.project}-shared/module.json", self.get_prefab_module_json_text(library_name=self.project, extra_libs=[]))
-                        zip_object.writestr(f"prefab/modules/{self.project}-static/module.json", self.get_prefab_module_json_text(library_name=self.project, extra_libs=list(ANDROID_LIBRARIES)))
+                        zip_object.writestr(f"prefab/modules/{self.project}/module.json", self.get_prefab_module_json_text(library_name=self.project, extra_libs=[]))
                         zip_object.writestr(f"prefab/modules/{self.project}_test/module.json", self.get_prefab_module_json_text(library_name=f"{self.project}_test", extra_libs=list()))
                         added_global_files = True
 
-                    zip_object.write(main_so_library, arcname=f"prefab/modules/{self.project}-shared/libs/android.{android_abi}/lib{self.project}.so")
-                    zip_object.writestr(f"prefab/modules/{self.project}-shared/libs/android.{android_abi}/abi.json", self.get_prefab_abi_json_text(abi=android_abi, cpp=False, shared=True))
-                    zip_object.write(main_static_library, arcname=f"prefab/modules/{self.project}-static/libs/android.{android_abi}/lib{self.project}.a")
-                    zip_object.writestr(f"prefab/modules/{self.project}-static/libs/android.{android_abi}/abi.json", self.get_prefab_abi_json_text(abi=android_abi, cpp=False, shared=False))
+                    zip_object.write(main_so_library, arcname=f"prefab/modules/{self.project}/libs/android.{android_abi}/lib{self.project}.so")
+                    zip_object.writestr(f"prefab/modules/{self.project}/libs/android.{android_abi}/abi.json", self.get_prefab_abi_json_text(abi=android_abi, cpp=False, shared=True))
                     zip_object.write(test_library, arcname=f"prefab/modules/{self.project}_test/libs/android.{android_abi}/lib{self.project}_test.a")
                     zip_object.writestr(f"prefab/modules/{self.project}_test/libs/android.{android_abi}/abi.json", self.get_prefab_abi_json_text(abi=android_abi, cpp=False, shared=False))
 
diff --git a/docs/README-cmake.md b/docs/README-cmake.md
index eb65c0ca7b2f7..acd3a0074bb61 100644
--- a/docs/README-cmake.md
+++ b/docs/README-cmake.md
@@ -90,6 +90,8 @@ The following components are available, to be used as an argument of `find_packa
 | SDL3           | The SDL3 library, available through the `SDL3::SDL3` target. This is an alias of `SDL3::SDL3-shared` or `SDL3::SDL3-static`. This component is always available. |
 | Headers        | The SDL3 headers, available through the `SDL3::Headers` target. This component is always available.                                                              |
 
+SDL's CMake support guarantees a `SDL3::SDL3` target.
+Neither `SDL3::SDL3-shared` nor `SDL3::SDL3-static` are guaranteed to exist.
 
 ### Using a vendored SDL
 
@@ -337,7 +339,7 @@ endif()
 
 # 2. Try using a vendored SDL library
 if(NOT SDL3_FOUND AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL/CMakeLists.txt")
-    add_subdirectory(SDL)
+    add_subdirectory(SDL EXCLUDE_FROM_ALL)
     message(STATUS "Using SDL3 via add_subdirectory")
     set(SDL3_FOUND TRUE)
 endif()