Cleanup xcode utils
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt
index 75edc67..10a7385 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt
@@ -8,7 +8,7 @@
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.runProcess
-import org.jetbrains.kotlin.gradle.utils.Xcode
+import org.jetbrains.kotlin.gradle.utils.XcodeUtils
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.DisplayName
@@ -21,8 +21,7 @@
@OsCondition(supportedOn = [OS.MAC], enabledOnCI = [OS.MAC])
class NativeXcodeSimulatorTestsIT : KGPBaseTest() {
private val defaultIosSimulator by lazy {
- val xcode = Xcode ?: error("XCode is expected to be defined")
- xcode.getDefaultTestDeviceId(KonanTarget.IOS_SIMULATOR_ARM64) ?: error("No simulator found for iOS ARM64")
+ XcodeUtils.getDefaultTestDeviceId(KonanTarget.IOS_SIMULATOR_ARM64) ?: error("No simulator found for iOS ARM64")
}
@DisplayName("A user-friendly error message is produced when the standalone mode is disabled and no simulator has booted")
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt
index b522a5d..0647754 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt
@@ -47,7 +47,7 @@
import org.jetbrains.kotlin.gradle.testing.internal.configureConventions
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
import org.jetbrains.kotlin.gradle.testing.testTaskName
-import org.jetbrains.kotlin.gradle.utils.Xcode
+import org.jetbrains.kotlin.gradle.utils.XcodeUtils
import org.jetbrains.kotlin.gradle.utils.newInstance
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
@@ -588,13 +588,11 @@
override fun configureTestTask(target: KotlinNativeTargetWithSimulatorTests, testTask: KotlinNativeSimulatorTest) {
super.configureTestTask(target, testTask)
- if (Xcode != null) {
- 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.")
- }
- testTask.device.convention(deviceIdProvider).finalizeValueOnRead()
+ val deviceIdProvider = testTask.project.provider {
+ XcodeUtils.getDefaultTestDeviceId(target.konanTarget)
+ ?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.")
}
+ testTask.device.convention(deviceIdProvider).finalizeValueOnRead()
testTask.standalone.convention(true).finalizeValueOnRead()
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/Xcode.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/XcodeUtils.kt
similarity index 64%
rename from libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/Xcode.kt
rename to libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/XcodeUtils.kt
index d980d4b..27cfbd3 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/Xcode.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/XcodeUtils.kt
@@ -16,41 +16,39 @@
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toUpperCaseAsciiOnly
@InternalKotlinGradlePluginApi
-val Xcode = XcodeUtils.INSTANCE
+object XcodeUtils {
-@InternalKotlinGradlePluginApi
-class XcodeUtils private constructor() {
-
- companion object {
- internal val INSTANCE: XcodeUtils? =
- if (HostManager.hostIsMac) XcodeUtils() else null
-
- fun bitcodeEmbeddingMode(
- outputKind: CompilerOutputKind,
- userMode: BitcodeEmbeddingMode?,
- xcodeVersion: Provider<RegularFile>,
- target: KonanTarget,
- debuggable: Boolean,
- ): BitcodeEmbeddingMode {
- return when {
- outputKind != CompilerOutputKind.FRAMEWORK -> BitcodeEmbeddingMode.DISABLE
- userMode != null -> userMode
- bitcodeSupported(xcodeVersion, target) -> when (debuggable) {
- true -> BitcodeEmbeddingMode.MARKER
- false -> BitcodeEmbeddingMode.BITCODE
- }
- else -> BitcodeEmbeddingMode.DISABLE
+ fun bitcodeEmbeddingMode(
+ outputKind: CompilerOutputKind,
+ userMode: BitcodeEmbeddingMode?,
+ xcodeVersion: Provider<RegularFile>,
+ target: KonanTarget,
+ debuggable: Boolean,
+ ): BitcodeEmbeddingMode {
+ return when {
+ outputKind != CompilerOutputKind.FRAMEWORK -> BitcodeEmbeddingMode.DISABLE
+ userMode != null -> userMode
+ bitcodeSupported(xcodeVersion, target) -> when (debuggable) {
+ true -> BitcodeEmbeddingMode.MARKER
+ false -> BitcodeEmbeddingMode.BITCODE
}
- }
-
- private fun bitcodeSupported(xcodeVersion: Provider<RegularFile>, target: KonanTarget): Boolean {
- return XcodeVersion.parse(xcodeVersion).major < 14
- && target.family in listOf(IOS, WATCHOS, TVOS)
- && target.architecture in listOf(ARM32, ARM64)
+ else -> BitcodeEmbeddingMode.DISABLE
}
}
+ private fun bitcodeSupported(xcodeVersion: Provider<RegularFile>, target: KonanTarget): Boolean {
+ return XcodeVersion.parse(xcodeVersion).major < 14
+ && target.family in listOf(IOS, WATCHOS, TVOS)
+ && target.architecture in listOf(ARM32, ARM64)
+ }
+
+ fun getDefaultTestDeviceId(target: KonanTarget): String? = defaultTestDevices[target.family]
+
private val defaultTestDevices: Map<Family, String> by lazy {
+ if (!HostManager.hostIsMac) {
+ return@lazy emptyMap()
+ }
+
val osRegex = "-- .* --".toRegex()
val deviceRegex = """[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}""".toRegex()
@@ -81,8 +79,6 @@
result
}
- fun getDefaultTestDeviceId(target: KonanTarget): String? = defaultTestDevices[target.family]
-
}
internal fun XcodeVersion.Companion.parse(file: Provider<RegularFile>): XcodeVersion {