KT-52328: Add '-framework' linker flag only if framework exists.
This commit is contained in:
committed by
Space
parent
d737c3ebbe
commit
4753c3f4a3
+12
-8
@@ -15,9 +15,11 @@ import org.gradle.api.tasks.*
|
|||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.CocoapodsDependency.PodLocation.*
|
import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.CocoapodsDependency.PodLocation.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
|
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBinary
|
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBinary
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.addArg
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.addArgs
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
@@ -243,10 +245,7 @@ open class CocoapodsExtension(private val project: Project) {
|
|||||||
|
|
||||||
internal fun configureLinkingOptions(binary: NativeBinary, setRPath: Boolean = false) {
|
internal fun configureLinkingOptions(binary: NativeBinary, setRPath: Boolean = false) {
|
||||||
pods.all { pod ->
|
pods.all { pod ->
|
||||||
binary.linkerOpts("-framework", pod.moduleName)
|
|
||||||
|
|
||||||
binary.linkTaskProvider.configure { task ->
|
binary.linkTaskProvider.configure { task ->
|
||||||
|
|
||||||
if (HostManager.hostIsMac) {
|
if (HostManager.hostIsMac) {
|
||||||
val podBuildTaskProvider = project.getPodBuildTaskProvider(binary.target, pod)
|
val podBuildTaskProvider = project.getPodBuildTaskProvider(binary.target, pod)
|
||||||
task.inputs.file(podBuildTaskProvider.map { it.buildSettingsFile })
|
task.inputs.file(podBuildTaskProvider.map { it.buildSettingsFile })
|
||||||
@@ -255,10 +254,15 @@ open class CocoapodsExtension(private val project: Project) {
|
|||||||
|
|
||||||
task.doFirst { _ ->
|
task.doFirst { _ ->
|
||||||
val podBuildSettings = project.getPodBuildSettingsProperties(binary.target, pod)
|
val podBuildSettings = project.getPodBuildSettingsProperties(binary.target, pod)
|
||||||
binary.linkerOpts.addAll(podBuildSettings.frameworkSearchPaths.map { "-F$it" })
|
val frameworkFileName = pod.moduleName + ".framework"
|
||||||
if (setRPath) {
|
val frameworkSearchPaths = podBuildSettings.frameworkSearchPaths
|
||||||
binary.linkerOpts.addAll(podBuildSettings.frameworkSearchPaths.flatMap { listOf("-rpath", it) })
|
|
||||||
}
|
val frameworkFileExists = frameworkSearchPaths.any { dir -> File(dir, frameworkFileName).exists() }
|
||||||
|
if (frameworkFileExists) binary.linkerOpts.addArg("-framework", pod.moduleName)
|
||||||
|
|
||||||
|
binary.linkerOpts.addAll(frameworkSearchPaths.map { "-F$it" })
|
||||||
|
|
||||||
|
if (setRPath) binary.linkerOpts.addArgs("-rpath", frameworkSearchPaths)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user