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