Support setting custom ABI list

Also stop building riscv64 by default
This commit is contained in:
topjohnwu
2024-08-01 14:33:08 -07:00
parent 9093be1329
commit 1539cfe888
7 changed files with 71 additions and 41 deletions

View File

@ -8,6 +8,8 @@ import java.util.Properties
private val props = Properties()
private var commitHash = ""
private val supportAbis = setOf("armeabi-v7a", "x86", "arm64-v8a", "x86_64", "riscv64")
private val defaultAbis = setOf("armeabi-v7a", "x86", "arm64-v8a", "x86_64")
object Config {
operator fun get(key: String): String? {
@ -20,6 +22,10 @@ object Config {
val version: String get() = get("version") ?: commitHash
val versionCode: Int get() = get("magisk.versionCode")!!.toInt()
val stubVersion: String get() = get("magisk.stubVersion")!!
val abiList: Set<String> get() {
val abiList = get("abiList") ?: return defaultAbis
return abiList.split(Regex("\\s*,\\s*")).toSet() intersect supportAbis
}
}
class MagiskPlugin : Plugin<Project> {

View File

@ -121,9 +121,11 @@ const val BUSYBOX_ZIP_CHECKSUM =
fun Project.setupCoreLib() {
setupCommon()
val abiList = Config.abiList
val syncLibs by tasks.registering(Sync::class) {
into("src/main/jniLibs")
for (abi in arrayOf("armeabi-v7a", "x86", "arm64-v8a", "x86_64", "riscv64")) {
for (abi in abiList) {
into(abi) {
from(rootProject.file("native/out/$abi")) {
include("magiskboot", "magiskinit", "magiskpolicy", "magisk", "libinit-ld.so")
@ -132,7 +134,7 @@ fun Project.setupCoreLib() {
}
}
onlyIf {
if (inputs.sourceFiles.files.size != 25)
if (inputs.sourceFiles.files.size != abiList.size * 5)
throw StopExecutionException("Please build binaries first! (./build.py binary)")
true
}
@ -158,6 +160,7 @@ fun Project.setupCoreLib() {
}
}
from(zipTree(bb))
include(abiList.map { "$it/libbusybox.so" })
into("src/main/jniLibs")
}