Add Family.TVOS, Family.WATCHOS and KonanTarget.ANDROID_X86, KonanTarget.WATCHOS_X86, KonanTarget.WATCHOS_ARM32.
This commit is contained in:
committed by
Sergey Bogolepov
parent
5bd88f3191
commit
ac3864543c
@@ -14,11 +14,19 @@ enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSu
|
|||||||
val staticPrefix: String, val staticSuffix: String) {
|
val staticPrefix: String, val staticSuffix: String) {
|
||||||
OSX ("kexe", "lib", "dylib", "lib", "a"),
|
OSX ("kexe", "lib", "dylib", "lib", "a"),
|
||||||
IOS ("kexe", "lib", "dylib", "lib", "a"),
|
IOS ("kexe", "lib", "dylib", "lib", "a"),
|
||||||
|
TVOS ("kexe", "lib", "dylib", "lib", "a"),
|
||||||
|
WATCHOS ("kexe", "lib", "dylib", "lib", "a"),
|
||||||
LINUX ("kexe", "lib", "so" , "lib", "a"),
|
LINUX ("kexe", "lib", "so" , "lib", "a"),
|
||||||
MINGW ("exe" , "" , "dll" , "lib", "a"),
|
MINGW ("exe" , "" , "dll" , "lib", "a"),
|
||||||
ANDROID ("so" , "lib", "so" , "lib", "a"),
|
ANDROID ("so" , "lib", "so" , "lib", "a"),
|
||||||
WASM ("wasm", "" , "wasm" , "", "wasm"),
|
WASM ("wasm", "" , "wasm" , "", "wasm"),
|
||||||
ZEPHYR ("o" , "lib", "a" , "lib", "a")
|
ZEPHYR ("o" , "lib", "a" , "lib", "a");
|
||||||
|
|
||||||
|
val isAppleFamily: Boolean
|
||||||
|
get() = this == OSX
|
||||||
|
|| this == IOS
|
||||||
|
|| this == TVOS
|
||||||
|
|| this == WATCHOS
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class Architecture(val bitness: Int) {
|
enum class Architecture(val bitness: Int) {
|
||||||
@@ -33,15 +41,18 @@ enum class Architecture(val bitness: Int) {
|
|||||||
|
|
||||||
sealed class KonanTarget(override val name: String, val family: Family, val architecture: Architecture) : Named {
|
sealed class KonanTarget(override val name: String, val family: Family, val architecture: Architecture) : Named {
|
||||||
object ANDROID_X64 : KonanTarget( "android_x64", Family.ANDROID, Architecture.X64)
|
object ANDROID_X64 : KonanTarget( "android_x64", Family.ANDROID, Architecture.X64)
|
||||||
|
object ANDROID_X86 : KonanTarget( "android_x86", Family.ANDROID, Architecture.X86)
|
||||||
object ANDROID_ARM32 : KonanTarget( "android_arm32", Family.ANDROID, Architecture.ARM32)
|
object ANDROID_ARM32 : KonanTarget( "android_arm32", Family.ANDROID, Architecture.ARM32)
|
||||||
object ANDROID_ARM64 : KonanTarget( "android_arm64", Family.ANDROID, Architecture.ARM64)
|
object ANDROID_ARM64 : KonanTarget( "android_arm64", Family.ANDROID, Architecture.ARM64)
|
||||||
object IOS_ARM32 : KonanTarget( "ios_arm32", Family.IOS, Architecture.ARM32)
|
object IOS_ARM32 : KonanTarget( "ios_arm32", Family.IOS, Architecture.ARM32)
|
||||||
object IOS_ARM64 : KonanTarget( "ios_arm64", Family.IOS, Architecture.ARM64)
|
object IOS_ARM64 : KonanTarget( "ios_arm64", Family.IOS, Architecture.ARM64)
|
||||||
object IOS_X64 : KonanTarget( "ios_x64", Family.IOS, Architecture.X64)
|
object IOS_X64 : KonanTarget( "ios_x64", Family.IOS, Architecture.X64)
|
||||||
object WATCHOS_ARM64 : KonanTarget( "watchos_arm64", Family.IOS, Architecture.ARM64)
|
object WATCHOS_ARM32 : KonanTarget( "watchos_arm32", Family.WATCHOS, Architecture.ARM32)
|
||||||
object WATCHOS_X64 : KonanTarget( "watchos_x64", Family.IOS, Architecture.X64)
|
object WATCHOS_ARM64 : KonanTarget( "watchos_arm64", Family.WATCHOS, Architecture.ARM64)
|
||||||
object TVOS_ARM64 : KonanTarget( "tvos_arm64", Family.IOS, Architecture.ARM64)
|
object WATCHOS_X86 : KonanTarget( "watchos_x86", Family.WATCHOS, Architecture.X86)
|
||||||
object TVOS_X64 : KonanTarget( "tvos_x64", Family.IOS, Architecture.X64)
|
object WATCHOS_X64 : KonanTarget( "watchos_x64", Family.WATCHOS, Architecture.X64)
|
||||||
|
object TVOS_ARM64 : KonanTarget( "tvos_arm64", Family.TVOS, Architecture.ARM64)
|
||||||
|
object TVOS_X64 : KonanTarget( "tvos_x64", Family.TVOS, Architecture.X64)
|
||||||
object LINUX_X64 : KonanTarget( "linux_x64", Family.LINUX, Architecture.X64)
|
object LINUX_X64 : KonanTarget( "linux_x64", Family.LINUX, Architecture.X64)
|
||||||
object MINGW_X86 : KonanTarget( "mingw_x86", Family.MINGW, Architecture.X86)
|
object MINGW_X86 : KonanTarget( "mingw_x86", Family.MINGW, Architecture.X86)
|
||||||
object MINGW_X64 : KonanTarget( "mingw_x64", Family.MINGW, Architecture.X64)
|
object MINGW_X64 : KonanTarget( "mingw_x64", Family.MINGW, Architecture.X64)
|
||||||
@@ -127,11 +138,12 @@ open class HostManager(protected val distribution: Distribution = Distribution()
|
|||||||
|
|
||||||
// TODO: need a better way to enumerated predefined targets.
|
// TODO: need a better way to enumerated predefined targets.
|
||||||
private val predefinedTargets = listOf(
|
private val predefinedTargets = listOf(
|
||||||
ANDROID_ARM32, ANDROID_ARM64, ANDROID_X64,
|
ANDROID_ARM32, ANDROID_ARM64, ANDROID_X86, ANDROID_X64,
|
||||||
IOS_ARM32, IOS_ARM64, IOS_X64,
|
IOS_ARM32, IOS_ARM64, IOS_X64,
|
||||||
WATCHOS_ARM64, WATCHOS_X64,
|
WATCHOS_ARM32, WATCHOS_ARM64,
|
||||||
|
WATCHOS_X86, WATCHOS_X64,
|
||||||
TVOS_ARM64, TVOS_X64,
|
TVOS_ARM64, TVOS_X64,
|
||||||
LINUX_X64, LINUX_ARM32_HFP, LINUX_ARM64, LINUX_MIPS32, LINUX_MIPSEL32,
|
LINUX_X64, LINUX_ARM32_HFP, LINUX_ARM64, LINUX_MIPS32, LINUX_MIPSEL32,
|
||||||
MINGW_X64, MINGW_X86,
|
MINGW_X64, MINGW_X86,
|
||||||
MACOS_X64,
|
MACOS_X64,
|
||||||
WASM32)
|
WASM32)
|
||||||
@@ -176,6 +188,7 @@ open class HostManager(protected val distribution: Distribution = Distribution()
|
|||||||
LINUX_ARM64,
|
LINUX_ARM64,
|
||||||
LINUX_MIPS32,
|
LINUX_MIPS32,
|
||||||
LINUX_MIPSEL32,
|
LINUX_MIPSEL32,
|
||||||
|
ANDROID_X86,
|
||||||
ANDROID_X64,
|
ANDROID_X64,
|
||||||
ANDROID_ARM32,
|
ANDROID_ARM32,
|
||||||
ANDROID_ARM64,
|
ANDROID_ARM64,
|
||||||
@@ -187,6 +200,7 @@ open class HostManager(protected val distribution: Distribution = Distribution()
|
|||||||
LINUX_X64,
|
LINUX_X64,
|
||||||
LINUX_ARM32_HFP,
|
LINUX_ARM32_HFP,
|
||||||
LINUX_ARM64,
|
LINUX_ARM64,
|
||||||
|
ANDROID_X86,
|
||||||
ANDROID_X64,
|
ANDROID_X64,
|
||||||
ANDROID_ARM32,
|
ANDROID_ARM32,
|
||||||
ANDROID_ARM64,
|
ANDROID_ARM64,
|
||||||
@@ -197,13 +211,16 @@ open class HostManager(protected val distribution: Distribution = Distribution()
|
|||||||
IOS_ARM32,
|
IOS_ARM32,
|
||||||
IOS_ARM64,
|
IOS_ARM64,
|
||||||
IOS_X64,
|
IOS_X64,
|
||||||
|
WATCHOS_ARM32,
|
||||||
WATCHOS_ARM64,
|
WATCHOS_ARM64,
|
||||||
|
WATCHOS_X86,
|
||||||
WATCHOS_X64,
|
WATCHOS_X64,
|
||||||
TVOS_ARM64,
|
TVOS_ARM64,
|
||||||
TVOS_X64,
|
TVOS_X64,
|
||||||
LINUX_X64,
|
LINUX_X64,
|
||||||
LINUX_ARM32_HFP,
|
LINUX_ARM32_HFP,
|
||||||
LINUX_ARM64,
|
LINUX_ARM64,
|
||||||
|
ANDROID_X86,
|
||||||
ANDROID_X64,
|
ANDROID_X64,
|
||||||
ANDROID_ARM32,
|
ANDROID_ARM32,
|
||||||
ANDROID_ARM64,
|
ANDROID_ARM64,
|
||||||
@@ -331,6 +348,7 @@ val KonanTarget.presetName: String
|
|||||||
get() = when (this) {
|
get() = when (this) {
|
||||||
ANDROID_ARM32 -> "androidNativeArm32"
|
ANDROID_ARM32 -> "androidNativeArm32"
|
||||||
ANDROID_ARM64 -> "androidNativeArm64"
|
ANDROID_ARM64 -> "androidNativeArm64"
|
||||||
|
ANDROID_X86 -> "androidNativeX86"
|
||||||
ANDROID_X64 -> "androidNativeX64"
|
ANDROID_X64 -> "androidNativeX64"
|
||||||
else -> evaluatePresetName(this.name)
|
else -> evaluatePresetName(this.name)
|
||||||
}
|
}
|
||||||
|
|||||||
+45
@@ -91,6 +91,21 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
|||||||
fun androidNativeArm64(name: String, configure: Closure<*>) = androidNativeArm64(name) { ConfigureUtil.configure(configure, this) }
|
fun androidNativeArm64(name: String, configure: Closure<*>) = androidNativeArm64(name) { ConfigureUtil.configure(configure, this) }
|
||||||
fun androidNativeArm64(configure: Closure<*>) = androidNativeArm64 { ConfigureUtil.configure(configure, this) }
|
fun androidNativeArm64(configure: Closure<*>) = androidNativeArm64 { ConfigureUtil.configure(configure, this) }
|
||||||
|
|
||||||
|
fun androidNativeX86(
|
||||||
|
name: String = "androidNativeX86",
|
||||||
|
configure: KotlinNativeTarget.() -> Unit = { }
|
||||||
|
): KotlinNativeTarget =
|
||||||
|
configureOrCreate(
|
||||||
|
name,
|
||||||
|
presets.getByName("androidNativeX86") as KotlinNativeTargetPreset,
|
||||||
|
configure
|
||||||
|
)
|
||||||
|
|
||||||
|
fun androidNativeX86() = androidNativeX86("androidNativeX86") { }
|
||||||
|
fun androidNativeX86(name: String) = androidNativeX86(name) { }
|
||||||
|
fun androidNativeX86(name: String, configure: Closure<*>) = androidNativeX86(name) { ConfigureUtil.configure(configure, this) }
|
||||||
|
fun androidNativeX86(configure: Closure<*>) = androidNativeX86 { ConfigureUtil.configure(configure, this) }
|
||||||
|
|
||||||
fun androidNativeX64(
|
fun androidNativeX64(
|
||||||
name: String = "androidNativeX64",
|
name: String = "androidNativeX64",
|
||||||
configure: KotlinNativeTarget.() -> Unit = { }
|
configure: KotlinNativeTarget.() -> Unit = { }
|
||||||
@@ -151,6 +166,21 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
|||||||
fun iosX64(name: String, configure: Closure<*>) = iosX64(name) { ConfigureUtil.configure(configure, this) }
|
fun iosX64(name: String, configure: Closure<*>) = iosX64(name) { ConfigureUtil.configure(configure, this) }
|
||||||
fun iosX64(configure: Closure<*>) = iosX64 { ConfigureUtil.configure(configure, this) }
|
fun iosX64(configure: Closure<*>) = iosX64 { ConfigureUtil.configure(configure, this) }
|
||||||
|
|
||||||
|
fun watchosArm32(
|
||||||
|
name: String = "watchosArm32",
|
||||||
|
configure: KotlinNativeTarget.() -> Unit = { }
|
||||||
|
): KotlinNativeTarget =
|
||||||
|
configureOrCreate(
|
||||||
|
name,
|
||||||
|
presets.getByName("watchosArm32") as KotlinNativeTargetPreset,
|
||||||
|
configure
|
||||||
|
)
|
||||||
|
|
||||||
|
fun watchosArm32() = watchosArm32("watchosArm32") { }
|
||||||
|
fun watchosArm32(name: String) = watchosArm32(name) { }
|
||||||
|
fun watchosArm32(name: String, configure: Closure<*>) = watchosArm32(name) { ConfigureUtil.configure(configure, this) }
|
||||||
|
fun watchosArm32(configure: Closure<*>) = watchosArm32 { ConfigureUtil.configure(configure, this) }
|
||||||
|
|
||||||
fun watchosArm64(
|
fun watchosArm64(
|
||||||
name: String = "watchosArm64",
|
name: String = "watchosArm64",
|
||||||
configure: KotlinNativeTarget.() -> Unit = { }
|
configure: KotlinNativeTarget.() -> Unit = { }
|
||||||
@@ -166,6 +196,21 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
|||||||
fun watchosArm64(name: String, configure: Closure<*>) = watchosArm64(name) { ConfigureUtil.configure(configure, this) }
|
fun watchosArm64(name: String, configure: Closure<*>) = watchosArm64(name) { ConfigureUtil.configure(configure, this) }
|
||||||
fun watchosArm64(configure: Closure<*>) = watchosArm64 { ConfigureUtil.configure(configure, this) }
|
fun watchosArm64(configure: Closure<*>) = watchosArm64 { ConfigureUtil.configure(configure, this) }
|
||||||
|
|
||||||
|
fun watchosX86(
|
||||||
|
name: String = "watchosX86",
|
||||||
|
configure: KotlinNativeTarget.() -> Unit = { }
|
||||||
|
): KotlinNativeTarget =
|
||||||
|
configureOrCreate(
|
||||||
|
name,
|
||||||
|
presets.getByName("watchosX86") as KotlinNativeTargetPreset,
|
||||||
|
configure
|
||||||
|
)
|
||||||
|
|
||||||
|
fun watchosX86() = watchosX86("watchosX86") { }
|
||||||
|
fun watchosX86(name: String) = watchosX86(name) { }
|
||||||
|
fun watchosX86(name: String, configure: Closure<*>) = watchosX86(name) { ConfigureUtil.configure(configure, this) }
|
||||||
|
fun watchosX86(configure: Closure<*>) = watchosX86 { ConfigureUtil.configure(configure, this) }
|
||||||
|
|
||||||
fun watchosX64(
|
fun watchosX64(
|
||||||
name: String = "watchosX64",
|
name: String = "watchosX64",
|
||||||
configure: KotlinNativeTarget.() -> Unit = { }
|
configure: KotlinNativeTarget.() -> Unit = { }
|
||||||
|
|||||||
+1
-1
@@ -57,7 +57,7 @@ enum class NativeOutputKind(
|
|||||||
description = "a framework"
|
description = "a framework"
|
||||||
) {
|
) {
|
||||||
override fun availableFor(target: KonanTarget) =
|
override fun availableFor(target: KonanTarget) =
|
||||||
target.family == Family.OSX || target.family == Family.IOS
|
target.family.isAppleFamily
|
||||||
};
|
};
|
||||||
|
|
||||||
open fun availableFor(target: KonanTarget) = true
|
open fun availableFor(target: KonanTarget) = true
|
||||||
|
|||||||
+9
-4
@@ -47,7 +47,7 @@ open class KotlinCocoapodsPlugin: Plugin<Project> {
|
|||||||
|
|
||||||
private fun KotlinMultiplatformExtension.supportedTargets() = targets
|
private fun KotlinMultiplatformExtension.supportedTargets() = targets
|
||||||
.withType(KotlinNativeTarget::class.java)
|
.withType(KotlinNativeTarget::class.java)
|
||||||
.matching { it.konanTarget.family == Family.IOS || it.konanTarget.family == Family.OSX }
|
.matching { it.konanTarget.family.isAppleFamily }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Splits a string using a whitespace characters as delimiters.
|
* Splits a string using a whitespace characters as delimiters.
|
||||||
@@ -133,9 +133,14 @@ open class KotlinCocoapodsPlugin: Plugin<Project> {
|
|||||||
val requestedBuildType = project.findProperty(CONFIGURATION_PROPERTY)?.toString()?.toUpperCase() ?: return@whenEvaluated
|
val requestedBuildType = project.findProperty(CONFIGURATION_PROPERTY)?.toString()?.toUpperCase() ?: return@whenEvaluated
|
||||||
|
|
||||||
if (requestedTargetName == KOTLIN_TARGET_FOR_DEVICE) {
|
if (requestedTargetName == KOTLIN_TARGET_FOR_DEVICE) {
|
||||||
// We create a fat framework only for device platforms: iosArm64, iosArm32, watchosArm64 and tvosArm64.
|
// We create a fat framework only for device platforms: iosArm64, iosArm32, watchosArm32, watchosArm64 and tvosArm64.
|
||||||
val devicePlatforms = listOf(KonanTarget.IOS_ARM64, KonanTarget.IOS_ARM32,
|
val devicePlatforms = listOf(
|
||||||
KonanTarget.WATCHOS_ARM64, KonanTarget.TVOS_ARM64)
|
KonanTarget.IOS_ARM64,
|
||||||
|
KonanTarget.IOS_ARM32,
|
||||||
|
KonanTarget.WATCHOS_ARM32,
|
||||||
|
KonanTarget.WATCHOS_ARM64,
|
||||||
|
KonanTarget.TVOS_ARM64
|
||||||
|
)
|
||||||
val deviceTargets = devicePlatforms.flatMap { kotlinExtension.targetsForPlatform(it) }
|
val deviceTargets = devicePlatforms.flatMap { kotlinExtension.targetsForPlatform(it) }
|
||||||
|
|
||||||
if (deviceTargets.size == 1) {
|
if (deviceTargets.size == 1) {
|
||||||
|
|||||||
+2
-2
@@ -170,8 +170,8 @@ open class FatFrameworkTask: DefaultTask() {
|
|||||||
KonanTarget.IOS_X64 -> "iPhoneSimulator"
|
KonanTarget.IOS_X64 -> "iPhoneSimulator"
|
||||||
KonanTarget.TVOS_ARM64 -> "appletvos"
|
KonanTarget.TVOS_ARM64 -> "appletvos"
|
||||||
KonanTarget.TVOS_X64 -> "appletvsimulator"
|
KonanTarget.TVOS_X64 -> "appletvsimulator"
|
||||||
KonanTarget.WATCHOS_ARM64 -> "watchos"
|
KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_ARM64 -> "watchos"
|
||||||
KonanTarget.WATCHOS_X64 -> "watchsimulator"
|
KonanTarget.WATCHOS_X86, KonanTarget.WATCHOS_X64 -> "watchsimulator"
|
||||||
else -> error("Fat frameworks are not supported for target `${target.konanTarget.visibleName}`")
|
else -> error("Fat frameworks are not supported for target `${target.konanTarget.visibleName}`")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user