blob: b3d885ee260bd2ef785d849ea92867b629783ab7 [file] [log] [blame] [edit]
import Java9Modularity.configureJava9ModuleInfo
import org.jetbrains.kotlin.gradle.targets.js.ir.*
/*
* Copyright 2017-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
plugins {
kotlin("multiplatform")
alias(libs.plugins.serialization)
id("native-targets-conventions")
id("source-sets-conventions")
}
kotlin {
sourceSets {
jvmTest {
dependencies {
implementation(libs.kotlintest)
implementation(libs.guava.get24())
implementation(libs.gson)
implementation(libs.coroutines.core)
}
}
}
}
/*
These manifest values help kotlinx.serialization compiler plugin determine if it is compatible with a given runtime library.
Plugin reads them during compilation.
Implementation-Version is used to determine whether runtime library supports a given plugin feature (e.g. value classes serialization
in Kotlin 1.x may require runtime library version 1.y to work).
Compiler plugin may enable or disable features by looking at Implementation-Version.
Require-Kotlin-Version is used to determine whether runtime library with new features can work with old compilers.
In ideal case, its value should always be 1.4, but some refactorings (e.g. adding a method to the Encoder interface)
may unexpectedly break old compilers, so it is left out as a safety net. Compiler plugins, starting from 1.4 are instructed
to reject runtime if runtime's Require-Kotlin-Version is greater then the current compiler.
*/
tasks.withType<Jar>().named(kotlin.jvm().artifactsTaskName) {
// adding the ProGuard rules to the jar
from(rootDir.resolve("rules/common.pro")) {
rename { "kotlinx-serialization-common.pro" }
into("META-INF/proguard")
}
from(rootDir.resolve("rules/common.pro")) {
rename { "kotlinx-serialization-common.pro" }
into("META-INF/com.android.tools/proguard")
}
from(rootDir.resolve("rules/common.pro")) {
rename { "kotlinx-serialization-common.pro" }
into("META-INF/com.android.tools/r8")
}
from(rootDir.resolve("rules/r8.pro")) {
rename { "kotlinx-serialization-r8.pro" }
into("META-INF/com.android.tools/r8")
}
manifest {
attributes(
"Implementation-Version" to version,
"Require-Kotlin-Version" to "2.0.0-RC1",
)
}
}
configureJava9ModuleInfo()
tasks.withType<KotlinJsIrLink>().configureEach {
compilerOptions.freeCompilerArgs.add("-Xwasm-enable-array-range-checks")
}