support WASM in KotlinTargetHierarchyBuilder
This commit is contained in:
committed by
Sebastian Sellmair
parent
91fb16110f
commit
b240b8452a
+2
-1
@@ -28,9 +28,10 @@ interface KotlinTargetHierarchyBuilder {
|
||||
fun withMingw()
|
||||
fun withLinux()
|
||||
fun withAndroidNative()
|
||||
fun withJs()
|
||||
|
||||
/* Actual targets */
|
||||
fun withJs()
|
||||
fun withWasm()
|
||||
fun withJvm()
|
||||
fun withAndroid()
|
||||
fun withAndroidNativeX64()
|
||||
|
||||
+5
-1
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinWasmTargetDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.konan.target.DEPRECATED_TARGET_MESSAGE
|
||||
import org.jetbrains.kotlin.konan.target.Family
|
||||
@@ -117,7 +119,9 @@ private class KotlinTargetHierarchyBuilderImpl(
|
||||
|
||||
override fun withAndroidNative() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.ANDROID }
|
||||
|
||||
override fun withJs() = addTargets { it is KotlinJsTargetDsl }
|
||||
/** Don't check for instance of [KotlinJsTargetDsl] or [KotlinWasmTargetDsl] because they are implemented by single target [KotlinJsIrTarget] */
|
||||
override fun withJs() = addTargets { it.platformType == KotlinPlatformType.js }
|
||||
override fun withWasm() = addTargets { it.platformType == KotlinPlatformType.wasm }
|
||||
|
||||
override fun withJvm() = addTargets {
|
||||
it is KotlinJvmTarget ||
|
||||
|
||||
+64
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetHierarchyDescriptor
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy.buildKotlinTargetHierarchy
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy.naturalKotlinTargetHierarchy
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
|
||||
import org.jetbrains.kotlin.gradle.util.*
|
||||
import kotlin.test.*
|
||||
|
||||
@@ -319,6 +320,69 @@ class KotlinTargetHierarchyDslTest {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - hierarchy js and wasm`() {
|
||||
kotlin.targetHierarchy.custom {
|
||||
common {
|
||||
group("web") {
|
||||
withJs()
|
||||
withWasm()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalWasmDsl::class)
|
||||
kotlin.wasm()
|
||||
kotlin.js()
|
||||
|
||||
assertEquals(
|
||||
stringSetOf("webMain", "jsMain", "wasmMain"),
|
||||
kotlin.dependingSourceSetNames("commonMain")
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
stringSetOf("jsMain", "wasmMain"),
|
||||
kotlin.dependingSourceSetNames("webMain")
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - hierarchy js and wasm split`() {
|
||||
kotlin.targetHierarchy.custom {
|
||||
common {
|
||||
group("jsAndJvm") {
|
||||
withJs()
|
||||
withJvm()
|
||||
}
|
||||
group("wasmAndLinux") {
|
||||
withWasm()
|
||||
withLinuxX64()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalWasmDsl::class)
|
||||
kotlin.wasm()
|
||||
kotlin.js()
|
||||
kotlin.jvm()
|
||||
kotlin.linuxX64()
|
||||
|
||||
assertEquals(
|
||||
stringSetOf("jsAndJvmMain", "wasmAndLinuxMain", "jvmMain", "linuxX64Main", "jsMain", "wasmMain"),
|
||||
kotlin.dependingSourceSetNames("commonMain")
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
stringSetOf("jsMain", "jvmMain"),
|
||||
kotlin.dependingSourceSetNames("jsAndJvmMain")
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
stringSetOf("wasmMain", "linuxX64Main"),
|
||||
kotlin.dependingSourceSetNames("wasmAndLinuxMain")
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - hierarchy set - extend - with new root`() {
|
||||
val descriptor = KotlinTargetHierarchyDescriptor {
|
||||
|
||||
Reference in New Issue
Block a user