From 8b64878258106293057380d829de52e29065b212 Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Wed, 11 Oct 2023 22:11:53 -0400
Subject: [PATCH 1/6] android: Update AGP to 8.1.2

---
 src/android/build.gradle.kts | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/android/build.gradle.kts b/src/android/build.gradle.kts
index 80f370c164..51e5593215 100644
--- a/src/android/build.gradle.kts
+++ b/src/android/build.gradle.kts
@@ -3,8 +3,8 @@
 
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 plugins {
-    id("com.android.application") version "8.0.2" apply false
-    id("com.android.library") version "8.0.2" apply false
+    id("com.android.application") version "8.1.2" apply false
+    id("com.android.library") version "8.1.2" apply false
     id("org.jetbrains.kotlin.android") version "1.8.21" apply false
 }
 

From 1591923f91045f2c3cd537e1795ba1811999522c Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Wed, 11 Oct 2023 23:06:14 -0400
Subject: [PATCH 2/6] android: Update ndk to 26.1.10909125

The new ndk uses LLVM 17.0.2 so we can remove the LLVM download and libc++ options for the android builds
---
 CMakeLists.txt                   | 37 --------------------------------
 src/android/app/build.gradle.kts |  2 +-
 2 files changed, 1 insertion(+), 38 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2bef9d6ed2..1049a4cd80 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,6 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modul
 include(DownloadExternals)
 include(CMakeDependentOption)
 include(CTest)
-include(FetchContent)
 
 # Set bundled sdl2/qt as dependent options.
 # OFF by default, but if ENABLE_SDL2 and MSVC are true then ON
@@ -99,47 +98,11 @@ if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
             DESTINATION "${vvl_lib_path}")
 endif()
 
-# On Android, fetch and compile libcxx before doing anything else
 if (ANDROID)
     set(CMAKE_SKIP_INSTALL_RULES ON)
-    set(LLVM_VERSION "15.0.6")
-
-    # Note: even though libcxx and libcxxabi have separate releases on the project page,
-    # the separated releases cannot be compiled. Only in-tree builds work. Therefore we
-    # must fetch the source release for the entire llvm tree.
-    FetchContent_Declare(llvm
-        URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.src.tar.xz"
-        URL_HASH SHA256=9d53ad04dc60cb7b30e810faf64c5ab8157dadef46c8766f67f286238256ff92
-        TLS_VERIFY TRUE
-    )
-    FetchContent_MakeAvailable(llvm)
-
-    # libcxx has support for most of the range library, but it's gated behind a flag:
-    add_compile_definitions(_LIBCPP_ENABLE_EXPERIMENTAL)
 
     # Disable standard header inclusion
     set(ANDROID_STL "none")
-
-    # libcxxabi
-    set(LIBCXXABI_INCLUDE_TESTS OFF)
-    set(LIBCXXABI_ENABLE_SHARED FALSE)
-    set(LIBCXXABI_ENABLE_STATIC TRUE)
-    set(LIBCXXABI_LIBCXX_INCLUDES "${LIBCXX_TARGET_INCLUDE_DIRECTORY}" CACHE STRING "" FORCE)
-    add_subdirectory("${llvm_SOURCE_DIR}/libcxxabi" "${llvm_BINARY_DIR}/libcxxabi")
-    link_libraries(cxxabi_static)
-
-    # libcxx
-    set(LIBCXX_ABI_NAMESPACE "__ndk1" CACHE STRING "" FORCE)
-    set(LIBCXX_CXX_ABI "libcxxabi")
-    set(LIBCXX_INCLUDE_TESTS OFF)
-    set(LIBCXX_INCLUDE_BENCHMARKS OFF)
-    set(LIBCXX_INCLUDE_DOCS OFF)
-    set(LIBCXX_ENABLE_SHARED FALSE)
-    set(LIBCXX_ENABLE_STATIC TRUE)
-    set(LIBCXX_ENABLE_ASSERTIONS FALSE)
-    add_subdirectory("${llvm_SOURCE_DIR}/libcxx" "${llvm_BINARY_DIR}/libcxx")
-    set_target_properties(cxx-headers PROPERTIES INTERFACE_COMPILE_OPTIONS "-isystem${CMAKE_BINARY_DIR}/${LIBCXX_INSTALL_INCLUDE_DIR}")
-    link_libraries(cxx_static cxx-headers)
 endif()
 
 if (YUZU_USE_BUNDLED_VCPKG)
diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts
index 84a3308b70..b100862b2d 100644
--- a/src/android/app/build.gradle.kts
+++ b/src/android/app/build.gradle.kts
@@ -27,7 +27,7 @@ android {
     namespace = "org.yuzu.yuzu_emu"
 
     compileSdkVersion = "android-34"
-    ndkVersion = "25.2.9519653"
+    ndkVersion = "26.1.10909125"
 
     buildFeatures {
         viewBinding = true

From 2c3281c66bf9992f352daed376ecbe5862f2f1c6 Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Wed, 11 Oct 2023 23:07:24 -0400
Subject: [PATCH 3/6] externals: Update LLVM to 17.0.2

Matches android ndk
---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1049a4cd80..27bee40dbd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -292,7 +292,7 @@ find_package(Boost 1.79.0 REQUIRED context)
 find_package(enet 1.3 MODULE)
 find_package(fmt 9 REQUIRED)
 find_package(inih 52 MODULE COMPONENTS INIReader)
-find_package(LLVM 17 MODULE COMPONENTS Demangle)
+find_package(LLVM 17.0.2 MODULE COMPONENTS Demangle)
 find_package(lz4 REQUIRED)
 find_package(nlohmann_json 3.8 REQUIRED)
 find_package(Opus 1.3 MODULE)

From 224b6036a49d91829d911f5a8c1997f4a3472722 Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Wed, 11 Oct 2023 23:08:21 -0400
Subject: [PATCH 4/6] android: Update dependencies

Updates to androidx navigation, lifecycle, preference, fragment, recyclerview, and core
---
 src/android/app/build.gradle.kts | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts
index b100862b2d..ac43d84b72 100644
--- a/src/android/app/build.gradle.kts
+++ b/src/android/app/build.gradle.kts
@@ -203,23 +203,23 @@ ktlint {
 }
 
 dependencies {
-    implementation("androidx.core:core-ktx:1.10.1")
+    implementation("androidx.core:core-ktx:1.12.0")
     implementation("androidx.appcompat:appcompat:1.6.1")
-    implementation("androidx.recyclerview:recyclerview:1.3.0")
+    implementation("androidx.recyclerview:recyclerview:1.3.1")
     implementation("androidx.constraintlayout:constraintlayout:2.1.4")
-    implementation("androidx.fragment:fragment-ktx:1.6.0")
+    implementation("androidx.fragment:fragment-ktx:1.6.1")
     implementation("androidx.documentfile:documentfile:1.0.1")
     implementation("com.google.android.material:material:1.9.0")
-    implementation("androidx.preference:preference:1.2.0")
-    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
+    implementation("androidx.preference:preference-ktx:1.2.1")
+    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
     implementation("io.coil-kt:coil:2.2.2")
     implementation("androidx.core:core-splashscreen:1.0.1")
     implementation("androidx.window:window:1.2.0-beta03")
     implementation("org.ini4j:ini4j:0.5.4")
     implementation("androidx.constraintlayout:constraintlayout:2.1.4")
     implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
-    implementation("androidx.navigation:navigation-fragment-ktx:2.6.0")
-    implementation("androidx.navigation:navigation-ui-ktx:2.6.0")
+    implementation("androidx.navigation:navigation-fragment-ktx:2.7.4")
+    implementation("androidx.navigation:navigation-ui-ktx:2.7.4")
     implementation("info.debatty:java-string-similarity:2.0.0")
     implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0")
 }

From 9b961dddb4445c1a51d922d0436a325630ca6d72 Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Wed, 11 Oct 2023 23:08:41 -0400
Subject: [PATCH 5/6] android: Remove unnecessary flag to extract native libs
 in AndroidManifest.xml

---
 src/android/app/src/main/AndroidManifest.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml
index 832c08e153..a673517270 100644
--- a/src/android/app/src/main/AndroidManifest.xml
+++ b/src/android/app/src/main/AndroidManifest.xml
@@ -28,7 +28,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
         android:appCategory="game"
         android:localeConfig="@xml/locales_config"
         android:banner="@drawable/tv_banner"
-        android:extractNativeLibs="true"
         android:fullBackupContent="@xml/data_extraction_rules"
         android:dataExtractionRules="@xml/data_extraction_rules_api_31"
         android:enableOnBackInvokedCallback="true">

From 3aa6d4d8ce47e1cb67343ffae0e67f274053a4ec Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Wed, 11 Oct 2023 23:29:57 -0400
Subject: [PATCH 6/6] android: Allow ANDROID_STL

---
 CMakeLists.txt | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 27bee40dbd..1108e5ae63 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -100,9 +100,6 @@ endif()
 
 if (ANDROID)
     set(CMAKE_SKIP_INSTALL_RULES ON)
-
-    # Disable standard header inclusion
-    set(ANDROID_STL "none")
 endif()
 
 if (YUZU_USE_BUNDLED_VCPKG)