plugins { id 'com.android.library' id 'org.jetbrains.kotlin.multiplatform' id 'kotlinx-atomicfu' id 'org.jetbrains.kotlin.plugin.serialization' id 'maven-publish' } group rootProject.group version rootProject.version repositories { mavenCentral() } android { compileSdk rootProject.ext.version_android_compile_sdk sourceSets.main.manifest.srcFile('src/androidMain/AndroidManifest.xml') defaultConfig { minSdkVersion 21 targetSdkVersion rootProject.ext.version_android_target_sdk } //As per https://developer.android.com/build/jdks compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } buildTypes { release { consumerProguardFiles 'proguard-rules.pro' } } namespace 'com.ustadmobile.door.runtime' } kotlin { //This is essential: if this is removed, then expect/actual typealias resolution breaks on Android compilation. androidTarget { publishLibraryVariants("release", "debug") } //As per https://developer.android.com/build/jdks#toolchain jvmToolchain { languageVersion.set(JavaLanguageVersion.of(17)) } jvm { compilations.all { kotlinOptions.jvmTarget = JavaVersion.VERSION_17 } testRuns["test"].executionTask.configure { useJUnit() } } js(IR) { browser { testTask { useKarma { useChromeHeadless() /* This is not supported from Kotlin 1.8 * webpackConfig.cssSupport.enabled = true */ } } } } /* Targets configuration omitted. * To find out how to configure the targets, please follow the link: * https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#setting-up-targets */ sourceSets { commonMain { dependencies { api libs.paging.multiplatform.common implementation project(":room-annotations") implementation kotlin("stdlib-common") implementation libs.ktor.client.core implementation libs.ktor.client.json implementation libs.napier implementation libs.kotlinx.serialization.json implementation libs.kodein.di implementation libs.kotlinx.atomicfu implementation libs.kotlinx.coroutines.core } } commonTest { dependencies { implementation kotlin("test-common") implementation kotlin("test-annotations-common") } } roomAnnotations { } commonJvmMain { dependsOn commonMain dependencies { implementation libs.okhttp implementation libs.okhttp.sse compileOnly libs.nanohttpd compileOnly libs.nanohttpd.nanolets } } androidMain { dependsOn commonJvmMain dependencies { implementation project(":room-annotations") implementation libs.androidx.room.runtime implementation libs.androidx.room.ktx implementation libs.androidx.paging.runtime implementation libs.androidx.core.ktx implementation libs.okhttp implementation libs.okhttp.sse } } commonJvmJs { dependsOn commonMain dependencies { implementation kotlin("stdlib-common") } } jvmMain { dependsOn roomAnnotations dependsOn commonJvmMain dependsOn commonJvmJs dependencies { implementation libs.kodein.di.framework.ktor.server implementation libs.sqlite.jdbc compileOnly libs.postgres.jdbc implementation libs.ktor.server.core implementation libs.okhttp implementation libs.okhttp.sse implementation libs.kotlin.reflect implementation libs.hikaricp } } jvmTest { dependencies { implementation kotlin("test-junit") implementation libs.mockito.kotlin implementation libs.sqlite.jdbc implementation libs.mockwebserver implementation libs.ktor.server implementation libs.ktor.client.core implementation libs.ktor.server.core implementation libs.ktor.server.netty implementation libs.ktor.server.content.negotiation implementation libs.ktor.client.content.negotiation implementation libs.ktor.serialization.kotlinx.json implementation libs.ktor.serialization.gson implementation libs.ktor.client.okhttp implementation libs.ktor.client.gson implementation libs.ktor.server.test.host implementation libs.turbine } } jsMain { dependsOn roomAnnotations dependsOn commonJvmJs dependencies { implementation libs.kotlin.wrappers.kotlin.extensions } } jsTest { dependencies { implementation kotlin("test-js") } } } }