xref: /aosp_15_r20/external/kotlinx.serialization/core/build.gradle (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1*57b5a4a6SAndroid Build Coastguard Workerimport org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
2*57b5a4a6SAndroid Build Coastguard Worker
3*57b5a4a6SAndroid Build Coastguard Worker/*
4*57b5a4a6SAndroid Build Coastguard Worker * Copyright 2017-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
5*57b5a4a6SAndroid Build Coastguard Worker */
6*57b5a4a6SAndroid Build Coastguard Worker
7*57b5a4a6SAndroid Build Coastguard Workerapply plugin: 'kotlin-multiplatform'
8*57b5a4a6SAndroid Build Coastguard Workerapply plugin: 'kotlinx-serialization'
9*57b5a4a6SAndroid Build Coastguard Worker
10*57b5a4a6SAndroid Build Coastguard Workerapply from: rootProject.file("gradle/native-targets.gradle")
11*57b5a4a6SAndroid Build Coastguard Workerapply from: rootProject.file("gradle/configure-source-sets.gradle")
12*57b5a4a6SAndroid Build Coastguard Worker
13*57b5a4a6SAndroid Build Coastguard Workerkotlin {
14*57b5a4a6SAndroid Build Coastguard Worker    sourceSets {
15*57b5a4a6SAndroid Build Coastguard Worker        jvmTest {
16*57b5a4a6SAndroid Build Coastguard Worker            dependencies {
17*57b5a4a6SAndroid Build Coastguard Worker                implementation 'io.kotlintest:kotlintest:2.0.7'
18*57b5a4a6SAndroid Build Coastguard Worker                implementation 'com.google.guava:guava:24.1.1-jre'
19*57b5a4a6SAndroid Build Coastguard Worker                implementation 'com.google.code.gson:gson:2.8.5'
20*57b5a4a6SAndroid Build Coastguard Worker                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
21*57b5a4a6SAndroid Build Coastguard Worker            }
22*57b5a4a6SAndroid Build Coastguard Worker        }
23*57b5a4a6SAndroid Build Coastguard Worker    }
24*57b5a4a6SAndroid Build Coastguard Worker}
25*57b5a4a6SAndroid Build Coastguard Worker
26*57b5a4a6SAndroid Build Coastguard Worker/*
27*57b5a4a6SAndroid Build Coastguard Worker These manifest values help kotlinx.serialization compiler plugin determine if it is compatible with a given runtime library.
28*57b5a4a6SAndroid Build Coastguard Worker Plugin reads them during compilation.
29*57b5a4a6SAndroid Build Coastguard Worker
30*57b5a4a6SAndroid Build Coastguard Worker Implementation-Version is used to determine whether runtime library supports a given plugin feature (e.g. value classes serialization
31*57b5a4a6SAndroid Build Coastguard Worker in Kotlin 1.x may require runtime library version 1.y to work).
32*57b5a4a6SAndroid Build Coastguard Worker Compiler plugin may enable or disable features by looking on Implementation-Version.
33*57b5a4a6SAndroid Build Coastguard Worker
34*57b5a4a6SAndroid Build Coastguard Worker Require-Kotlin-Version is used to determine whether runtime library with new features can work with old compilers.
35*57b5a4a6SAndroid Build Coastguard Worker In ideal case, its value should always be 1.4, but some refactorings (e.g. adding a method to the Encoder interface)
36*57b5a4a6SAndroid Build Coastguard Worker may unexpectedly break old compilers, so it is left out as a safety net. Compiler plugins, starting from 1.4 are instructed
37*57b5a4a6SAndroid Build Coastguard Worker to reject runtime if runtime's Require-Kotlin-Version is greater then the current compiler.
38*57b5a4a6SAndroid Build Coastguard Worker */
39*57b5a4a6SAndroid Build Coastguard Workertasks.withType(Jar).named(kotlin.jvm().artifactsTaskName) {
40*57b5a4a6SAndroid Build Coastguard Worker
41*57b5a4a6SAndroid Build Coastguard Worker    // adding the ProGuard rules to the jar
42*57b5a4a6SAndroid Build Coastguard Worker    from(rootProject.file("rules/common.pro")) {
43*57b5a4a6SAndroid Build Coastguard Worker        rename { "kotlinx-serialization-common.pro" }
44*57b5a4a6SAndroid Build Coastguard Worker        into("META-INF/proguard")
45*57b5a4a6SAndroid Build Coastguard Worker    }
46*57b5a4a6SAndroid Build Coastguard Worker    from(rootProject.file("rules/common.pro")) {
47*57b5a4a6SAndroid Build Coastguard Worker        rename { "kotlinx-serialization-common.pro" }
48*57b5a4a6SAndroid Build Coastguard Worker        into("META-INF/com.android.tools/proguard")
49*57b5a4a6SAndroid Build Coastguard Worker    }
50*57b5a4a6SAndroid Build Coastguard Worker    from(rootProject.file("rules/common.pro")) {
51*57b5a4a6SAndroid Build Coastguard Worker        rename { "kotlinx-serialization-common.pro" }
52*57b5a4a6SAndroid Build Coastguard Worker        into("META-INF/com.android.tools/r8")
53*57b5a4a6SAndroid Build Coastguard Worker    }
54*57b5a4a6SAndroid Build Coastguard Worker    from(rootProject.file("rules/r8.pro")) {
55*57b5a4a6SAndroid Build Coastguard Worker        rename { "kotlinx-serialization-r8.pro" }
56*57b5a4a6SAndroid Build Coastguard Worker        into("META-INF/com.android.tools/r8")
57*57b5a4a6SAndroid Build Coastguard Worker    }
58*57b5a4a6SAndroid Build Coastguard Worker
59*57b5a4a6SAndroid Build Coastguard Worker
60*57b5a4a6SAndroid Build Coastguard Worker    manifest {
61*57b5a4a6SAndroid Build Coastguard Worker        attributes(
62*57b5a4a6SAndroid Build Coastguard Worker                "Implementation-Version": version,
63*57b5a4a6SAndroid Build Coastguard Worker                "Require-Kotlin-Version": "1.4.30-M1",
64*57b5a4a6SAndroid Build Coastguard Worker        )
65*57b5a4a6SAndroid Build Coastguard Worker    }
66*57b5a4a6SAndroid Build Coastguard Worker}
67*57b5a4a6SAndroid Build Coastguard Worker
68*57b5a4a6SAndroid Build Coastguard WorkerJava9Modularity.configureJava9ModuleInfo(project)
69*57b5a4a6SAndroid Build Coastguard Worker
70*57b5a4a6SAndroid Build Coastguard Workertasks.withType(org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink.class).configureEach {
71*57b5a4a6SAndroid Build Coastguard Worker    kotlinOptions.freeCompilerArgs += "-Xwasm-enable-array-range-checks"
72*57b5a4a6SAndroid Build Coastguard Worker}
73