1
+ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
2
+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
3
+ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree
4
+ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
5
+ import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
6
+ import org.jetbrains.kotlin.konan.target.HostManager
7
+ import kotlin.collections.plusAssign
8
+
9
+ plugins {
10
+ alias(libs.plugins.kotlin.multiplatform)
11
+ alias(libs.plugins.kotlinx.serialization)
12
+ alias(libs.plugins.android.library)
13
+ alias(libs.plugins.ksp)
14
+ }
15
+
16
+ version = " 1.0"
17
+
18
+ @OptIn(ExperimentalKotlinGradlePluginApi ::class )
19
+ kotlin {
20
+ jvmToolchain(21 )
21
+ androidTarget {
22
+ publishLibraryVariants(" release" )
23
+ instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree .test)
24
+ }
25
+
26
+ jvm {
27
+ compilerOptions.jvmTarget.set(JvmTarget .JVM_11 )
28
+ }
29
+
30
+ listOf (
31
+ iosX64(),
32
+ iosArm64(),
33
+ iosSimulatorArm64(),
34
+
35
+ macosX64(),
36
+ macosArm64(),
37
+
38
+ watchosArm32(),
39
+ watchosArm64(),
40
+ watchosX64(),
41
+ watchosSimulatorArm64(),
42
+ watchosDeviceArm64(),
43
+
44
+ tvosArm64(),
45
+ tvosX64(),
46
+ tvosSimulatorArm64(),
47
+
48
+ linuxX64(),
49
+ linuxArm64(),
50
+
51
+ mingwX64(),
52
+ ).forEach {
53
+ it.setupNativeConfig()
54
+ }
55
+
56
+ compilerOptions {
57
+ freeCompilerArgs.add(" -Xexpect-actual-classes" )
58
+ }
59
+
60
+ sourceSets {
61
+ all {
62
+ languageSettings.optIn(" kotlin.RequiresOptIn" )
63
+ }
64
+ commonMain {
65
+ kotlin.srcDir(" build/generated/ksp/metadata/commonMain/kotlin" )
66
+ dependencies {
67
+ implementation(project(" :sqllin-dsl" ))
68
+ implementation(libs.kotlinx.serialization)
69
+ implementation(libs.kotlinx.coroutines)
70
+ }
71
+ }
72
+ commonTest.dependencies {
73
+ implementation(kotlin(" test" ))
74
+ }
75
+ androidInstrumentedTest {
76
+ dependencies {
77
+ implementation(libs.androidx.test.core)
78
+ implementation(libs.androidx.test.runner)
79
+ implementation(libs.androidx.test.rules)
80
+ }
81
+ }
82
+ }
83
+ }
84
+
85
+ android {
86
+ namespace = " com.ctrip.sqllin.dsl.test"
87
+ compileSdk = 35
88
+ defaultConfig {
89
+ minSdk = 23
90
+ testInstrumentationRunner = " androidx.test.runner.AndroidJUnitRunner"
91
+ }
92
+ compileOptions {
93
+ isCoreLibraryDesugaringEnabled = true
94
+ }
95
+ }
96
+
97
+ fun KotlinNativeTarget.setupNativeConfig () {
98
+ binaries {
99
+ all {
100
+ linkerOpts + = when {
101
+ HostManager .hostIsLinux -> listOf (" -lsqlite3" , " -L$rootDir /libs/linux" , " -L/usr/lib/x86_64-linux-gnu" , " -L/usr/lib" , " -L/usr/lib64" )
102
+ HostManager .hostIsMingw -> listOf (" -Lc:\\ msys64\\ mingw64\\ lib" , " -L$rootDir \\ libs\\ windows" , " -lsqlite3" )
103
+ else -> listOf (" -lsqlite3" )
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ dependencies {
110
+ coreLibraryDesugaring(libs.desugar.jdk.libs)
111
+ add(" kspCommonMainMetadata" , project(" :sqllin-processor" ))
112
+ }
113
+
114
+ afterEvaluate { // WORKAROUND: both register() and named() fail – https://github.com/gradle/gradle/issues/9331
115
+ tasks {
116
+ withType<KotlinCompilationTask <* >> {
117
+ if (name != " kspCommonMainKotlinMetadata" )
118
+ dependsOn(" kspCommonMainKotlinMetadata" )
119
+ }
120
+ }
121
+ }
0 commit comments