[Gradle, K/N] Don't add unsupported targets to default fat frameworks task
This commit is contained in:
+37
-31
@@ -194,44 +194,50 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget>(
|
||||
}
|
||||
}
|
||||
|
||||
fun configureFatFramework() {
|
||||
val fatFrameworkConfigurationName = lowerCamelCaseName(binary.name, binary.target.konanTarget.family.name.toLowerCase(), "fat")
|
||||
val fatFrameworkTaskName = "link${fatFrameworkConfigurationName.capitalize()}"
|
||||
|
||||
val fatFrameworkTask = if (fatFrameworkTaskName in tasks.names) {
|
||||
tasks.named(fatFrameworkTaskName, FatFrameworkTask::class.java)
|
||||
} else {
|
||||
tasks.register(fatFrameworkTaskName, FatFrameworkTask::class.java) {
|
||||
it.baseName = binary.baseName
|
||||
it.destinationDir = it.destinationDir.resolve(binary.buildType.name.toLowerCase())
|
||||
}
|
||||
}
|
||||
|
||||
fatFrameworkTask.configure {
|
||||
try {
|
||||
it.from(binary)
|
||||
} catch (e: Exception) {
|
||||
logger.warn("Cannot add binary ${binary.name} dependency to default fat framework", e)
|
||||
}
|
||||
}
|
||||
|
||||
// maybeCreate is not used as it does not provide way to configure once
|
||||
val fatConfiguration =
|
||||
configurations.findByName(fatFrameworkConfigurationName) ?: configurations.create(fatFrameworkConfigurationName) {
|
||||
it.isCanBeConsumed = true
|
||||
it.isCanBeResolved = false
|
||||
it.configureConfiguration(fatFrameworkTask)
|
||||
}
|
||||
|
||||
fatConfiguration.attributes.attribute(
|
||||
Framework.frameworkTargets,
|
||||
(fatConfiguration.attributes.getAttribute(Framework.frameworkTargets) ?: setOf<String>()) + binary.target.konanTarget.name
|
||||
)
|
||||
}
|
||||
|
||||
configurations.create(lowerCamelCaseName(binary.name, binary.target.name)) {
|
||||
it.isCanBeConsumed = true
|
||||
it.isCanBeResolved = false
|
||||
it.configureConfiguration(linkTask)
|
||||
}
|
||||
|
||||
val fatFrameworkConfigurationName = lowerCamelCaseName(binary.name, binary.target.konanTarget.family.name.toLowerCase(), "fat")
|
||||
val fatFrameworkTaskName = "link${fatFrameworkConfigurationName.capitalize()}"
|
||||
|
||||
val fatFrameworkTask = try {
|
||||
tasks.named(fatFrameworkTaskName, FatFrameworkTask::class.java)
|
||||
} catch (e: UnknownDomainObjectException) {
|
||||
tasks.register(fatFrameworkTaskName, FatFrameworkTask::class.java) {
|
||||
it.baseName = binary.baseName
|
||||
it.destinationDir = it.destinationDir.resolve(binary.buildType.name.toLowerCase())
|
||||
}
|
||||
if (FatFrameworkTask.isSupportedTarget(binary.target)) {
|
||||
configureFatFramework()
|
||||
}
|
||||
|
||||
fatFrameworkTask.configure {
|
||||
try {
|
||||
it.from(binary)
|
||||
} catch (e: Exception) {
|
||||
logger.warn("Cannot add binary ${binary.name} dependency to fat framework", e)
|
||||
}
|
||||
}
|
||||
|
||||
// maybeCreate is not used as it does not provide way to configure once
|
||||
val fatConfiguration =
|
||||
configurations.findByName(fatFrameworkConfigurationName) ?: configurations.create(fatFrameworkConfigurationName) {
|
||||
it.isCanBeConsumed = true
|
||||
it.isCanBeResolved = false
|
||||
it.configureConfiguration(fatFrameworkTask)
|
||||
}
|
||||
|
||||
fatConfiguration.attributes.attribute(
|
||||
Framework.frameworkTargets,
|
||||
(fatConfiguration.attributes.getAttribute(Framework.frameworkTargets) ?: setOf<String>()) + binary.target.konanTarget.name
|
||||
)
|
||||
}
|
||||
|
||||
private fun Project.createRunTask(binary: Executable) {
|
||||
|
||||
+14
-1
@@ -11,6 +11,7 @@ import org.gradle.api.file.FileTree
|
||||
import org.gradle.api.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.cocoapods.asValidFrameworkName
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||
import org.jetbrains.kotlin.konan.target.Architecture
|
||||
import org.jetbrains.kotlin.konan.target.Family
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget.*
|
||||
@@ -63,7 +64,7 @@ private class IosFrameworkFiles(val rootDir: File) {
|
||||
/**
|
||||
* Task running lipo to create a fat framework from several simple frameworks. It also merges headers, plists and module files.
|
||||
*/
|
||||
open class FatFrameworkTask: DefaultTask() {
|
||||
open class FatFrameworkTask : DefaultTask() {
|
||||
|
||||
//region DSL properties.
|
||||
/**
|
||||
@@ -335,4 +336,16 @@ open class FatFrameworkTask: DefaultTask() {
|
||||
mergePlists(fatFramework.infoPlist, frameworkName)
|
||||
mergeDSYM()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val supportedTargets = listOf(
|
||||
IOS_ARM32, IOS_ARM64, IOS_X64,
|
||||
WATCHOS_ARM32, WATCHOS_ARM64, WATCHOS_X86, WATCHOS_X64,
|
||||
TVOS_ARM64, TVOS_X64
|
||||
)
|
||||
|
||||
fun isSupportedTarget(target: KotlinNativeTarget): Boolean {
|
||||
return target.konanTarget in supportedTargets
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user