Raccoon/core/persistence/build.gradle.kts

124 lines
3.4 KiB
Plaintext

import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.library)
alias(libs.plugins.sqldelight)
alias(libs.plugins.jetbrains.compose)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.kotlinx.serialization)
alias(libs.plugins.kotlinx.kover)
alias(libs.plugins.ksp)
}
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class)
kotlin {
applyDefaultHierarchyTemplate()
androidTarget {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
}
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64(),
).forEach {
it.binaries.framework {
baseName = "core.persistence"
isStatic = true
}
}
compilerOptions {
freeCompilerArgs.add("-Xexpect-actual-classes")
}
sourceSets {
val androidMain by getting {
dependencies {
implementation(libs.sqlcipher)
implementation(libs.sqldelight.android)
}
}
val iosMain by getting {
dependencies {
implementation(libs.sqldelight.native)
}
}
val commonMain by getting {
dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material)
implementation(compose.materialIconsExtended)
implementation(libs.kotlinx.coroutines)
implementation(libs.kotlinx.serialization.json)
implementation(libs.koin.core)
api(libs.koin.annotations)
implementation(projects.core.appearance)
implementation(projects.core.l10n)
implementation(projects.core.preferences)
implementation(projects.core.utils)
}
}
val androidUnitTest by getting {
dependencies {
implementation(libs.kotlinx.coroutines.test)
implementation(kotlin("test-junit"))
implementation(libs.mockk)
implementation(projects.core.testutils)
}
}
}
}
dependencies {
add("kspCommonMainMetadata", libs.koin.ksp)
add("kspAndroid", libs.koin.ksp)
add("kspIosX64", libs.koin.ksp)
add("kspIosArm64", libs.koin.ksp)
add("kspIosSimulatorArm64", libs.koin.ksp)
}
android {
namespace = "com.livefast.eattrash.raccoonforlemmy.core.persistence"
compileSdk =
libs.versions.android.compileSdk
.get()
.toInt()
defaultConfig {
minSdk =
libs.versions.android.minSdk
.get()
.toInt()
}
}
sqldelight {
databases {
create("AppDatabase") {
packageName.set("com.livefast.eattrash.raccoonforlemmy.core.persistence.entities")
srcDirs.setFrom("src/commonMain/sqldelight")
}
}
linkSqlite = true
}
ksp {
arg("KOIN_DEFAULT_MODULE", "false")
}
kotlin.sourceSets.commonMain {
kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin")
}
tasks.withType(KotlinCompilationTask::class.java).configureEach {
if (name != "kspCommonMainKotlinMetadata") {
dependsOn("kspCommonMainKotlinMetadata")
}
}