diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt index b5d17caa671..71fa71db0aa 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt @@ -41,6 +41,8 @@ interface KotlinJsCompile : KotlinCompile interface KotlinJvmCompile : KotlinCompile +interface KotlinCommonCompile : KotlinCompile + interface KotlinJsDce : Task { val dceOptions: KotlinJsDceOptions diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt index 4da21ccac20..fae753980f7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt @@ -22,10 +22,19 @@ import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompile +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptionsImpl +import org.jetbrains.kotlin.gradle.dsl.fillDefaultValues import org.jetbrains.kotlin.incremental.ChangedFiles import java.io.File -internal open class KotlinCompileCommon : AbstractKotlinCompile() { +internal open class KotlinCompileCommon : AbstractKotlinCompile(), KotlinCommonCompile { + + private val kotlinOptionsImpl = KotlinMultiplatformCommonOptionsImpl() + override val kotlinOptions: KotlinMultiplatformCommonOptions + get() = kotlinOptionsImpl + override fun createCompilerArgs(): K2MetadataCompilerArguments = K2MetadataCompilerArguments() @@ -35,7 +44,12 @@ internal open class KotlinCompileCommon : AbstractKotlinCompile = findKotlinMetadataCompilerClasspath(project) - override fun callCompiler(args: K2MetadataCompilerArguments, sourceRoots: SourceRoots, changedFiles: ChangedFiles) { + override fun setupCompilerArgs(args: K2MetadataCompilerArguments, defaultsOnly: Boolean) { + super.setupCompilerArgs(args, defaultsOnly) + args.apply { fillDefaultValues() } + + if (defaultsOnly) return + val classpathList = classpath.files.toMutableList() val friendTask = friendTaskName?.let { project.tasks.findByName(it) } as? AbstractCompile friendTask?.let { classpathList.add(it.destinationDir) } @@ -43,9 +57,12 @@ internal open class KotlinCompileCommon : AbstractKotlinCompile()) { it.canonicalPath } } + kotlinOptionsImpl.updateArguments(args) + } + + override fun callCompiler(args: K2MetadataCompilerArguments, sourceRoots: SourceRoots, changedFiles: ChangedFiles) { val messageCollector = GradleMessageCollector(logger) val outputItemCollector = OutputItemsCollectorImpl() val compilerRunner = GradleCompilerRunner(project)