@@ -7,6 +7,7 @@ import gobley.gradle.cargo.tasks.CargoBuildTask
77import gobley.gradle.cargo.tasks.FindDynamicLibrariesTask
88import gobley.gradle.cargo.tasks.RustUpTargetAddTask
99import org.gradle.api.Project
10+ import org.gradle.language.jvm.tasks.ProcessResources
1011import org.jetbrains.kotlin.gradle.dsl.JvmTarget
1112import java.io.File
1213
@@ -19,6 +20,17 @@ fun rustLibraryName(triple: String): String = when {
1920fun Project.prebuiltRustLibrary (triple : String ): File =
2021 layout.projectDirectory.dir(" target/$triple /release" ).file(rustLibraryName(triple)).asFile
2122
23+ data class NativeResource (val triple : String , val resourcePrefix : String )
24+
25+ val nativeResources = listOf (
26+ NativeResource (" aarch64-apple-darwin" , " darwin-aarch64" ),
27+ NativeResource (" x86_64-apple-darwin" , " darwin-x86-64" ),
28+ NativeResource (" x86_64-unknown-linux-gnu" , " linux-x86-64" ),
29+ NativeResource (" aarch64-unknown-linux-gnu" , " linux-aarch64" ),
30+ NativeResource (" x86_64-pc-windows-msvc" , " win32-x86-64" ),
31+ NativeResource (" aarch64-pc-windows-msvc" , " win32-aarch64" ),
32+ )
33+
2234plugins {
2335 alias(libs.plugins.kotlinJvm)
2436 alias(libs.plugins.kotlinAtomicfu)
@@ -73,6 +85,17 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile>().configureEa
7385 }
7486}
7587
88+ tasks.named<ProcessResources >(" processResources" ) {
89+ nativeResources.forEach { (triple, resourcePrefix) ->
90+ val prebuiltLib = project.prebuiltRustLibrary(triple)
91+ if (prebuiltLib.exists()) {
92+ from(prebuiltLib) {
93+ into(resourcePrefix)
94+ }
95+ }
96+ }
97+ }
98+
7699tasks.withType<CargoBuildTask >().configureEach {
77100 onlyIf {
78101 val rustTarget = target.orNull ? : return @onlyIf true
0 commit comments