Make Xcode utils nullable for non Apple hosts.

This commit is contained in:
konstantin.tskhovrebov
2022-09-29 11:14:35 +02:00
committed by Space Team
parent 321e436132
commit 239a1a4bab
4 changed files with 24 additions and 5 deletions
@@ -671,8 +671,12 @@ class KotlinNativeTargetWithSimulatorTestsConfigurator :
super.configureTestTask(target, testTask)
val deviceIdProvider = testTask.project.provider {
Xcode.getDefaultTestDeviceId(target.konanTarget)
?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.")
if (Xcode != null) {
Xcode.getDefaultTestDeviceId(target.konanTarget)
?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.")
} else {
error("Xcode is not found.")
}
}
testTask.device.set(deviceIdProvider)
}
@@ -280,7 +280,10 @@ class Framework(
* Embed bitcode for the framework or not. See [BitcodeEmbeddingMode].
*/
val embedBitcodeMode = project.objects.property(org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode::class.java).apply {
convention(project.provider { Xcode.defaultBitcodeEmbeddingMode(konanTarget, buildType) })
convention(project.provider {
Xcode?.defaultBitcodeEmbeddingMode(konanTarget, buildType)
?: org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode.DISABLE
})
}
@Deprecated("Use 'embedBitcodeMode' property instead.")
@@ -125,7 +125,7 @@ internal fun KotlinNativeArtifact.registerLinkFrameworkTask(
task.staticFramework.set(isStatic)
if (embedBitcode != null) {
task.embedBitcode.set(embedBitcode)
} else {
} else if (Xcode != null) {
task.embedBitcode.set(project.provider { Xcode.defaultBitcodeEmbeddingMode(target, buildType) })
}
task.libraries.setFrom(project.configurations.getByName(librariesConfigurationName))
@@ -11,10 +11,22 @@ import org.jetbrains.kotlin.konan.target.Architecture.ARM32
import org.jetbrains.kotlin.konan.target.Architecture.ARM64
import org.jetbrains.kotlin.konan.target.Family
import org.jetbrains.kotlin.konan.target.Family.*
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toUpperCaseAsciiOnly
internal object Xcode {
internal val Xcode = XcodeUtils()
internal class XcodeUtils private constructor() {
companion object {
private val current: XcodeUtils? =
if (HostManager.hostIsMac) XcodeUtils() else null
operator fun invoke() = current
}
val currentVersion: String by lazy {
val out = runCommand(listOf("/usr/bin/xcrun", "xcodebuild", "-version"))
out.lines()[0].removePrefix("Xcode ")