| /* |
| * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. |
| */ |
| |
| @file:OptIn(ExperimentalWasmDsl::class) |
| |
| import org.gradle.kotlin.dsl.* |
| import org.jetbrains.kotlin.gradle.* |
| import org.jetbrains.kotlin.gradle.dsl.* |
| import org.jetbrains.kotlin.gradle.plugin.mpp.* |
| import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl |
| import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension |
| import org.jetbrains.kotlin.gradle.targets.native.tasks.* |
| import org.jetbrains.kotlin.gradle.tasks.* |
| import org.jetbrains.kotlin.gradle.testing.* |
| |
| plugins { |
| kotlin("multiplatform") |
| } |
| |
| tasks.withType<JavaCompile>().configureEach { |
| options.release = 8 |
| } |
| |
| internal fun Project.versionCatalog(): VersionCatalog = versionCatalogs.named("libs") |
| |
| kotlin { |
| explicitApi() |
| |
| jvm { |
| withJava() |
| @OptIn(ExperimentalKotlinGradlePluginApi::class) |
| compilerOptions { |
| jvmTarget = JvmTarget.JVM_1_8 |
| freeCompilerArgs.add("-Xjdk-release=1.8") |
| } |
| } |
| jvmToolchain(jdkToolchainVersion) |
| |
| js { |
| nodejs { |
| testTask { |
| useMocha { |
| timeout = "10s" |
| } |
| } |
| } |
| |
| @OptIn(ExperimentalKotlinGradlePluginApi::class) |
| compilerOptions { |
| sourceMap = true |
| moduleKind = JsModuleKind.MODULE_UMD |
| } |
| } |
| |
| wasmJs { |
| nodejs() |
| } |
| |
| wasmWasi { |
| nodejs() |
| } |
| |
| sourceSets.all { |
| kotlin.srcDirs("$name/src") |
| resources.srcDirs("$name/resources") |
| languageSettings { |
| progressiveMode = true |
| |
| optIn("kotlin.ExperimentalMultiplatform") |
| optIn("kotlinx.serialization.InternalSerializationApi") |
| } |
| } |
| |
| sourceSets { |
| commonMain { |
| dependencies { |
| api(versionCatalog().findLibrary("kotlin.stdlib").get()) |
| } |
| } |
| |
| commonTest { |
| dependencies { |
| api(versionCatalog().findLibrary("kotlin.test").get()) |
| } |
| } |
| |
| register("wasmMain") { |
| dependsOn(commonMain.get()) |
| } |
| register("wasmTest") { |
| dependsOn(commonTest.get()) |
| } |
| |
| named("wasmJsMain") { |
| dependsOn(named("wasmMain").get()) |
| } |
| |
| named("wasmJsTest") { |
| dependsOn(named("wasmTest").get()) |
| } |
| |
| named("wasmWasiMain") { |
| dependsOn(named("wasmMain").get()) |
| } |
| |
| named("wasmWasiTest") { |
| dependsOn(named("wasmTest").get()) |
| } |
| } |
| |
| sourceSets.matching({ it.name.contains("Test") }).configureEach { |
| languageSettings { |
| optIn("kotlinx.serialization.InternalSerializationApi") |
| optIn("kotlinx.serialization.ExperimentalSerializationApi") |
| } |
| } |
| } |
| |
| tasks.withType(KotlinCompilationTask::class).configureEach { |
| compilerOptions { |
| val isMainTaskName = name.startsWith("compileKotlin") |
| if (isMainTaskName) { |
| allWarningsAsErrors = true |
| } |
| if (overriddenLanguageVersion != null) { |
| languageVersion = KotlinVersion.fromVersion(overriddenLanguageVersion!!) |
| freeCompilerArgs.add("-Xsuppress-version-warnings") |
| } |
| freeCompilerArgs.add("-Xexpect-actual-classes") |
| } |
| } |