[Gradle, JS] Use only KotlinJsCompilation

^KT-41382 fixed
This commit is contained in:
Ilya Goncharov
2023-11-03 12:04:11 +00:00
committed by Space Team
parent b8e2a17de1
commit c2e2572680
18 changed files with 45 additions and 41 deletions
@@ -14,9 +14,9 @@ import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.targets.js.npm.SemVer import org.jetbrains.kotlin.gradle.targets.js.npm.SemVer
import org.jetbrains.kotlin.gradle.utils.forAllTargets import org.jetbrains.kotlin.gradle.utils.forAllTargets
@@ -45,7 +45,7 @@ private fun KotlinTarget.addKotlinDomApiDependency(
) { ) {
compilations.configureEach { compilation -> compilations.configureEach { compilation ->
if (compilation.platformType != KotlinPlatformType.js) return@configureEach if (compilation.platformType != KotlinPlatformType.js) return@configureEach
if (compilation !is KotlinJsIrCompilation) return@configureEach if (compilation !is KotlinJsCompilation) return@configureEach
compilation.allKotlinSourceSets.forEach { kotlinSourceSet -> compilation.allKotlinSourceSets.forEach { kotlinSourceSet ->
val scopeConfiguration = configurations val scopeConfiguration = configurations
@@ -9,8 +9,8 @@ import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptionsHelper import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptionsHelper
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
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.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
@@ -43,7 +43,7 @@ internal class KotlinJsIrSourceSetProcessor(
it.dependsOn(kotlinTask) it.dependsOn(kotlinTask)
} }
val compilation = compilationInfo.tcs.compilation as KotlinJsIrCompilation val compilation = compilationInfo.tcs.compilation as KotlinJsCompilation
compilation.binaries compilation.binaries
.withType(JsIrBinary::class.java) .withType(JsIrBinary::class.java)
@@ -7,7 +7,6 @@ import org.jetbrains.kotlin.gradle.internal.kaptGenerateStubsTaskName
import org.jetbrains.kotlin.gradle.logging.kotlinDebug import org.jetbrains.kotlin.gradle.logging.kotlinDebug
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.utils.whenKaptEnabled import org.jetbrains.kotlin.gradle.utils.whenKaptEnabled
@@ -65,7 +64,7 @@ class SubpluginEnvironment(
kotlinCompilation.compileTaskProvider.configure(configureKotlinTask) kotlinCompilation.compileTaskProvider.configure(configureKotlinTask)
project.configurePluginOptionsForKapt(kotlinCompilation, configureKotlinTask) project.configurePluginOptionsForKapt(kotlinCompilation, configureKotlinTask)
if (kotlinCompilation is KotlinJsIrCompilation) { if (kotlinCompilation is KotlinJsCompilation) {
kotlinCompilation.binaries.all { kotlinCompilation.binaries.all {
if (it is JsIrBinary) { if (it is JsIrBinary) {
it.linkTask.configure(configureKotlinTask) it.linkTask.configure(configureKotlinTask)
@@ -10,15 +10,15 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCommonSourceSetProcessor
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.plugin.KotlinJsIrSourceSetProcessor import org.jetbrains.kotlin.gradle.plugin.KotlinJsIrSourceSetProcessor
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCommonCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCommonCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
internal val KotlinCompilationProcessorSideEffect = KotlinCompilationSideEffect { compilation -> internal val KotlinCompilationProcessorSideEffect = KotlinCompilationSideEffect { compilation ->
val processor = when (compilation) { val processor = when (compilation) {
is KotlinCommonCompilation -> KotlinCommonSourceSetProcessor(KotlinCompilationInfo(compilation), KotlinTasksProvider()) is KotlinCommonCompilation -> KotlinCommonSourceSetProcessor(KotlinCompilationInfo(compilation), KotlinTasksProvider())
is KotlinJvmCompilation -> Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationInfo(compilation)) is KotlinJvmCompilation -> Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationInfo(compilation))
is KotlinJsIrCompilation -> KotlinJsIrSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationInfo(compilation)) is KotlinJsCompilation -> KotlinJsIrSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationInfo(compilation))
else -> null else -> null
} }
processor?.run() processor?.run()
@@ -65,7 +65,7 @@ interface KotlinJsTargetDsl : KotlinTarget, KotlinTargetWithNodeJsDsl {
val testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun> val testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun>
// Need to compatibility when users use KotlinJsCompilation specific in build script // Need to compatibility when users use KotlinJsCompilation specific in build script
override val compilations: NamedDomainObjectContainer<out KotlinJsCompilation> override val compilations: NamedDomainObjectContainer<KotlinJsCompilation>
} }
interface KotlinTargetWithNodeJsDsl { interface KotlinTargetWithNodeJsDsl {
@@ -15,6 +15,7 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.dsl.JsModuleKind import org.jetbrains.kotlin.gradle.dsl.JsModuleKind
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.utils.archivesName import org.jetbrains.kotlin.gradle.utils.archivesName
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDceDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDceDsl
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
@@ -104,7 +105,7 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
override fun configureRun( override fun configureRun(
compilation: KotlinJsIrCompilation compilation: KotlinJsCompilation
) { ) {
val commonRunTask = registerSubTargetTask<Task>(disambiguateCamelCased(RUN_TASK_NAME)) {} val commonRunTask = registerSubTargetTask<Task>(disambiguateCamelCased(RUN_TASK_NAME)) {}
@@ -171,7 +172,7 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
override fun configureBuild( override fun configureBuild(
compilation: KotlinJsIrCompilation compilation: KotlinJsCompilation
) { ) {
val project = compilation.target.project val project = compilation.target.project
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.gradle.targets.js.ir package org.jetbrains.kotlin.gradle.targets.js.ir
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
import javax.inject.Inject
open class KotlinJsIrCompilation @Inject internal constructor(compilation: KotlinCompilationImpl) : KotlinJsCompilation(compilation) @Deprecated("Use KotlinJsCompilation instead")
typealias KotlinJsIrCompilation = KotlinJsCompilation
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.targets.js.ir
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.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationFriendPathsResolver import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationFriendPathsResolver
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.* import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.*
@@ -18,9 +19,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinJsCo
class KotlinJsIrCompilationFactory internal constructor( class KotlinJsIrCompilationFactory internal constructor(
override val target: KotlinJsIrTarget, override val target: KotlinJsIrTarget,
) : KotlinCompilationFactory<KotlinJsIrCompilation> { ) : KotlinCompilationFactory<KotlinJsCompilation> {
override val itemClass: Class<KotlinJsIrCompilation> override val itemClass: Class<KotlinJsCompilation>
get() = KotlinJsIrCompilation::class.java get() = KotlinJsCompilation::class.java
private val compilationImplFactory: KotlinCompilationImplFactory = KotlinCompilationImplFactory( private val compilationImplFactory: KotlinCompilationImplFactory = KotlinCompilationImplFactory(
compilerOptionsFactory = KotlinJsCompilerOptionsFactory, compilerOptionsFactory = KotlinJsCompilerOptionsFactory,
@@ -38,7 +39,7 @@ class KotlinJsIrCompilationFactory internal constructor(
}, },
) )
override fun create(name: String): KotlinJsIrCompilation = target.project.objects.newInstance( override fun create(name: String): KotlinJsCompilation = target.project.objects.newInstance(
itemClass, compilationImplFactory.create(target, name) itemClass, compilationImplFactory.create(target, name)
) )
} }
@@ -15,6 +15,7 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
import org.jetbrains.kotlin.gradle.utils.whenEvaluated import org.jetbrains.kotlin.gradle.utils.whenEvaluated
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun
@@ -103,7 +104,7 @@ abstract class KotlinJsIrSubTarget(
} }
} }
private fun configureTestsRun(testRun: KotlinJsPlatformTestRun, compilation: KotlinJsIrCompilation) { private fun configureTestsRun(testRun: KotlinJsPlatformTestRun, compilation: KotlinJsCompilation) {
fun KotlinJsPlatformTestRun.subtargetTestTaskName(): String = disambiguateCamelCased( fun KotlinJsPlatformTestRun.subtargetTestTaskName(): String = disambiguateCamelCased(
lowerCamelCaseName( lowerCamelCaseName(
name.takeIf { it != KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME }, name.takeIf { it != KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME },
@@ -192,14 +193,14 @@ abstract class KotlinJsIrSubTarget(
} }
} }
private fun configureMain(compilation: KotlinJsIrCompilation) { private fun configureMain(compilation: KotlinJsCompilation) {
configureRun(compilation) configureRun(compilation)
configureBuild(compilation) configureBuild(compilation)
} }
protected abstract fun configureRun(compilation: KotlinJsIrCompilation) protected abstract fun configureRun(compilation: KotlinJsCompilation)
protected abstract fun configureBuild(compilation: KotlinJsIrCompilation) protected abstract fun configureBuild(compilation: KotlinJsCompilation)
private fun configureLibrary() { private fun configureLibrary() {
target.compilations.all { compilation -> target.compilations.all { compilation ->
@@ -209,7 +210,7 @@ abstract class KotlinJsIrSubTarget(
} }
} }
protected open fun configureLibrary(compilation: KotlinJsIrCompilation) { protected open fun configureLibrary(compilation: KotlinJsCompilation) {
val project = compilation.target.project val project = compilation.target.project
val assembleTaskProvider = project.tasks.named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME) val assembleTaskProvider = project.tasks.named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME)
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.ir package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.tasks.dependsOn import org.jetbrains.kotlin.gradle.tasks.dependsOn
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
@@ -15,7 +16,7 @@ abstract class KotlinJsIrSubTargetBase(target: KotlinJsIrTarget, classifier: Str
protected val runTaskName = disambiguateCamelCased("run") protected val runTaskName = disambiguateCamelCased("run")
override fun configureRun(compilation: KotlinJsIrCompilation) { override fun configureRun(compilation: KotlinJsCompilation) {
compilation.binaries compilation.binaries
.withType(JsIrBinary::class.java) .withType(JsIrBinary::class.java)
.matching { it is Executable } .matching { it is Executable }
@@ -40,7 +41,7 @@ abstract class KotlinJsIrSubTargetBase(target: KotlinJsIrTarget, classifier: Str
protected abstract fun locateOrRegisterRunTask(binary: JsIrBinary, name: String) protected abstract fun locateOrRegisterRunTask(binary: JsIrBinary, name: String)
override fun configureBuild(compilation: KotlinJsIrCompilation) { override fun configureBuild(compilation: KotlinJsCompilation) {
compilation.binaries compilation.binaries
.getIrBinaries(KotlinJsBinaryMode.PRODUCTION) .getIrBinaries(KotlinJsBinaryMode.PRODUCTION)
.matching { it is Executable } .matching { it is Executable }
@@ -49,7 +50,7 @@ abstract class KotlinJsIrSubTargetBase(target: KotlinJsIrTarget, classifier: Str
} }
} }
override fun configureLibrary(compilation: KotlinJsIrCompilation) { override fun configureLibrary(compilation: KotlinJsCompilation) {
super.configureLibrary(compilation) super.configureLibrary(compilation)
compilation.binaries compilation.binaries
@@ -46,7 +46,7 @@ constructor(
project: Project, project: Project,
platformType: KotlinPlatformType, platformType: KotlinPlatformType,
) : ) :
KotlinTargetWithBinaries<KotlinJsIrCompilation, KotlinJsBinaryContainer>(project, platformType), KotlinTargetWithBinaries<KotlinJsCompilation, KotlinJsBinaryContainer>(project, platformType),
KotlinTargetWithTests<JsAggregatingExecutionSource, KotlinJsReportAggregatingTestRun>, KotlinTargetWithTests<JsAggregatingExecutionSource, KotlinJsReportAggregatingTestRun>,
KotlinJsTargetDsl, KotlinJsTargetDsl,
KotlinWasmJsTargetDsl, KotlinWasmJsTargetDsl,
@@ -127,7 +127,7 @@ constructor(
) )
override val binaries: KotlinJsBinaryContainer override val binaries: KotlinJsBinaryContainer
get() = compilations.withType(KotlinJsIrCompilation::class.java) get() = compilations.withType(KotlinJsCompilation::class.java)
.named(MAIN_COMPILATION_NAME) .named(MAIN_COMPILATION_NAME)
.map { it.binaries } .map { it.binaries }
.get() .get()
@@ -10,9 +10,10 @@ import org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
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.KotlinJsCompilation
open class KotlinJsIrTargetConfigurator : open class KotlinJsIrTargetConfigurator :
KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget>(true) { KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsIrTarget>(true) {
override val runtimeIncludesCompilationOutputs: Boolean = false override val runtimeIncludesCompilationOutputs: Boolean = false
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
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.KotlinJsCompilation
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
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
@@ -20,7 +21,7 @@ import org.jetbrains.kotlin.statistics.metrics.StringMetrics
@DeprecatedTargetPresetApi @DeprecatedTargetPresetApi
open class KotlinJsIrTargetPreset( open class KotlinJsIrTargetPreset(
project: Project, project: Project,
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>( ) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsCompilation>(
project project
) { ) {
open val isMpp: Boolean open val isMpp: Boolean
@@ -53,7 +54,7 @@ open class KotlinJsIrTargetPreset(
//TODO[Ilya Goncharov] remove public morozov //TODO[Ilya Goncharov] remove public morozov
public override fun createCompilationFactory( public override fun createCompilationFactory(
forTarget: KotlinJsIrTarget, forTarget: KotlinJsIrTarget,
): KotlinCompilationFactory<KotlinJsIrCompilation> = ): KotlinCompilationFactory<KotlinJsCompilation> =
KotlinJsIrCompilationFactory(forTarget) KotlinJsIrCompilationFactory(forTarget)
companion object { companion object {
@@ -71,10 +72,10 @@ class KotlinJsIrSingleTargetPreset(
get() = false get() = false
// 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<KotlinJsIrCompilation>): String? { override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsCompilation>): String? {
return null return null
} }
override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget> = override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsIrTarget> =
KotlinJsIrTargetConfigurator() KotlinJsIrTargetConfigurator()
} }
@@ -9,6 +9,7 @@ import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
@@ -18,7 +19,7 @@ import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
class KotlinWasmTargetPreset( class KotlinWasmTargetPreset(
project: Project, project: Project,
private val targetType: KotlinWasmTargetType private val targetType: KotlinWasmTargetType
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(project) { ) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsCompilation>(project) {
override val platformType: KotlinPlatformType = KotlinPlatformType.wasm override val platformType: KotlinPlatformType = KotlinPlatformType.wasm
override fun instantiateTarget(name: String): KotlinJsIrTarget { override fun instantiateTarget(name: String): KotlinJsIrTarget {
@@ -40,7 +41,7 @@ class KotlinWasmTargetPreset(
public override fun createCompilationFactory( public override fun createCompilationFactory(
forTarget: KotlinJsIrTarget forTarget: KotlinJsIrTarget
): KotlinCompilationFactory<KotlinJsIrCompilation> = ): KotlinCompilationFactory<KotlinJsCompilation> =
KotlinJsIrCompilationFactory(forTarget) KotlinJsIrCompilationFactory(forTarget)
companion object { companion object {
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
import org.jetbrains.kotlin.gradle.plugin.sources.compilationDependencyConfigurationByScope import org.jetbrains.kotlin.gradle.plugin.sources.compilationDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
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.nodejs.NodeJsRootPlugin.Companion.kotlinNodeJsExtension import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.Companion.kotlinNodeJsExtension
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.Companion.kotlinNpmResolutionManager import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.Companion.kotlinNpmResolutionManager
@@ -78,7 +77,7 @@ class KotlinCompilationNpmResolver(
it.npmResolutionManager.value(npmResolutionManager) it.npmResolutionManager.value(npmResolutionManager)
.disallowChanges() .disallowChanges()
it.jsIrCompilation.set(compilation is KotlinJsIrCompilation) it.jsIrCompilation.set(true)
it.npmProjectName.set(npmProject.name) it.npmProjectName.set(npmProject.name)
it.npmProjectMain.set(npmProject.main) it.npmProjectMain.set(npmProject.main)
it.esModules.set(compilation.compilerOptions.options.moduleKind.get() == JsModuleKind.MODULE_ES) it.esModules.set(compilation.compilerOptions.options.moduleKind.get() == JsModuleKind.MODULE_ES)
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType
import org.jetbrains.kotlin.gradle.targets.js.NpmVersions import org.jetbrains.kotlin.gradle.targets.js.NpmVersions
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
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.nodejs.TasksRequirements import org.jetbrains.kotlin.gradle.targets.js.nodejs.TasksRequirements
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinRootNpmResolution import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinRootNpmResolution
@@ -68,7 +67,7 @@ class KotlinRootNpmResolver internal constructor(
check(mainCompilations.size <= maxMainCompilationsCount) { errorMessage } check(mainCompilations.size <= maxMainCompilationsCount) { errorMessage }
for (npmResolver in mainCompilations) { for (npmResolver in mainCompilations) {
when (val compilation = npmResolver.compilation) { when (val compilation = npmResolver.compilation) {
is KotlinJsIrCompilation -> { is KotlinJsCompilation -> {
if (compilation.platformType == KotlinPlatformType.wasm) { if (compilation.platformType == KotlinPlatformType.wasm) {
val jsTarget = compilation.target as KotlinJsIrTarget val jsTarget = compilation.target as KotlinJsIrTarget
if (jsTarget.wasmTargetType == KotlinWasmTargetType.JS) { if (jsTarget.wasmTargetType == KotlinWasmTargetType.JS) {
@@ -129,7 +129,7 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
if (compilation.platformType == KotlinPlatformType.wasm) { if (compilation.platformType == KotlinPlatformType.wasm) {
add(WASM_BACKEND) add(WASM_BACKEND)
val wasmTargetType = ((compilation.origin as KotlinJsIrCompilation).target as KotlinJsIrTarget).wasmTargetType!! val wasmTargetType = ((compilation.origin as KotlinJsCompilation).target as KotlinJsIrTarget).wasmTargetType!!
val targetValue = if (wasmTargetType == KotlinWasmTargetType.WASI) "wasm-wasi" else "wasm-js" val targetValue = if (wasmTargetType == KotlinWasmTargetType.WASI) "wasm-wasi" else "wasm-js"
add("$WASM_TARGET=$targetValue") add("$WASM_TARGET=$targetValue")
} }
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.tasks.configuration
import org.gradle.api.InvalidUserDataException import org.gradle.api.InvalidUserDataException
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.ir.* import org.jetbrains.kotlin.gradle.targets.js.ir.*
@@ -99,7 +100,7 @@ internal open class KotlinJsIrLinkConfig(
if (compilation.platformType == KotlinPlatformType.wasm) { if (compilation.platformType == KotlinPlatformType.wasm) {
add(WASM_BACKEND) add(WASM_BACKEND)
val wasmTargetType = ((compilation.origin as KotlinJsIrCompilation).target as KotlinJsIrTarget).wasmTargetType!! val wasmTargetType = ((compilation.origin as KotlinJsCompilation).target as KotlinJsIrTarget).wasmTargetType!!
val targetValue = if (wasmTargetType == KotlinWasmTargetType.WASI) "wasm-wasi" else "wasm-js" val targetValue = if (wasmTargetType == KotlinWasmTargetType.WASI) "wasm-wasi" else "wasm-js"
add("$WASM_TARGET=$targetValue") add("$WASM_TARGET=$targetValue")
} }