[Gradle] Implement KotlinJs*Compilation with underlying KotlinCompilationImpl

KT-54312
This commit is contained in:
Sebastian Sellmair
2022-10-04 13:09:45 +02:00
committed by Space Team
parent 0729d7519c
commit 0069457b94
14 changed files with 238 additions and 124 deletions
@@ -40,7 +40,7 @@ internal open class JsCompilationDetails(
internal abstract class JsCompilationDependenciesHolder @Inject constructor(
val target: KotlinTarget,
val compilationPurpose: String
val compilationName: String
) : HasKotlinDependencies {
override val apiConfigurationName: String
get() = disambiguateNameInPlatform(API)
@@ -64,7 +64,7 @@ internal open class JsCompilationDetails(
private fun disambiguateNameInPlatform(simpleName: String): String {
return lowerCamelCaseName(
disambiguationClassifierInPlatform,
compilationPurpose.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME },
compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME },
"compilation",
simpleName
)
@@ -23,35 +23,9 @@ internal interface KotlinCompilationSourceSetInclusion {
}
internal class DefaultKotlinCompilationSourceSetInclusion(
private val addSourcesToCompileTask: AddSourcesToCompileTask = AddSourcesToCompileTask.Default
private val addSourcesToCompileTask: AddSourcesToCompileTask = DefaultAddSourcesToCompileTask
) : KotlinCompilationSourceSetInclusion {
interface AddSourcesToCompileTask {
fun addSources(compilation: KotlinCompilation<*>, sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>)
object Default : AddSourcesToCompileTask {
override fun addSources(
compilation: KotlinCompilation<*>, sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>
) {
addSourcesToKotlinCompileTask(
compilation.project,
compilation.compileKotlinTaskName,
sourceSet.customSourceFilesExtensions,
addAsCommonSources,
{ sourceSet.kotlin }
)
}
}
object Native : AddSourcesToCompileTask {
override fun addSources(compilation: KotlinCompilation<*>, sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
addSourcesToKotlinNativeCompileTask(
compilation.project, compilation.compileKotlinTaskName, { sourceSet.kotlin }, addAsCommonSources
)
}
}
}
override fun include(compilation: InternalKotlinCompilation<*>, sourceSet: KotlinSourceSet) {
/* Check if the source set was already included */
if (!compilation.includedSourceSets.add(sourceSet)) return
@@ -110,4 +84,44 @@ internal class DefaultKotlinCompilationSourceSetInclusion(
val InternalKotlinCompilation<*>.includedSourceSets: MutableSet<KotlinSourceSet>
get() = extras.getOrPut(includedSourceSetsKey, { hashSetOf() })
}
fun interface AddSourcesToCompileTask {
fun addSources(compilation: KotlinCompilation<*>, sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>)
companion object {
fun composite(vararg elements: AddSourcesToCompileTask?): AddSourcesToCompileTask =
CompositeAddSourcesToCompileTask(listOfNotNull(*elements))
}
}
private class CompositeAddSourcesToCompileTask(private val children: List<AddSourcesToCompileTask>) : AddSourcesToCompileTask {
override fun addSources(compilation: KotlinCompilation<*>, sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
return children.forEach { child -> child.addSources(compilation, sourceSet, addAsCommonSources) }
}
}
object NativeAddSourcesToCompileTask : AddSourcesToCompileTask {
override fun addSources(compilation: KotlinCompilation<*>, sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) =
addSourcesToKotlinNativeCompileTask(
project = compilation.project,
taskName = compilation.compileKotlinTaskName,
sourceFiles = { sourceSet.kotlin },
addAsCommonSources = addAsCommonSources
)
}
object DefaultAddSourcesToCompileTask : AddSourcesToCompileTask {
override fun addSources(
compilation: KotlinCompilation<*>, sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>
) = addSourcesToKotlinCompileTask(
project = compilation.project,
taskName = compilation.compileKotlinTaskName,
sourceFileExtensions = sourceSet.customSourceFilesExtensions,
addAsCommonSources = addAsCommonSources,
sources = { sourceSet.kotlin }
)
}
}
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationDependencyConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationDependencyConfigurationsContainer
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.utils.*
internal sealed class DefaultKotlinCompilationDependencyConfigurationsFactory :
@@ -39,56 +41,71 @@ internal object NativeKotlinCompilationDependencyConfigurationsFactory :
}
}
internal object JsKotlinCompilationDependencyConfigurationsFactory :
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationDependencyConfigurationsContainer {
return KotlinCompilationDependencyConfigurationsContainer(
target, compilationName, withRuntime = true,
configurationNamePrefix = lowerCamelCaseName(
target.disambiguationClassifierInPlatform, compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }
)
)
}
private val KotlinTarget.disambiguationClassifierInPlatform: String?
get() = when (this) {
is KotlinJsTarget -> disambiguationClassifierInPlatform
is KotlinJsIrTarget -> disambiguationClassifierInPlatform
else -> error("Unexpected target type of $this")
}
}
private fun KotlinCompilationDependencyConfigurationsContainer(
target: KotlinTarget, compilationName: String, withRuntime: Boolean,
configurationNamePrefix: String = lowerCamelCaseName(
target.disambiguationClassifier, compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME },
),
compileClasspathConfigurationSuffix: String = "compileClasspath",
runtimeClasspathConfigurationSuffix: String = "runtimeClasspath"
): KotlinCompilationDependencyConfigurationsContainer {
val compilation = "${target.disambiguationClassifier}/$compilationName"
val prefix = lowerCamelCaseName(
target.disambiguationClassifier,
compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME },
"compilation"
)
val compilationCoordinates = "${target.disambiguationClassifier}/$compilationName"
val compilation = "compilation"
val apiConfiguration = target.project.configurations.maybeCreate(lowerCamelCaseName(prefix, API)).apply {
fun name(vararg parts: String) = lowerCamelCaseName(configurationNamePrefix, *parts)
val apiConfiguration = target.project.configurations.maybeCreate(name(compilation, API)).apply {
isVisible = false
isCanBeConsumed = false
isCanBeResolved = false
description = "API dependencies for $compilation"
description = "API dependencies for $compilationCoordinates"
}
val implementationConfiguration = target.project.configurations.maybeCreate(lowerCamelCaseName(prefix, IMPLEMENTATION)).apply {
val implementationConfiguration = target.project.configurations.maybeCreate(name(compilation, IMPLEMENTATION)).apply {
extendsFrom(apiConfiguration)
isVisible = false
isCanBeConsumed = false
isCanBeResolved = false
description = "Implementation only dependencies for $compilation."
description = "Implementation only dependencies for $compilationCoordinates."
}
val compileOnlyConfiguration = target.project.configurations.maybeCreate(lowerCamelCaseName(prefix, COMPILE_ONLY)).apply {
val compileOnlyConfiguration = target.project.configurations.maybeCreate(name(compilation, COMPILE_ONLY)).apply {
isCanBeConsumed = false
setupAsLocalTargetSpecificConfigurationIfSupported(target)
attributes.attribute(Category.CATEGORY_ATTRIBUTE, target.project.categoryByName(Category.LIBRARY))
isVisible = false
isCanBeResolved = false
description = "Compile only dependencies for $compilation."
description = "Compile only dependencies for $compilationCoordinates."
}
val runtimeOnlyConfiguration = target.project.configurations.maybeCreate(lowerCamelCaseName(prefix, RUNTIME_ONLY)).apply {
val runtimeOnlyConfiguration = target.project.configurations.maybeCreate(name(compilation, RUNTIME_ONLY)).apply {
isVisible = false
isCanBeConsumed = false
isCanBeResolved = false
description = "Runtime only dependencies for $compilation."
description = "Runtime only dependencies for $compilationCoordinates."
}
val compileDependencyConfiguration = target.project.configurations.maybeCreate(
lowerCamelCaseName(
target.disambiguationClassifier,
compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME },
compileClasspathConfigurationSuffix
)
).apply {
val compileDependencyConfiguration = target.project.configurations.maybeCreate(name(compileClasspathConfigurationSuffix)).apply {
extendsFrom(compileOnlyConfiguration, implementationConfiguration)
usesPlatformOf(target)
isVisible = false
@@ -97,15 +114,11 @@ private fun KotlinCompilationDependencyConfigurationsContainer(
if (target.platformType != KotlinPlatformType.androidJvm) {
attributes.attribute(Category.CATEGORY_ATTRIBUTE, target.project.categoryByName(Category.LIBRARY))
}
description = "Compile classpath for $compilation."
description = "Compile classpath for $compilationCoordinates."
}
val runtimeDependencyConfiguration = if (withRuntime) target.project.configurations.maybeCreate(
lowerCamelCaseName(
target.disambiguationClassifier,
compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME },
runtimeClasspathConfigurationSuffix
)
name(runtimeClasspathConfigurationSuffix)
).apply {
extendsFrom(runtimeOnlyConfiguration, implementationConfiguration)
usesPlatformOf(target)
@@ -116,7 +129,7 @@ private fun KotlinCompilationDependencyConfigurationsContainer(
if (target.platformType != KotlinPlatformType.androidJvm) {
attributes.attribute(Category.CATEGORY_ATTRIBUTE, target.project.categoryByName(Category.LIBRARY))
}
description = "Runtime classpath of $compilation."
description = "Runtime classpath of $compilationCoordinates."
} else null
return DefaultKotlinCompilationDependencyConfigurationsContainer(
@@ -0,0 +1,31 @@
/*
* 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.mpp.compilationImpl.factory
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationSourceSetsContainer
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
internal object JsCompilationSourceSetsContainerFactory : KotlinCompilationImplFactory.KotlinCompilationSourceSetsContainerFactory {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationSourceSetsContainer {
return KotlinCompilationSourceSetsContainer(
target.project.kotlinExtension.sourceSets.maybeCreate(defaultSourceSetName(target, compilationName))
)
}
private fun defaultSourceSetName(target: KotlinTarget, compilationName: String): String {
val classifier = if (target is KotlinJsTarget && target.irTarget != null)
target.disambiguationClassifierInPlatform
else target.disambiguationClassifier
return lowerCamelCaseName(
classifier,
compilationName
)
}
}
@@ -0,0 +1,28 @@
/*
* 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.mpp.compilationImpl.factory
import org.jetbrains.kotlin.gradle.dsl.CompilerJsOptions
import org.jetbrains.kotlin.gradle.dsl.CompilerJsOptionsDefault
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
internal object JsCompilerOptionsFactory : KotlinCompilationImplFactory.CompilerOptionsFactory {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationImplFactory.CompilerOptionsFactory.Options {
val compilerOptions = object : HasCompilerOptions<CompilerJsOptions> {
override val options: CompilerJsOptions =
target.project.objects.newInstance(CompilerJsOptionsDefault::class.java)
}
val kotlinOptions = object : KotlinJsOptions {
override val options: CompilerJsOptions
get() = compilerOptions.options
}
return KotlinCompilationImplFactory.CompilerOptionsFactory.Options(compilerOptions, kotlinOptions)
}
}
@@ -0,0 +1,29 @@
/*
* 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.mpp.compilationImpl.factory
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationSourceSetsContainer
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
internal object JsIrCompilationSourceSetsContainerFactory : KotlinCompilationImplFactory.KotlinCompilationSourceSetsContainerFactory {
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationSourceSetsContainer {
return KotlinCompilationSourceSetsContainer(
target.project.kotlinExtension.sourceSets.maybeCreate(defaultSourceSetName(target, compilationName))
)
}
private fun defaultSourceSetName(target: KotlinTarget, compilationName: String): String {
return lowerCamelCaseName(
if (target is KotlinJsIrTarget && target.mixedMode)
target.disambiguationClassifierInPlatform
else target.disambiguationClassifier,
compilationName
)
}
}
@@ -20,4 +20,4 @@ internal object NativeCompilerOptionsFactory : KotlinCompilationImplFactory.Comp
return KotlinCompilationImplFactory.CompilerOptionsFactory.Options(compilerOptions, kotlinOptions)
}
}
}
@@ -9,12 +9,11 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import groovy.lang.Closure
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationDetailsImpl.JsCompilationDetails
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer
@@ -22,22 +21,20 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import javax.inject.Inject
abstract class KotlinJsCompilation @Inject internal constructor(
compilationDetails: JsCompilationDetails
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(compilationDetails),
KotlinCompilationWithResources<KotlinJsOptions> {
final override val target: KotlinTarget get() = super.target
open class KotlinJsCompilation @Inject internal constructor(
private val compilation: KotlinCompilationImpl
) : InternalKotlinCompilation<KotlinJsOptions> by compilation.castKotlinOptionsType(),
KotlinCompilationToRunnableFiles<KotlinJsOptions> {
@Suppress("UNCHECKED_CAST")
final override val compilerOptions: HasCompilerOptions<KotlinJsCompilerOptions>
get() = super.compilerOptions as HasCompilerOptions<KotlinJsCompilerOptions>
final override val compilerOptions: HasCompilerOptions<CompilerJsOptions>
get() = compilation.compilerOptions as HasCompilerOptions<CompilerJsOptions>
internal val binaries: KotlinJsBinaryContainer =
target.project.objects.newInstance(
compilation.target.project.objects.newInstance(
KotlinJsBinaryContainer::class.java,
target,
target.project.objects.domainObjectSet(JsBinary::class.java)
compilation.target,
compilation.target.project.objects.domainObjectSet(JsBinary::class.java)
)
var outputModuleName: String? = null
@@ -51,22 +48,33 @@ abstract class KotlinJsCompilation @Inject internal constructor(
field = value
}
@Deprecated("Use compilationName instead", ReplaceWith("compilationName"))
val compilationPurpose: String get() = compilationName
override val processResourcesTaskName: String
get() = disambiguateName("processResources")
@Suppress("DEPRECATION")
@Deprecated("Accessing task instance directly is deprecated", replaceWith = ReplaceWith("compileTaskProvider"))
override val compileKotlinTask: Kotlin2JsCompile
get() = super.compileKotlinTask as Kotlin2JsCompile
get() = compilation.compileKotlinTask as Kotlin2JsCompile
@Suppress("UNCHECKED_CAST", "DEPRECATION")
@Deprecated("Replaced with compileTaskProvider", replaceWith = ReplaceWith("compileTaskProvider"))
override val compileKotlinTaskProvider: TaskProvider<out Kotlin2JsCompile>
get() = super.compileKotlinTaskProvider as TaskProvider<out Kotlin2JsCompile>
get() = compilation.compileKotlinTaskProvider as TaskProvider<out Kotlin2JsCompile>
@Suppress("UNCHECKED_CAST")
override val compileTaskProvider: TaskProvider<Kotlin2JsCompile>
get() = super.compileTaskProvider as TaskProvider<Kotlin2JsCompile>
get() = compilation.compileTaskProvider as TaskProvider<Kotlin2JsCompile>
override val runtimeDependencyConfigurationName: String
get() = compilation.runtimeDependencyConfigurationName ?: error("Missing 'runtimeDependencyConfigurationName'")
override var runtimeDependencyFiles: FileCollection = compilation.runtimeDependencyFiles ?: error("Missing 'runtimeDependencyFiles'")
override val relatedConfigurationNames: List<String>
get() = compilation.relatedConfigurationNames
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
@@ -79,4 +87,4 @@ abstract class KotlinJsCompilation @Inject internal constructor(
project.configure(this, handler)
}
}
}
}
@@ -6,28 +6,23 @@
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationDetailsImpl.JsCompilationDetails
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsCompilationSourceSetsContainerFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsCompilerOptionsFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsKotlinCompilationDependencyConfigurationsFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
class KotlinJsCompilationFactory(
class KotlinJsCompilationFactory internal constructor(
override val target: KotlinOnlyTarget<KotlinJsCompilation>,
private val compilationImplFactory: KotlinCompilationImplFactory = KotlinCompilationImplFactory(
compilerOptionsFactory = JsCompilerOptionsFactory,
compilationSourceSetsContainerFactory = JsCompilationSourceSetsContainerFactory,
compilationDependencyConfigurationsFactory = JsKotlinCompilationDependencyConfigurationsFactory
)
) : KotlinCompilationFactory<KotlinJsCompilation> {
override val itemClass: Class<KotlinJsCompilation>
get() = KotlinJsCompilation::class.java
override fun defaultSourceSetName(compilationName: String): String {
val classifier = if (target is KotlinJsTarget && target.irTarget != null)
target.disambiguationClassifierInPlatform
else target.disambiguationClassifier
return lowerCamelCaseName(
classifier,
compilationName
)
}
override fun create(name: String): KotlinJsCompilation = target.project.objects.newInstance(
KotlinJsCompilation::class.java, JsCompilationDetails(target, name, getOrCreateDefaultSourceSet(name))
itemClass, compilationImplFactory.create(target, name)
)
}
}
@@ -5,10 +5,10 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationDetailsImpl.JsIrCompilationDetails
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
import javax.inject.Inject
abstract class KotlinJsIrCompilation @Inject internal constructor(
compilationDetails: JsIrCompilationDetails
) : KotlinJsCompilation(compilationDetails)
open class KotlinJsIrCompilation @Inject internal constructor(
compilation: KotlinCompilationImpl
) : KotlinJsCompilation(compilation)
@@ -5,29 +5,25 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationDetailsImpl.JsIrCompilationDetails
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.getOrCreateDefaultSourceSet
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsCompilerOptionsFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsIrCompilationSourceSetsContainerFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsKotlinCompilationDependencyConfigurationsFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
class KotlinJsIrCompilationFactory(
override val target: KotlinJsIrTarget
class KotlinJsIrCompilationFactory internal constructor(
override val target: KotlinOnlyTarget<KotlinJsIrCompilation>,
private val compilationImplFactory: KotlinCompilationImplFactory = KotlinCompilationImplFactory(
compilerOptionsFactory = JsCompilerOptionsFactory,
compilationSourceSetsContainerFactory = JsIrCompilationSourceSetsContainerFactory,
compilationDependencyConfigurationsFactory = JsKotlinCompilationDependencyConfigurationsFactory
)
) : KotlinCompilationFactory<KotlinJsIrCompilation> {
override val itemClass: Class<KotlinJsIrCompilation>
get() = KotlinJsIrCompilation::class.java
override fun defaultSourceSetName(compilationName: String): String {
return lowerCamelCaseName(
if (target.mixedMode)
target.disambiguationClassifierInPlatform
else
target.disambiguationClassifier,
compilationName
)
}
override fun create(name: String): KotlinJsIrCompilation =
target.project.objects.newInstance(
KotlinJsIrCompilation::class.java, JsIrCompilationDetails(target, name, getOrCreateDefaultSourceSet(name))
)
}
override fun create(name: String): KotlinJsIrCompilation = target.project.objects.newInstance(
itemClass, compilationImplFactory.create(target, name)
)
}
@@ -15,10 +15,10 @@ import org.gradle.workers.WorkerExecutor
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptionsDefault
import org.jetbrains.kotlin.gradle.dsl.CompilerJsOptionsDefault
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.DEVELOPMENT
@@ -36,7 +36,7 @@ abstract class KotlinJsIrLink @Inject constructor(
objectFactory: ObjectFactory,
workerExecutor: WorkerExecutor
) : Kotlin2JsCompile(
objectFactory.newInstance(KotlinJsCompilerOptionsDefault::class.java),
objectFactory.newInstance(CompilerJsOptionsDefault::class.java),
objectFactory,
workerExecutor
) {
@@ -60,7 +60,7 @@ abstract class KotlinJsIrLink @Inject constructor(
@Transient
@get:Internal
internal lateinit var compilation: KotlinCompilationData<*>
internal lateinit var compilation: KotlinCompilation<*>
@Transient
@get:Internal
@@ -22,7 +22,7 @@ open class KotlinNativeCompilationFactory internal constructor(
compilerOptionsFactory = NativeCompilerOptionsFactory,
compilationAssociator = NativeKotlinCompilationAssociator,
compilationSourceSetInclusion = DefaultKotlinCompilationSourceSetInclusion(
DefaultKotlinCompilationSourceSetInclusion.AddSourcesToCompileTask.Native
DefaultKotlinCompilationSourceSetInclusion.NativeAddSourcesToCompileTask
),
)
) : KotlinCompilationFactory<KotlinNativeCompilation> {
@@ -27,7 +27,7 @@ open class KotlinSharedNativeCompilationFactory internal constructor(
compilationAssociator = NativeKotlinCompilationAssociator,
compilationSourceSetInclusion = DefaultKotlinCompilationSourceSetInclusion(
DefaultKotlinCompilationSourceSetInclusion.AddSourcesToCompileTask.Native
DefaultKotlinCompilationSourceSetInclusion.NativeAddSourcesToCompileTask
),
compilationFriendPathsResolver = DefaultKotlinCompilationFriendPathsResolver(