[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.CppUsage
|
||||||
import org.jetbrains.kotlin.cpp.GitClangFormatPlugin
|
import org.jetbrains.kotlin.cpp.GitClangFormatPlugin
|
||||||
import org.jetbrains.kotlin.CompareDistributionSignatures
|
import org.jetbrains.kotlin.CompareDistributionSignatures
|
||||||
|
import org.jetbrains.kotlin.xcode.XcodeOverridePlugin
|
||||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
import org.apache.tools.ant.filters.ReplaceTokens
|
import org.apache.tools.ant.filters.ReplaceTokens
|
||||||
import org.jetbrains.kotlin.UtilsKt
|
import org.jetbrains.kotlin.UtilsKt
|
||||||
@@ -44,6 +45,8 @@ buildscript {
|
|||||||
|
|
||||||
defaultTasks 'clean', 'dist'
|
defaultTasks 'clean', 'dist'
|
||||||
|
|
||||||
|
apply plugin: XcodeOverridePlugin
|
||||||
|
|
||||||
if (PlatformInfo.isMac()) {
|
if (PlatformInfo.isMac()) {
|
||||||
PlatformInfo.checkXcodeVersion(project)
|
PlatformInfo.checkXcodeVersion(project)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user