1/* 2 * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3 */ 4buildscript { 5 ext.serialization_version = mainLibVersion 6 7 repositories { 8 mavenCentral() 9 maven { url "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/dev" } 10 mavenLocal() { 11 mavenContent { 12 snapshotsOnly() 13 } 14 } 15 } 16} 17 18// Versions substituted in settings.gradle 19plugins { 20 id 'org.jetbrains.kotlin.multiplatform' version '0' 21 id 'org.jetbrains.kotlin.plugin.serialization' version '0' 22 id 'org.jetbrains.kotlin.kapt' version '0' 23} 24 25repositories { 26 mavenCentral() 27 maven { url "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/dev" } 28 mavenLocal() { 29 mavenContent { 30 snapshotsOnly() 31 } 32 } 33} 34 35group 'com.example' 36version '0.0.1' 37 38apply plugin: 'maven-publish' 39 40kotlin { 41 // Switching module kind for JS is required to run tests 42 js { 43 nodejs {} 44 configure([compilations.main, compilations.test]) { 45 kotlinOptions { 46 sourceMap = true 47 moduleKind = "umd" 48 } 49 } 50 } 51 wasmJs { 52 nodejs() 53 } 54 wasmWasi { 55 nodejs() 56 } 57 jvm { 58 withJava() 59 } 60 macosX64() 61 macosArm64() 62 linuxX64() 63 mingwX64() 64 65 sourceSets { 66 all { 67 languageSettings { 68 optIn('kotlinx.serialization.ExperimentalSerializationApi') 69 } 70 } 71 72 commonMain { 73 dependencies { 74 implementation kotlin('stdlib') 75 implementation "org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version" 76 implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$serialization_version" 77 implementation "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$serialization_version" 78 implementation "org.jetbrains.kotlinx:kotlinx-serialization-cbor:$serialization_version" 79 } 80 } 81 commonTest { 82 dependencies { 83 implementation kotlin('test-common') 84 implementation kotlin('test-annotations-common') 85 } 86 } 87 jvmMain { 88 dependencies { 89 implementation kotlin('stdlib-jdk8') 90 implementation 'com.google.dagger:dagger:2.13' 91 } 92 } 93 jvmTest { 94 dependencies { 95 implementation kotlin('test') 96 implementation kotlin('test-junit') 97 } 98 } 99 jsMain { 100 dependencies { 101 implementation kotlin('stdlib-js') 102 103 } 104 } 105 jsTest { 106 dependencies { 107 implementation kotlin('test-js') 108 } 109 } 110 wasmJsMain { 111 dependencies { 112 api 'org.jetbrains.kotlin:kotlin-stdlib-wasm-js' 113 } 114 } 115 wasmJsTest { 116 dependencies { 117 api 'org.jetbrains.kotlin:kotlin-test-wasm-js' 118 } 119 } 120 wasmWasiMain { 121 dependencies { 122 api 'org.jetbrains.kotlin:kotlin-stdlib-wasm-wasi' 123 } 124 } 125 wasmWasiTest { 126 dependencies { 127 api 'org.jetbrains.kotlin:kotlin-test-wasm-wasi' 128 } 129 } 130 } 131 132 targets.all { 133 compilations.all { 134 kotlinOptions { 135 freeCompilerArgs += "-Xexpect-actual-classes" 136 } 137 } 138 compilations.main { 139 kotlinOptions { 140 allWarningsAsErrors = true 141 } 142 } 143 } 144} 145 146dependencies { 147 kapt 'com.google.dagger:dagger-compiler:2.13' 148} 149 150task run dependsOn "check" 151 152rootProject.extensions.findByType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension.class).with { 153 // canary nodejs that supports recent Wasm GC changes 154 it.nodeVersion = "21.0.0-v8-canary202309167e82ab1fa2" 155 it.nodeDownloadBaseUrl = "https://nodejs.org/download/v8-canary" 156} 157 158tasks.withType(org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask).configureEach { 159 args.add("--ignore-engines") 160} 161