[Gradle][Minor] Move *NativeCompilationDetails and MetadataMappedCompilationDetails into separate source files
KT-54312
This commit is contained in:
committed by
Space Team
parent
64e2e01d7d
commit
b7c7ce3bf5
-102
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.gradle.plugin.sources.*
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.sources.kpm.FragmentMappedKotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.sources.kpm.FragmentMappedKotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.*
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.tooling.core.closure
|
import org.jetbrains.kotlin.tooling.core.closure
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -59,107 +58,6 @@ interface CompilationDetailsWithRuntime<T : KotlinCommonOptions> : CompilationDe
|
|||||||
internal val CompilationDetails<*>.associateCompilationsClosure: Iterable<CompilationDetails<*>>
|
internal val CompilationDetails<*>.associateCompilationsClosure: Iterable<CompilationDetails<*>>
|
||||||
get() = closure { it.associateCompilations }
|
get() = closure { it.associateCompilations }
|
||||||
|
|
||||||
open class NativeCompilationDetails(
|
|
||||||
target: KotlinTarget,
|
|
||||||
compilationPurpose: String,
|
|
||||||
defaultSourceSet: KotlinSourceSet,
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
createCompilerOptions: DefaultCompilationDetails<KotlinCommonOptions, KotlinCommonCompilerOptions>.() -> HasCompilerOptions<KotlinCommonCompilerOptions>,
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
createKotlinOptions: DefaultCompilationDetails<KotlinCommonOptions, KotlinCommonCompilerOptions>.() -> KotlinCommonOptions
|
|
||||||
) : DefaultCompilationDetails<KotlinCommonOptions, KotlinCommonCompilerOptions>(
|
|
||||||
target,
|
|
||||||
compilationPurpose,
|
|
||||||
defaultSourceSet,
|
|
||||||
createCompilerOptions,
|
|
||||||
createKotlinOptions
|
|
||||||
) {
|
|
||||||
override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder(
|
|
||||||
lowerCamelCaseName(
|
|
||||||
target.disambiguationClassifier,
|
|
||||||
compilationPurpose.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }.orEmpty(),
|
|
||||||
"compileKlibraries"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
override val compileAllTaskName: String
|
|
||||||
get() = lowerCamelCaseName(target.disambiguationClassifier, compilationPurpose, "klibrary")
|
|
||||||
|
|
||||||
override fun addAssociateCompilationDependencies(other: KotlinCompilation<*>) {
|
|
||||||
compileDependencyFilesHolder.dependencyFiles +=
|
|
||||||
other.output.classesDirs + project.filesProvider { other.compileDependencyFiles }
|
|
||||||
|
|
||||||
target.project.configurations.named(compilation.implementationConfigurationName).configure { configuration ->
|
|
||||||
configuration.extendsFrom(target.project.configurations.findByName(other.implementationConfigurationName))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
|
|
||||||
addSourcesToKotlinNativeCompileTask(project, compileKotlinTaskName, { sourceSet.kotlin }, addAsCommonSources)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal open class SharedNativeCompilationDetails(
|
|
||||||
target: KotlinTarget,
|
|
||||||
compilationPurpose: String,
|
|
||||||
defaultSourceSet: KotlinSourceSet,
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
createCompilerOptions: DefaultCompilationDetails<KotlinCommonOptions, KotlinCommonCompilerOptions>.() -> HasCompilerOptions<KotlinCommonCompilerOptions>,
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
createKotlinOptions: DefaultCompilationDetails<KotlinCommonOptions, KotlinCommonCompilerOptions>.() -> KotlinCommonOptions
|
|
||||||
) : DefaultCompilationDetails<KotlinCommonOptions, KotlinCommonCompilerOptions>(
|
|
||||||
target,
|
|
||||||
compilationPurpose,
|
|
||||||
defaultSourceSet,
|
|
||||||
createCompilerOptions,
|
|
||||||
createKotlinOptions
|
|
||||||
) {
|
|
||||||
|
|
||||||
override val friendArtifacts: FileCollection
|
|
||||||
get() = super.friendArtifacts.plus(run {
|
|
||||||
val project = target.project
|
|
||||||
val friendSourceSets = getVisibleSourceSetsFromAssociateCompilations(defaultSourceSet).toMutableSet().apply {
|
|
||||||
// TODO: implement proper dependsOn/refines compiler args for Kotlin/Native and pass the dependsOn klibs separately;
|
|
||||||
// But for now, those dependencies don't have any special semantics, so passing all them as friends works, too
|
|
||||||
addAll(defaultSourceSet.internal.dependsOnClosure)
|
|
||||||
}
|
|
||||||
project.files(friendSourceSets.mapNotNull { project.getMetadataCompilationForSourceSet(it)?.output?.classesDirs })
|
|
||||||
})
|
|
||||||
|
|
||||||
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
|
|
||||||
addSourcesToKotlinNativeCompileTask(project, compileKotlinTaskName, { sourceSet.kotlin }, addAsCommonSources)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal open class MetadataMappedCompilationDetails<T : KotlinCommonOptions>(
|
|
||||||
override val target: KotlinMetadataTarget,
|
|
||||||
defaultSourceSet: KotlinSourceSet,
|
|
||||||
final override val compilationData: AbstractKotlinFragmentMetadataCompilationData<T>
|
|
||||||
) : AbstractCompilationDetails<T>(defaultSourceSet) {
|
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
override val compilation: KotlinCompilation<T>
|
|
||||||
get() = target.compilations.getByName(defaultSourceSet.name) as KotlinCompilation<T>
|
|
||||||
|
|
||||||
override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder =
|
|
||||||
GradleKpmDependencyFilesHolder.ofMetadataCompilationDependencies(compilationData)
|
|
||||||
|
|
||||||
override val kotlinDependenciesHolder: HasKotlinDependencies
|
|
||||||
get() = compilationData.fragment
|
|
||||||
|
|
||||||
override fun associateWith(other: CompilationDetails<*>) {
|
|
||||||
throw UnsupportedOperationException("not supported in the mapped model")
|
|
||||||
}
|
|
||||||
|
|
||||||
override val associateCompilations: Set<CompilationDetails<*>>
|
|
||||||
get() = emptySet()
|
|
||||||
|
|
||||||
override fun whenSourceSetAdded(sourceSet: KotlinSourceSet) {
|
|
||||||
if (sourceSet != defaultSourceSet)
|
|
||||||
throw UnsupportedOperationException("metadata compilations have predefined sources")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal open class VariantMappedCompilationDetails<T : KotlinCommonOptions>(
|
internal open class VariantMappedCompilationDetails<T : KotlinCommonOptions>(
|
||||||
open val variant: GradleKpmVariantInternal,
|
open val variant: GradleKpmVariantInternal,
|
||||||
override val target: KotlinTarget,
|
override val target: KotlinTarget,
|
||||||
|
|||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.AbstractKotlinFragmentMetadataCompilationData
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.GradleKpmDependencyFilesHolder
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ofMetadataCompilationDependencies
|
||||||
|
|
||||||
|
internal open class MetadataMappedCompilationDetails<T : KotlinCommonOptions>(
|
||||||
|
override val target: KotlinMetadataTarget,
|
||||||
|
defaultSourceSet: KotlinSourceSet,
|
||||||
|
final override val compilationData: AbstractKotlinFragmentMetadataCompilationData<T>
|
||||||
|
) : AbstractCompilationDetails<T>(defaultSourceSet) {
|
||||||
|
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
override val compilation: KotlinCompilation<T>
|
||||||
|
get() = target.compilations.getByName(defaultSourceSet.name) as KotlinCompilation<T>
|
||||||
|
|
||||||
|
override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder =
|
||||||
|
GradleKpmDependencyFilesHolder.ofMetadataCompilationDependencies(compilationData)
|
||||||
|
|
||||||
|
override val kotlinDependenciesHolder: HasKotlinDependencies
|
||||||
|
get() = compilationData.fragment
|
||||||
|
|
||||||
|
override fun associateWith(other: CompilationDetails<*>) {
|
||||||
|
throw UnsupportedOperationException("not supported in the mapped model")
|
||||||
|
}
|
||||||
|
|
||||||
|
override val associateCompilations: Set<CompilationDetails<*>>
|
||||||
|
get() = emptySet()
|
||||||
|
|
||||||
|
override fun whenSourceSetAdded(sourceSet: KotlinSourceSet) {
|
||||||
|
if (sourceSet != defaultSourceSet)
|
||||||
|
throw UnsupportedOperationException("metadata compilations have predefined sources")
|
||||||
|
}
|
||||||
|
}
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.GradleKpmDependencyFilesHolder
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.newDependencyFilesHolder
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
|
||||||
|
open class NativeCompilationDetails(
|
||||||
|
target: KotlinTarget,
|
||||||
|
compilationPurpose: String,
|
||||||
|
defaultSourceSet: KotlinSourceSet,
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
createCompilerOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> HasCompilerOptions<CompilerCommonOptions>,
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
createKotlinOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> KotlinCommonOptions
|
||||||
|
) : DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>(
|
||||||
|
target,
|
||||||
|
compilationPurpose,
|
||||||
|
defaultSourceSet,
|
||||||
|
createCompilerOptions,
|
||||||
|
createKotlinOptions
|
||||||
|
) {
|
||||||
|
override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder(
|
||||||
|
lowerCamelCaseName(
|
||||||
|
target.disambiguationClassifier,
|
||||||
|
compilationPurpose.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }.orEmpty(),
|
||||||
|
"compileKlibraries"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
override val compileAllTaskName: String
|
||||||
|
get() = lowerCamelCaseName(target.disambiguationClassifier, compilationPurpose, "klibrary")
|
||||||
|
|
||||||
|
override fun addAssociateCompilationDependencies(other: KotlinCompilation<*>) {
|
||||||
|
compileDependencyFilesHolder.dependencyFiles +=
|
||||||
|
other.output.classesDirs + project.filesProvider { other.compileDependencyFiles }
|
||||||
|
|
||||||
|
target.project.configurations.named(compilation.implementationConfigurationName).configure { configuration ->
|
||||||
|
configuration.extendsFrom(target.project.configurations.findByName(other.implementationConfigurationName))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
|
||||||
|
addSourcesToKotlinNativeCompileTask(project, compileKotlinTaskName, { sourceSet.kotlin }, addAsCommonSources)
|
||||||
|
}
|
||||||
|
}
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
import org.gradle.api.file.FileCollection
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet
|
||||||
|
|
||||||
|
internal open class SharedNativeCompilationDetails(
|
||||||
|
target: KotlinTarget,
|
||||||
|
compilationPurpose: String,
|
||||||
|
defaultSourceSet: KotlinSourceSet,
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
createCompilerOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> HasCompilerOptions<CompilerCommonOptions>,
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
createKotlinOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> KotlinCommonOptions
|
||||||
|
) : DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>(
|
||||||
|
target,
|
||||||
|
compilationPurpose,
|
||||||
|
defaultSourceSet,
|
||||||
|
createCompilerOptions,
|
||||||
|
createKotlinOptions
|
||||||
|
) {
|
||||||
|
|
||||||
|
override val friendArtifacts: FileCollection
|
||||||
|
get() = super.friendArtifacts.plus(run {
|
||||||
|
val project = target.project
|
||||||
|
val friendSourceSets = getVisibleSourceSetsFromAssociateCompilations(defaultSourceSet).toMutableSet().apply {
|
||||||
|
// TODO: implement proper dependsOn/refines compiler args for Kotlin/Native and pass the dependsOn klibs separately;
|
||||||
|
// But for now, those dependencies don't have any special semantics, so passing all them as friends works, too
|
||||||
|
addAll(defaultSourceSet.internal.dependsOnClosure)
|
||||||
|
}
|
||||||
|
project.files(friendSourceSets.mapNotNull { project.getMetadataCompilationForSourceSet(it)?.output?.classesDirs })
|
||||||
|
})
|
||||||
|
|
||||||
|
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
|
||||||
|
addSourcesToKotlinNativeCompileTask(project, compileKotlinTaskName, { sourceSet.kotlin }, addAsCommonSources)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user