1 /* 2 * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3 */ 4 import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension 5 import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask 6 import org.jetbrains.kotlin.gradle.plugin.mpp.* 7 8 val serialization_version = property("mainLibVersion") as String 9 10 // Versions substituted in settings.gradle.kts <lambda>null11plugins { 12 id("org.jetbrains.kotlin.multiplatform") version "0" 13 id("org.jetbrains.kotlin.plugin.serialization") version "0" 14 id("org.jetbrains.kotlin.kapt") version "0" 15 16 id("maven-publish") 17 } 18 <lambda>null19repositories { 20 mavenCentral() 21 maven("https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/dev") 22 mavenLocal { 23 mavenContent { 24 snapshotsOnly() 25 } 26 } 27 } 28 29 group = "com.example" 30 version = "0.0.1" 31 <lambda>null32kotlin { 33 // Switching module kind for JS is required to run tests 34 js { 35 nodejs {} 36 compilations.matching { it.name == "main" || it.name == "test" }.configureEach { 37 kotlinOptions { 38 sourceMap = true 39 moduleKind = "umd" 40 } 41 } 42 } 43 wasmJs { 44 nodejs() 45 } 46 wasmWasi { 47 nodejs() 48 } 49 jvm { 50 withJava() 51 } 52 macosX64() 53 macosArm64() 54 linuxX64() 55 mingwX64() 56 57 sourceSets { 58 all { 59 languageSettings { 60 optIn("kotlinx.serialization.ExperimentalSerializationApi") 61 } 62 } 63 64 commonMain { 65 dependencies { 66 implementation(kotlin("stdlib")) 67 implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") 68 implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$serialization_version") 69 // To check that all expected artifacts are resolvable: 70 implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-io:$serialization_version") 71 implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-okio:$serialization_version") 72 implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$serialization_version") 73 implementation("org.jetbrains.kotlinx:kotlinx-serialization-cbor:$serialization_version") 74 } 75 } 76 commonTest { 77 dependencies { 78 implementation(kotlin("test-common")) 79 implementation(kotlin("test-annotations-common")) 80 } 81 } 82 jvmMain { 83 dependencies { 84 implementation(kotlin("stdlib-jdk8")) 85 implementation("com.google.dagger:dagger:2.13") 86 implementation("org.jetbrains.kotlinx:kotlinx-serialization-hocon:$serialization_version") 87 } 88 } 89 jvmTest { 90 dependencies { 91 implementation(kotlin("test")) 92 implementation(kotlin("test-junit")) 93 } 94 } 95 jsMain { 96 dependencies { 97 implementation(kotlin("stdlib-js")) 98 99 } 100 } 101 jsTest { 102 dependencies { 103 implementation(kotlin("test-js")) 104 } 105 } 106 named("wasmJsMain") { 107 dependencies { 108 api("org.jetbrains.kotlin:kotlin-stdlib-wasm-js") 109 } 110 } 111 named("wasmJsTest") { 112 dependencies { 113 api("org.jetbrains.kotlin:kotlin-test-wasm-js") 114 } 115 } 116 named("wasmWasiMain") { 117 dependencies { 118 api("org.jetbrains.kotlin:kotlin-stdlib-wasm-wasi") 119 } 120 } 121 named("wasmWasiTest") { 122 dependencies { 123 api("org.jetbrains.kotlin:kotlin-test-wasm-wasi") 124 } 125 } 126 } 127 128 targets.all { 129 compilations.all { 130 kotlinOptions { 131 freeCompilerArgs += "-Xexpect-actual-classes" 132 } 133 } 134 compilations["main"].kotlinOptions { 135 allWarningsAsErrors = true 136 // Suppress 'K2 kapt is an experimental feature' warning: 137 freeCompilerArgs += "-Xsuppress-version-warnings" 138 } 139 } 140 141 // setup tests running in RELEASE mode 142 targets.withType<KotlinNativeTarget>().configureEach { 143 binaries.test(listOf(NativeBuildType.RELEASE)) 144 } 145 targets.withType<KotlinNativeTargetWithTests<*>>().configureEach { 146 testRuns.create("releaseTest") { 147 setExecutionSourceFrom(binaries.getTest(NativeBuildType.RELEASE)) 148 } 149 } 150 } 151 <lambda>null152dependencies { 153 "kapt"("com.google.dagger:dagger-compiler:2.13") 154 } 155 <lambda>null156tasks.withType<KotlinNpmInstallTask>().configureEach { 157 args.add("--ignore-engines") 158 } 159