generated from touchlab/KaMPKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle.kts
120 lines (103 loc) · 3.38 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
kotlin("multiplatform")
kotlin("native.cocoapods")
id("kotlinx-serialization")
id("com.android.library")
id("com.squareup.sqldelight")
}
android {
compileSdk = libs.versions.compileSdk.get().toInt()
defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
targetSdk = libs.versions.targetSdk.get().toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
lint {
isWarningsAsErrors = true
isAbortOnError = true
}
}
version = "1.0"
android {
configurations {
create("androidTestApi")
create("androidTestDebugApi")
create("androidTestReleaseApi")
create("testApi")
create("testDebugApi")
create("testReleaseApi")
}
}
kotlin {
android()
// Revert to just ios() when gradle plugin can properly resolve it
val onPhone = System.getenv("SDK_NAME")?.startsWith("iphoneos") ?: false
if (onPhone) {
iosArm64("ios")
} else {
iosX64("ios")
}
version = "1.1"
sourceSets {
all {
languageSettings.apply {
useExperimentalAnnotation("kotlin.RequiresOptIn")
useExperimentalAnnotation("kotlinx.coroutines.ExperimentalCoroutinesApi")
}
}
}
sourceSets["commonMain"].dependencies {
implementation(libs.koin.core)
implementation(libs.coroutines.core)
implementation(libs.sqlDelight.coroutinesExt)
implementation(libs.bundles.ktor.common)
implementation(libs.touchlab.stately)
implementation(libs.multiplatformSettings.common)
implementation(libs.kotlinx.dateTime)
api(libs.touchlab.kermit)
}
sourceSets["commonTest"].dependencies {
implementation(libs.bundles.shared.commonTest)
}
sourceSets.matching { it.name.endsWith("Test") }
.configureEach {
languageSettings.useExperimentalAnnotation("kotlin.time.ExperimentalTime")
}
sourceSets["androidMain"].dependencies {
implementation(libs.sqlDelight.android)
implementation(libs.ktor.client.okHttp)
}
sourceSets["androidTest"].dependencies {
implementation(libs.bundles.shared.androidTest)
}
sourceSets["iosMain"].dependencies {
implementation(libs.sqlDelight.native)
implementation(libs.ktor.client.ios)
implementation(libs.coroutines.core)
val coroutineCore = libs.coroutines.core.get()
implementation("${coroutineCore.module.group}:${coroutineCore.module.name}:${coroutineCore.versionConstraint.displayName}") {
version {
strictly(libs.versions.coroutines.native.get())
}
}
}
cocoapods {
summary = "Common library for the KaMP starter kit"
homepage = "https://github.com/touchlab/KaMPKit"
}
// Configure the framework which is generated internally by cocoapods plugin
targets.withType<KotlinNativeTarget> {
binaries.withType<Framework> {
isStatic = false // SwiftUI preview requires dynamic framework
export(libs.touchlab.kermit)
transitiveExport = true
}
}
}
sqldelight {
database("KaMPKitDb") {
packageName = "co.touchlab.kampkit.db"
}
}