From e338c5651ba946557a3bec6ba024cdb82c153cbd Mon Sep 17 00:00:00 2001 From: "konrad.sztenderski" Date: Tue, 20 Apr 2021 16:04:43 +0200 Subject: [PATCH] Expose some methods and properties related to Cocoapods dependencies to access them in Apple gradle plugin --- .../native/cocoapods/KotlinCocoapodsPlugin.kt | 31 ++++++++++--------- .../native/tasks/AdvancedCocoapodsTasks.kt | 9 +++--- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt index d6f5a788a8b..1851adfef0d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt @@ -75,6 +75,9 @@ private fun String.toSetupBuildTaskName(pod: CocoapodsDependency): String = lowe this ) +fun KotlinNativeTarget.toSetupBuildTaskName(pod: CocoapodsDependency) = + this.toValidSDK.toSetupBuildTaskName(pod) + private fun String.toBuildDependenciesTaskName(pod: CocoapodsDependency): String = lowerCamelCaseName( KotlinCocoapodsPlugin.POD_BUILD_TASK_NAME, pod.name.asValidTaskName(), @@ -87,23 +90,24 @@ private val CocoapodsDependency.toPodDownloadTaskName: String name.asValidTaskName() ) + +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}.") + } + open class KotlinCocoapodsPlugin : Plugin { - private fun KotlinMultiplatformExtension.supportedTargets() = targets + fun KotlinMultiplatformExtension.supportedTargets() = targets .withType(KotlinNativeTarget::class.java) .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. * Ignores whitespaces in quotes and drops quotes, e.g. a string @@ -527,7 +531,6 @@ open class KotlinCocoapodsPlugin : Plugin { } override fun apply(project: Project): Unit = with(project) { - pluginManager.withPlugin("kotlin-multiplatform") { val kotlinExtension = project.multiplatformExtension val cocoapodsExtension = CocoapodsExtension(this) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt index 7363934f859..aa7ca826b83 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt @@ -444,7 +444,7 @@ open class PodSetupBuildTask : DefaultTask() { lateinit var pod: Provider @get:OutputFile - internal val buildSettingsFile: Provider = project.provider { + val buildSettingsFile: Provider = project.provider { project.cocoapodsBuildDirs .buildSettings .resolve(getBuildSettingFileName(pod.get(), sdk.get())) @@ -483,7 +483,8 @@ open class PodBuildTask : DefaultTask() { @get:PathSensitive(PathSensitivity.ABSOLUTE) @get:InputFile - internal lateinit var buildSettingsFile: Provider + lateinit var buildSettingsFile: Provider + internal set @get:Nested internal lateinit var pod: Provider @@ -533,10 +534,10 @@ open class PodBuildTask : DefaultTask() { } -internal data class PodBuildSettingsProperties( +data class PodBuildSettingsProperties( internal val buildDir: String, internal val configuration: String, - internal val configurationBuildDir: String, + val configurationBuildDir: String, internal val podsTargetSrcRoot: String, internal val cflags: String? = null, internal val headerPaths: String? = null,