[Gradle, Cocoapods] move tasks from per target
podGen now per Family podSetupBuild and podBuild now per sdk
This commit is contained in:
+5
-4
@@ -55,11 +55,12 @@ class CocoaPodsIT : BaseGradleIT() {
|
|||||||
private val defaultPodRepo = "https://github.com/AFNetworking/AFNetworking"
|
private val defaultPodRepo = "https://github.com/AFNetworking/AFNetworking"
|
||||||
private val defaultPodName = "AFNetworking"
|
private val defaultPodName = "AFNetworking"
|
||||||
private val defaultTarget = "IOS"
|
private val defaultTarget = "IOS"
|
||||||
|
private val defaultFamily = "IOS"
|
||||||
|
private val defaultSDK = "iphonesimulator"
|
||||||
private val defaultPodDownloadTaskName = podDownloadTaskName + defaultPodName
|
private val defaultPodDownloadTaskName = podDownloadTaskName + defaultPodName
|
||||||
private val defaultPodGenTaskName = podGenTaskName + defaultTarget
|
private val defaultPodGenTaskName = podGenTaskName + defaultFamily
|
||||||
private val defaultBuildTaskName = podBuildTaskName + defaultTarget
|
private val defaultBuildTaskName = podBuildTaskName + defaultSDK.capitalize()
|
||||||
private val defaultSetupBuildTaskName = podSetupBuildTaskName + defaultTarget
|
private val defaultSetupBuildTaskName = podSetupBuildTaskName + defaultSDK.capitalize()
|
||||||
private val defaultCinteropTaskName = cinteropTaskName + defaultPodName + defaultTarget
|
private val defaultCinteropTaskName = cinteropTaskName + defaultPodName + defaultTarget
|
||||||
|
|
||||||
private lateinit var hooks: CustomHooks
|
private lateinit var hooks: CustomHooks
|
||||||
|
|||||||
+63
-21
@@ -24,8 +24,10 @@ import org.jetbrains.kotlin.gradle.tasks.*
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
import org.jetbrains.kotlin.gradle.utils.asValidTaskName
|
import org.jetbrains.kotlin.gradle.utils.asValidTaskName
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
import org.jetbrains.kotlin.konan.target.Family
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
|
import org.jetbrains.kotlin.konan.target.KonanTarget.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
internal val Project.cocoapodsBuildDirs: CocoapodsBuildDirs
|
internal val Project.cocoapodsBuildDirs: CocoapodsBuildDirs
|
||||||
@@ -47,7 +49,7 @@ internal class CocoapodsBuildDirs(val project: Project) {
|
|||||||
val synthetic: File
|
val synthetic: File
|
||||||
get() = root.resolve("synthetic")
|
get() = root.resolve("synthetic")
|
||||||
|
|
||||||
fun synthetic(kotlinNativeTarget: KotlinNativeTarget) = synthetic.resolve(kotlinNativeTarget.name)
|
fun synthetic(family: Family) = synthetic.resolve(family.name)
|
||||||
|
|
||||||
val externalSources: File
|
val externalSources: File
|
||||||
get() = root.resolve("externalSources")
|
get() = root.resolve("externalSources")
|
||||||
@@ -60,19 +62,22 @@ internal class CocoapodsBuildDirs(val project: Project) {
|
|||||||
|
|
||||||
internal fun String.asValidFrameworkName() = replace('-', '_')
|
internal fun String.asValidFrameworkName() = replace('-', '_')
|
||||||
|
|
||||||
private val KotlinNativeTarget.toPodGenTaskName: String
|
private val Family.toPodGenTaskName: String
|
||||||
get() = lowerCamelCaseName(KotlinCocoapodsPlugin.POD_GEN_TASK_NAME, disambiguationClassifier)
|
|
||||||
|
|
||||||
private val KotlinNativeTarget.toSetupBuildTaskName: String
|
|
||||||
get() = lowerCamelCaseName(
|
get() = lowerCamelCaseName(
|
||||||
KotlinCocoapodsPlugin.POD_SETUP_BUILD_TASK_NAME,
|
KotlinCocoapodsPlugin.POD_GEN_TASK_NAME,
|
||||||
disambiguationClassifier
|
name
|
||||||
)
|
)
|
||||||
|
|
||||||
private val KotlinNativeTarget.toBuildDependenciesTaskName: String
|
private val String.toSetupBuildTaskName: String
|
||||||
|
get() = lowerCamelCaseName(
|
||||||
|
KotlinCocoapodsPlugin.POD_SETUP_BUILD_TASK_NAME,
|
||||||
|
this
|
||||||
|
)
|
||||||
|
|
||||||
|
private val String.toBuildDependenciesTaskName: String
|
||||||
get() = lowerCamelCaseName(
|
get() = lowerCamelCaseName(
|
||||||
KotlinCocoapodsPlugin.POD_BUILD_DEPENDENCIES_TASK_NAME,
|
KotlinCocoapodsPlugin.POD_BUILD_DEPENDENCIES_TASK_NAME,
|
||||||
disambiguationClassifier
|
this
|
||||||
)
|
)
|
||||||
|
|
||||||
private val CocoapodsDependency.toPodDownloadTaskName: String
|
private val CocoapodsDependency.toPodDownloadTaskName: String
|
||||||
@@ -87,6 +92,18 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
.withType(KotlinNativeTarget::class.java)
|
.withType(KotlinNativeTarget::class.java)
|
||||||
.matching { it.konanTarget.family.isAppleFamily }
|
.matching { it.konanTarget.family.isAppleFamily }
|
||||||
|
|
||||||
|
private val KotlinNativeTarget.toValidSDK: String
|
||||||
|
get() = when (konanTarget) {
|
||||||
|
IOS_X64 -> "iphonesimulator"
|
||||||
|
IOS_ARM32, IOS_ARM64 -> "iphoneos"
|
||||||
|
WATCHOS_X86, WATCHOS_X64 -> "watchsimulator"
|
||||||
|
WATCHOS_ARM32, WATCHOS_ARM64 -> "watchos"
|
||||||
|
TVOS_X64 -> "appletvsimulator"
|
||||||
|
TVOS_ARM64 -> "appletvos"
|
||||||
|
MACOS_X64 -> "macosx"
|
||||||
|
else -> throw IllegalArgumentException("Bad target ${konanTarget.name}.")
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Splits a string using a whitespace characters as delimiters.
|
* Splits a string using a whitespace characters as delimiters.
|
||||||
* Ignores whitespaces in quotes and drops quotes, e.g. a string
|
* Ignores whitespaces in quotes and drops quotes, e.g. a string
|
||||||
@@ -177,8 +194,8 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
// We create a fat framework only for device platforms which have several
|
// We create a fat framework only for device platforms which have several
|
||||||
// device architectures: iosArm64, iosArm32, watchosArm32 and watchosArm64.
|
// device architectures: iosArm64, iosArm32, watchosArm32 and watchosArm64.
|
||||||
val frameworkPlatforms: List<KonanTarget> = when (requestedTargetName) {
|
val frameworkPlatforms: List<KonanTarget> = when (requestedTargetName) {
|
||||||
KOTLIN_TARGET_FOR_IOS_DEVICE -> listOf(KonanTarget.IOS_ARM64, KonanTarget.IOS_ARM32)
|
KOTLIN_TARGET_FOR_IOS_DEVICE -> listOf(IOS_ARM64, IOS_ARM32)
|
||||||
KOTLIN_TARGET_FOR_WATCHOS_DEVICE -> listOf(KonanTarget.WATCHOS_ARM32, KonanTarget.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.
|
else -> listOf(HostManager().targetByName(requestedTargetName)) // A requested target doesn't require building a fat framework.
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +247,8 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
&& project.findProperty(TARGET_PROPERTY) == null
|
&& project.findProperty(TARGET_PROPERTY) == null
|
||||||
&& project.findProperty(CONFIGURATION_PROPERTY) == null
|
&& project.findProperty(CONFIGURATION_PROPERTY) == null
|
||||||
) {
|
) {
|
||||||
val podBuildTaskProvider = project.tasks.named(target.toBuildDependenciesTaskName, PodBuildTask::class.java)
|
val podBuildTaskProvider =
|
||||||
|
project.tasks.named(target.toValidSDK.toBuildDependenciesTaskName, PodBuildTask::class.java)
|
||||||
interopTask.inputs.file(podBuildTaskProvider.get().buildSettingsFileProvider)
|
interopTask.inputs.file(podBuildTaskProvider.get().buildSettingsFileProvider)
|
||||||
interopTask.dependsOn(podBuildTaskProvider)
|
interopTask.dependsOn(podBuildTaskProvider)
|
||||||
}
|
}
|
||||||
@@ -256,7 +274,8 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
&& project.findProperty(TARGET_PROPERTY) == null
|
&& project.findProperty(TARGET_PROPERTY) == null
|
||||||
&& project.findProperty(CONFIGURATION_PROPERTY) == null
|
&& project.findProperty(CONFIGURATION_PROPERTY) == null
|
||||||
) {
|
) {
|
||||||
val podBuildTaskProvider = project.tasks.named(target.toBuildDependenciesTaskName, PodBuildTask::class.java)
|
val podBuildTaskProvider =
|
||||||
|
project.tasks.named(target.toValidSDK.toBuildDependenciesTaskName, PodBuildTask::class.java)
|
||||||
val buildSettings =
|
val buildSettings =
|
||||||
podBuildTaskProvider.get().buildSettingsFileProvider.get()
|
podBuildTaskProvider.get().buildSettingsFileProvider.get()
|
||||||
.inputStream()
|
.inputStream()
|
||||||
@@ -361,14 +380,22 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
private fun registerPodGenTask(
|
private fun registerPodGenTask(
|
||||||
project: Project, kotlinExtension: KotlinMultiplatformExtension, cocoapodsExtension: CocoapodsExtension
|
project: Project, kotlinExtension: KotlinMultiplatformExtension, cocoapodsExtension: CocoapodsExtension
|
||||||
) {
|
) {
|
||||||
|
val families = mutableSetOf<Family>()
|
||||||
|
|
||||||
val podspecTaskProvider = project.tasks.named(POD_SPEC_TASK_NAME, PodspecTask::class.java)
|
val podspecTaskProvider = project.tasks.named(POD_SPEC_TASK_NAME, PodspecTask::class.java)
|
||||||
val downloadPods = project.tasks.named(POD_DOWNLOAD_TASK_NAME)
|
val downloadPods = project.tasks.named(POD_DOWNLOAD_TASK_NAME)
|
||||||
kotlinExtension.supportedTargets().all { target ->
|
kotlinExtension.supportedTargets().all { target ->
|
||||||
project.tasks.register(target.toPodGenTaskName, PodGenTask::class.java) {
|
|
||||||
|
val family = target.konanTarget.family
|
||||||
|
if (family in families) {
|
||||||
|
return@all
|
||||||
|
}
|
||||||
|
families += family
|
||||||
|
|
||||||
|
project.tasks.register(family.toPodGenTaskName, PodGenTask::class.java) {
|
||||||
it.description = "Сreates a synthetic Xcode project to retrieve CocoaPods dependencies"
|
it.description = "Сreates a synthetic Xcode project to retrieve CocoaPods dependencies"
|
||||||
it.podspecProvider = podspecTaskProvider.get().outputFileProvider
|
it.podspecProvider = podspecTaskProvider.get().outputFileProvider
|
||||||
it.kotlinNativeTarget = target
|
it.family = family
|
||||||
it.cocoapodsExtension = cocoapodsExtension
|
it.cocoapodsExtension = cocoapodsExtension
|
||||||
it.dependsOn(podspecTaskProvider)
|
it.dependsOn(podspecTaskProvider)
|
||||||
it.dependsOn(downloadPods)
|
it.dependsOn(downloadPods)
|
||||||
@@ -382,19 +409,27 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
kotlinExtension: KotlinMultiplatformExtension,
|
kotlinExtension: KotlinMultiplatformExtension,
|
||||||
cocoapodsExtension: CocoapodsExtension
|
cocoapodsExtension: CocoapodsExtension
|
||||||
) {
|
) {
|
||||||
|
val sdks = mutableSetOf<String>()
|
||||||
|
|
||||||
kotlinExtension.supportedTargets().all { target ->
|
kotlinExtension.supportedTargets().all { target ->
|
||||||
|
|
||||||
project.tasks.register(target.toSetupBuildTaskName, PodSetupBuildTask::class.java) {
|
val sdk = target.toValidSDK
|
||||||
|
if (sdk in sdks) {
|
||||||
|
return@all
|
||||||
|
}
|
||||||
|
sdks += sdk
|
||||||
|
|
||||||
|
val podGenTaskProvider = project.tasks.named(target.konanTarget.family.toPodGenTaskName, PodGenTask::class.java)
|
||||||
|
|
||||||
|
project.tasks.register(sdk.toSetupBuildTaskName, PodSetupBuildTask::class.java) {
|
||||||
it.group = TASK_GROUP
|
it.group = TASK_GROUP
|
||||||
it.description = "Collect environment variables from .xcworkspace file"
|
it.description = "Collect environment variables from .xcworkspace file"
|
||||||
it.cocoapodsExtension = cocoapodsExtension
|
it.cocoapodsExtension = cocoapodsExtension
|
||||||
it.kotlinNativeTarget = target
|
it.sdk = project.provider { sdk }
|
||||||
|
|
||||||
val podspecTaskProvider = project.tasks.named(POD_SPEC_TASK_NAME, PodspecTask::class.java)
|
val podspecTaskProvider = project.tasks.named(POD_SPEC_TASK_NAME, PodspecTask::class.java)
|
||||||
it.schemeName = podspecTaskProvider.map { it.specName }
|
it.schemeName = podspecTaskProvider.map { it.specName }
|
||||||
|
|
||||||
val podGenTaskProvider = project.tasks.named(target.toPodGenTaskName, PodGenTask::class.java)
|
|
||||||
it.podsXcodeProjDirProvider = podGenTaskProvider.get().podsXcodeProjDirProvider
|
it.podsXcodeProjDirProvider = podGenTaskProvider.get().podsXcodeProjDirProvider
|
||||||
it.dependsOn(podGenTaskProvider)
|
it.dependsOn(podGenTaskProvider)
|
||||||
it.onlyIf { isAvailableToProduceSynthetic }
|
it.onlyIf { isAvailableToProduceSynthetic }
|
||||||
@@ -407,15 +442,22 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
kotlinExtension: KotlinMultiplatformExtension,
|
kotlinExtension: KotlinMultiplatformExtension,
|
||||||
cocoapodsExtension: CocoapodsExtension
|
cocoapodsExtension: CocoapodsExtension
|
||||||
) {
|
) {
|
||||||
|
val sdks = mutableSetOf<String>()
|
||||||
|
|
||||||
kotlinExtension.supportedTargets().all { target ->
|
kotlinExtension.supportedTargets().all { target ->
|
||||||
|
|
||||||
val podSetupBuildTaskProvider = project.tasks.named(target.toSetupBuildTaskName, PodSetupBuildTask::class.java)
|
val sdk = target.toValidSDK
|
||||||
|
if (sdk in sdks) {
|
||||||
|
return@all
|
||||||
|
}
|
||||||
|
sdks += sdk
|
||||||
|
|
||||||
project.tasks.register(target.toBuildDependenciesTaskName, PodBuildTask::class.java) {
|
val podSetupBuildTaskProvider = project.tasks.named(sdk.toSetupBuildTaskName, PodSetupBuildTask::class.java)
|
||||||
|
|
||||||
|
project.tasks.register(sdk.toBuildDependenciesTaskName, PodBuildTask::class.java) {
|
||||||
it.group = TASK_GROUP
|
it.group = TASK_GROUP
|
||||||
it.description = "Calls `xcodebuild` on xcworkspace for the pod scheme"
|
it.description = "Calls `xcodebuild` on xcworkspace for the pod scheme"
|
||||||
it.kotlinNativeTarget = target
|
it.sdk = project.provider { sdk }
|
||||||
it.cocoapodsExtension = cocoapodsExtension
|
it.cocoapodsExtension = cocoapodsExtension
|
||||||
it.podsXcodeProjDirProvider = podSetupBuildTaskProvider.get().podsXcodeProjDirProvider
|
it.podsXcodeProjDirProvider = podSetupBuildTaskProvider.get().podsXcodeProjDirProvider
|
||||||
it.buildSettingsFileProvider = podSetupBuildTaskProvider.get().buildSettingsFileProvider
|
it.buildSettingsFileProvider = podSetupBuildTaskProvider.get().buildSettingsFileProvider
|
||||||
|
|||||||
+20
-34
@@ -17,9 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.Cocoapods
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension
|
import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.cocoapods.asValidFrameworkName
|
import org.jetbrains.kotlin.gradle.plugin.cocoapods.asValidFrameworkName
|
||||||
import org.jetbrains.kotlin.gradle.plugin.cocoapods.cocoapodsBuildDirs
|
import org.jetbrains.kotlin.gradle.plugin.cocoapods.cocoapodsBuildDirs
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
|
||||||
import org.jetbrains.kotlin.konan.target.Family
|
import org.jetbrains.kotlin.konan.target.Family
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
@@ -27,28 +25,13 @@ import java.net.URI
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.concurrent.thread
|
import kotlin.concurrent.thread
|
||||||
|
|
||||||
internal val KotlinNativeTarget.toBuildSettingsFileName: String
|
private val Family.platformLiteral: String
|
||||||
get() = "build-settings-$disambiguationClassifier.properties"
|
get() = when (this) {
|
||||||
|
|
||||||
internal val KotlinNativeTarget.toValidSDK: String
|
|
||||||
get() = when (konanTarget) {
|
|
||||||
KonanTarget.IOS_X64 -> "iphonesimulator"
|
|
||||||
KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64 -> "iphoneos"
|
|
||||||
KonanTarget.WATCHOS_X86, KonanTarget.WATCHOS_X64 -> "watchsimulator"
|
|
||||||
KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_ARM64 -> "watchos"
|
|
||||||
KonanTarget.TVOS_X64 -> "appletvsimulator"
|
|
||||||
KonanTarget.TVOS_ARM64 -> "appletvos"
|
|
||||||
KonanTarget.MACOS_X64 -> "macosx"
|
|
||||||
else -> throw IllegalArgumentException("Bad target ${konanTarget.name}.")
|
|
||||||
}
|
|
||||||
|
|
||||||
internal val KotlinNativeTarget.platformLiteral: String
|
|
||||||
get() = when (konanTarget.family) {
|
|
||||||
Family.OSX -> "macos"
|
Family.OSX -> "macos"
|
||||||
Family.IOS -> "ios"
|
Family.IOS -> "ios"
|
||||||
Family.TVOS -> "tvos"
|
Family.TVOS -> "tvos"
|
||||||
Family.WATCHOS -> "watchos"
|
Family.WATCHOS -> "watchos"
|
||||||
else -> throw IllegalArgumentException("Unsupported native target '${konanTarget.name}'")
|
else -> throw IllegalArgumentException("Bad family ${this.name}")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -350,13 +333,13 @@ open class PodGenTask : CocoapodsWithSyntheticTask() {
|
|||||||
@get:InputFile
|
@get:InputFile
|
||||||
internal lateinit var podspecProvider: Provider<File>
|
internal lateinit var podspecProvider: Provider<File>
|
||||||
|
|
||||||
@Internal
|
@get:Internal
|
||||||
lateinit var kotlinNativeTarget: KotlinNativeTarget
|
lateinit var family: Family
|
||||||
|
|
||||||
@get:OutputDirectory
|
@get:OutputDirectory
|
||||||
internal val podsXcodeProjDirProvider: Provider<File>
|
internal val podsXcodeProjDirProvider: Provider<File>
|
||||||
get() = project.provider {
|
get() = project.provider {
|
||||||
project.cocoapodsBuildDirs.synthetic(kotlinNativeTarget)
|
project.cocoapodsBuildDirs.synthetic(family)
|
||||||
.resolve(podspecProvider.get().nameWithoutExtension)
|
.resolve(podspecProvider.get().nameWithoutExtension)
|
||||||
.resolve("Pods")
|
.resolve("Pods")
|
||||||
.resolve("Pods.xcodeproj")
|
.resolve("Pods.xcodeproj")
|
||||||
@@ -364,7 +347,7 @@ open class PodGenTask : CocoapodsWithSyntheticTask() {
|
|||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun generate() {
|
fun generate() {
|
||||||
val syntheticDir = project.cocoapodsBuildDirs.synthetic(kotlinNativeTarget).apply { mkdirs() }
|
val syntheticDir = project.cocoapodsBuildDirs.synthetic(family).apply { mkdirs() }
|
||||||
val localPodspecPaths = cocoapodsExtension.pods.mapNotNull { it.source?.getLocalPath(project, it.name) }
|
val localPodspecPaths = cocoapodsExtension.pods.mapNotNull { it.source?.getLocalPath(project, it.name) }
|
||||||
|
|
||||||
val sources = cocoapodsExtension.specRepos.getAll().toMutableList()
|
val sources = cocoapodsExtension.specRepos.getAll().toMutableList()
|
||||||
@@ -372,7 +355,7 @@ open class PodGenTask : CocoapodsWithSyntheticTask() {
|
|||||||
|
|
||||||
val podGenProcessArgs = listOfNotNull(
|
val podGenProcessArgs = listOfNotNull(
|
||||||
"pod", "gen",
|
"pod", "gen",
|
||||||
"--platforms=${kotlinNativeTarget.platformLiteral}",
|
"--platforms=${family.platformLiteral}",
|
||||||
"--gen-directory=${syntheticDir.absolutePath}",
|
"--gen-directory=${syntheticDir.absolutePath}",
|
||||||
localPodspecPaths.takeIf { it.isNotEmpty() }?.joinToString(separator = ",")?.let { "--local-sources=$it" },
|
localPodspecPaths.takeIf { it.isNotEmpty() }?.joinToString(separator = ",")?.let { "--local-sources=$it" },
|
||||||
sources.takeIf { it.isNotEmpty() }?.joinToString(separator = ",")?.let { "--sources=$it" },
|
sources.takeIf { it.isNotEmpty() }?.joinToString(separator = ",")?.let { "--sources=$it" },
|
||||||
@@ -391,13 +374,13 @@ open class PodGenTask : CocoapodsWithSyntheticTask() {
|
|||||||
outputText,
|
outputText,
|
||||||
outputText.takeIf {
|
outputText.takeIf {
|
||||||
it.contains("deployment target")
|
it.contains("deployment target")
|
||||||
|| it.contains("requested platforms: [\"${kotlinNativeTarget.platformLiteral}\"]")
|
|| it.contains("requested platforms: [\"${family.platformLiteral}\"]")
|
||||||
}?.let {
|
}?.let {
|
||||||
"""
|
"""
|
||||||
Tip: try to configure deployment_target for ALL targets as follows:
|
Tip: try to configure deployment_target for ALL targets as follows:
|
||||||
cocoapods {
|
cocoapods {
|
||||||
...
|
...
|
||||||
${kotlinNativeTarget.konanTarget.family.name.toLowerCase()}.deploymentTarget = "..."
|
${family.name.toLowerCase()}.deploymentTarget = "..."
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
@@ -418,8 +401,8 @@ open class PodSetupBuildTask : CocoapodsWithSyntheticTask() {
|
|||||||
@get:InputDirectory
|
@get:InputDirectory
|
||||||
internal lateinit var podsXcodeProjDirProvider: Provider<File>
|
internal lateinit var podsXcodeProjDirProvider: Provider<File>
|
||||||
|
|
||||||
@Internal
|
@get:Input
|
||||||
lateinit var kotlinNativeTarget: KotlinNativeTarget
|
internal lateinit var sdk: Provider<String>
|
||||||
|
|
||||||
@Input
|
@Input
|
||||||
lateinit var schemeName: Provider<String>
|
lateinit var schemeName: Provider<String>
|
||||||
@@ -428,9 +411,12 @@ open class PodSetupBuildTask : CocoapodsWithSyntheticTask() {
|
|||||||
internal val buildSettingsFileProvider: Provider<File> = project.provider {
|
internal val buildSettingsFileProvider: Provider<File> = project.provider {
|
||||||
project.cocoapodsBuildDirs
|
project.cocoapodsBuildDirs
|
||||||
.buildSettings
|
.buildSettings
|
||||||
.resolve(kotlinNativeTarget.toBuildSettingsFileName)
|
.resolve(sdk.get().toBuildSettingsFileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val String.toBuildSettingsFileName: String
|
||||||
|
get() = "build-settings-$this.properties"
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun setupBuild() {
|
fun setupBuild() {
|
||||||
val podsXcodeProjDir = podsXcodeProjDirProvider.get()
|
val podsXcodeProjDir = podsXcodeProjDirProvider.get()
|
||||||
@@ -439,7 +425,7 @@ open class PodSetupBuildTask : CocoapodsWithSyntheticTask() {
|
|||||||
"xcodebuild", "-showBuildSettings",
|
"xcodebuild", "-showBuildSettings",
|
||||||
"-project", podsXcodeProjDir.name,
|
"-project", podsXcodeProjDir.name,
|
||||||
"-scheme", schemeName.get(),
|
"-scheme", schemeName.get(),
|
||||||
"-sdk", kotlinNativeTarget.toValidSDK
|
"-sdk", sdk.get()
|
||||||
)
|
)
|
||||||
|
|
||||||
val buildSettingsProcess = ProcessBuilder(buildSettingsReceivingCommand)
|
val buildSettingsProcess = ProcessBuilder(buildSettingsReceivingCommand)
|
||||||
@@ -473,8 +459,8 @@ open class PodBuildTask : CocoapodsWithSyntheticTask() {
|
|||||||
@get:InputFile
|
@get:InputFile
|
||||||
internal lateinit var buildSettingsFileProvider: Provider<File>
|
internal lateinit var buildSettingsFileProvider: Provider<File>
|
||||||
|
|
||||||
@Internal
|
@get:Input
|
||||||
lateinit var kotlinNativeTarget: KotlinNativeTarget
|
internal lateinit var sdk: Provider<String>
|
||||||
|
|
||||||
@get:Optional
|
@get:Optional
|
||||||
@get:OutputDirectory
|
@get:OutputDirectory
|
||||||
@@ -497,7 +483,7 @@ open class PodBuildTask : CocoapodsWithSyntheticTask() {
|
|||||||
"xcodebuild",
|
"xcodebuild",
|
||||||
"-project", podsXcodeProjDir.name,
|
"-project", podsXcodeProjDir.name,
|
||||||
"-scheme", it.schemeName,
|
"-scheme", it.schemeName,
|
||||||
"-sdk", kotlinNativeTarget.toValidSDK,
|
"-sdk", sdk.get(),
|
||||||
"-configuration", podBuildSettings.configuration
|
"-configuration", podBuildSettings.configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user