Fix: force use cmake installed in system

This commit is contained in:
kr328 2021-05-22 19:53:28 +08:00
parent 7cfefbca19
commit a2f3330455
3 changed files with 1 additions and 24 deletions

View File

@ -3,18 +3,13 @@ package com.github.kr328.clash.tools
import com.android.build.gradle.LibraryExtension import com.android.build.gradle.LibraryExtension
import golangBuild import golangBuild
import golangSource import golangSource
import org.gradle.api.GradleException
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.tasks.Delete
import java.io.File
import java.util.* import java.util.*
class ClashBuildPlugin : Plugin<Project> { class ClashBuildPlugin : Plugin<Project> {
override fun apply(target: Project) { override fun apply(target: Project) {
target.afterEvaluate { target.afterEvaluate {
val cmakeDirectory = resolveCmakeDir(target)
target.extensions.getByType(LibraryExtension::class.java).apply { target.extensions.getByType(LibraryExtension::class.java).apply {
libraryVariants.forEach { variant -> libraryVariants.forEach { variant ->
val config = BuildConfig.of(this, variant) val config = BuildConfig.of(this, variant)
@ -27,7 +22,6 @@ class ClashBuildPlugin : Plugin<Project> {
) { ) {
it.config.set(config) it.config.set(config)
it.ndkDirectory.set(ndkDirectory) it.ndkDirectory.set(ndkDirectory)
it.cmakeDirectory.set(cmakeDirectory)
it.inputDirectory.set(target.golangSource) it.inputDirectory.set(target.golangSource)
it.outputDirectory.set(buildDir) it.outputDirectory.set(buildDir)
} }
@ -48,14 +42,4 @@ class ClashBuildPlugin : Plugin<Project> {
} }
} }
} }
private fun resolveCmakeDir(project: Project): File {
val properties = Properties().apply {
project.rootProject.file("local.properties").inputStream().use(this::load)
}
return project.rootProject.file(
properties.getProperty("cmake.dir") ?: throw GradleException("cmake.dir not found")
)
}
} }

View File

@ -16,9 +16,6 @@ abstract class ClashBuildTask : DefaultTask() {
abstract val ndkDirectory: DirectoryProperty abstract val ndkDirectory: DirectoryProperty
@InputDirectory get @InputDirectory get
abstract val cmakeDirectory: DirectoryProperty
@InputDirectory get
abstract val inputDirectory: DirectoryProperty abstract val inputDirectory: DirectoryProperty
@InputDirectory get @InputDirectory get
@ -31,7 +28,7 @@ abstract class ClashBuildTask : DefaultTask() {
val output = outputDirectory.file val output = outputDirectory.file
val config = config.get() val config = config.get()
val environment = Environment(ndkDirectory.file, cmakeDirectory.file, config.minSdkVersion) val environment = Environment(ndkDirectory.file, config.minSdkVersion)
val tags = listOf("without_gvisor", "without_system") + val tags = listOf("without_gvisor", "without_system") +
(if (config.debug) listOf("debug") else emptyList()) + (if (config.debug) listOf("debug") else emptyList()) +

View File

@ -6,7 +6,6 @@ import java.io.File
class Environment( class Environment(
private val ndkDirectory: File, private val ndkDirectory: File,
private val cmakeDirectory: File,
private val minSdkVersion: Int, private val minSdkVersion: Int,
) { ) {
fun ofCoreBuild(abi: NativeAbi): Map<String, String> { fun ofCoreBuild(abi: NativeAbi): Map<String, String> {
@ -35,10 +34,7 @@ class Environment(
} }
fun ofLwipBuild(abi: NativeAbi): Map<String, String> { fun ofLwipBuild(abi: NativeAbi): Map<String, String> {
val path = "${cmakeDirectory.absolutePath}${File.pathSeparator}${System.getenv("PATH")}"
return mapOf( return mapOf(
"PATH" to path,
"CMAKE_SYSTEM_NAME" to "Android", "CMAKE_SYSTEM_NAME" to "Android",
"CMAKE_ANDROID_NDK" to ndkDirectory.absolutePath, "CMAKE_ANDROID_NDK" to ndkDirectory.absolutePath,
"CMAKE_ANDROID_ARCH_ABI" to abi.value, "CMAKE_ANDROID_ARCH_ABI" to abi.value,