diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt index e92f0422075..d7279e9749c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt @@ -10,19 +10,20 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.NonDefaultTargetConfigurationIR import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.isIOS +import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.* import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module -interface NativeTargetConfigurator : TargetConfigurator +interface NativeTargetConfigurator : TargetConfigurator { + val isDesktopTarget: Boolean +} class RealNativeTargetConfigurator private constructor( override val moduleSubType: ModuleSubType ) : NativeTargetConfigurator, SimpleTargetConfigurator { override val text: String = moduleSubType.name.capitalize() + override val isDesktopTarget: Boolean + get() = moduleSubType.isNativeDesktop override fun createInnerTargetIrs(reader: Reader, module: Module): List = if (moduleSubType.isIOS) { listOf( @@ -47,6 +48,7 @@ class RealNativeTargetConfigurator private constructor( object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenceTargetConfigurator { override val moduleType = ModuleType.native + override val isDesktopTarget: Boolean = true @NonNls override val id = "nativeForCurrentSystem" diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt index 7f0ad289997..0c21a6e8e70 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt @@ -38,6 +38,14 @@ enum class ModuleSubType(val moduleType: ModuleType) { val ModuleSubType.isIOS: Boolean get() = this in EnumSet.of(ModuleSubType.iosX64, ModuleSubType.iosArm32, ModuleSubType.iosArm64) +val ModuleSubType.isNativeDesktop: Boolean + get() = this in EnumSet.of( + ModuleSubType.linuxX64, + ModuleSubType.macosX64, + ModuleSubType.mingwX64, ModuleSubType.mingwX86 + ) + + fun ModuleType.correspondingStdlib(): StdlibType? = when (this) { ModuleType.jvm -> StdlibType.StdlibJdk8 ModuleType.js -> StdlibType.StdlibJs diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt index 14d25388df8..46dbc614ad8 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt @@ -16,6 +16,9 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.withIrs import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle +import org.jetbrains.kotlin.tools.projectWizard.core.safeAs +import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.NativeTargetConfigurator +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module class NativeConsoleApplicationTemplate : Template() { override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title") @@ -24,6 +27,9 @@ class NativeConsoleApplicationTemplate : Template() { override val moduleTypes: Set = setOf(ModuleType.native) override val id: String = "nativeConsoleApp" + override fun isApplicableTo(module: Module): Boolean = + module.configurator.safeAs()?.isDesktopTarget == true + override fun updateTargetIr(module: ModuleIR, targetConfigurationIR: TargetConfigurationIR): TargetConfigurationIR = targetConfigurationIR.withIrs(NativeTargetInternalIR("main"))