From f1261bd79915fefcafaf3f8d576772e18eb74f28 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 18 Jan 2022 10:05:32 +0100 Subject: [PATCH] [MPP, KPM]: Generate KpmNativeVariants from KonanTargets --- .../build.gradle.kts | 9 +- .../generators/gradle/dsl/codegenUtils.kt | 17 +- .../gradle/dsl/kpmNativeVariantCodegen.kt | 102 +++ .../gradle/dsl/mppNativeBinaryDSLCodegen.kt | 1 - .../gradle/dsl/mppPresetFunctionsCodegen.kt | 1 - .../plugin/mpp/pm20/KotlinNativeVariant.kt | 116 --- .../plugin/mpp/pm20/KpmNativeVariants.kt | 663 ++++++++++++++++++ .../plugin/mpp/pm20/VariantFactories.kt | 9 +- .../targets/native/KotlinNativeTarget.kt | 2 +- .../native/KotlinNativeTargetPreset.kt | 12 +- 10 files changed, 787 insertions(+), 145 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts index f7caafe32a0..619055d6d04 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts @@ -1,5 +1,3 @@ -import org.gradle.jvm.tasks.Jar - plugins { kotlin("jvm") } @@ -20,7 +18,12 @@ val generateAbstractBinaryContainer by generator( sourceSets["main"] ) -listOf(generateMppTargetContainerWithPresets, generateAbstractBinaryContainer).forEach { +val generateKpmNativeVariants by generator( + "org.jetbrains.kotlin.generators.gradle.dsl.KpmNativeVariantCodegenKt", + sourceSets["main"] +) + +listOf(generateMppTargetContainerWithPresets, generateAbstractBinaryContainer, generateKpmNativeVariants).forEach { it.systemProperty( "org.jetbrains.kotlin.generators.gradle.dsl.outputSourceRoot", project(":kotlin-gradle-plugin").projectDir.resolve("src/main/kotlin").absolutePath diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/codegenUtils.kt b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/codegenUtils.kt index a8d972efa38..22776f751dc 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/codegenUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/codegenUtils.kt @@ -32,9 +32,18 @@ internal fun TypeName.renderErased(): String = internal fun TypeName.collectFqNames(): Set = setOf(fqName) + typeArguments.flatMap { it.collectFqNames() }.toSet() -internal fun String.indented(nSpaces: Int = 4): String { +/** + * @param skipFirstLine if true doesn't indent first line + */ +internal fun String.indented(nSpaces: Int = 4, skipFirstLine: Boolean = false): String { val spaces = String(CharArray(nSpaces) { ' ' }) - return lines().joinToString("\n") { - if (it.isNotBlank()) "$spaces$it" else it - } + + return lines() + .withIndex() + .joinToString(separator = "\n") { (index, line) -> + if (skipFirstLine && index == 0) return@joinToString line + if (line.isNotBlank()) "$spaces$line" else line + } } + +internal val outputSourceRoot get() = System.getProperties()["org.jetbrains.kotlin.generators.gradle.dsl.outputSourceRoot"] as String \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt new file mode 100644 index 00000000000..2bd9c65752c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt @@ -0,0 +1,102 @@ +/* + * Copyright 2010-2022 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. + */ + +@file:OptIn(ExperimentalPathApi::class) + +package org.jetbrains.kotlin.generators.gradle.dsl + +import org.jetbrains.kotlin.konan.target.KonanTarget +import org.jetbrains.kotlin.konan.target.presetName +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.Path +import kotlin.io.path.writeText + +fun main() { + generateKpmNativeVariantPresets() +} + +fun generateKpmNativeVariantPresets() { + val sourceCode = kpmNativeVariantsSourceCode() + Path(outputSourceRoot) + .resolve(packageName.replace(".", "/")) + .resolve(fileName) + .writeText(sourceCode) +} + +fun kpmNativeVariantsSourceCode() = """ + package $packageName + + import org.gradle.api.artifacts.Configuration + import org.jetbrains.kotlin.konan.target.KonanTarget + import javax.inject.Inject + + // DO NOT EDIT MANUALLY! Generated by ${object {}.javaClass.enclosingClass.name} + ${variantClasses().indented(skipFirstLine = true)} + + ${allVariantConstructors().indented(skipFirstLine = true)} + + ${kpmVariantClassFunction().indented(skipFirstLine = true)} +""".trimIndent() + +private val fileName = "KpmNativeVariants.kt" + +private val packageName = "org.jetbrains.kotlin.gradle.plugin.mpp.pm20" + +private fun allKonanTargets() = KonanTarget.predefinedTargets.values + +private fun variantClasses() = allKonanTargets() + .map { variantClass(it) } + .joinToString("\n\n") + +private fun variantClass(konanTarget: KonanTarget) = """ + open class ${konanTarget.variantClassName} @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? + ) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.${konanTarget.className}, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration + ) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.${konanTarget.className}, ${konanTarget.variantClassName}::class.java, ::${konanTarget.variantClassName} + ) + } + } +""".trimIndent() + +private fun kpmVariantClassFunction(): String { + val konanTargetToVariant = allKonanTargets() + .joinToString("\n") { "KonanTarget.${it.className} -> ${it.variantClassName}::class.java" } + + return """ + internal fun kpmVariantClass(konanTarget: KonanTarget): Class? = when (konanTarget) { + ${konanTargetToVariant.indented(nSpaces = 12, skipFirstLine = true)} + else -> null + } + """.trimIndent() +} + +private fun allVariantConstructors() = allKonanTargets() + .joinToString( + prefix = "internal val allKpmNativeVariantConstructors = listOf(\n", + separator = ",\n", + postfix = "\n)" + ) { "${it.variantClassName}.constructor".indented() } + +private val KonanTarget.variantClassName + get() = presetName + .capitalize() + .let { "Kotlin${it}Variant" } + +private val KonanTarget.className get() = javaClass.simpleName \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppNativeBinaryDSLCodegen.kt b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppNativeBinaryDSLCodegen.kt index f85bdc8e799..7137dc7b7d2 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppNativeBinaryDSLCodegen.kt +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppNativeBinaryDSLCodegen.kt @@ -201,7 +201,6 @@ fun generateAbstractKotlinNativeBinaryContainer() { "}" ).joinToString(separator = "\n\n") - val outputSourceRoot = System.getProperties()["org.jetbrains.kotlin.generators.gradle.dsl.outputSourceRoot"] val targetFile = File("$outputSourceRoot/${className.fqName.replace(".", "/")}.kt") targetFile.writeText(code) } diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt index 874058e3e12..e7b96abd56a 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt @@ -53,7 +53,6 @@ private fun generateKotlinTargetContainerWithPresetFunctionsInterface() { "}" ).joinToString("\n\n") - val outputSourceRoot = System.getProperties()["org.jetbrains.kotlin.generators.gradle.dsl.outputSourceRoot"] val targetFile = File("$outputSourceRoot/${className.fqName.replace(".", "/")}.kt") targetFile.writeText(code) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt index 868e4f23914..6615c030f7e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt @@ -72,122 +72,6 @@ class KotlinNativeVariantConstructor( ) } -// FIXME codegen -open class KotlinLinuxX64Variant @Inject constructor( - containingModule: KotlinGradleModule, - fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - hostSpecificMetadataElementsConfiguration: Configuration? -) : KotlinNativeVariantInternal( - containingModule = containingModule, - fragmentName = fragmentName, - konanTarget = KonanTarget.LINUX_X64, - dependencyConfigurations = dependencyConfigurations, - compileDependencyConfiguration = compileDependencyConfiguration, - apiElementsConfiguration = apiElementsConfiguration, - hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration -) { - companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.LINUX_X64, KotlinLinuxX64Variant::class.java, ::KotlinLinuxX64Variant - ) - } -} - -open class KotlinMacosX64Variant @Inject constructor( - containingModule: KotlinGradleModule, - fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - hostSpecificMetadataElementsConfiguration: Configuration? -) : KotlinNativeVariantInternal( - containingModule = containingModule, - fragmentName = fragmentName, - konanTarget = KonanTarget.MACOS_X64, - dependencyConfigurations = dependencyConfigurations, - compileDependencyConfiguration = compileDependencyConfiguration, - apiElementsConfiguration = apiElementsConfiguration, - hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration -) { - companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.MACOS_X64, KotlinMacosX64Variant::class.java, ::KotlinMacosX64Variant - ) - } -} - -open class KotlinMacosArm64Variant @Inject constructor( - containingModule: KotlinGradleModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - hostSpecificMetadataElementsConfiguration: Configuration? -) : KotlinNativeVariantInternal( - containingModule = containingModule, - fragmentName = fragmentName, - konanTarget = KonanTarget.MACOS_ARM64, - dependencyConfigurations = dependencyConfigurations, - compileDependencyConfiguration = compileDependencyConfiguration, - apiElementsConfiguration = apiElementsConfiguration, - hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration -) { - companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.MACOS_ARM64, KotlinMacosArm64Variant::class.java, ::KotlinMacosArm64Variant - ) - } -} - -open class KotlinIosX64Variant @Inject constructor( - containingModule: KotlinGradleModule, - fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - hostSpecificMetadataElementsConfiguration: Configuration? -) : KotlinNativeVariantInternal( - containingModule = containingModule, - fragmentName = fragmentName, - konanTarget = KonanTarget.IOS_X64, - dependencyConfigurations = dependencyConfigurations, - compileDependencyConfiguration = compileDependencyConfiguration, - apiElementsConfiguration = apiElementsConfiguration, - hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration -) { - companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.IOS_X64, KotlinIosX64Variant::class.java, ::KotlinIosX64Variant - ) - } -} - -open class KotlinIosArm64Variant @Inject constructor( - containingModule: KotlinGradleModule, - fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - hostSpecificMetadataElementsConfiguration: Configuration? -) : KotlinNativeVariantInternal( - containingModule = containingModule, - fragmentName = fragmentName, - konanTarget = KonanTarget.IOS_ARM64, - dependencyConfigurations = dependencyConfigurations, - compileDependencyConfiguration = compileDependencyConfiguration, - apiElementsConfiguration = apiElementsConfiguration, - hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration -) { - companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.IOS_ARM64, KotlinIosArm64Variant::class.java, ::KotlinIosArm64Variant - ) - } -} - - interface KotlinNativeCompilationData : KotlinCompilationData { val konanTarget: KonanTarget val enableEndorsedLibs: Boolean diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt new file mode 100644 index 00000000000..2b901111886 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt @@ -0,0 +1,663 @@ +package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 + +import org.gradle.api.artifacts.Configuration +import org.jetbrains.kotlin.konan.target.KonanTarget +import javax.inject.Inject + +// DO NOT EDIT MANUALLY! Generated by org.jetbrains.kotlin.generators.gradle.dsl.KpmNativeVariantCodegenKt +open class KotlinAndroidNativeX64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.ANDROID_X64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.ANDROID_X64, KotlinAndroidNativeX64Variant::class.java, ::KotlinAndroidNativeX64Variant + ) + } +} + +open class KotlinAndroidNativeX86Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.ANDROID_X86, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.ANDROID_X86, KotlinAndroidNativeX86Variant::class.java, ::KotlinAndroidNativeX86Variant + ) + } +} + +open class KotlinAndroidNativeArm32Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.ANDROID_ARM32, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.ANDROID_ARM32, KotlinAndroidNativeArm32Variant::class.java, ::KotlinAndroidNativeArm32Variant + ) + } +} + +open class KotlinAndroidNativeArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.ANDROID_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.ANDROID_ARM64, KotlinAndroidNativeArm64Variant::class.java, ::KotlinAndroidNativeArm64Variant + ) + } +} + +open class KotlinIosArm32Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.IOS_ARM32, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.IOS_ARM32, KotlinIosArm32Variant::class.java, ::KotlinIosArm32Variant + ) + } +} + +open class KotlinIosArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.IOS_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.IOS_ARM64, KotlinIosArm64Variant::class.java, ::KotlinIosArm64Variant + ) + } +} + +open class KotlinIosX64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.IOS_X64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.IOS_X64, KotlinIosX64Variant::class.java, ::KotlinIosX64Variant + ) + } +} + +open class KotlinIosSimulatorArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.IOS_SIMULATOR_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.IOS_SIMULATOR_ARM64, KotlinIosSimulatorArm64Variant::class.java, ::KotlinIosSimulatorArm64Variant + ) + } +} + +open class KotlinWatchosArm32Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.WATCHOS_ARM32, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.WATCHOS_ARM32, KotlinWatchosArm32Variant::class.java, ::KotlinWatchosArm32Variant + ) + } +} + +open class KotlinWatchosArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.WATCHOS_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.WATCHOS_ARM64, KotlinWatchosArm64Variant::class.java, ::KotlinWatchosArm64Variant + ) + } +} + +open class KotlinWatchosX86Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.WATCHOS_X86, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.WATCHOS_X86, KotlinWatchosX86Variant::class.java, ::KotlinWatchosX86Variant + ) + } +} + +open class KotlinWatchosX64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.WATCHOS_X64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.WATCHOS_X64, KotlinWatchosX64Variant::class.java, ::KotlinWatchosX64Variant + ) + } +} + +open class KotlinWatchosSimulatorArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.WATCHOS_SIMULATOR_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.WATCHOS_SIMULATOR_ARM64, KotlinWatchosSimulatorArm64Variant::class.java, ::KotlinWatchosSimulatorArm64Variant + ) + } +} + +open class KotlinTvosArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.TVOS_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.TVOS_ARM64, KotlinTvosArm64Variant::class.java, ::KotlinTvosArm64Variant + ) + } +} + +open class KotlinTvosX64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.TVOS_X64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.TVOS_X64, KotlinTvosX64Variant::class.java, ::KotlinTvosX64Variant + ) + } +} + +open class KotlinTvosSimulatorArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.TVOS_SIMULATOR_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.TVOS_SIMULATOR_ARM64, KotlinTvosSimulatorArm64Variant::class.java, ::KotlinTvosSimulatorArm64Variant + ) + } +} + +open class KotlinLinuxX64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.LINUX_X64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.LINUX_X64, KotlinLinuxX64Variant::class.java, ::KotlinLinuxX64Variant + ) + } +} + +open class KotlinMingwX86Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.MINGW_X86, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.MINGW_X86, KotlinMingwX86Variant::class.java, ::KotlinMingwX86Variant + ) + } +} + +open class KotlinMingwX64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.MINGW_X64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.MINGW_X64, KotlinMingwX64Variant::class.java, ::KotlinMingwX64Variant + ) + } +} + +open class KotlinMacosX64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.MACOS_X64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.MACOS_X64, KotlinMacosX64Variant::class.java, ::KotlinMacosX64Variant + ) + } +} + +open class KotlinMacosArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.MACOS_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.MACOS_ARM64, KotlinMacosArm64Variant::class.java, ::KotlinMacosArm64Variant + ) + } +} + +open class KotlinLinuxArm64Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.LINUX_ARM64, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.LINUX_ARM64, KotlinLinuxArm64Variant::class.java, ::KotlinLinuxArm64Variant + ) + } +} + +open class KotlinLinuxArm32HfpVariant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.LINUX_ARM32_HFP, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.LINUX_ARM32_HFP, KotlinLinuxArm32HfpVariant::class.java, ::KotlinLinuxArm32HfpVariant + ) + } +} + +open class KotlinLinuxMips32Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.LINUX_MIPS32, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.LINUX_MIPS32, KotlinLinuxMips32Variant::class.java, ::KotlinLinuxMips32Variant + ) + } +} + +open class KotlinLinuxMipsel32Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.LINUX_MIPSEL32, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.LINUX_MIPSEL32, KotlinLinuxMipsel32Variant::class.java, ::KotlinLinuxMipsel32Variant + ) + } +} + +open class KotlinWasm32Variant @Inject constructor( + containingModule: KotlinGradleModule, + fragmentName: String, + dependencyConfigurations: KotlinFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? +) : KotlinNativeVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + konanTarget = KonanTarget.WASM32, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration +) { + companion object { + val constructor = KotlinNativeVariantConstructor( + KonanTarget.WASM32, KotlinWasm32Variant::class.java, ::KotlinWasm32Variant + ) + } +} + +internal val allKpmNativeVariantConstructors = listOf( + KotlinAndroidNativeX64Variant.constructor, + KotlinAndroidNativeX86Variant.constructor, + KotlinAndroidNativeArm32Variant.constructor, + KotlinAndroidNativeArm64Variant.constructor, + KotlinIosArm32Variant.constructor, + KotlinIosArm64Variant.constructor, + KotlinIosX64Variant.constructor, + KotlinIosSimulatorArm64Variant.constructor, + KotlinWatchosArm32Variant.constructor, + KotlinWatchosArm64Variant.constructor, + KotlinWatchosX86Variant.constructor, + KotlinWatchosX64Variant.constructor, + KotlinWatchosSimulatorArm64Variant.constructor, + KotlinTvosArm64Variant.constructor, + KotlinTvosX64Variant.constructor, + KotlinTvosSimulatorArm64Variant.constructor, + KotlinLinuxX64Variant.constructor, + KotlinMingwX86Variant.constructor, + KotlinMingwX64Variant.constructor, + KotlinMacosX64Variant.constructor, + KotlinMacosArm64Variant.constructor, + KotlinLinuxArm64Variant.constructor, + KotlinLinuxArm32HfpVariant.constructor, + KotlinLinuxMips32Variant.constructor, + KotlinLinuxMipsel32Variant.constructor, + KotlinWasm32Variant.constructor +) + +internal fun kpmNativeVariantClass(konanTarget: KonanTarget): Class? = when (konanTarget) { + KonanTarget.ANDROID_X64 -> KotlinAndroidNativeX64Variant::class.java + KonanTarget.ANDROID_X86 -> KotlinAndroidNativeX86Variant::class.java + KonanTarget.ANDROID_ARM32 -> KotlinAndroidNativeArm32Variant::class.java + KonanTarget.ANDROID_ARM64 -> KotlinAndroidNativeArm64Variant::class.java + KonanTarget.IOS_ARM32 -> KotlinIosArm32Variant::class.java + KonanTarget.IOS_ARM64 -> KotlinIosArm64Variant::class.java + KonanTarget.IOS_X64 -> KotlinIosX64Variant::class.java + KonanTarget.IOS_SIMULATOR_ARM64 -> KotlinIosSimulatorArm64Variant::class.java + KonanTarget.WATCHOS_ARM32 -> KotlinWatchosArm32Variant::class.java + KonanTarget.WATCHOS_ARM64 -> KotlinWatchosArm64Variant::class.java + KonanTarget.WATCHOS_X86 -> KotlinWatchosX86Variant::class.java + KonanTarget.WATCHOS_X64 -> KotlinWatchosX64Variant::class.java + KonanTarget.WATCHOS_SIMULATOR_ARM64 -> KotlinWatchosSimulatorArm64Variant::class.java + KonanTarget.TVOS_ARM64 -> KotlinTvosArm64Variant::class.java + KonanTarget.TVOS_X64 -> KotlinTvosX64Variant::class.java + KonanTarget.TVOS_SIMULATOR_ARM64 -> KotlinTvosSimulatorArm64Variant::class.java + KonanTarget.LINUX_X64 -> KotlinLinuxX64Variant::class.java + KonanTarget.MINGW_X86 -> KotlinMingwX86Variant::class.java + KonanTarget.MINGW_X64 -> KotlinMingwX64Variant::class.java + KonanTarget.MACOS_X64 -> KotlinMacosX64Variant::class.java + KonanTarget.MACOS_ARM64 -> KotlinMacosArm64Variant::class.java + KonanTarget.LINUX_ARM64 -> KotlinLinuxArm64Variant::class.java + KonanTarget.LINUX_ARM32_HFP -> KotlinLinuxArm32HfpVariant::class.java + KonanTarget.LINUX_MIPS32 -> KotlinLinuxMips32Variant::class.java + KonanTarget.LINUX_MIPSEL32 -> KotlinLinuxMipsel32Variant::class.java + KonanTarget.WASM32 -> KotlinWasm32Variant::class.java + else -> null +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt index 3f54a9fb4a4..510790f22c9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt @@ -22,13 +22,6 @@ internal fun registerDefaultVariantFactories(project: Project) { constructor.variantClass, KotlinNativeVariantFactory(module, constructor) ) - listOf( - // FIXME codegen, add missing native targets - KotlinLinuxX64Variant.constructor, - KotlinMacosX64Variant.constructor, - KotlinMacosArm64Variant.constructor, - KotlinIosX64Variant.constructor, - KotlinIosArm64Variant.constructor - ).forEach { constructor -> registerNativeVariantFactory(constructor) } + allKpmNativeVariantConstructors.forEach { constructor -> registerNativeVariantFactory(constructor) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt index cb1cd2a5ccf..0a9ce697df1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt @@ -143,7 +143,7 @@ open class KotlinNativeTarget @Inject constructor( internal val isKpm: Boolean get() = project.hasKpmModel && - AbstractKotlinNativeTargetPreset.kpmVariantClass(konanTarget) != null + kpmNativeVariantClass(konanTarget) != null } private val hostManager by lazy { HostManager() } 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 f6b65ff8939..6198da948d2 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 @@ -71,7 +71,7 @@ abstract class AbstractKotlinNativeTargetPreset( protected abstract fun instantiateTarget(name: String): T - private val kpmVariantClass = kpmVariantClass(konanTarget) + private val kpmVariantClass = kpmNativeVariantClass(konanTarget) protected val isKpm: Boolean get() = project.hasKpmModel && kpmVariantClass != null @@ -120,16 +120,6 @@ abstract class AbstractKotlinNativeTargetPreset( companion object { private const val KOTLIN_NATIVE_HOME_PRIVATE_PROPERTY = "konanHome" - - // FIXME: codegen - internal fun kpmVariantClass(konanTarget: KonanTarget): Class? = when (konanTarget) { - KonanTarget.IOS_ARM64 -> KotlinIosArm64Variant::class.java - KonanTarget.IOS_X64 -> KotlinIosX64Variant::class.java - KonanTarget.LINUX_X64 -> KotlinLinuxX64Variant::class.java - KonanTarget.MACOS_ARM64 -> KotlinMacosArm64Variant::class.java - KonanTarget.MACOS_X64 -> KotlinMacosX64Variant::class.java - else -> null - } } }