From 469ca237dbf3fd6fb448dc8a74cc6f87c6c9d31e Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 6 Oct 2023 20:45:14 +0200 Subject: [PATCH] Remove the previous approach to build wasm stdlib variants --- build.gradle.kts | 1 - libraries/stdlib/wasm/build.gradle.kts | 3 +- libraries/stdlib/wasm/js/build.gradle.kts | 25 --- libraries/stdlib/wasm/wasi/build.gradle.kts | 23 --- .../src/main/kotlin/wasm/wasmStdLib.kt | 164 ------------------ settings.gradle | 4 - wasm/wasm.tests/build.gradle.kts | 4 +- 7 files changed, 4 insertions(+), 220 deletions(-) delete mode 100644 libraries/stdlib/wasm/js/build.gradle.kts delete mode 100644 libraries/stdlib/wasm/wasi/build.gradle.kts delete mode 100644 repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmStdLib.kt diff --git a/build.gradle.kts b/build.gradle.kts index 461bf38dafc..77f271a558d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -622,7 +622,6 @@ tasks { ":kotlinx-metadata-jvm", ":tools:binary-compatibility-validator", ":tools:jdk-api-validator", - //":kotlin-stdlib-wasm", )).forEach { dependsOn("$it:check") } diff --git a/libraries/stdlib/wasm/build.gradle.kts b/libraries/stdlib/wasm/build.gradle.kts index 19de1a40890..f8c9bae20dd 100644 --- a/libraries/stdlib/wasm/build.gradle.kts +++ b/libraries/stdlib/wasm/build.gradle.kts @@ -1,3 +1,4 @@ tasks.create("check") { - dependsOn(tasks.findByPath(":kotlin-stdlib-wasm-js:check")) + dependsOn(tasks.findByPath(":kotlin-stdlib:wasmJsTest")) + dependsOn(tasks.findByPath(":kotlin-stdlib:wasmWasiTest")) } \ No newline at end of file diff --git a/libraries/stdlib/wasm/js/build.gradle.kts b/libraries/stdlib/wasm/js/build.gradle.kts deleted file mode 100644 index b4694cace8c..00000000000 --- a/libraries/stdlib/wasm/js/build.gradle.kts +++ /dev/null @@ -1,25 +0,0 @@ -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/js/test/"), - kotlinTestDependencyName = ":kotlin-test:kotlin-test-wasm-js" -) { extensionBody -> - kotlin(extensionBody) -} diff --git a/libraries/stdlib/wasm/wasi/build.gradle.kts b/libraries/stdlib/wasm/wasi/build.gradle.kts deleted file mode 100644 index 4c6d6897e4d..00000000000 --- a/libraries/stdlib/wasm/wasi/build.gradle.kts +++ /dev/null @@ -1,23 +0,0 @@ -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" - -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 = listOf("$rootDir/libraries/stdlib/wasm/wasi/test/"), - kotlinTestDependencyName = ":kotlin-test:kotlin-test-wasm-wasi" -) { extensionBody -> - kotlin(extensionBody) -} 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 deleted file mode 100644 index fda4bdca4ad..00000000000 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmStdLib.kt +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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", - "-Xexpect-actual-classes", - "-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") - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 6318e49b447..ebe654e78c0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -588,8 +588,6 @@ if (buildProperties.inJpsBuildIdeaSync) { ":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,8 +607,6 @@ if (buildProperties.inJpsBuildIdeaSync) { project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib" 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 0b8e83450b8..32f7dd8f520 100644 --- a/wasm/wasm.tests/build.gradle.kts +++ b/wasm/wasm.tests/build.gradle.kts @@ -90,8 +90,8 @@ sourceSets { } fun Test.setupWasmStdlib(target: String) { - dependsOn(":kotlin-stdlib-wasm-$target:compileKotlinWasm") - systemProperty("kotlin.wasm-$target.stdlib.path", "libraries/stdlib/wasm/$target/build/classes/kotlin/wasm/main") + dependsOn(":kotlin-stdlib:compileKotlinWasm${target.capitalize()}") + systemProperty("kotlin.wasm-$target.stdlib.path", "libraries/stdlib/build/classes/kotlin/wasm${target.capitalize()}/main") dependsOn(":kotlin-test:kotlin-test-wasm-$target:compileKotlinWasm") systemProperty("kotlin.wasm-$target.kotlin.test.path", "libraries/kotlin.test/wasm/$target/build/classes/kotlin/wasm/main") }