From 06447ba34c0405062a96b81d7c2c60e6c02336fe Mon Sep 17 00:00:00 2001 From: GuilhE Date: Mon, 19 Feb 2024 18:04:26 +0000 Subject: [PATCH] Adds wasmJs support --- .gitignore | 2 + build.gradle | 71 ++++++++++--------- gradle/wrapper/gradle-wrapper.properties | 2 +- .../kotlin/com/tinder/StateMachineTest.kt | 1 + 4 files changed, 41 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index ccc185e..90b382f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +/kotlin-js-store/ + .DS_Store /captures /local.properties diff --git a/build.gradle b/build.gradle index c8cf27f..003f6b8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,38 +1,40 @@ +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension + buildscript { - ext.kotlin_version = '1.3.72' - ext.atomicfu_version = '0.14.2' + ext.kotlin_version = '1.9.22' + ext.atomicfu_version = '0.23.2' repositories { mavenCentral() - jcenter() } dependencies { - classpath "org.jetbrains.kotlinx:atomicfu-gradle-plugin:$atomicfu_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlinx:atomicfu-gradle-plugin:$atomicfu_version" } } +repositories { + mavenCentral() +} + group GROUP version VERSION_NAME apply plugin: "org.jetbrains.kotlin.multiplatform" apply plugin: "kotlinx-atomicfu" -repositories { - mavenCentral() -} - - kotlin { - jvm("jvm6") - jvm("jvm8") - + applyDefaultHierarchyTemplate() + jvm() js { browser { } nodejs { } } + wasmJs { + nodejs + } // For ARM, should be changed to iosArm32 or iosArm64 // For Linux, should be changed to e.g. linuxX64 // For MacOS, should be changed to e.g. macosX64 @@ -46,7 +48,7 @@ kotlin { kotlin.srcDir('src/main/') dependencies { implementation kotlin('stdlib-common') - implementation "org.jetbrains.kotlinx:atomicfu-common:$atomicfu_version" + api "org.jetbrains.kotlinx:atomicfu:$atomicfu_version" } } commonTest { @@ -56,33 +58,18 @@ kotlin { implementation kotlin('test-annotations-common') } } - - jvm6Main { - dependencies { - implementation kotlin('stdlib') - implementation kotlin('test-annotations-common') - } - - } - jvm6Test { - dependencies { - implementation kotlin('test') - implementation kotlin('test-junit') - } - } - - jvm8Main { + jvmMain { task { kotlinOption.jvmTarget = JavaVersion.VERSION_1_8 } dependencies { - implementation kotlin('stdlib-jdk8') - implementation kotlin('test-annotations-common') + compileOnly kotlin('stdlib-jdk8') + compileOnly kotlin('test-annotations-common') } } - jvm8Test { + jvmTest { dependencies { implementation kotlin('test') implementation kotlin('test-junit') @@ -90,17 +77,33 @@ kotlin { } jsMain { dependencies { - implementation kotlin('stdlib-js') } + compileOnly kotlin('stdlib-js') } } jsTest { dependencies { implementation kotlin('test-js') } } + wasmJs { + sourceSets.commonMain + dependencies { + compileOnly kotlin('stdlib-wasm-js') + } + } + wasmJsTest { + dependencies { + implementation kotlin('test-wasm-js') + } + } macosMain { } macosTest { } - } } + +extensions.findByType(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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ef18d20..45aff3f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.3.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip diff --git a/src/test/kotlin/com/tinder/StateMachineTest.kt b/src/test/kotlin/com/tinder/StateMachineTest.kt index c508fe1..f519b22 100644 --- a/src/test/kotlin/com/tinder/StateMachineTest.kt +++ b/src/test/kotlin/com/tinder/StateMachineTest.kt @@ -37,6 +37,7 @@ internal class StateMachineTest { SideEffect.LogFrozen -> logger.log(ON_FROZEN_MESSAGE) SideEffect.LogVaporized -> logger.log(ON_VAPORIZED_MESSAGE) SideEffect.LogCondensed -> logger.log(ON_CONDENSED_MESSAGE) + else -> logger.log("Unknown SideEffect") } } }