kotlin.native.cocoapods.targets can be a custom list of architectures (#3861)
Co-authored-by: Mike Kulasinski <mike.kulasinski@payworks.com> Co-authored-by: Ilya Matveev <ilya.matveev@jetbrains.com>
This commit is contained in:
committed by
GitHub
parent
0279068214
commit
bc2b396ecd
+26
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Compan
|
||||
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_SPEC_TASK_NAME
|
||||
import org.jetbrains.kotlin.gradle.transformProjectWithPluginsDsl
|
||||
import org.jetbrains.kotlin.gradle.util.modify
|
||||
import org.jetbrains.kotlin.gradle.util.runProcess
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.junit.Assume.assumeTrue
|
||||
import org.junit.Before
|
||||
@@ -739,6 +740,31 @@ class CocoaPodsIT : BaseGradleIT() {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCommaSeparatedTargets() {
|
||||
with(project) {
|
||||
gradleBuildScript().modify {
|
||||
// Replace a single target with a pair (iosX64 + iosArm64) to test building a fat framework.
|
||||
it.replace("iosX64(\"iOS\")", "ios()")
|
||||
}
|
||||
hooks.addHook {
|
||||
// Check that a built universal framework includes both device and simulator architectures.
|
||||
val framework = fileInWorkingDir("build/cocoapods/framework/cocoapods.framework/cocoapods")
|
||||
with(runProcess(listOf("file", framework.absolutePath), projectDir)) {
|
||||
assertTrue(isSuccessful)
|
||||
assertTrue(output.contains("\\(for architecture x86_64\\):\\s+current ar archive".toRegex()))
|
||||
assertTrue(output.contains("\\(for architecture arm64\\):\\s+current ar archive".toRegex()))
|
||||
}
|
||||
}
|
||||
// Run the build.
|
||||
test(
|
||||
"syncFramework",
|
||||
"-Pkotlin.native.cocoapods.target=ios_x64,ios_arm64",
|
||||
"-Pkotlin.native.cocoapods.configuration=DEBUG"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// paths
|
||||
|
||||
private fun CompiledProject.url() = externalSources().resolve("url")
|
||||
|
||||
+2
-1
@@ -197,7 +197,8 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
||||
val frameworkPlatforms: List<KonanTarget> = when (requestedTargetName) {
|
||||
KOTLIN_TARGET_FOR_IOS_DEVICE -> listOf(IOS_ARM64, IOS_ARM32)
|
||||
KOTLIN_TARGET_FOR_WATCHOS_DEVICE -> listOf(WATCHOS_ARM32, WATCHOS_ARM64)
|
||||
else -> listOf(HostManager().targetByName(requestedTargetName)) // A requested target doesn't require building a fat framework.
|
||||
// A request parameter can be comma separated list of targets.
|
||||
else -> requestedTargetName.split(",").map { HostManager().targetByName(it) }.toList()
|
||||
}
|
||||
|
||||
val frameworkTargets = frameworkPlatforms.flatMap { kotlinExtension.targetsForPlatform(it) }
|
||||
|
||||
Reference in New Issue
Block a user