summaryrefslogtreecommitdiff
path: root/gradle/configure-source-sets.gradle
diff options
context:
space:
mode:
authorigoriakovlev <54274820+igoriakovlev@users.noreply.github.com>2023-11-21 16:54:17 +0100
committerGitHub <noreply@github.com>2023-11-21 16:54:17 +0100
commit4a5648b773b9bcf706eee5936338f727dc8b25bc (patch)
treeb1747d2327dce1ce51a162fef33c09311eefdc26 /gradle/configure-source-sets.gradle
parent31d779f180991b89d4b6ccaa9ef62eae3cf969dd (diff)
downloadkotlinx.serialization-4a5648b773b9bcf706eee5936338f727dc8b25bc.tar.gz
Add Wasm WASI target (#2510)
This is implementation of Wasm WASI target support. Please notice, that due to lack of support this target in okio we are forced to escape building this formatter and all formatters unit tests for WASI. We hope that WasmJS target (i.e. backend and compiler plugin) are fully similar to the WasmWASI target so the library functionality is fully covered by WasmJS.
Diffstat (limited to 'gradle/configure-source-sets.gradle')
-rw-r--r--gradle/configure-source-sets.gradle49
1 files changed, 42 insertions, 7 deletions
diff --git a/gradle/configure-source-sets.gradle b/gradle/configure-source-sets.gradle
index e763580a..740a475a 100644
--- a/gradle/configure-source-sets.gradle
+++ b/gradle/configure-source-sets.gradle
@@ -14,6 +14,11 @@ tasks.withType(JavaCompile).configureEach {
options.release = 8
}
+// Unfortunately there is no compatible version of okio for Wasm WASI target, so we need to skip to configure WASI for json-okio and json-tests.
+// json-tests uses okio with incorporate with other formatter tests so it is hard and not worth to separate it for two projects for WASI.
+// So we disable WASI target in it and we hope, that WASI version of compiler and serialization plugin are identical to the WasmJS target so WASI target is being covered.
+Boolean isOkIoOrFormatTests = (project.name == 'kotlinx-serialization-json-okio' || project.name == 'kotlinx-serialization-json-tests')
+
kotlin {
jvm {
withJava()
@@ -43,7 +48,13 @@ kotlin {
}
wasmJs {
- d8()
+ nodejs()
+ }
+
+ if (!isOkIoOrFormatTests) {
+ wasmWasi {
+ nodejs()
+ }
}
sourceSets.all {
@@ -96,25 +107,43 @@ kotlin {
}
}
+ create("wasmMain") {
+ dependsOn(commonMain)
+ }
+ create("wasmTest") {
+ dependsOn(commonTest)
+ }
wasmJsMain {
- kotlin {
- srcDir 'wasmMain/src'
- }
+ dependsOn(wasmMain)
dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib-wasm-js'
}
}
wasmJsTest {
- kotlin {
- srcDir 'wasmTest/src'
- }
+ dependsOn(wasmTest)
dependencies {
api 'org.jetbrains.kotlin:kotlin-test-wasm-js'
}
}
+ if (!isOkIoOrFormatTests) {
+ wasmWasiMain {
+ dependsOn(wasmMain)
+ dependencies {
+ api 'org.jetbrains.kotlin:kotlin-stdlib-wasm-wasi'
+ }
+ }
+
+ wasmWasiTest {
+ dependsOn(wasmTest)
+ dependencies {
+ api 'org.jetbrains.kotlin:kotlin-test-wasm-wasi'
+ }
+ }
+ }
+
nativeMain.dependencies {
}
}
@@ -162,3 +191,9 @@ kotlin {
}
}
}
+
+rootProject.extensions.findByType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension.class).with {
+ // canary nodejs that supports recent Wasm GC changes
+ it.nodeVersion = "21.0.0-v8-canary202309167e82ab1fa2"
+ it.nodeDownloadBaseUrl = "https://nodejs.org/download/v8-canary"
+} \ No newline at end of file