Skip to content

Commit b21cd77

Browse files
committed
Refactor rust library handling and enhance Gradle task configuration
- Introduce `prebuiltRustLibrary` function to centralize prebuilt library resolution logic. - Update `FindDynamicLibrariesTask` and `RustUpTargetAddTask` to use `prebuiltRustLibrary` for improved target handling. - Refine conditional task execution to account for prebuilt library existence and host-target checks.
1 parent a60177c commit b21cd77

1 file changed

Lines changed: 28 additions & 5 deletions

File tree

wrywebview/build.gradle.kts

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,21 @@ import gobley.gradle.GobleyHost
44
import gobley.gradle.Variant
55
import gobley.gradle.cargo.dsl.jvm
66
import gobley.gradle.cargo.tasks.CargoBuildTask
7+
import gobley.gradle.cargo.tasks.FindDynamicLibrariesTask
8+
import gobley.gradle.cargo.tasks.RustUpTargetAddTask
9+
import org.gradle.api.Project
710
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
11+
import java.io.File
812

913
fun rustLibraryName(triple: String): String = when {
1014
triple.contains("windows") -> "composewebview_wry.dll"
1115
triple.contains("darwin") || triple.contains("apple") -> "libcomposewebview_wry.dylib"
1216
else -> "libcomposewebview_wry.so"
1317
}
1418

19+
fun Project.prebuiltRustLibrary(triple: String): File =
20+
layout.projectDirectory.dir("target/$triple/release").file(rustLibraryName(triple)).asFile
21+
1522
plugins {
1623
alias(libs.plugins.kotlinJvm)
1724
alias(libs.plugins.kotlinAtomicfu)
@@ -70,11 +77,27 @@ tasks.withType<CargoBuildTask>().configureEach {
7077
onlyIf {
7178
val rustTarget = target.orNull ?: return@onlyIf true
7279
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
80+
val prebuiltLib = project.prebuiltRustLibrary(triple)
81+
val isHostTarget = GobleyHost.current.rustTarget.rustTriple == triple
82+
!prebuiltLib.exists() || isHostTarget
83+
}
84+
}
85+
86+
tasks.withType<FindDynamicLibrariesTask>().configureEach {
87+
val rustTarget = rustTarget.orNull ?: return@configureEach
88+
val triple = rustTarget.rustTriple
89+
val prebuiltLib = project.prebuiltRustLibrary(triple)
90+
val isHostTarget = GobleyHost.current.rustTarget.rustTriple == triple
91+
if (prebuiltLib.exists() && !isHostTarget) {
92+
searchPaths.set(listOf(prebuiltLib.parentFile))
93+
}
94+
}
95+
96+
tasks.withType<RustUpTargetAddTask>().configureEach {
97+
onlyIf {
98+
val rustTarget = rustTarget.orNull ?: return@onlyIf true
99+
val triple = rustTarget.rustTriple
100+
val prebuiltLib = project.prebuiltRustLibrary(triple)
78101
val isHostTarget = GobleyHost.current.rustTarget.rustTriple == triple
79102
!prebuiltLib.exists() || isHostTarget
80103
}

0 commit comments

Comments
 (0)