[Gradle, JS] Register link tasks
This commit is contained in:
+42
-2
@@ -37,6 +37,8 @@ import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||||
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrType
|
||||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
@@ -343,8 +345,46 @@ internal class KotlinJsIrSourceSetProcessor(
|
|||||||
project: Project,
|
project: Project,
|
||||||
taskName: String,
|
taskName: String,
|
||||||
configureAction: (Kotlin2JsCompile) -> (Unit)
|
configureAction: (Kotlin2JsCompile) -> (Unit)
|
||||||
): TaskProvider<out Kotlin2JsCompile> =
|
): TaskProvider<out Kotlin2JsCompile> {
|
||||||
tasksProvider.registerKotlinJSTask(project, taskName, kotlinCompilation, configureAction)
|
val compilation = kotlinCompilation as KotlinJsIrCompilation
|
||||||
|
|
||||||
|
if (taskName == compilation.productionLinkTaskName) {
|
||||||
|
return registerJsLink(
|
||||||
|
project,
|
||||||
|
taskName,
|
||||||
|
KotlinJsIrType.PRODUCTION,
|
||||||
|
configureAction
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (taskName == compilation.developmentLinkTaskName) {
|
||||||
|
return registerJsLink(
|
||||||
|
project,
|
||||||
|
taskName,
|
||||||
|
KotlinJsIrType.DEVELOPMENT,
|
||||||
|
configureAction
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return tasksProvider.registerKotlinJSTask(project, taskName, kotlinCompilation, configureAction)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun registerJsLink(
|
||||||
|
project: Project,
|
||||||
|
taskName: String,
|
||||||
|
type: KotlinJsIrType,
|
||||||
|
configureAction: (Kotlin2JsCompile) -> Unit
|
||||||
|
): TaskProvider<out KotlinJsIrLink> {
|
||||||
|
return tasksProvider.registerKotlinJsIrTask(
|
||||||
|
project,
|
||||||
|
taskName,
|
||||||
|
KotlinJsIrLink::class.java,
|
||||||
|
kotlinCompilation
|
||||||
|
) { task ->
|
||||||
|
task.type = type
|
||||||
|
configureAction(task)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun doTargetSpecificProcessing() {
|
override fun doTargetSpecificProcessing() {
|
||||||
project.tasks.named(kotlinCompilation.compileAllTaskName).configure {
|
project.tasks.named(kotlinCompilation.compileAllTaskName).configure {
|
||||||
|
|||||||
+15
@@ -100,6 +100,21 @@ internal open class KotlinTasksProvider(val targetName: String) {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <T : Kotlin2JsCompile> registerKotlinJsIrTask(
|
||||||
|
project: Project,
|
||||||
|
name: String,
|
||||||
|
taskClass: Class<out T>,
|
||||||
|
compilation: AbstractKotlinCompilation<*>,
|
||||||
|
configureAction: (T) -> Unit
|
||||||
|
): TaskProvider<out T> {
|
||||||
|
val properties = PropertiesProvider(project)
|
||||||
|
val result = project.registerTask(name, taskClass) {
|
||||||
|
configureAction(it)
|
||||||
|
}
|
||||||
|
configure(result, project, properties, compilation)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
fun registerKotlinCommonTask(
|
fun registerKotlinCommonTask(
|
||||||
project: Project,
|
project: Project,
|
||||||
name: String,
|
name: String,
|
||||||
|
|||||||
Reference in New Issue
Block a user