Skip to content

Commit a60177c

Browse files
committed
Refactor rust library handling and improve Gradle task configuration
- Extract `rustLibraryName` function to simplify library name resolution based on target triples. - Update `uniffi` and `CargoBuildTask` configurations to streamline native library builds and conditionally skip redundant steps.
1 parent 948b5e3 commit a60177c

1 file changed

Lines changed: 25 additions & 6 deletions

File tree

wrywebview/build.gradle.kts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@ import com.vanniktech.maven.publish.JavadocJar
33
import gobley.gradle.GobleyHost
44
import gobley.gradle.Variant
55
import gobley.gradle.cargo.dsl.jvm
6+
import gobley.gradle.cargo.tasks.CargoBuildTask
67
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
78

9+
fun rustLibraryName(triple: String): String = when {
10+
triple.contains("windows") -> "composewebview_wry.dll"
11+
triple.contains("darwin") || triple.contains("apple") -> "libcomposewebview_wry.dylib"
12+
else -> "libcomposewebview_wry.so"
13+
}
14+
815
plugins {
916
alias(libs.plugins.kotlinJvm)
1017
alias(libs.plugins.kotlinAtomicfu)
@@ -20,11 +27,7 @@ cargo {
2027
// In CI with pre-built natives, embed if the library file exists
2128
// Otherwise, only embed for current host platform
2229
val triple = rustTarget.rustTriple
23-
val libName = when {
24-
triple.contains("windows") -> "composewebview_wry.dll"
25-
triple.contains("darwin") || triple.contains("apple") -> "libcomposewebview_wry.dylib"
26-
else -> "libcomposewebview_wry.so"
27-
}
30+
val libName = rustLibraryName(triple)
2831
val prebuiltLib = layout.projectDirectory.dir("target/$triple/release").file(libName)
2932
embedRustLibrary = prebuiltLib.asFile.exists() || (GobleyHost.current.rustTarget == rustTarget)
3033
}
@@ -43,7 +46,9 @@ rust {
4346
}
4447

4548
uniffi {
46-
generateFromLibrary()
49+
generateFromLibrary {
50+
build.set(GobleyHost.current.rustTarget)
51+
}
4752
}
4853

4954
kotlin {
@@ -61,6 +66,20 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile>().configureEa
6166
}
6267
}
6368

69+
tasks.withType<CargoBuildTask>().configureEach {
70+
onlyIf {
71+
val rustTarget = target.orNull ?: return@onlyIf true
72+
val triple = rustTarget.rustTriple
73+
val libName = rustLibraryName(triple)
74+
val prebuiltLib = project.layout.projectDirectory
75+
.dir("target/$triple/release")
76+
.file(libName)
77+
.asFile
78+
val isHostTarget = GobleyHost.current.rustTarget.rustTriple == triple
79+
!prebuiltLib.exists() || isHostTarget
80+
}
81+
}
82+
6483
java {
6584
toolchain {
6685
languageVersion = JavaLanguageVersion.of(17)

0 commit comments

Comments
 (0)