Skip to content

Commit 93df75c

Browse files
authored
Merge pull request #220 from pauldavies83/add_ios_native_targets
➕ Add iosSimulatorArm64 target, introduced in KMM 1.5.30
2 parents fa7a118 + f340a86 commit 93df75c

File tree

15 files changed

+121
-95
lines changed

15 files changed

+121
-95
lines changed

build.gradle.kts

+3-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
21
import org.apache.tools.ant.taskdefs.condition.Os
32
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
43
import org.gradle.api.tasks.testing.logging.TestLogEvent
@@ -26,15 +25,6 @@ buildscript {
2625
val targetSdkVersion by extra(30)
2726
val minSdkVersion by extra(16)
2827

29-
// TODO: Hierarchical project structures are not fully supported in IDEA, enable only for a regular built (https://youtrack.jetbrains.com/issue/KT-35011)
30-
// add idea.active=true for local development
31-
val _ideaActive = gradleLocalProperties(rootDir)["idea.active"] == "true"
32-
33-
//if (!_ideaActive) {
34-
// ext["kotlin.mpp.enableGranularSourceSetsMetadata"] = "true"
35-
// ext["kotlin.native.enableDependencyPropagation"] = "false"
36-
//}
37-
3828
tasks {
3929
val updateVersions by registering {
4030
dependsOn(
@@ -51,8 +41,6 @@ tasks {
5141

5242
subprojects {
5343

54-
val ideaActive by extra(_ideaActive)
55-
5644
group = "dev.gitlive"
5745

5846
apply(plugin="com.adarshr.test-logger")
@@ -207,12 +195,12 @@ subprojects {
207195
}
208196

209197
dependencies {
210-
"commonMainImplementation"("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1")
211-
"androidMainImplementation"("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.5.1")
198+
"commonMainImplementation"("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")
199+
"androidMainImplementation"("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.5.2")
212200
"androidMainImplementation"(platform("com.google.firebase:firebase-bom:28.4.0"))
213201
"commonTestImplementation"(kotlin("test-common"))
214202
"commonTestImplementation"(kotlin("test-annotations-common"))
215-
"commonTestImplementation"("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1")
203+
"commonTestImplementation"("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")
216204
"jsTestImplementation"(kotlin("test-js"))
217205
"androidAndroidTestImplementation"(kotlin("test-junit"))
218206
"androidAndroidTestImplementation"("junit:junit:4.13.2")

firebase-app/build.gradle.kts

+16-8
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ android {
4444
}
4545
}
4646

47+
val KonanTarget.archVariant: String
48+
get() = if (this is KonanTarget.IOS_X64 || this is KonanTarget.IOS_SIMULATOR_ARM64) {
49+
"ios-arm64_i386_x86_64-simulator"
50+
} else {
51+
"ios-arm64_armv7"
52+
}
53+
4754
kotlin {
4855

4956
android {
@@ -65,9 +72,7 @@ kotlin {
6572
"nanopb",
6673
"PromisesObjC"
6774
).map {
68-
val archVariant = if (konanTarget is KonanTarget.IOS_X64) "ios-arm64_i386_x86_64-simulator" else "ios-arm64_armv7"
69-
70-
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/$archVariant")
75+
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/${konanTarget.archVariant}")
7176
}
7277
)
7378

@@ -86,11 +91,8 @@ kotlin {
8691
}
8792
}
8893

89-
if (project.extra["ideaActive"] as Boolean) {
90-
iosX64("ios", nativeTargetConfig())
91-
} else {
92-
ios(configure = nativeTargetConfig())
93-
}
94+
ios(configure = nativeTargetConfig())
95+
iosSimulatorArm64(configure = nativeTargetConfig())
9496

9597
js {
9698
useCommonJs()
@@ -132,6 +134,12 @@ kotlin {
132134
}
133135

134136
val iosMain by getting
137+
val iosSimulatorArm64Main by getting
138+
iosSimulatorArm64Main.dependsOn(iosMain)
139+
140+
val iosTest by sourceSets.getting
141+
val iosSimulatorArm64Test by sourceSets.getting
142+
iosSimulatorArm64Test.dependsOn(iosTest)
135143

136144
val jsMain by getting
137145
}

firebase-app/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@
2626
"@gitlive/firebase-common": "1.4.2",
2727
"firebase": "8.10.0",
2828
"kotlin": "1.5.30",
29-
"kotlinx-coroutines-core": "1.5.1"
29+
"kotlinx-coroutines-core": "1.5.2"
3030
}
3131
}

firebase-auth/build.gradle.kts

+17-11
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ android {
6767
// logEmulatorOutput(false)
6868
//}
6969

70+
val KonanTarget.archVariant: String
71+
get() = if (this is KonanTarget.IOS_X64 || this is KonanTarget.IOS_SIMULATOR_ARM64) {
72+
"ios-arm64_i386_x86_64-simulator"
73+
} else {
74+
"ios-arm64_armv7"
75+
}
76+
7077
kotlin {
7178

7279
android {
@@ -88,18 +95,14 @@ kotlin {
8895
"nanopb",
8996
"PromisesObjC"
9097
).map {
91-
val archVariant = if (konanTarget is KonanTarget.IOS_X64) "ios-arm64_i386_x86_64-simulator" else "ios-arm64_armv7"
92-
93-
rootProject.project("firebase-app").projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/$archVariant")
98+
rootProject.project("firebase-app").projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/${konanTarget.archVariant}")
9499
}
95100
).plus(
96101
listOf(
97102
"FirebaseAuth",
98103
"GTMSessionFetcher"
99104
).map {
100-
val archVariant = if (konanTarget is KonanTarget.IOS_X64) "ios-arm64_i386_x86_64-simulator" else "ios-arm64_armv7"
101-
102-
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/$archVariant")
105+
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/${konanTarget.archVariant}")
103106
}
104107
)
105108

@@ -118,11 +121,8 @@ kotlin {
118121
}
119122
}
120123

121-
if (project.extra["ideaActive"] as Boolean) {
122-
iosX64("ios", nativeTargetConfig())
123-
} else {
124-
ios(configure = nativeTargetConfig())
125-
}
124+
ios(configure = nativeTargetConfig())
125+
iosSimulatorArm64(configure = nativeTargetConfig())
126126

127127
js {
128128
useCommonJs()
@@ -166,6 +166,12 @@ kotlin {
166166
}
167167

168168
val iosMain by getting
169+
val iosSimulatorArm64Main by getting
170+
iosSimulatorArm64Main.dependsOn(iosMain)
171+
172+
val iosTest by sourceSets.getting
173+
val iosSimulatorArm64Test by sourceSets.getting
174+
iosSimulatorArm64Test.dependsOn(iosTest)
169175

170176
val jsMain by getting
171177
}

firebase-auth/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@
2626
"@gitlive/firebase-app": "1.4.2",
2727
"firebase": "8.10.0",
2828
"kotlin": "1.5.30",
29-
"kotlinx-coroutines-core": "1.5.1"
29+
"kotlinx-coroutines-core": "1.5.2"
3030
}
3131
}

firebase-common/build.gradle.kts

+9-10
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,8 @@ kotlin {
4646
publishAllLibraryVariants()
4747
}
4848

49-
fun nativeTargetConfig(): KotlinNativeTarget.() -> Unit = {
50-
51-
}
52-
53-
if (project.extra["ideaActive"] as Boolean) {
54-
iosX64("ios", nativeTargetConfig())
55-
} else {
56-
ios(configure = nativeTargetConfig())
57-
}
49+
ios()
50+
iosSimulatorArm64()
5851

5952
js {
6053
useCommonJs()
@@ -89,7 +82,7 @@ kotlin {
8982

9083
val commonMain by getting {
9184
dependencies {
92-
api("org.jetbrains.kotlinx:kotlinx-serialization-core:1.2.2")
85+
api("org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.0-RC")
9386
}
9487
}
9588

@@ -100,6 +93,12 @@ kotlin {
10093
}
10194

10295
val iosMain by getting
96+
val iosSimulatorArm64Main by getting
97+
iosSimulatorArm64Main.dependsOn(iosMain)
98+
99+
val iosTest by sourceSets.getting
100+
val iosSimulatorArm64Test by sourceSets.getting
101+
iosSimulatorArm64Test.dependsOn(iosTest)
103102

104103
val jsMain by getting {
105104
dependencies {

firebase-common/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"dependencies": {
2626
"firebase": "8.10.0",
2727
"kotlin": "1.5.30",
28-
"kotlinx-coroutines-core": "1.5.1",
28+
"kotlinx-coroutines-core": "1.5.2",
2929
"kotlinx-serialization-kotlinx-serialization-runtime": "1.2.2"
3030
}
3131
}

firebase-config/build.gradle.kts

+18-11
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
6+
import org.jetbrains.kotlin.konan.target.KonanTarget
67

78
version = project.property("firebase-config.version") as String
89

@@ -55,6 +56,13 @@ android {
5556
// logEmulatorOutput(false)
5657
//}
5758

59+
val KonanTarget.archVariant: String
60+
get() = if (this is KonanTarget.IOS_X64 || this is KonanTarget.IOS_SIMULATOR_ARM64) {
61+
"ios-arm64_i386_x86_64-simulator"
62+
} else {
63+
"ios-arm64_armv7"
64+
}
65+
5866
kotlin {
5967

6068
android {
@@ -73,17 +81,13 @@ kotlin {
7381
"PromisesObjC",
7482
"nanopb"
7583
).map {
76-
val archVariant =
77-
if (konanTarget is org.jetbrains.kotlin.konan.target.KonanTarget.IOS_X64) "ios-arm64_i386_x86_64-simulator" else "ios-arm64_armv7"
78-
rootProject.project("firebase-app").projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/$archVariant")
84+
rootProject.project("firebase-app").projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/${konanTarget.archVariant}")
7985
}.plus(
8086
listOf(
8187
"FirebaseABTesting",
8288
"FirebaseRemoteConfig"
8389
).map {
84-
val archVariant =
85-
if (konanTarget is org.jetbrains.kotlin.konan.target.KonanTarget.IOS_X64) "ios-arm64_i386_x86_64-simulator" else "ios-arm64_armv7"
86-
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/$archVariant")
90+
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/${konanTarget.archVariant}")
8791
}
8892
)
8993

@@ -102,11 +106,8 @@ kotlin {
102106
}
103107
}
104108

105-
if (project.extra["ideaActive"] as Boolean) {
106-
iosX64("ios", nativeTargetConfig())
107-
} else {
108-
ios(configure = nativeTargetConfig())
109-
}
109+
ios(configure = nativeTargetConfig())
110+
iosSimulatorArm64(configure = nativeTargetConfig())
110111

111112
js {
112113
useCommonJs()
@@ -143,6 +144,12 @@ kotlin {
143144
}
144145

145146
val iosMain by getting
147+
val iosSimulatorArm64Main by getting
148+
iosSimulatorArm64Main.dependsOn(iosMain)
149+
150+
val iosTest by sourceSets.getting
151+
val iosSimulatorArm64Test by sourceSets.getting
152+
iosSimulatorArm64Test.dependsOn(iosTest)
146153

147154
val jsMain by getting
148155
}

firebase-config/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@
2626
"@gitlive/firebase-app": "1.4.2",
2727
"firebase": "8.10.0",
2828
"kotlin": "1.5.30",
29-
"kotlinx-coroutines-core": "1.5.1"
29+
"kotlinx-coroutines-core": "1.5.2"
3030
}
3131
}

firebase-database/build.gradle.kts

+17-11
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ android {
4343
}
4444
}
4545

46+
val KonanTarget.archVariant: String
47+
get() = if (this is KonanTarget.IOS_X64 || this is KonanTarget.IOS_SIMULATOR_ARM64) {
48+
"ios-arm64_i386_x86_64-simulator"
49+
} else {
50+
"ios-arm64_armv7"
51+
}
52+
4653
kotlin {
4754

4855
android {
@@ -64,18 +71,14 @@ kotlin {
6471
"nanopb",
6572
"PromisesObjC"
6673
).map {
67-
val archVariant = if (konanTarget is KonanTarget.IOS_X64) "ios-arm64_i386_x86_64-simulator" else "ios-arm64_armv7"
68-
69-
rootProject.project("firebase-app").projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/$archVariant")
74+
rootProject.project("firebase-app").projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/${konanTarget.archVariant}")
7075
}
7176
).plus(
7277
listOf(
7378
"FirebaseDatabase",
7479
"leveldb-library"
7580
).map {
76-
val archVariant = if (konanTarget is KonanTarget.IOS_X64) "ios-arm64_i386_x86_64-simulator" else "ios-arm64_armv7"
77-
78-
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/$archVariant")
81+
projectDir.resolve("src/nativeInterop/cinterop/Carthage/Build/$it.xcframework/${konanTarget.archVariant}")
7982
}
8083
)
8184

@@ -94,11 +97,8 @@ kotlin {
9497
}
9598
}
9699

97-
if (project.extra["ideaActive"] as Boolean) {
98-
iosX64("ios", nativeTargetConfig())
99-
} else {
100-
ios(configure = nativeTargetConfig())
101-
}
100+
ios(configure = nativeTargetConfig())
101+
iosSimulatorArm64(configure = nativeTargetConfig())
102102

103103
js {
104104
useCommonJs()
@@ -144,6 +144,12 @@ kotlin {
144144
}
145145

146146
val iosMain by getting
147+
val iosSimulatorArm64Main by getting
148+
iosSimulatorArm64Main.dependsOn(iosMain)
149+
150+
val iosTest by sourceSets.getting
151+
val iosSimulatorArm64Test by sourceSets.getting
152+
iosSimulatorArm64Test.dependsOn(iosTest)
147153

148154
val jsMain by getting
149155
}

firebase-database/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@
2626
"@gitlive/firebase-app": "1.4.2",
2727
"firebase": "8.10.0",
2828
"kotlin": "1.5.30",
29-
"kotlinx-coroutines-core": "1.5.1"
29+
"kotlinx-coroutines-core": "1.5.2"
3030
}
3131
}

0 commit comments

Comments
 (0)