[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.targets.js.KotlinJsTarget
|
||||
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.tooling.core.closure
|
||||
import java.util.*
|
||||
@@ -59,107 +58,6 @@ interface CompilationDetailsWithRuntime<T : KotlinCommonOptions> : CompilationDe
|
||||
internal val CompilationDetails<*>.associateCompilationsClosure: Iterable<CompilationDetails<*>>
|
||||
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>(
|
||||
open val variant: GradleKpmVariantInternal,
|
||||
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