Added support for Linux aarch64 when building the rust part
This commit is contained in:
parent
aa80638742
commit
9c2cb8ead4
2 changed files with 27 additions and 8 deletions
|
@ -3,6 +3,7 @@ import org.jetbrains.compose.compose
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
val javaLanguageVersion = JavaLanguageVersion.of(17)
|
val javaLanguageVersion = JavaLanguageVersion.of(17)
|
||||||
|
val linuxArmTarget = "aarch64-unknown-linux-gnu"
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
// Kotlin version must match compose version
|
// Kotlin version must match compose version
|
||||||
|
@ -21,6 +22,9 @@ val rustGeneratedSource = "${buildDir}/generated/source/uniffi/main/com/jetpackd
|
||||||
group = "com.jetpackduba"
|
group = "com.jetpackduba"
|
||||||
version = projectVersion
|
version = projectVersion
|
||||||
|
|
||||||
|
val isLinuxAarch64 = (properties.getOrDefault("isLinuxAarch64", "false") as String).toBoolean()
|
||||||
|
|
||||||
|
|
||||||
sourceSets.getByName("main") {
|
sourceSets.getByName("main") {
|
||||||
kotlin.sourceSets.main.get().kotlin.srcDir(rustGeneratedSource)
|
kotlin.sourceSets.main.get().kotlin.srcDir(rustGeneratedSource)
|
||||||
}
|
}
|
||||||
|
@ -35,11 +39,11 @@ repositories {
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
val jgit = "6.7.0.202309050840-r"
|
val jgit = "6.7.0.202309050840-r"
|
||||||
|
println("isLinuxAarch64=$isLinuxAarch64")
|
||||||
implementation(compose.desktop.currentOs)
|
if (currentOs() == OS.LINUX && isLinuxAarch64) {
|
||||||
when (currentOs()) {
|
implementation(compose.desktop.linux_arm64)
|
||||||
OS.LINUX -> implementation(compose.desktop.linux_arm64) // Include arm for linux builds
|
} else {
|
||||||
else -> {}
|
implementation(compose.desktop.currentOs)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
|
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
|
||||||
|
@ -215,17 +219,30 @@ fun generateKotlinFromUdl() {
|
||||||
fun buildRust() {
|
fun buildRust() {
|
||||||
exec {
|
exec {
|
||||||
println("Build rs called")
|
println("Build rs called")
|
||||||
workingDir = File(project.projectDir, "rs")
|
val params = mutableListOf(
|
||||||
commandLine = listOf(
|
|
||||||
"cargo", "build", "--release", "--features=uniffi/cli",
|
"cargo", "build", "--release", "--features=uniffi/cli",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (currentOs() == OS.LINUX && isLinuxAarch64) {
|
||||||
|
params.add("--target=$linuxArmTarget")
|
||||||
|
}
|
||||||
|
|
||||||
|
workingDir = File(project.projectDir, "rs")
|
||||||
|
commandLine = params
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun copyRustBuild() {
|
fun copyRustBuild() {
|
||||||
val outputDir = "${buildDir}/classes/kotlin/main"
|
val outputDir = "${buildDir}/classes/kotlin/main"
|
||||||
println("Copy rs build called")
|
println("Copy rs build called")
|
||||||
val workingDir = File(project.projectDir, "rs/target/release")
|
|
||||||
|
val workingDirPath = if (currentOs() == OS.LINUX && isLinuxAarch64) {
|
||||||
|
"rs/target/$linuxArmTarget/release"
|
||||||
|
} else {
|
||||||
|
"rs/target/release"
|
||||||
|
}
|
||||||
|
|
||||||
|
val workingDir = File(project.projectDir, workingDirPath)
|
||||||
|
|
||||||
val directory = File(outputDir)
|
val directory = File(outputDir)
|
||||||
directory.mkdirs()
|
directory.mkdirs()
|
||||||
|
|
2
rs/.cargo/config.toml
Normal file
2
rs/.cargo/config.toml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[target.aarch64-unknown-linux-gnu]
|
||||||
|
linker = "aarch64-linux-gnu-gcc"
|
Loading…
Reference in a new issue