diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt index c8ad18f5dcd..6bef86618f0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt @@ -20,10 +20,12 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName +import org.jetbrains.kotlin.konan.target.KonanTarget import java.util.concurrent.Callable class KotlinNativeCompilation( override val target: KotlinNativeTarget, + val konanTarget: KonanTarget, name: String ) : AbstractKotlinCompilation(target, name), KotlinCompilationWithResources { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilationFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilationFactory.kt index 3d53cfb875f..3869d6d93ac 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilationFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilationFactory.kt @@ -7,9 +7,6 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation -import org.jetbrains.kotlin.gradle.plugin.whenEvaluated -import org.jetbrains.kotlin.gradle.targets.native.CompilationFreeArgsValidator class KotlinNativeCompilationFactory( val project: Project, @@ -24,5 +21,5 @@ class KotlinNativeCompilationFactory( // when the compilation and the link args are separated (see KT-33717). // Note: such validation should be done in the whenEvaluate block because // a user can change args during project configuration. - KotlinNativeCompilation(target, name) + KotlinNativeCompilation(target, target.konanTarget, name) } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt index c1e9f232c6e..f841ed0e8f4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt @@ -59,7 +59,7 @@ open class KotlinNativeTargetConfigurator( producingTask: Task, copy: Boolean = false ) { - if (!compilation.target.konanTarget.enabledOnCurrentHost) { + if (!compilation.konanTarget.enabledOnCurrentHost) { return } @@ -118,7 +118,7 @@ open class KotlinNativeTargetConfigurator( this.binary = binary group = BasePlugin.BUILD_GROUP description = "Links ${binary.outputKind.description} '${binary.name}' for a target '${target.name}'." - enabled = target.konanTarget.enabledOnCurrentHost + enabled = binary.konanTarget.enabledOnCurrentHost destinationDir = binary.outputDirectory addCompilerPlugins() @@ -135,7 +135,7 @@ open class KotlinNativeTargetConfigurator( group = RUN_GROUP description = "Executes Kotlin/Native executable ${binary.name} for target ${binary.target.name}" - enabled = binary.target.konanTarget.isCurrentHost + enabled = binary.konanTarget.isCurrentHost executable = binary.outputFile.absolutePath workingDir = project.projectDir @@ -154,7 +154,7 @@ open class KotlinNativeTargetConfigurator( group = BasePlugin.BUILD_GROUP description = "Compiles a klibrary from the '${compilation.name}' " + "compilation for target '${compilation.platformType.name}'." - enabled = compilation.target.konanTarget.enabledOnCurrentHost + enabled = compilation.konanTarget.enabledOnCurrentHost destinationDir = klibOutputDirectory(compilation) addCompilerPlugins() @@ -185,7 +185,7 @@ open class KotlinNativeTargetConfigurator( description = "Generates Kotlin/Native interop library '${interop.name}' " + "for compilation '${compilation.name}'" + "of target '${konanTarget.name}'." - enabled = compilation.target.konanTarget.enabledOnCurrentHost + enabled = compilation.konanTarget.enabledOnCurrentHost val interopOutput = project.files(outputFileProvider).builtBy(this) with(compilation) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt index a408326954d..d6fade204cd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt @@ -90,8 +90,8 @@ abstract class AbstractKotlinNativeTargetPreset( // Allow IDE to resolve the libraries provided by the compiler by adding them into dependencies. result.compilations.all { compilation -> - val target = compilation.target.konanTarget - compilation.target.project.whenEvaluated { + val target = compilation.konanTarget + project.whenEvaluated { // First, put common libs: defaultLibs(!compilation.enableEndorsedLibs).forEach { project.dependencies.add(compilation.compileDependencyConfigurationName, it) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt index 3371f73f349..dd7b53d4cd8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt @@ -32,6 +32,9 @@ sealed class NativeBinary( var compilation: KotlinNativeCompilation ) : Named { + internal val konanTarget: KonanTarget + get() = compilation.konanTarget + val target: KotlinNativeTarget get() = compilation.target @@ -120,7 +123,7 @@ class Executable constructor( * Returns null if the executables's target is not a host one (macosX64, linuxX64 or mingw64). */ val runTaskName: String? - get() = if (target.konanTarget in listOf(KonanTarget.MACOS_X64, KonanTarget.LINUX_X64, KonanTarget.MINGW_X64)) { + get() = if (konanTarget in listOf(KonanTarget.MACOS_X64, KonanTarget.LINUX_X64, KonanTarget.MINGW_X64)) { lowerCamelCaseName("run", name, compilation.target.targetName) } else { null @@ -215,7 +218,7 @@ class Framework( /** * Embed bitcode for the framework or not. See [BitcodeEmbeddingMode]. */ - var embedBitcode: BitcodeEmbeddingMode = buildType.embedBitcode(target.konanTarget) + var embedBitcode: BitcodeEmbeddingMode = buildType.embedBitcode(konanTarget) /** * Enable or disable embedding bitcode for the framework. See [BitcodeEmbeddingMode]. diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt index c02bd5a599b..a45f422d1da 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt @@ -130,7 +130,7 @@ open class FatFrameworkTask: DefaultTask() { */ fun from(frameworks: Iterable) { frameworks.forEach { - val konanTarget = it.target.konanTarget + val konanTarget = it.konanTarget val arch = konanTarget.architecture require(konanTarget.family == Family.IOS) { "Cannot add a framework with target '${konanTarget.visibleName}' to the fat framework: " + @@ -165,14 +165,14 @@ open class FatFrameworkTask: DefaultTask() { } private val Framework.plistPlatform: String - get() = when(target.konanTarget) { + get() = when(konanTarget) { KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64 -> "iPhoneOS" KonanTarget.IOS_X64 -> "iPhoneSimulator" KonanTarget.TVOS_ARM64 -> "appletvos" KonanTarget.TVOS_X64 -> "appletvsimulator" KonanTarget.WATCHOS_ARM32, KonanTarget.WATCHOS_ARM64 -> "watchos" KonanTarget.WATCHOS_X86, KonanTarget.WATCHOS_X64 -> "watchsimulator" - else -> error("Fat frameworks are not supported for target `${target.konanTarget.visibleName}`") + else -> error("Fat frameworks are not supported for target `${konanTarget.visibleName}`") } // Runs the PlistBuddy utility with the given commands to configure the given plist file. diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index c4287c5b0cc..23571a19d70 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -118,7 +118,7 @@ abstract class AbstractKotlinNativeCompile : Abstra } val target: String - @Input get() = compilation.target.konanTarget.name + @Input get() = compilation.konanTarget.name // region Compiler options. @get:Internal @@ -148,7 +148,7 @@ abstract class AbstractKotlinNativeCompile : Abstra // OutputFile is located under the destinationDir, so there is no need to register it as a separate output. @Internal val outputFile: Provider = project.provider { - val konanTarget = compilation.target.konanTarget + val konanTarget = compilation.konanTarget val prefix = outputKind.prefix(konanTarget) val suffix = outputKind.suffix(konanTarget) @@ -614,7 +614,7 @@ open class CInteropProcess : DefaultTask() { lateinit var destinationDir: Provider val konanTarget: KonanTarget - @Internal get() = settings.compilation.target.konanTarget + @Internal get() = settings.compilation.konanTarget val interopName: String @Internal get() = settings.name