[Wasm] Add wasi kotlin.test target gradle buildscript
This commit is contained in:
committed by
Zalim Bashorov
parent
d1c7caf15c
commit
f42d0b1ed4
@@ -5,6 +5,7 @@ import plugins.configureKotlinPomAttributes
|
||||
import groovy.util.Node
|
||||
import groovy.util.NodeList
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute
|
||||
|
||||
plugins {
|
||||
id("org.jetbrains.kotlin.multiplatform") apply false
|
||||
@@ -63,6 +64,7 @@ val wasmApiVariant by configurations.creating {
|
||||
attributes {
|
||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||
attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.js)
|
||||
}
|
||||
}
|
||||
val wasmRuntimeVariant by configurations.creating {
|
||||
@@ -71,10 +73,31 @@ val wasmRuntimeVariant by configurations.creating {
|
||||
attributes {
|
||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||
attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.js)
|
||||
}
|
||||
extendsFrom(wasmApiVariant)
|
||||
}
|
||||
|
||||
val wasmWasiApiVariant by configurations.creating {
|
||||
isCanBeConsumed = false
|
||||
isCanBeResolved = true
|
||||
attributes {
|
||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||
attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.wasi)
|
||||
}
|
||||
}
|
||||
val wasmWasiRuntimeVariant by configurations.creating {
|
||||
isCanBeConsumed = false
|
||||
isCanBeResolved = true
|
||||
attributes {
|
||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||
attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.wasi)
|
||||
}
|
||||
extendsFrom(wasmWasiApiVariant)
|
||||
}
|
||||
|
||||
val nativeApiVariant by configurations.creating {
|
||||
isCanBeConsumed = false
|
||||
isCanBeResolved = true
|
||||
@@ -113,7 +136,8 @@ val kotlinTestJvmSources by configurations.creating {
|
||||
dependencies {
|
||||
jvmApi(project(":kotlin-stdlib"))
|
||||
jsApiVariant("$group:kotlin-test-js:$version")
|
||||
wasmApiVariant("$group:kotlin-test-wasm:$version")
|
||||
wasmApiVariant("$group:kotlin-test-wasm-js:$version")
|
||||
wasmWasiApiVariant("$group:kotlin-test-wasm-wasi:$version")
|
||||
commonVariant(project(":kotlin-test:kotlin-test-common"))
|
||||
commonVariant(project(":kotlin-test:kotlin-test-annotations-common"))
|
||||
kotlinTestCommonSources(project(":kotlin-test:kotlin-test-common"))
|
||||
@@ -163,6 +187,8 @@ val rootComponent = componentFactory.adhoc("root").apply {
|
||||
addVariantsFromConfiguration(jsRuntimeVariant) { mapToOptional() }
|
||||
addVariantsFromConfiguration(wasmApiVariant) { mapToOptional() }
|
||||
addVariantsFromConfiguration(wasmRuntimeVariant) { mapToOptional() }
|
||||
addVariantsFromConfiguration(wasmWasiApiVariant) { mapToOptional() }
|
||||
addVariantsFromConfiguration(wasmWasiRuntimeVariant) { mapToOptional() }
|
||||
addVariantsFromConfiguration(nativeApiVariant) { mapToOptional() }
|
||||
addVariantsFromConfiguration(commonVariant) { mapToOptional() }
|
||||
}
|
||||
@@ -308,37 +334,68 @@ val jsComponent = componentFactory.adhoc("js").apply {
|
||||
}
|
||||
}
|
||||
|
||||
val (wasmApi, wasmRuntime) = listOf("api", "runtime").map { usage ->
|
||||
configurations.create("wasm${usage.capitalize()}") {
|
||||
val (wasmJsApi, wasmJsRuntime) = listOf("api", "runtime").map { usage ->
|
||||
configurations.create("wasmJs${usage.capitalize()}") {
|
||||
isCanBeConsumed = true
|
||||
isCanBeResolved = true
|
||||
attributes {
|
||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||
attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.js)
|
||||
}
|
||||
}
|
||||
}
|
||||
wasmRuntime.extendsFrom(wasmApi)
|
||||
wasmJsRuntime.extendsFrom(wasmJsApi)
|
||||
|
||||
val (wasmWasiApi, wasmWasiRuntime) = listOf("api", "runtime").map { usage ->
|
||||
configurations.create("wasmWasi${usage.capitalize()}") {
|
||||
isCanBeConsumed = true
|
||||
isCanBeResolved = true
|
||||
attributes {
|
||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||
attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.wasi)
|
||||
}
|
||||
}
|
||||
}
|
||||
wasmWasiRuntime.extendsFrom(wasmWasiApi)
|
||||
|
||||
dependencies {
|
||||
wasmApi(project(":kotlin-stdlib-wasm-js"))
|
||||
wasmJsApi(project(":kotlin-stdlib-wasm-js"))
|
||||
wasmWasiApi(project(":kotlin-stdlib-wasm-wasi"))
|
||||
}
|
||||
|
||||
artifacts {
|
||||
val wasmKlib = tasks.getByPath(":kotlin-test:kotlin-test-wasm:wasmJar")
|
||||
add(wasmApi.name, wasmKlib) {
|
||||
val wasmKlib = tasks.getByPath(":kotlin-test:kotlin-test-wasm-js:wasmJar")
|
||||
add(wasmJsApi.name, wasmKlib) {
|
||||
extension = "klib"
|
||||
}
|
||||
add(wasmRuntime.name, wasmKlib) {
|
||||
add(wasmJsRuntime.name, wasmKlib) {
|
||||
extension = "klib"
|
||||
}
|
||||
val wasmWasiKlib = tasks.getByPath(":kotlin-test:kotlin-test-wasm-wasi:wasmJar")
|
||||
add(wasmWasiApi.name, wasmWasiKlib) {
|
||||
extension = "klib"
|
||||
}
|
||||
add(wasmWasiRuntime.name, wasmWasiKlib) {
|
||||
extension = "klib"
|
||||
}
|
||||
}
|
||||
|
||||
val wasmComponent = componentFactory.adhoc("wasm").apply {
|
||||
addVariantsFromConfiguration(wasmApi) {
|
||||
val wasmComponent = componentFactory.adhoc("wasmJs").apply {
|
||||
addVariantsFromConfiguration(wasmJsApi) {
|
||||
mapToMavenScope("compile")
|
||||
}
|
||||
addVariantsFromConfiguration(wasmRuntime) {
|
||||
addVariantsFromConfiguration(wasmJsRuntime) {
|
||||
mapToMavenScope("runtime")
|
||||
}
|
||||
}
|
||||
|
||||
val wasmWasiComponent = componentFactory.adhoc("wasmWasi").apply {
|
||||
addVariantsFromConfiguration(wasmWasiApi) {
|
||||
mapToMavenScope("compile")
|
||||
}
|
||||
addVariantsFromConfiguration(wasmWasiRuntime) {
|
||||
mapToMavenScope("runtime")
|
||||
}
|
||||
}
|
||||
@@ -430,16 +487,27 @@ publishing {
|
||||
"Js", "kotlin-test-js",
|
||||
setOf(jsRuntime.name, commonVariant.name), kotlinTestJsPublication
|
||||
)
|
||||
val kotlinTestWasmPublication = register("wasm", MavenPublication::class) {
|
||||
artifactId = "kotlin-test-wasm"
|
||||
val kotlinTestWasmJsPublication = register("wasmJs", MavenPublication::class) {
|
||||
artifactId = "kotlin-test-wasm-js"
|
||||
from(wasmComponent)
|
||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm:sourcesJar") as Jar)
|
||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm:emptyJavadocJar") as Jar)
|
||||
configureKotlinPomAttributes(project, "Kotlin Test for WASM", packaging = "klib")
|
||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm-js:sourcesJar") as Jar)
|
||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm-js:emptyJavadocJar") as Jar)
|
||||
configureKotlinPomAttributes(project, "Kotlin Test for Wasm JS", packaging = "klib")
|
||||
}
|
||||
configureSbom(
|
||||
"Wasm", "kotlin-test-wasm",
|
||||
setOf(wasmRuntime.name, commonVariant.name), kotlinTestWasmPublication
|
||||
"WasmJs", "kotlin-test-wasm-js",
|
||||
setOf(wasmJsRuntime.name, commonVariant.name), kotlinTestWasmJsPublication
|
||||
)
|
||||
val kotlinTestWasmWasiPublication = register("wasmWasi", MavenPublication::class) {
|
||||
artifactId = "kotlin-test-wasm-wasi"
|
||||
from(wasmWasiComponent)
|
||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm-wasi:sourcesJar") as Jar)
|
||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm-wasi:emptyJavadocJar") as Jar)
|
||||
configureKotlinPomAttributes(project, "Kotlin Test for Wasm WASI", packaging = "klib")
|
||||
}
|
||||
configureSbom(
|
||||
"WasmWasi", "kotlin-test-wasm-wasi",
|
||||
setOf(wasmWasiRuntime.name, commonVariant.name), kotlinTestWasmWasiPublication
|
||||
)
|
||||
val kotlinTestCommonPublication = register("common", MavenPublication::class) {
|
||||
artifactId = "kotlin-test-common"
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("multiplatform")
|
||||
}
|
||||
|
||||
val commonMainSources by task<Sync> {
|
||||
from(
|
||||
"$rootDir/libraries/kotlin.test/common/src",
|
||||
"$rootDir/libraries/kotlin.test/annotations-common/src"
|
||||
)
|
||||
into("$buildDir/commonMainSources")
|
||||
}
|
||||
|
||||
kotlin {
|
||||
@Suppress("DEPRECATION")
|
||||
@OptIn(org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl::class)
|
||||
wasm("wasm") {
|
||||
nodejs()
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
named("commonMain") {
|
||||
dependencies {
|
||||
api(project(":kotlin-stdlib-wasm-js"))
|
||||
}
|
||||
kotlin.srcDir(commonMainSources.get().destinationDir)
|
||||
}
|
||||
|
||||
named("wasmMain") {
|
||||
dependencies {
|
||||
api(project(":kotlin-stdlib-wasm-js"))
|
||||
}
|
||||
kotlin.srcDirs("$rootDir/libraries/kotlin.test/wasm/src")
|
||||
kotlin.srcDirs("$rootDir/libraries/kotlin.test/wasm/js/main/kotlin/kotlin/test")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType<KotlinCompile<*>>().configureEach {
|
||||
kotlinOptions.freeCompilerArgs += listOf(
|
||||
"-Xallow-kotlin-package",
|
||||
"-opt-in=kotlin.ExperimentalMultiplatform",
|
||||
"-opt-in=kotlin.contracts.ExperimentalContracts",
|
||||
"-Xwasm-target=wasm-js"
|
||||
)
|
||||
}
|
||||
|
||||
tasks.named("compileKotlinWasm", KotlinCompile::class.java) {
|
||||
kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin-test"
|
||||
dependsOn(commonMainSources)
|
||||
}
|
||||
|
||||
tasks.register<Jar>("sourcesJar") {
|
||||
dependsOn(commonMainSources)
|
||||
archiveClassifier.set("sources")
|
||||
from(kotlin.sourceSets["commonMain"].kotlin)
|
||||
from(kotlin.sourceSets["wasmMain"].kotlin)
|
||||
}
|
||||
|
||||
tasks.register<Jar>("emptyJavadocJar") {
|
||||
archiveClassifier.set("javadoc")
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute
|
||||
|
||||
plugins {
|
||||
kotlin("multiplatform")
|
||||
}
|
||||
|
||||
configureWasmKotlinTest(
|
||||
wasmTargetParameter = "wasm-js",
|
||||
wasmTargetAttribute = KotlinWasmTargetAttribute.js,
|
||||
targetSourceDir = "$rootDir/libraries/kotlin.test/wasm/js/src",
|
||||
stdDependencyName = ":kotlin-stdlib-wasm-js"
|
||||
) { extensionBody ->
|
||||
kotlin(extensionBody)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute
|
||||
|
||||
plugins {
|
||||
kotlin("multiplatform")
|
||||
}
|
||||
|
||||
configureWasmKotlinTest(
|
||||
wasmTargetParameter = "wasm-wasi",
|
||||
wasmTargetAttribute = KotlinWasmTargetAttribute.wasi,
|
||||
targetSourceDir = "$rootDir/libraries/kotlin.test/wasm/wasi/src",
|
||||
stdDependencyName = ":kotlin-stdlib-wasm-wasi"
|
||||
) { extensionBody ->
|
||||
kotlin(extensionBody)
|
||||
}
|
||||
@@ -8,8 +8,6 @@ plugins {
|
||||
|
||||
description = "Kotlin Standard Library for experimental WebAssembly WASI platform"
|
||||
|
||||
D8RootPlugin.apply(rootProject).version = v8Version
|
||||
|
||||
val targetDependentSources = listOf("builtins/kotlin", "src/kotlin", "src/kotlinx").map {
|
||||
"$rootDir/libraries/stdlib/wasm/wasi/$it"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user