-
Notifications
You must be signed in to change notification settings - Fork 350
/
Copy pathVersion.kt
70 lines (60 loc) · 2.67 KB
/
Version.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import java.io.File
import java.util.Properties
object Version {
val java = JavaVersion.VERSION_11
const val compileSdkVersion = 35
val buildToolsVersion = findBuildToolsVersion()
const val minSdk = 24
const val targetSdk = 35
const val versionName = "1.5.7"
private const val defaultNdkVersion = "27.0.12077973"
// LSPlant requires CMake 3.28.0+ to build
private const val defaultCMakeVersion = "3.31.0"
fun getNdkVersion(project: Project): String {
val prop = getLocalProperty(project, "qauxv.override.ndk.version")
val env = getEnvVariable("QAUXV_OVERRIDE_NDK_VERSION")
if (!prop.isNullOrEmpty() && !env.isNullOrEmpty()) {
throw IllegalStateException("Cannot set both QAUXV_OVERRIDE_NDK_VERSION and qauxv.override.ndk.version")
}
return prop ?: env ?: defaultNdkVersion
}
fun getCMakeVersion(project: Project): String {
val prop = getLocalProperty(project, "qauxv.override.cmake.version")
val env = getEnvVariable("QAUXV_OVERRIDE_CMAKE_VERSION")
if (!prop.isNullOrEmpty() && !env.isNullOrEmpty()) {
throw IllegalStateException("Cannot set both QAUXV_OVERRIDE_CMAKE_VERSION and qauxv.override.cmake.version")
}
return prop ?: env ?: defaultCMakeVersion
}
fun getNinjaPathOrNull(project: Project): String? {
val prop = getLocalProperty(project, "qauxv.override.ninja.path")
val env = getEnvVariable("QAUXV_OVERRIDE_NINJA_PATH")
if (!prop.isNullOrEmpty() && !env.isNullOrEmpty()) {
throw IllegalStateException("Cannot set both QAUXV_OVERRIDE_NINJA_PATH and qauxv.override.ninja.path")
}
return prop ?: env
}
fun getLocalProperty(project: Project, propertyName: String): String? {
val rootProject = project.rootProject
val localProp = File(rootProject.projectDir, "local.properties")
if (!localProp.exists()) {
return null
}
val localProperties = Properties()
localProp.inputStream().use {
localProperties.load(it)
}
return localProperties.getProperty(propertyName, null)
}
private fun getEnvVariable(name: String): String? {
return System.getenv(name)
}
private fun findBuildToolsVersion(): String {
val defaultBuildToolsVersion = "35.0.0" // AGP 8.2.0 need Build Tools 34.0.0
return File(System.getenv("ANDROID_HOME"), "build-tools").listFiles()?.filter { it.isDirectory }?.maxOfOrNull { it.name }
?.also { println("Using build tools version $it") }
?: defaultBuildToolsVersion
}
}