[Gradle] Implement KotlinJs*Compilation with underlying KotlinCompilationImpl
KT-54312
This commit is contained in:
committed by
Space Team
parent
0729d7519c
commit
0069457b94
+2
-2
@@ -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
|
||||
)
|
||||
|
||||
+41
-27
@@ -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 }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+41
-28
@@ -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(
|
||||
|
||||
+31
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
+28
@@ -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)
|
||||
}
|
||||
}
|
||||
+29
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -20,4 +20,4 @@ internal object NativeCompilerOptionsFactory : KotlinCompilationImplFactory.Comp
|
||||
|
||||
return KotlinCompilationImplFactory.CompilerOptionsFactory.Options(compilerOptions, kotlinOptions)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+27
-19
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
-17
@@ -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)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -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)
|
||||
+16
-20
@@ -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)
|
||||
)
|
||||
}
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ open class KotlinNativeCompilationFactory internal constructor(
|
||||
compilerOptionsFactory = NativeCompilerOptionsFactory,
|
||||
compilationAssociator = NativeKotlinCompilationAssociator,
|
||||
compilationSourceSetInclusion = DefaultKotlinCompilationSourceSetInclusion(
|
||||
DefaultKotlinCompilationSourceSetInclusion.AddSourcesToCompileTask.Native
|
||||
DefaultKotlinCompilationSourceSetInclusion.NativeAddSourcesToCompileTask
|
||||
),
|
||||
)
|
||||
) : KotlinCompilationFactory<KotlinNativeCompilation> {
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ open class KotlinSharedNativeCompilationFactory internal constructor(
|
||||
compilationAssociator = NativeKotlinCompilationAssociator,
|
||||
|
||||
compilationSourceSetInclusion = DefaultKotlinCompilationSourceSetInclusion(
|
||||
DefaultKotlinCompilationSourceSetInclusion.AddSourcesToCompileTask.Native
|
||||
DefaultKotlinCompilationSourceSetInclusion.NativeAddSourcesToCompileTask
|
||||
),
|
||||
|
||||
compilationFriendPathsResolver = DefaultKotlinCompilationFriendPathsResolver(
|
||||
|
||||
Reference in New Issue
Block a user