[Gradle, JS] Inject ir's classes into legacy for mixed mode #2
This commit is contained in:
+9
-9
@@ -12,17 +12,17 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
||||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
|
|
||||||
open class KotlinJsCompilation(
|
open class KotlinJsCompilation(
|
||||||
target: KotlinTarget,
|
target: KotlinTarget,
|
||||||
name: String
|
name: String
|
||||||
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
|
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
|
||||||
override val processResourcesTaskName: String
|
override val processResourcesTaskName: String
|
||||||
get() = disambiguateName("processResources")
|
get() = disambiguateName("processResources")
|
||||||
|
|
||||||
override val compileKotlinTask: Kotlin2JsCompile
|
override val compileKotlinTask: Kotlin2JsCompile
|
||||||
get() = super.compileKotlinTask as Kotlin2JsCompile
|
get() = super.compileKotlinTask as Kotlin2JsCompile
|
||||||
|
|
||||||
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
|
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
fun packageJson(handler: PackageJson.() -> Unit) {
|
fun packageJson(handler: PackageJson.() -> Unit) {
|
||||||
|
|||||||
+5
-2
@@ -6,15 +6,16 @@
|
|||||||
package org.jetbrains.kotlin.gradle.targets.js
|
package org.jetbrains.kotlin.gradle.targets.js
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.Kotlin2JsSourceSetProcessor
|
import org.jetbrains.kotlin.gradle.plugin.Kotlin2JsSourceSetProcessor
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetProcessor
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
|
import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetProcessor
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTestsConfigurator
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTestsConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||||
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
||||||
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
||||||
|
|
||||||
open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) :
|
open class KotlinJsTargetConfigurator(kotlinPluginVersion: String, val irConfigurator: KotlinJsIrTargetConfigurator?) :
|
||||||
KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsTarget>(true, true, kotlinPluginVersion),
|
KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsTarget>(true, true, kotlinPluginVersion),
|
||||||
KotlinTargetWithTestsConfigurator<KotlinJsReportAggregatingTestRun, KotlinJsTarget> {
|
KotlinTargetWithTestsConfigurator<KotlinJsReportAggregatingTestRun, KotlinJsTarget> {
|
||||||
|
|
||||||
@@ -58,5 +59,7 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) :
|
|||||||
sourceMapEmbedSources = null
|
sourceMapEmbedSources = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
irConfigurator?.configureCompilations(target.irTarget!!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+17
-4
@@ -14,12 +14,13 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTargetConfigurator
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
|
||||||
|
|
||||||
open class KotlinJsTargetPreset(
|
open class KotlinJsTargetPreset(
|
||||||
project: Project,
|
project: Project,
|
||||||
kotlinPluginVersion: String,
|
kotlinPluginVersion: String,
|
||||||
irPreset: KotlinJsIrTargetPreset?
|
val irPreset: KotlinJsIrTargetPreset?
|
||||||
) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>(
|
) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>(
|
||||||
project,
|
project,
|
||||||
kotlinPluginVersion
|
kotlinPluginVersion
|
||||||
@@ -47,6 +48,12 @@ open class KotlinJsTargetPreset(
|
|||||||
|
|
||||||
val compilationFactory = createCompilationFactory(this)
|
val compilationFactory = createCompilationFactory(this)
|
||||||
compilations = project.container(compilationFactory.itemClass, compilationFactory)
|
compilations = project.container(compilationFactory.itemClass, compilationFactory)
|
||||||
|
|
||||||
|
if (irTarget != null) {
|
||||||
|
val irCompilationFactory = irPreset?.createCompilationFactory(irTarget)!!
|
||||||
|
irTarget.targetName = "${name}Ir"
|
||||||
|
irTarget.compilations = project.container(irCompilationFactory.itemClass, irCompilationFactory)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createKotlinTargetConfigurator().configureTarget(result)
|
createKotlinTargetConfigurator().configureTarget(result)
|
||||||
@@ -54,13 +61,16 @@ open class KotlinJsTargetPreset(
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(kotlinPluginVersion)
|
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(
|
||||||
|
kotlinPluginVersion,
|
||||||
|
irPreset?.let { KotlinJsIrTargetConfigurator(kotlinPluginVersion) }
|
||||||
|
)
|
||||||
|
|
||||||
override fun getName(): String = PRESET_NAME
|
override fun getName(): String = PRESET_NAME
|
||||||
|
|
||||||
override fun createCompilationFactory(forTarget: KotlinOnlyTarget<KotlinJsCompilation>): KotlinJsCompilationFactory {
|
override fun createCompilationFactory(forTarget: KotlinOnlyTarget<KotlinJsCompilation>): KotlinJsCompilationFactory {
|
||||||
forTarget as KotlinJsTarget
|
forTarget as KotlinJsTarget
|
||||||
return KotlinJsCompilationFactory(project, forTarget, forTarget.irTarget)
|
return KotlinJsCompilationFactory(project, forTarget, irPreset?.let { forTarget.irTarget })
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -81,5 +91,8 @@ class KotlinJsSingleTargetPreset(
|
|||||||
// In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names:
|
// In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names:
|
||||||
override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsCompilation>): String? = null
|
override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsCompilation>): String? = null
|
||||||
|
|
||||||
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(kotlinPluginVersion)
|
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(
|
||||||
|
kotlinPluginVersion,
|
||||||
|
irPreset?.let { KotlinJsIrTargetConfigurator(kotlinPluginVersion) }
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+2
-2
@@ -9,7 +9,6 @@ import org.gradle.api.Project
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
|
import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilationFactory
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
|
||||||
|
|
||||||
@@ -32,7 +31,8 @@ open class KotlinJsIrTargetPreset(
|
|||||||
|
|
||||||
override fun getName(): String = PRESET_NAME
|
override fun getName(): String = PRESET_NAME
|
||||||
|
|
||||||
override fun createCompilationFactory(
|
//TODO[Ilya Goncharov] remove public morozov
|
||||||
|
public override fun createCompilationFactory(
|
||||||
forTarget: KotlinOnlyTarget<KotlinJsIrCompilation>
|
forTarget: KotlinOnlyTarget<KotlinJsIrCompilation>
|
||||||
): KotlinCompilationFactory<KotlinJsIrCompilation> =
|
): KotlinCompilationFactory<KotlinJsIrCompilation> =
|
||||||
KotlinJsIrCompilationFactory(project, forTarget)
|
KotlinJsIrCompilationFactory(project, forTarget)
|
||||||
|
|||||||
Reference in New Issue
Block a user