plugins { id 'org.jetbrains.kotlin.multiplatform' id 'org.jetbrains.kotlin.plugin.serialization' id 'com.android.library' id 'maven-publish' id "com.google.devtools.ksp" version "$version_kotlin-$version_ksp" } group rootProject.group version rootProject.version sourceCompatibility = '1.8' targetCompatibility = '1.8' group rootProject.group version rootProject.version android { compileSdkVersion rootProject.ext.version_android_compile_sdk sourceSets.main.manifest.srcFile('src/androidMain/AndroidManifest.xml') defaultConfig { minSdkVersion 21 targetSdkVersion rootProject.ext.version_android_target_sdk testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } sourceSets { androidTest.assets.srcDirs += files("$projectDir/schemas".toString()) } compileOptions { sourceCompatibility = '1.8' targetCompatibility = '1.8' } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions { jvmTarget = "1.8" } } buildTypes { release { consumerProguardFiles 'proguard-rules.pro' } } namespace 'com.ustadmobile.core.db' } kotlin { android { } jvm { compilations.main.kotlinOptions { // Setup the Kotlin compiler options for the 'main' compilation: jvmTarget = "$version_kotlin_jvmTarget" } compilations.test.kotlinOptions { // Setup the Kotlin compiler options for the 'main' compilation: jvmTarget = "$version_kotlin_jvmTarget" } } js(LEGACY) { browser { testTask { useKarma { useChromeHeadless() //change to useChrome to run the actual browser webpackConfig.cssSupport.enabled = true } } } } sourceSets { commonMain { dependencies { implementation kotlin('stdlib-common') implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$version_kotlinx_serialization" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version_coroutines" implementation project(":lib-util") implementation "io.ktor:ktor-client-core:$version_ktor" implementation "com.github.UstadMobile.door:door-runtime:$version_door" implementation "io.github.aakira:napier:$version_napier" implementation "org.kodein.di:kodein-di:$version_kodein_di" compileOnly "com.github.UstadMobile.door:door-annotations:$version_door" } } commonJvmMain { dependsOn commonMain } androidMain { dependsOn commonJvmMain dependencies { implementation "androidx.room:room-runtime:$version_android_room" implementation "androidx.room:room-ktx:$version_android_room" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$version_androidx_lifecycle" implementation "androidx.paging:paging-runtime:$version_androidx_paging" implementation "com.google.code.gson:gson:$version_gson" implementation "org.nanohttpd:nanohttpd:$version_nanohttpd" implementation "org.nanohttpd:nanohttpd-nanolets:$version_nanohttpd" } } androidTest { dependencies { implementation "androidx.room:room-testing:$version_android_room" implementation "androidx.test:runner:$version_android_junit_runner" implementation "junit:junit:$version_junit" } } jvmMain { dependsOn commonJvmMain kotlin.srcDir("build/generated/ksp/jvm/jvmMain/kotlin") dependencies { implementation "io.ktor:ktor-server-core:$version_ktor" implementation "org.kodein.di:kodein-di-framework-ktor-server-jvm:$version_kodein_di" implementation "com.google.code.gson:gson:$version_gson" } } jsMain { kotlin.srcDir("build/generated/ksp/js/jsMain/kotlin") } } } // workaround for https://youtrack.jetbrains.com/issue/KT-27170 configurations { compileClasspath } ksp { arg("doordb_postgres_url", rootProject.ext.buildConfigProperties.getProperty("door.postgresUrl", "")) arg("doordb_postgres_user", rootProject.ext.buildConfigProperties.getProperty("door.postgresUser", "")) arg("doordb_postgres_password", rootProject.ext.buildConfigProperties.getProperty("door.postgresPass", "")) arg("room.schemaLocation", "$projectDir/schemas") } dependencies { kspJvm "com.github.UstadMobile.door:door-compiler:$version_door" kspJs "com.github.UstadMobile.door:door-compiler:$version_door" kspAndroid "com.github.UstadMobile.door:door-compiler:$version_door" kspAndroid "androidx.room:room-compiler:$version_android_room" } publishing { publications { maven(MavenPublication) { groupId rootProject.group artifactId project.name version rootProject.version } } repositories { maven { url rootProject.ext.buildConfigProperties['repo.dir'] } } }