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.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_SPEC_TASK_NAME
|
||||||
import org.jetbrains.kotlin.gradle.transformProjectWithPluginsDsl
|
import org.jetbrains.kotlin.gradle.transformProjectWithPluginsDsl
|
||||||
import org.jetbrains.kotlin.gradle.util.modify
|
import org.jetbrains.kotlin.gradle.util.modify
|
||||||
|
import org.jetbrains.kotlin.gradle.util.runProcess
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.junit.Assume.assumeTrue
|
import org.junit.Assume.assumeTrue
|
||||||
import org.junit.Before
|
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
|
// paths
|
||||||
|
|
||||||
private fun CompiledProject.url() = externalSources().resolve("url")
|
private fun CompiledProject.url() = externalSources().resolve("url")
|
||||||
|
|||||||
+2
-1
@@ -197,7 +197,8 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
val frameworkPlatforms: List<KonanTarget> = when (requestedTargetName) {
|
val frameworkPlatforms: List<KonanTarget> = when (requestedTargetName) {
|
||||||
KOTLIN_TARGET_FOR_IOS_DEVICE -> listOf(IOS_ARM64, IOS_ARM32)
|
KOTLIN_TARGET_FOR_IOS_DEVICE -> listOf(IOS_ARM64, IOS_ARM32)
|
||||||
KOTLIN_TARGET_FOR_WATCHOS_DEVICE -> listOf(WATCHOS_ARM32, WATCHOS_ARM64)
|
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) }
|
val frameworkTargets = frameworkPlatforms.flatMap { kotlinExtension.targetsForPlatform(it) }
|
||||||
|
|||||||
Reference in New Issue
Block a user