import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask plugins { kotlin("multiplatform") } kotlin { jvmToolchain(8) jvm() js(IR) { browser() nodejs() } @OptIn(ExperimentalWasmDsl::class) wasmJs { binaries.executable() nodejs() } /* https://kotlinlang.org/docs/native-target-support.html#tier-1 */ macosX64() macosArm64() iosSimulatorArm64() iosX64() /* https://kotlinlang.org/docs/native-target-support.html#tier-2 */ linuxX64() linuxArm64() watchosSimulatorArm64() watchosX64() watchosArm32() watchosArm64() tvosSimulatorArm64() tvosX64() tvosArm64() iosArm64() /* https://kotlinlang.org/docs/native-target-support.html#tier-3 */ androidNativeArm32() androidNativeArm64() androidNativeX86() androidNativeX64() mingwX64() watchosDeviceArm64() sourceSets { all { languageSettings.apply { optIn("kotlin.contracts.ExperimentalContracts") } } commonTest { dependencies { implementation(kotlin("test")) } } jvmTest { dependencies { implementation(kotlin("test-junit")) } } jsTest { dependencies { implementation(kotlin("test-js")) } } } } tasks.withType { from(rootDir.resolve("LICENSE")) { into("META-INF") } } /* https://youtrack.jetbrains.com/issue/KT-63014/Running-tests-with-wasmJs-in-1.9.20-requires-Chrome-Canary#focus=Comments-27-8321383.0-0 */ rootProject.the().apply { nodeVersion = "21.0.0-v8-canary202309143a48826a08" nodeDownloadBaseUrl = "https://nodejs.org/download/v8-canary" } rootProject.tasks.withType { args.add("--ignore-engines") }