@@ -15,29 +15,87 @@ version = "0.1.0"
1515
1616kotlin {
1717 sourceSets {
18+ val commonMain = getByName(" commonMain" )
1819 commonMain.dependencies {
1920 implementation(project(" :acidify-core" ))
2021 implementation(libs.kotlinx.datetime)
2122 implementation(libs.bundles.ktor.client)
2223 implementation(libs.bundles.ktor.server)
2324 implementation(libs.ktor.serialization.kotlinx.json)
2425 implementation(libs.milky.types)
25- implementation(libs.acidify.codec)
2626 implementation(libs.qr.matrix)
27- implementation(libs.mordant)
2827 }
29- jvmMain.dependencies {
30- implementation(libs.ktor.client.cio)
31- implementation(libs.logback.classic)
28+
29+ val codecMain by creating {
30+ dependsOn(commonMain)
31+
32+ dependencies {
33+ implementation(libs.acidify.codec)
34+ }
35+ }
36+
37+ val nativeMain = if (
38+ findByName(" androidNativeArm64Main" ) != null ||
39+ findByName(" linuxX64Main" ) != null ||
40+ findByName(" linuxArm64Main" ) != null ||
41+ findByName(" macosArm64Main" ) != null ||
42+ findByName(" mingwX64Main" ) != null
43+ ) {
44+ maybeCreate(" nativeMain" ).apply {
45+ dependsOn(commonMain)
46+ }
47+ } else {
48+ null
49+ }
50+
51+ findByName(" jvmMain" )?.apply {
52+ dependsOn(codecMain)
53+
54+ dependencies {
55+ implementation(libs.ktor.client.cio)
56+ implementation(libs.logback.classic)
57+ }
3258 }
33- mingwMain.dependencies {
34- implementation(libs.ktor.client.winhttp)
59+
60+ if (findByName(" mingwX64Main" ) != null ) {
61+ val mingwMain = maybeCreate(" mingwMain" )
62+ nativeMain?.let { mingwMain.dependsOn(it) }
63+ mingwMain.dependsOn(codecMain)
64+ mingwMain.dependencies {
65+ implementation(libs.ktor.client.winhttp)
66+ }
67+ findByName(" mingwX64Main" )?.dependsOn(mingwMain)
68+ }
69+
70+ if (findByName(" macosArm64Main" ) != null ) {
71+ val appleMain = maybeCreate(" appleMain" )
72+ nativeMain?.let { appleMain.dependsOn(it) }
73+ appleMain.dependsOn(codecMain)
74+ appleMain.dependencies {
75+ implementation(libs.ktor.client.darwin)
76+ }
77+ findByName(" macosArm64Main" )?.dependsOn(appleMain)
3578 }
36- appleMain.dependencies {
37- implementation(libs.ktor.client.darwin)
79+
80+ if (findByName(" linuxX64Main" ) != null || findByName(" linuxArm64Main" ) != null ) {
81+ val linuxMain = maybeCreate(" linuxMain" )
82+ nativeMain?.let { linuxMain.dependsOn(it) }
83+ linuxMain.dependsOn(codecMain)
84+ linuxMain.dependencies {
85+ implementation(libs.ktor.client.curl)
86+ }
87+ findByName(" linuxX64Main" )?.dependsOn(linuxMain)
88+ findByName(" linuxArm64Main" )?.dependsOn(linuxMain)
3889 }
39- linuxMain.dependencies {
40- implementation(libs.ktor.client.curl)
90+
91+ if (findByName(" androidNativeArm64Main" ) != null ) {
92+ val androidNativeMain = maybeCreate(" androidNativeMain" )
93+ nativeMain?.let { androidNativeMain.dependsOn(it) } ? : androidNativeMain.dependsOn(commonMain)
94+ androidNativeMain.dependencies {
95+ implementation(libs.ktor.client.cio)
96+ implementation(libs.acidify.codec.androidnativearm64)
97+ }
98+ findByName(" androidNativeArm64Main" )?.dependsOn(androidNativeMain)
4199 }
42100 }
43101
@@ -49,14 +107,16 @@ kotlin {
49107 }
50108 }
51109
52- mingwX64 {
53- binaries.all {
54- linkerOpts(
55- " -Wl,-Bstatic" ,
56- " -lstdc++" ,
57- " -lgcc" ,
58- " -Wl,-Bdynamic" ,
59- )
110+ targets.withType<KotlinNativeTarget >().configureEach {
111+ if (name == " mingwX64" ) {
112+ binaries.all {
113+ linkerOpts(
114+ " -Wl,-Bstatic" ,
115+ " -lstdc++" ,
116+ " -lgcc" ,
117+ " -Wl,-Bdynamic" ,
118+ )
119+ }
60120 }
61121 }
62122}
0 commit comments