Add new native targets. (#2538)

This commit is contained in:
Nikolay Igotti
2019-08-23 16:11:40 +03:00
committed by GitHub
parent 64d4cca589
commit fcb0b1b5eb
4 changed files with 99 additions and 4 deletions
@@ -91,6 +91,21 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
fun androidNativeArm64(name: String, configure: Closure<*>) = androidNativeArm64(name) { ConfigureUtil.configure(configure, this) }
fun androidNativeArm64(configure: Closure<*>) = androidNativeArm64 { ConfigureUtil.configure(configure, this) }
fun androidNativeX64(
name: String = "androidNativeX64",
configure: KotlinNativeTarget.() -> Unit = { }
): KotlinNativeTarget =
configureOrCreate(
name,
presets.getByName("androidNativeX64") as KotlinNativeTargetPreset,
configure
)
fun androidNativeX64() = androidNativeX64("androidNativeX64") { }
fun androidNativeX64(name: String) = androidNativeX64(name) { }
fun androidNativeX64(name: String, configure: Closure<*>) = androidNativeX64(name) { ConfigureUtil.configure(configure, this) }
fun androidNativeX64(configure: Closure<*>) = androidNativeX64 { ConfigureUtil.configure(configure, this) }
fun iosArm32(
name: String = "iosArm32",
configure: KotlinNativeTarget.() -> Unit = { }
@@ -136,6 +151,66 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
fun iosX64(name: String, configure: Closure<*>) = iosX64(name) { ConfigureUtil.configure(configure, this) }
fun iosX64(configure: Closure<*>) = iosX64 { ConfigureUtil.configure(configure, this) }
fun watchosArm64(
name: String = "watchosArm64",
configure: KotlinNativeTarget.() -> Unit = { }
): KotlinNativeTarget =
configureOrCreate(
name,
presets.getByName("watchosArm64") as KotlinNativeTargetPreset,
configure
)
fun watchosArm64() = watchosArm64("watchosArm64") { }
fun watchosArm64(name: String) = watchosArm64(name) { }
fun watchosArm64(name: String, configure: Closure<*>) = watchosArm64(name) { ConfigureUtil.configure(configure, this) }
fun watchosArm64(configure: Closure<*>) = watchosArm64 { ConfigureUtil.configure(configure, this) }
fun watchosX64(
name: String = "watchosX64",
configure: KotlinNativeTarget.() -> Unit = { }
): KotlinNativeTarget =
configureOrCreate(
name,
presets.getByName("watchosX64") as KotlinNativeTargetPreset,
configure
)
fun watchosX64() = watchosX64("watchosX64") { }
fun watchosX64(name: String) = watchosX64(name) { }
fun watchosX64(name: String, configure: Closure<*>) = watchosX64(name) { ConfigureUtil.configure(configure, this) }
fun watchosX64(configure: Closure<*>) = watchosX64 { ConfigureUtil.configure(configure, this) }
fun tvosArm64(
name: String = "tvosArm64",
configure: KotlinNativeTarget.() -> Unit = { }
): KotlinNativeTarget =
configureOrCreate(
name,
presets.getByName("tvosArm64") as KotlinNativeTargetPreset,
configure
)
fun tvosArm64() = tvosArm64("tvosArm64") { }
fun tvosArm64(name: String) = tvosArm64(name) { }
fun tvosArm64(name: String, configure: Closure<*>) = tvosArm64(name) { ConfigureUtil.configure(configure, this) }
fun tvosArm64(configure: Closure<*>) = tvosArm64 { ConfigureUtil.configure(configure, this) }
fun tvosX64(
name: String = "tvosX64",
configure: KotlinNativeTarget.() -> Unit = { }
): KotlinNativeTarget =
configureOrCreate(
name,
presets.getByName("tvosX64") as KotlinNativeTargetPreset,
configure
)
fun tvosX64() = tvosX64("tvosX64") { }
fun tvosX64(name: String) = tvosX64(name) { }
fun tvosX64(name: String, configure: Closure<*>) = tvosX64(name) { ConfigureUtil.configure(configure, this) }
fun tvosX64(configure: Closure<*>) = tvosX64 { ConfigureUtil.configure(configure, this) }
fun linuxX64(
name: String = "linuxX64",
configure: KotlinNativeTarget.() -> Unit = { }
@@ -133,8 +133,9 @@ open class KotlinCocoapodsPlugin: Plugin<Project> {
val requestedBuildType = project.findProperty(CONFIGURATION_PROPERTY)?.toString()?.toUpperCase() ?: return@whenEvaluated
if (requestedTargetName == KOTLIN_TARGET_FOR_DEVICE) {
// We create a fat framework only for device platforms: iosArm64 and iosArm32.
val devicePlatforms = listOf(KonanTarget.IOS_ARM64, KonanTarget.IOS_ARM32)
// We create a fat framework only for device platforms: iosArm64, iosArm32, watchosArm64 and tvosArm64.
val devicePlatforms = listOf(KonanTarget.IOS_ARM64, KonanTarget.IOS_ARM32,
KonanTarget.WATCHOS_ARM64, KonanTarget.TVOS_ARM64)
val deviceTargets = devicePlatforms.flatMap { kotlinExtension.targetsForPlatform(it) }
if (deviceTargets.size == 1) {
@@ -168,6 +168,10 @@ open class FatFrameworkTask: DefaultTask() {
get() = when(target.konanTarget) {
KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64 -> "iPhoneOS"
KonanTarget.IOS_X64 -> "iPhoneSimulator"
KonanTarget.TVOS_ARM64 -> "appletvos"
KonanTarget.TVOS_X64 -> "appletvsimulator"
KonanTarget.WATCHOS_ARM64 -> "watchos"
KonanTarget.WATCHOS_X64 -> "watchsimulator"
else -> error("Fat frameworks are not supported for target `${target.konanTarget.visibleName}`")
}