From 46c69d611bd72d1feac2ec773d64cbbe60b52fba Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 28 Aug 2024 15:11:01 -0400 Subject: [PATCH] Support 16 KB page sizes. --- .../main/kotlin/com/nishtahir/CargoBuildTask.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt b/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt index fa83c92..13f70e7 100644 --- a/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt +++ b/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt @@ -175,7 +175,7 @@ abstract class CargoBuildTask : DefaultTask() { // Target-specific environment configuration, passed through to // the underlying `cargo build` invocation. - val toolchain_target = toolchain.target.toUpperCase().replace('-', '_') + val toolchain_target = toolchain.target.uppercase().replace('-', '_') val prefix = "RUST_ANDROID_GRADLE_TARGET_${toolchain_target}_" // For ORG_GRADLE_PROJECT_RUST_ANDROID_GRADLE_TARGET_x_KEY=VALUE, set KEY=VALUE. @@ -242,11 +242,19 @@ abstract class CargoBuildTask : DefaultTask() { environment("RUST_ANDROID_GRADLE_LINKER_WRAPPER_PY", File(rootBuildDir, "linker-wrapper/linker-wrapper.py").path) environment("RUST_ANDROID_GRADLE_CC", cc) + + var extras = "" if (generateBuildId) { - environment("RUST_ANDROID_GRADLE_CC_LINK_ARG", "-Wl,--build-id,-soname,lib${libname!!}.so") - } else { - environment("RUST_ANDROID_GRADLE_CC_LINK_ARG", "-Wl,-soname,lib${libname!!}.so") + extras += "--build-id," } + + if (ndkVersionMajor <= 27) { + // Per https://developer.android.com/guide/practices/page-sizes#compile-16-kb-alignment. + extras += "-z,max-page-size=16384," + extras += "-z,common-page-size=16384," + } + + environment("RUST_ANDROID_GRADLE_CC_LINK_ARG", "-Wl,${extras}-soname,lib${libname!!}.so") } extraCargoBuildArguments?.let {