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