From cfe9f0d57933423a589f3e98b5dc2cac300e4108 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 16 Dec 2016 15:08:24 +0300 Subject: [PATCH] Multi-platform Projects: Enable multi-platform projects for platform modules which depend on common modules Original commit: 332d1f64055f84910c13a607542df4dddabb6188 --- .../kotlin/jps/JpsKotlinCompilerSettings.kt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/JpsKotlinCompilerSettings.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/JpsKotlinCompilerSettings.kt index 870246222e2..3aae4895765 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/JpsKotlinCompilerSettings.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/JpsKotlinCompilerSettings.kt @@ -20,6 +20,7 @@ import org.jetbrains.jps.model.JpsProject import org.jetbrains.jps.model.ex.JpsElementBase import org.jetbrains.jps.model.ex.JpsElementChildRoleBase import org.jetbrains.jps.model.module.JpsModule +import org.jetbrains.jps.model.module.JpsModuleDependency import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments @@ -61,15 +62,27 @@ class JpsKotlinCompilerSettings : JpsElementBase() { return settings } + private val JpsModule.targetPlatform: TargetPlatformKind<*>? + get() { + val facetSettings = kotlinFacetExtension?.settings ?: return TargetPlatformKind.Default + if (facetSettings.useProjectSettings) return TargetPlatformKind.Default + return facetSettings.versionInfo.targetPlatformKind + } + fun getCommonCompilerArguments(module: JpsModule): CommonCompilerArguments { val defaultArguments = getSettings(module.project).commonCompilerArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments if (facetSettings.useProjectSettings) return defaultArguments val (languageLevel, apiLevel) = facetSettings.versionInfo - return facetSettings.compilerInfo.commonCompilerArguments?.apply { + val facetArguments = facetSettings.compilerInfo.commonCompilerArguments ?: return defaultArguments + return copyBean(facetArguments).apply { languageVersion = languageLevel?.description apiVersion = apiLevel?.description - } ?: defaultArguments + multiPlatform = module + .dependenciesList + .dependencies + .any { (it as? JpsModuleDependency)?.module?.targetPlatform == TargetPlatformKind.Default } + } } fun setCommonCompilerArguments(project: JpsProject, commonCompilerSettings: CommonCompilerArguments) {