-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.gradle.kts
More file actions
92 lines (74 loc) · 2.06 KB
/
build.gradle.kts
File metadata and controls
92 lines (74 loc) · 2.06 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import org.gradle.api.tasks.Exec
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidKotlinMultiplatformLibrary)
}
import org.gradle.internal.os.OperatingSystem
// Detect OS
val os = OperatingSystem.current()
val rustDir = project.projectDir.resolve("src/commonMain/rust")
val rustTargetTriple = when {
os.isWindows -> "x86_64-pc-windows-msvc"
os.isLinux -> "aarch64-unknown-linux-gnu"
os.isMacOsX -> "x86_64-apple-darwin"
else -> error("Unsupported OS: ${os.name}")
}
val rustLibExt = when {
os.isWindows -> "mihon_runner.dll"
os.isLinux -> "libmihon_runner.so"
os.isMacOsX -> "libmihon_runner.dylib"
else -> error("Unsupported OS: ${os.name}")
}
val rustTargetDir = "target/$rustTargetTriple/release"
val rustDllName = "$rustLibExt"
val jniLibDir = "/jni_libraries"
val buildRust by tasks.registering(Exec::class) {
workingDir = file("src/commonMain/rust")
commandLine("cargo", "build", "--release", "--target", rustTargetTriple)
}
val copyRustLibToUser by tasks.registering(Copy::class) {
dependsOn(buildRust)
val userHomePath = System.getProperty("user.home")
println("$rustDir/$rustTargetDir/$rustDllName")
println("$userHomePath$jniLibDir")
from("$rustTargetDir/$rustDllName")
into("$userHomePath$jniLibDir")
}
tasks.register("buildAndCopyRust") {
dependsOn(copyRustLibToUser)
}
kotlin {
jvm()
androidLibrary {
namespace = "mihonx.runner"
compileSdk = 36
minSdk = 24
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "mihonx-runnerKit"
}
}
sourceSets {
commonMain {
dependencies {
implementation(libs.kotlin.stdlib)
// Add KMP dependencies here
}
}
androidMain {
dependencies { }
}
iosMain {
dependencies { }
}
jvmMain {
dependencies {
}
}
}
}