[Gradle][Minor] Move KotlinJsIrSourceSetProcessor into separate source file

KT-54312
This commit is contained in:
Sebastian Sellmair
2022-09-27 14:14:02 +02:00
committed by Space Team
parent 090951afd7
commit 4fe12d7704
2 changed files with 65 additions and 52 deletions
@@ -0,0 +1,65 @@
/*
* 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.
*/
package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.CompilerJsOptions
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
import org.jetbrains.kotlin.gradle.tasks.configuration.Kotlin2JsCompileConfig
import org.jetbrains.kotlin.gradle.tasks.configuration.KotlinJsIrLinkConfig
internal class KotlinJsIrSourceSetProcessor(
tasksProvider: KotlinTasksProvider,
kotlinCompilation: AbstractKotlinCompilation<*>
) : KotlinSourceSetProcessor<Kotlin2JsCompile>(
tasksProvider, taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.",
kotlinCompilation = kotlinCompilation
) {
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out Kotlin2JsCompile> {
val configAction = Kotlin2JsCompileConfig(kotlinCompilation)
applyStandardTaskConfiguration(configAction)
return tasksProvider.registerKotlinJSTask(
project,
taskName,
kotlinCompilation.compilerOptions.options as CompilerJsOptions,
configAction
)
}
override fun doTargetSpecificProcessing() {
project.tasks.named(kotlinCompilation.compileAllTaskName).configure {
it.dependsOn(kotlinTask)
}
val compilation = kotlinCompilation as KotlinJsIrCompilation
compilation.binaries
.withType(JsIrBinary::class.java)
.all { binary ->
val configAction = KotlinJsIrLinkConfig(binary)
configAction.configureTask {
it.description = taskDescription
it.libraries.from({ kotlinCompilation.compileDependencyFiles })
}
configAction.configureTask { task ->
task.modeProperty.set(binary.mode)
task.dependsOn(kotlinTask)
}
tasksProvider.registerKotlinJsIrTask(project, binary.linkTaskName, configAction)
}
project.whenEvaluated {
val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation)
}
}
}
@@ -9,7 +9,6 @@ import com.android.build.gradle.*
import org.gradle.api.*
import org.gradle.api.attributes.Category
import org.gradle.api.attributes.Usage
import org.gradle.api.file.FileCollection
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.provider.Provider
import org.gradle.api.publish.PublishingExtension
@@ -33,8 +32,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.*
import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.tasks.configuration.*
import org.jetbrains.kotlin.gradle.utils.*
import java.io.File
import java.util.concurrent.Callable
const val PLUGIN_CLASSPATH_CONFIGURATION_NAME = "kotlinCompilerPluginClasspath"
const val NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME = "kotlinNativeCompilerPluginClasspath"
@@ -48,55 +45,6 @@ val KOTLIN_JS_DSL_NAME = "kotlin2js"
val KOTLIN_OPTIONS_DSL_NAME = "kotlinOptions"
internal class KotlinJsIrSourceSetProcessor(
tasksProvider: KotlinTasksProvider,
kotlinCompilation: AbstractKotlinCompilation<*>
) : KotlinSourceSetProcessor<Kotlin2JsCompile>(
tasksProvider, taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.",
kotlinCompilation = kotlinCompilation
) {
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out Kotlin2JsCompile> {
val configAction = Kotlin2JsCompileConfig(kotlinCompilation)
applyStandardTaskConfiguration(configAction)
return tasksProvider.registerKotlinJSTask(
project,
taskName,
kotlinCompilation.compilerOptions.options as KotlinJsCompilerOptions,
configAction
)
}
override fun doTargetSpecificProcessing() {
project.tasks.named(kotlinCompilation.compileAllTaskName).configure {
it.dependsOn(kotlinTask)
}
val compilation = kotlinCompilation as KotlinJsIrCompilation
compilation.binaries
.withType(JsIrBinary::class.java)
.all { binary ->
val configAction = KotlinJsIrLinkConfig(binary)
configAction.configureTask {
it.description = taskDescription
it.libraries.from({ kotlinCompilation.compileDependencyFiles })
}
configAction.configureTask { task ->
task.modeProperty.set(binary.mode)
task.dependsOn(kotlinTask)
}
tasksProvider.registerKotlinJsIrTask(project, binary.linkTaskName, configAction)
}
project.whenEvaluated {
val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation)
}
}
}
internal class KotlinCommonSourceSetProcessor(
compilation: KotlinCompilationData<*>,
tasksProvider: KotlinTasksProvider