[K/N] Fix CC in Xcode usage ^KTI-1553
- Perform all calls to xcrun in XcodeValueSource. - Use the fully computed Xcode instance as the current Xcode instance. - Hide all of this inside a Gradle plugin and apply it to kotlin-native project.
This commit is contained in:
committed by
Space Team
parent
f246d1c037
commit
5c2017fa5f
+26
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.xcode
|
||||
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||
|
||||
open class XcodeOverridePlugin : Plugin<Project> {
|
||||
override fun apply(project: Project) {
|
||||
// Only for macOS hosts.
|
||||
if (!HostManager.hostIsMac)
|
||||
return
|
||||
// Only if we use regular Xcode installation.
|
||||
if (DependencyProcessor.isInternalSeverAvailable)
|
||||
return
|
||||
val xcodeProvider: Provider<Xcode> = project.providers.of(XcodeValueSource::class) {}
|
||||
Xcode.xcodeOverride = xcodeProvider.get()
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.xcode
|
||||
|
||||
import org.gradle.api.provider.ValueSource
|
||||
import org.gradle.api.provider.ValueSourceParameters
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
|
||||
private class XcodeSnapshot(original: Xcode) : Xcode {
|
||||
override val additionalTools = original.additionalTools
|
||||
override val appletvosSdk = original.appletvosSdk
|
||||
override val appletvsimulatorSdk = original.appletvsimulatorSdk
|
||||
override val iphoneosSdk = original.iphoneosSdk
|
||||
override val iphonesimulatorSdk = original.iphonesimulatorSdk
|
||||
override val macosxSdk = original.macosxSdk
|
||||
override val simulatorRuntimes = original.simulatorRuntimes
|
||||
override val toolchain = original.toolchain
|
||||
override val version = original.version
|
||||
override val watchosSdk = original.watchosSdk
|
||||
override val watchsimulatorSdk = original.watchsimulatorSdk
|
||||
}
|
||||
|
||||
abstract class XcodeValueSource: ValueSource<Xcode, ValueSourceParameters.None> {
|
||||
override fun obtain(): Xcode = XcodeSnapshot(Xcode.defaultCurrent())
|
||||
}
|
||||
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.cpp.CompilationDatabasePlugin
|
||||
import org.jetbrains.kotlin.cpp.CppUsage
|
||||
import org.jetbrains.kotlin.cpp.GitClangFormatPlugin
|
||||
import org.jetbrains.kotlin.CompareDistributionSignatures
|
||||
import org.jetbrains.kotlin.xcode.XcodeOverridePlugin
|
||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
import org.jetbrains.kotlin.UtilsKt
|
||||
@@ -44,6 +45,8 @@ buildscript {
|
||||
|
||||
defaultTasks 'clean', 'dist'
|
||||
|
||||
apply plugin: XcodeOverridePlugin
|
||||
|
||||
if (PlatformInfo.isMac()) {
|
||||
PlatformInfo.checkXcodeVersion(project)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user