ClashMetaForAndroid/core/build.gradle.kts

75 lines
2.0 KiB
Plaintext
Raw Normal View History

2025-01-21 21:35:45 +08:00
import android.databinding.tool.ext.capitalizeUS
import com.github.kr328.golang.GolangBuildTask
import com.github.kr328.golang.GolangPlugin
2021-05-15 00:51:08 +08:00
plugins {
kotlin("android")
id("com.android.library")
2021-05-15 00:51:08 +08:00
id("kotlinx-serialization")
id("golang-android")
2021-05-15 00:51:08 +08:00
}
val golangSource = file("src/main/golang/native")
2021-05-15 00:51:08 +08:00
golang {
sourceSets {
2024-09-12 02:53:54 +00:00
create("alpha") {
2024-01-16 23:21:27 +08:00
tags.set(listOf("foss","with_gvisor","cmfa"))
2021-09-12 00:39:59 +08:00
srcDir.set(file("src/foss/golang"))
2021-05-15 00:51:08 +08:00
}
2023-05-10 18:10:50 +08:00
create("meta") {
2024-01-16 23:21:27 +08:00
tags.set(listOf("foss","with_gvisor","cmfa"))
2023-05-10 18:10:50 +08:00
srcDir.set(file("src/foss/golang"))
}
all {
fileName.set("libclash.so")
2021-09-12 00:39:59 +08:00
packageName.set("cfa/native")
2021-05-15 00:51:08 +08:00
}
}
}
2021-05-15 00:51:08 +08:00
android {
productFlavors {
all {
externalNativeBuild {
cmake {
arguments("-DGO_SOURCE:STRING=${golangSource}")
arguments("-DGO_OUTPUT:STRING=${GolangPlugin.outputDirOf(project, null, null)}")
arguments("-DFLAVOR_NAME:STRING=$name")
}
}
}
2021-05-15 00:51:08 +08:00
}
externalNativeBuild {
cmake {
path = file("src/main/cpp/CMakeLists.txt")
}
}
}
dependencies {
implementation(project(":common"))
2021-05-15 00:51:08 +08:00
2022-03-22 13:48:02 +08:00
implementation(libs.androidx.core)
implementation(libs.kotlin.coroutine)
implementation(libs.kotlin.serialization.json)
2021-05-15 00:51:08 +08:00
}
afterEvaluate {
tasks.withType(GolangBuildTask::class.java).forEach {
2021-09-12 01:33:52 +08:00
it.inputs.dir(golangSource)
}
2025-01-21 21:35:45 +08:00
}
val abis = listOf("armeabi-v7a" to "ArmeabiV7a", "arm64-v8a" to "Arm64V8a", "x86_64" to "X8664", "x86" to "X86")
androidComponents.onVariants { variant ->
afterEvaluate {
for ((abi, goAbi) in abis) {
val cmakeName = if (variant.buildType == "debug") "Debug" else "RelWithDebInfo"
tasks.getByName("buildCMake$cmakeName[$abi]").dependsOn(tasks.getByName("externalGolangBuild${variant.name.capitalizeUS()}$goAbi"))
}
}
}