diff --git a/build.gradle.kts b/build.gradle.kts index ffa0439f0c8..eaf73ecc5fb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -325,7 +325,8 @@ extra["compilerArtifactsForIde"] = listOfNotNull( ":plugins:parcelize:parcelize-runtime", ":kotlin-stdlib-common", ":kotlin-stdlib", - ":kotlin-stdlib-wasm", + ":kotlin-stdlib-wasm-js", + ":kotlin-stdlib-wasm-wasi", ":kotlin-test", ":kotlin-daemon", ":kotlin-compiler", diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index ea6af4ca315..1b95c1feacd 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -56,7 +56,8 @@ - + + diff --git a/libraries/kotlin.test/build.gradle.kts b/libraries/kotlin.test/build.gradle.kts index 947f4591e9e..453843e45fa 100644 --- a/libraries/kotlin.test/build.gradle.kts +++ b/libraries/kotlin.test/build.gradle.kts @@ -321,7 +321,7 @@ val (wasmApi, wasmRuntime) = listOf("api", "runtime").map { usage -> wasmRuntime.extendsFrom(wasmApi) dependencies { - wasmApi(project(":kotlin-stdlib-wasm")) + wasmApi(project(":kotlin-stdlib-wasm-js")) } artifacts { diff --git a/libraries/kotlin.test/wasm/build.gradle.kts b/libraries/kotlin.test/wasm/build.gradle.kts index 0975de6bbd6..1b70134f08c 100644 --- a/libraries/kotlin.test/wasm/build.gradle.kts +++ b/libraries/kotlin.test/wasm/build.gradle.kts @@ -20,18 +20,19 @@ kotlin { } sourceSets { - named("commonMain") { + named("commonMain") { dependencies { - api(project(":kotlin-stdlib-wasm")) + api(project(":kotlin-stdlib-wasm-js")) } kotlin.srcDir(commonMainSources.get().destinationDir) } named("wasmMain") { dependencies { - api(project(":kotlin-stdlib-wasm")) + api(project(":kotlin-stdlib-wasm-js")) } - kotlin.srcDir("$rootDir/libraries/kotlin.test/wasm/src") + kotlin.srcDirs("$rootDir/libraries/kotlin.test/wasm/src") + kotlin.srcDirs("$rootDir/libraries/kotlin.test/wasm/js/main/kotlin/kotlin/test") } } } @@ -40,12 +41,13 @@ tasks.withType>().configureEach { kotlinOptions.freeCompilerArgs += listOf( "-Xallow-kotlin-package", "-opt-in=kotlin.ExperimentalMultiplatform", - "-opt-in=kotlin.contracts.ExperimentalContracts" + "-opt-in=kotlin.contracts.ExperimentalContracts", + "-Xwasm-target=wasm-js" ) } -tasks.named("compileKotlinWasm") { - (this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin-test" +tasks.named("compileKotlinWasm", KotlinCompile::class.java) { + kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin-test" dependsOn(commonMainSources) } diff --git a/libraries/stdlib/wasm/build.gradle.kts b/libraries/stdlib/wasm/build.gradle.kts deleted file mode 100644 index c9b85b0ee1e..00000000000 --- a/libraries/stdlib/wasm/build.gradle.kts +++ /dev/null @@ -1,207 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.KotlinCompile -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute -import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin -import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink - -plugins { - `maven-publish` - kotlin("multiplatform") -} - -description = "Kotlin Standard Library for experimental WebAssembly platform" - -val unimplementedNativeBuiltIns = - (file("$rootDir/core/builtins/native/kotlin/").list().toSortedSet() - file("$rootDir/libraries/stdlib/wasm/builtins/kotlin/").list()) - .map { "core/builtins/native/kotlin/$it" } - - - -val builtInsSources by task { - val sources = listOf( - "core/builtins/src/kotlin/" - ) + unimplementedNativeBuiltIns - - val excluded = listOf( - // JS-specific optimized version of emptyArray() already defined - "ArrayIntrinsics.kt", - // Included with K/N collections - "Collections.kt", "Iterator.kt", "Iterators.kt" - ) - - sources.forEach { path -> - from("$rootDir/$path") { - into(path.dropLastWhile { it != '/' }) - excluded.forEach { - exclude(it) - } - } - } - - into("$buildDir/builtInsSources") -} - -val commonMainSources by task { - val sources = listOf( - "libraries/stdlib/common/src/", - "libraries/stdlib/src/kotlin/", - "libraries/stdlib/unsigned/" - ) - - sources.forEach { path -> - from("$rootDir/$path") { - into(path.dropLastWhile { it != '/' }) - } - } - - into("$buildDir/commonMainSources") - - dependsOn(":prepare:build.version:writeStdlibVersion") -} - -val commonTestSources by task { - val sources = listOf( - "libraries/stdlib/test/", - "libraries/stdlib/common/test/" - ) - - sources.forEach { path -> - from("$rootDir/$path") { - into(path.dropLastWhile { it != '/' }) - // exclusions due to KT-51647 - exclude("generated/minmax") - exclude("collections/MapTest.kt") - } - } - - into("$buildDir/commonTestSources") -} - -D8RootPlugin.apply(rootProject).version = v8Version - -kotlin { - @Suppress("DEPRECATION") - @OptIn(org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl::class) - wasm("wasm") { - nodejs() - } - - fun KotlinSourceSet.addWasmMainDirs() { - kotlin.srcDirs("builtins", "internal", "runtime", "src", "stubs") - kotlin.srcDirs("$rootDir/libraries/stdlib/native-wasm/src") - kotlin.srcDirs(files(builtInsSources.map { it.destinationDir })) - } - - sourceSets { - named("wasmMain") { - addWasmMainDirs() -// kotlin.srcDirs("js/builtins/kotlin", "js/internal", "js/src/kotlin", "js/src/kotlinx", "js/src/org.w3c") - kotlin.srcDirs("wasi/builtins/kotlin", "wasi/internal", "wasi/src/kotlin", "wasi/src/kotlinx") - } - - named("commonMain") { - kotlin.srcDirs(files(commonMainSources.map { it.destinationDir })) - } - - named("commonTest") { - dependencies { - api(project(":kotlin-test:kotlin-test-wasm")) - } - kotlin.srcDir(files(commonTestSources.map { it.destinationDir })) - } - - named("wasmTest") { - dependencies { - api(project(":kotlin-test:kotlin-test-wasm")) - } - kotlin.srcDir("$rootDir/libraries/stdlib/wasm/test/") - kotlin.srcDir("$rootDir/libraries/stdlib/native-wasm/test/") - } - } -} - -tasks.named("compileKotlinWasm", KotlinCompile::class) { - // TODO: enable explicit API mode - kotlinOptions.allWarningsAsErrors = true -} - -tasks.named("compileTestKotlinWasm", KotlinCompile::class) { - // TODO: fix all warnings, enable and -Werror - kotlinOptions.suppressWarnings = true -} - -tasks.withType>().configureEach { - kotlinOptions.freeCompilerArgs += listOf( - "-Xallow-kotlin-package", - "-opt-in=kotlin.ExperimentalMultiplatform", - "-opt-in=kotlin.contracts.ExperimentalContracts", - "-opt-in=kotlin.RequiresOptIn", - "-opt-in=kotlin.ExperimentalUnsignedTypes", - "-opt-in=kotlin.ExperimentalStdlibApi", - "-opt-in=kotlin.io.encoding.ExperimentalEncodingApi", - ) -} - -tasks.named("compileKotlinWasm") { - (this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin" - dependsOn(commonMainSources) - dependsOn(builtInsSources) -} - -val compileTestKotlinWasm by tasks.existing(KotlinCompile::class) { - val sources: FileCollection = kotlin.sourceSets["commonTest"].kotlin - doFirst { - // Note: common test sources are copied to the actual source directory by commonMainSources task, - // so can't do this at configuration time: - kotlinOptions.freeCompilerArgs += listOf("-Xcommon-sources=${sources.joinToString(",")}") - } -} - -val compileTestDevelopmentExecutableKotlinWasm = tasks.named("compileTestDevelopmentExecutableKotlinWasm") { - (this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += listOf("-Xwasm-enable-array-range-checks") -} - -val runtimeElements by configurations.creating { - attributes { - attributes.attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.js) - } -} - -val apiElements by configurations.creating { - attributes { - attributes.attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, KotlinWasmTargetAttribute.js) - } -} - -publish(sbom = false) { - pom.packaging = "klib" - artifact(tasks.named("wasmJar")) { - extension = "klib" - } -} -configureSbom( - gradleConfigurations = setOf(runtimeElements.name) -) - -afterEvaluate { - // cleanup default publications - // TODO: remove after mpp plugin allows avoiding their creation at all, KT-29273 - publishing { - publications.removeAll { it.name != "Main" } - } - - tasks.withType { - if (publication.name != "Main") this.enabled = false - } - - tasks.named("publish") { - doFirst { - publishing.publications { - if (singleOrNull()?.name != "Main") { - throw GradleException("kotlin-stdlib-wasm should have only one publication, found $size: ${joinToString { it.name }}") - } - } - } - } -} - diff --git a/libraries/stdlib/wasm/js/build.gradle.kts b/libraries/stdlib/wasm/js/build.gradle.kts new file mode 100644 index 00000000000..a48bd502153 --- /dev/null +++ b/libraries/stdlib/wasm/js/build.gradle.kts @@ -0,0 +1,47 @@ +import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin +import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute + +plugins { + `maven-publish` + kotlin("multiplatform") +} + +description = "Kotlin Standard Library for experimental WebAssembly JS platform" + +D8RootPlugin.apply(rootProject).version = v8Version + +val targetDependentSources = listOf("builtins/kotlin", "internal", "src/kotlin", "src/kotlinx", "src/org.w3c").map { + "$rootDir/libraries/stdlib/wasm/js/$it" +} + +configureWasmStdLib( + wasmTargetParameter = "wasm-js", + wasmTargetAttribute = KotlinWasmTargetAttribute.js, + targetDependentSources = targetDependentSources, + targetDependentTestSources = listOf("$rootDir/libraries/stdlib/wasm/testJs/"), + kotlinTestDependencyName = ":kotlin-test:kotlin-test-wasm-js" +) { extensionBody -> + kotlin(extensionBody) +} + +afterEvaluate { + // cleanup default publications + // TODO: remove after mpp plugin allows avoiding their creation at all, KT-29273 + publishing { + publications.removeAll { it.name != "Main" } + } + + tasks.withType { + if (publication.name != "Main") this.enabled = false + } + + tasks.named("publish") { + doFirst { + publishing.publications { + if (singleOrNull()?.name != "Main") { + throw GradleException("kotlin-stdlib-wasm should have only one publication, found $size: ${joinToString { it.name }}") + } + } + } + } +} \ No newline at end of file diff --git a/libraries/stdlib/wasm/wasi/build.gradle.kts b/libraries/stdlib/wasm/wasi/build.gradle.kts new file mode 100644 index 00000000000..fcfa004333e --- /dev/null +++ b/libraries/stdlib/wasm/wasi/build.gradle.kts @@ -0,0 +1,47 @@ +import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin +import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute + +plugins { + `maven-publish` + kotlin("multiplatform") +} + +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" +} + +configureWasmStdLib( + wasmTargetParameter = "wasm-wasi", + wasmTargetAttribute = KotlinWasmTargetAttribute.wasi, + targetDependentSources = targetDependentSources, + targetDependentTestSources = emptyList(), + kotlinTestDependencyName = ":kotlin-test:kotlin-test-wasm-wasi" +) { extensionBody -> + kotlin(extensionBody) +} + +afterEvaluate { + // cleanup default publications + // TODO: remove after mpp plugin allows avoiding their creation at all, KT-29273 + publishing { + publications.removeAll { it.name != "Main" } + } + + tasks.withType { + if (publication.name != "Main") this.enabled = false + } + + tasks.named("publish") { + doFirst { + publishing.publications { + if (singleOrNull()?.name != "Main") { + throw GradleException("kotlin-stdlib-wasm should have only one publication, found $size: ${joinToString { it.name }}") + } + } + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/stdlibDependencyManagement.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/stdlibDependencyManagement.kt index 1488f372078..30afcc698ff 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/stdlibDependencyManagement.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/stdlibDependencyManagement.kt @@ -31,7 +31,7 @@ internal const val KOTLIN_STDLIB_MODULE_NAME = "kotlin-stdlib" internal const val KOTLIN_STDLIB_JDK7_MODULE_NAME = "kotlin-stdlib-jdk7" internal const val KOTLIN_STDLIB_JDK8_MODULE_NAME = "kotlin-stdlib-jdk8" internal const val KOTLIN_STDLIB_JS_MODULE_NAME = "kotlin-stdlib-js" -internal const val KOTLIN_STDLIB_WASM_MODULE_NAME = "kotlin-stdlib-wasm" +internal const val KOTLIN_STDLIB_WASM_MODULE_NAME = "kotlin-stdlib-wasm-js" internal const val KOTLIN_ANDROID_JVM_STDLIB_MODULE_NAME = KOTLIN_STDLIB_MODULE_NAME internal fun Project.configureStdlibDefaultDependency( diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm/kotlin-stdlib-wasm.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm-js/kotlin-stdlib-wasm-js.pom similarity index 90% rename from repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm/kotlin-stdlib-wasm.pom rename to repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm-js/kotlin-stdlib-wasm-js.pom index 9cc29c8fbe1..96692bef0ed 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm/kotlin-stdlib-wasm.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm-js/kotlin-stdlib-wasm-js.pom @@ -3,11 +3,11 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4.0.0 org.jetbrains.kotlin - kotlin-stdlib-wasm + kotlin-stdlib-wasm-js ArtifactsTest.version klib - Kotlin Stdlib Wasm - Kotlin Standard Library for experimental WebAssembly platform + Kotlin Stdlib Wasm Js + Kotlin Standard Library for experimental WebAssembly JS platform https://kotlinlang.org/ diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm-wasi/kotlin-stdlib-wasm-wasi.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm-wasi/kotlin-stdlib-wasm-wasi.pom new file mode 100644 index 00000000000..2bff4ba58fa --- /dev/null +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-stdlib-wasm-wasi/kotlin-stdlib-wasm-wasi.pom @@ -0,0 +1,30 @@ + + + 4.0.0 + org.jetbrains.kotlin + kotlin-stdlib-wasm-wasi + ArtifactsTest.version + klib + Kotlin Stdlib Wasm Wasi + Kotlin Standard Library for experimental WebAssembly WASI platform + https://kotlinlang.org/ + + + The Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + Kotlin Team + JetBrains + https://www.jetbrains.com + + + + scm:git:https://github.com/JetBrains/kotlin.git + scm:git:https://github.com/JetBrains/kotlin.git + https://github.com/JetBrains/kotlin + + diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt index 23d5e5ec64f..6b6c6952ec1 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt @@ -64,7 +64,8 @@ val kotlinGradlePluginAndItsRequired = arrayOf( ":kotlin-stdlib", ":kotlin-stdlib-jdk7", ":kotlin-stdlib-jdk8", - ":kotlin-stdlib-wasm", + ":kotlin-stdlib-wasm-js", + ":kotlin-stdlib-wasm-wasi", ":examples:annotation-processor-example", ":kotlin-assignment-compiler-plugin.embeddable", ":kotlin-allopen-compiler-plugin.embeddable", diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmStdLib.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmStdLib.kt new file mode 100644 index 00000000000..4bb6fa1454f --- /dev/null +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmStdLib.kt @@ -0,0 +1,178 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +import org.gradle.api.Project +import org.gradle.api.tasks.Sync +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink + +private fun Project.createBuiltInsSources() = tasks.register("builtInsSources", Sync::class.java) { + val unimplementedNativeBuiltIns = + (file("$rootDir/core/builtins/native/kotlin/").list().toSortedSet() - file("$rootDir/libraries/stdlib/wasm/builtins/kotlin/").list()) + .map { "core/builtins/native/kotlin/$it" } + + val sources = listOf( + "core/builtins/src/kotlin/" + ) + unimplementedNativeBuiltIns + + val excluded = listOf( + // JS-specific optimized version of emptyArray() already defined + "ArrayIntrinsics.kt", + // Included with K/N collections + "Collections.kt", "Iterator.kt", "Iterators.kt" + ) + + sources.forEach { path -> + from("$rootDir/$path") { + into(path.dropLastWhile { it != '/' }) + excluded.forEach { + exclude(it) + } + } + } + + into("$buildDir/builtInsSources") +} + +private fun Project.createCommonMainSources() = tasks.register("commonMainSources", Sync::class.java) { + val sources = listOf( + "libraries/stdlib/common/src/", + "libraries/stdlib/src/kotlin/", + "libraries/stdlib/unsigned/", + "libraries/stdlib/wasm/builtins/", + "libraries/stdlib/wasm/internal/", + "libraries/stdlib/wasm/runtime/", + "libraries/stdlib/wasm/src/", + "libraries/stdlib/wasm/stubs/", + "libraries/stdlib/native-wasm/src/", + ) + + sources.forEach { path -> + from("$rootDir/$path") { + into(path.dropLastWhile { it != '/' }) + } + } + + into("$buildDir/commonMainSources") + + dependsOn(":prepare:build.version:writeStdlibVersion") +} + +private fun Project.createCommonTestSources() = tasks.register("commonTestSources", Sync::class.java) { + val sources = listOf( + "libraries/stdlib/test/", + "libraries/stdlib/common/test/", + "libraries/stdlib/wasm/test/", + "libraries/stdlib/native-wasm/test/", + ) + + sources.forEach { path -> + from("$rootDir/$path") { + into(path.dropLastWhile { it != '/' }) + // exclusions due to KT-51647 + exclude("generated/minmax") + exclude("collections/MapTest.kt") + } + } + + into("$buildDir/commonTestSources") +} + +fun Project.configureWasmStdLib( + wasmTargetParameter: String, + wasmTargetAttribute: KotlinWasmTargetAttribute, + targetDependentSources: List, + targetDependentTestSources: List, + kotlinTestDependencyName: String, + withKotlinMPP: (KotlinMultiplatformExtension.() -> Unit) -> Unit +) { + + val builtInsSources = createBuiltInsSources() + val commonMainSources = createCommonMainSources() + val commonTestSources = createCommonTestSources() + + withKotlinMPP { + @Suppress("DEPRECATION") + @OptIn(org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl::class) + wasm("wasm") { + nodejs() + attributes { + attribute(KotlinWasmTargetAttribute.wasmTargetAttribute, wasmTargetAttribute) + } + } + + sourceSets.named("commonMain") { + kotlin.srcDirs(files(commonMainSources.map { it.destinationDir })) + kotlin.srcDirs(files(builtInsSources.map { it.destinationDir })) + } + + sourceSets.named("wasmMain") { + kotlin.srcDirs(targetDependentSources) + } + + sourceSets.named("commonTest") { + dependencies { + api(project(kotlinTestDependencyName)) + } + kotlin.srcDir(files(commonTestSources.map { it.destinationDir })) + } + + sourceSets.named("wasmTest") { + dependencies { + api(project(kotlinTestDependencyName)) + } + kotlin.srcDirs(targetDependentTestSources) + } + } + + tasks.named("compileKotlinWasm", KotlinCompile::class.java) { + // TODO: enable explicit API mode + kotlinOptions.allWarningsAsErrors = true + kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin" + dependsOn(commonMainSources) + dependsOn(builtInsSources) + } + + tasks.named("compileTestKotlinWasm", KotlinCompile::class.java) { + // TODO: fix all warnings, enable and -Werror + kotlinOptions.suppressWarnings = true + } + + tasks.withType>().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-Xallow-kotlin-package", + "-opt-in=kotlin.ExperimentalMultiplatform", + "-opt-in=kotlin.contracts.ExperimentalContracts", + "-opt-in=kotlin.RequiresOptIn", + "-opt-in=kotlin.ExperimentalUnsignedTypes", + "-opt-in=kotlin.ExperimentalStdlibApi", + "-opt-in=kotlin.io.encoding.ExperimentalEncodingApi", + "-opt-in=kotlin.wasm.unsafe.UnsafeWasmMemoryApi", + "-Xwasm-target=$wasmTargetParameter" + ) + } + + tasks.named("compileTestDevelopmentExecutableKotlinWasm", KotlinJsIrLink::class.java) { + kotlinOptions.freeCompilerArgs += listOf("-Xwasm-enable-array-range-checks") + } + + val runtimeElements = configurations.create("runtimeElements") { } + + configurations.create("apiElements") { } + + publish(sbom = false) { + pom.packaging = "klib" + artifact(tasks.named("wasmJar")) { + extension = "klib" + } + } + + configureSbom( + gradleConfigurations = setOf(runtimeElements.name) + ) +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 1346f3dfd7d..8cf9f4f926e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -584,7 +584,8 @@ if (buildProperties.inJpsBuildIdeaSync) { ":kotlin-stdlib", ":kotlin-dom-api-compat", ":kotlin-stdlib-js-ir-minimal-for-test", - ":kotlin-stdlib-wasm", + ":kotlin-stdlib-wasm-js", + ":kotlin-stdlib-wasm-wasi", ":kotlin-stdlib-jdk7", ":kotlin-stdlib-jdk8", ":kotlin-stdlib:samples", @@ -609,7 +610,8 @@ if (buildProperties.inJpsBuildIdeaSync) { if (!stdlibMpp) project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File if (!stdlibMpp) project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File project(':kotlin-dom-api-compat').projectDir = "$rootDir/libraries/kotlin-dom-api-compat" as File - project(':kotlin-stdlib-wasm').projectDir = "$rootDir/libraries/stdlib/wasm" as File + project(':kotlin-stdlib-wasm-js').projectDir = "$rootDir/libraries/stdlib/wasm/js" as File + project(':kotlin-stdlib-wasm-wasi').projectDir = "$rootDir/libraries/stdlib/wasm/wasi" as File project(':kotlin-stdlib-js-ir-minimal-for-test').projectDir = "$rootDir/libraries/stdlib/js-ir-minimal-for-test" as File project(':kotlin-stdlib-jdk7').projectDir = "$rootDir/libraries/stdlib/jdk7" as File project(':kotlin-stdlib-jdk8').projectDir = "$rootDir/libraries/stdlib/jdk8" as File diff --git a/wasm/wasm.tests/build.gradle.kts b/wasm/wasm.tests/build.gradle.kts index 71448df82f0..8fb8ccd3a6d 100644 --- a/wasm/wasm.tests/build.gradle.kts +++ b/wasm/wasm.tests/build.gradle.kts @@ -87,8 +87,8 @@ sourceSets { } fun Test.setupWasmStdlib() { - dependsOn(":kotlin-stdlib-wasm:compileKotlinWasm") - systemProperty("kotlin.wasm.stdlib.path", "libraries/stdlib/wasm/build/classes/kotlin/wasm/main") + dependsOn(":kotlin-stdlib-wasm-js:compileKotlinWasm") + systemProperty("kotlin.wasm.stdlib.path", "libraries/stdlib/wasm/js/build/classes/kotlin/wasm/main") dependsOn(":kotlin-test:kotlin-test-wasm:compileKotlinWasm") systemProperty("kotlin.wasm.kotlin.test.path", "libraries/kotlin.test/wasm/build/classes/kotlin/wasm/main") }