Move kotlinOptions out of the tasks
This commit is contained in:
+4
@@ -20,6 +20,8 @@ import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.tasks.*
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl
|
||||
import org.jetbrains.kotlin.gradle.tasks.FilteringSourceRootsContainer
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.SourceRoots
|
||||
@@ -33,6 +35,8 @@ import java.io.File
|
||||
open class KaptGenerateStubsTask : KotlinCompile() {
|
||||
override val sourceRootsContainer = FilteringSourceRootsContainer(emptyList(), { isSourceRootAllowed(it) })
|
||||
|
||||
override val kotlinOptions: KotlinJvmOptions = KotlinJvmOptionsImpl()
|
||||
|
||||
@get:Internal
|
||||
@field:Transient // can't serialize task references in Gradle instant execution state
|
||||
internal lateinit var kotlinCompileTask: KotlinCompile
|
||||
|
||||
+17
-5
@@ -614,9 +614,16 @@ internal open class KotlinPlugin(
|
||||
Kotlin2JvmSourceSetProcessor(tasksProvider, compilation, kotlinPluginVersion)
|
||||
|
||||
override fun apply(project: Project) {
|
||||
val target = KotlinWithJavaTarget<KotlinJvmOptions>(project, KotlinPlatformType.jvm, targetName).apply {
|
||||
disambiguationClassifier = null // don't add anything to the task names
|
||||
}
|
||||
val target =
|
||||
KotlinWithJavaTarget<KotlinJvmOptions>(
|
||||
project,
|
||||
KotlinPlatformType.jvm,
|
||||
targetName,
|
||||
{ KotlinJvmOptionsImpl() }
|
||||
).apply {
|
||||
disambiguationClassifier = null // don't add anything to the task names
|
||||
}
|
||||
|
||||
(project.kotlinExtension as KotlinJvmProjectExtension).target = target
|
||||
|
||||
super.apply(project)
|
||||
@@ -642,7 +649,12 @@ internal open class KotlinCommonPlugin(
|
||||
KotlinCommonSourceSetProcessor(compilation, tasksProvider, kotlinPluginVersion)
|
||||
|
||||
override fun apply(project: Project) {
|
||||
val target = KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>(project, KotlinPlatformType.common, targetName)
|
||||
val target = KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>(
|
||||
project,
|
||||
KotlinPlatformType.common,
|
||||
targetName,
|
||||
{ KotlinMultiplatformCommonOptionsImpl() }
|
||||
)
|
||||
(project.kotlinExtension as KotlinCommonProjectExtension).target = target
|
||||
|
||||
super.apply(project)
|
||||
@@ -675,7 +687,7 @@ internal open class Kotlin2JsPlugin(
|
||||
For usage details, see https://kotlinlang.org/docs/reference/js-project-setup.html
|
||||
""".trimIndent()
|
||||
)
|
||||
val target = KotlinWithJavaTarget<KotlinJsOptions>(project, KotlinPlatformType.js, targetName)
|
||||
val target = KotlinWithJavaTarget<KotlinJsOptions>(project, KotlinPlatformType.js, targetName, { KotlinJsOptionsImpl() })
|
||||
|
||||
(project.kotlinExtension as Kotlin2JsProjectExtension).target = target
|
||||
super.apply(project)
|
||||
|
||||
+4
-2
@@ -8,9 +8,8 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptionsImpl
|
||||
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.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations
|
||||
@@ -22,6 +21,9 @@ class KotlinCommonCompilation(
|
||||
target: KotlinTarget,
|
||||
name: String
|
||||
) : AbstractKotlinCompilation<KotlinMultiplatformCommonOptions>(target, name), KotlinMetadataCompilation<KotlinMultiplatformCommonOptions> {
|
||||
|
||||
override val kotlinOptions: KotlinMultiplatformCommonOptions = KotlinMultiplatformCommonOptionsImpl()
|
||||
|
||||
override val compileKotlinTask: KotlinCompileCommon
|
||||
get() = super.compileKotlinTask as KotlinCompileCommon
|
||||
|
||||
|
||||
-3
@@ -44,9 +44,6 @@ abstract class AbstractKotlinCompilation<T : KotlinCommonOptions>(
|
||||
override val compilationName: String
|
||||
) : KotlinCompilation<T>, HasKotlinDependencies {
|
||||
|
||||
override val kotlinOptions: T
|
||||
get() = compileKotlinTask.kotlinOptions
|
||||
|
||||
override fun kotlinOptions(configure: T.() -> Unit) =
|
||||
configure(kotlinOptions)
|
||||
|
||||
|
||||
+4
@@ -11,6 +11,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.util.WrapUtil
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptionsImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
@@ -26,6 +27,9 @@ open class KotlinJsCompilation(
|
||||
target: KotlinTarget,
|
||||
name: String
|
||||
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
|
||||
|
||||
override val kotlinOptions: KotlinJsOptions = KotlinJsOptionsImpl()
|
||||
|
||||
internal val binaries: KotlinJsBinaryContainer =
|
||||
target.project.objects.newInstance(
|
||||
KotlinJsBinaryContainer::class.java,
|
||||
|
||||
+3
@@ -11,6 +11,7 @@ import org.gradle.api.tasks.*
|
||||
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptionsImpl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.DEVELOPMENT
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.PRODUCTION
|
||||
@@ -27,6 +28,8 @@ open class KotlinJsIrLink : Kotlin2JsCompile() {
|
||||
@Internal
|
||||
override fun getSource(): FileTree = super.getSource()
|
||||
|
||||
override val kotlinOptions: KotlinJsOptions = KotlinJsOptionsImpl()
|
||||
|
||||
@get:SkipWhenEmpty
|
||||
@get:InputDirectory
|
||||
@get:PathSensitive(PathSensitivity.RELATIVE)
|
||||
|
||||
+5
-2
@@ -12,6 +12,7 @@ import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.compile.JavaCompile
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.getJavaTaskProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.getTestedVariantData
|
||||
@@ -21,8 +22,10 @@ import org.jetbrains.kotlin.gradle.plugin.getTestedVariantData
|
||||
name: String
|
||||
) : AbstractKotlinCompilationToRunnableFiles<KotlinJvmOptions>(target, name) {
|
||||
|
||||
lateinit var androidVariant: BaseVariant
|
||||
internal set
|
||||
override val kotlinOptions: KotlinJvmOptions = KotlinJvmOptionsImpl()
|
||||
|
||||
lateinit var androidVariant: BaseVariant
|
||||
internal set
|
||||
|
||||
override val compileKotlinTask: org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
get() = super.compileKotlinTask as org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
+5
-1
@@ -8,8 +8,9 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.plugins.JavaPluginConvention
|
||||
import org.gradle.api.tasks.compile.JavaCompile
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
|
||||
@@ -17,6 +18,9 @@ open class KotlinJvmCompilation(
|
||||
override val target: KotlinJvmTarget,
|
||||
name: String
|
||||
) : AbstractKotlinCompilationToRunnableFiles<KotlinJvmOptions>(target, name), KotlinCompilationWithResources<KotlinJvmOptions> {
|
||||
|
||||
override val kotlinOptions: KotlinJvmOptions = KotlinJvmOptionsImpl()
|
||||
|
||||
override val processResourcesTaskName: String
|
||||
get() = disambiguateName("processResources")
|
||||
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.JavaPlugin
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
@@ -29,7 +30,7 @@ class KotlinJvmWithJavaTargetPreset(
|
||||
|
||||
project.plugins.apply(JavaPlugin::class.java)
|
||||
|
||||
val target = KotlinWithJavaTarget<KotlinJvmOptions>(project, KotlinPlatformType.jvm, name).apply {
|
||||
val target = KotlinWithJavaTarget<KotlinJvmOptions>(project, KotlinPlatformType.jvm, name, { KotlinJvmOptionsImpl() }).apply {
|
||||
disambiguationClassifier = name
|
||||
preset = this@KotlinJvmWithJavaTargetPreset
|
||||
}
|
||||
|
||||
+2
-1
@@ -18,7 +18,8 @@ import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||
|
||||
class KotlinWithJavaCompilation<KotlinOptionsType : KotlinCommonOptions>(
|
||||
target: KotlinWithJavaTarget<KotlinOptionsType>,
|
||||
name: String
|
||||
name: String,
|
||||
override val kotlinOptions: KotlinOptionsType
|
||||
) : AbstractKotlinCompilationToRunnableFiles<KotlinOptionsType>(target, name), KotlinCompilationWithResources<KotlinOptionsType> {
|
||||
lateinit var javaSourceSet: SourceSet
|
||||
|
||||
|
||||
+3
-2
@@ -11,7 +11,8 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
|
||||
class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions>(
|
||||
val project: Project,
|
||||
val target: KotlinWithJavaTarget<KotlinOptionsType>
|
||||
val target: KotlinWithJavaTarget<KotlinOptionsType>,
|
||||
val kotlinOptionsFactory: () -> KotlinOptionsType
|
||||
) : KotlinCompilationFactory<KotlinWithJavaCompilation<KotlinOptionsType>> {
|
||||
|
||||
override val itemClass: Class<KotlinWithJavaCompilation<KotlinOptionsType>>
|
||||
@@ -19,7 +20,7 @@ class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions>(
|
||||
get() = KotlinWithJavaCompilation::class.java as Class<KotlinWithJavaCompilation<KotlinOptionsType>>
|
||||
|
||||
override fun create(name: String): KotlinWithJavaCompilation<KotlinOptionsType> {
|
||||
val result = KotlinWithJavaCompilation(target, name)
|
||||
val result = KotlinWithJavaCompilation(target, name, kotlinOptionsFactory())
|
||||
return result
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -19,7 +19,8 @@ import java.io.File
|
||||
open class KotlinWithJavaTarget<KotlinOptionsType : KotlinCommonOptions>(
|
||||
project: Project,
|
||||
override val platformType: KotlinPlatformType,
|
||||
override val targetName: String
|
||||
override val targetName: String,
|
||||
kotlinOptionsFactory: () -> KotlinOptionsType
|
||||
) : AbstractKotlinTarget(project) {
|
||||
override var disambiguationClassifier: String? = null
|
||||
internal set
|
||||
@@ -40,7 +41,7 @@ open class KotlinWithJavaTarget<KotlinOptionsType : KotlinCommonOptions>(
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
project.container(
|
||||
KotlinWithJavaCompilation::class.java as Class<KotlinWithJavaCompilation<KotlinOptionsType>>,
|
||||
KotlinWithJavaCompilationFactory(project, this)
|
||||
KotlinWithJavaCompilationFactory(project, this, kotlinOptionsFactory)
|
||||
)
|
||||
|
||||
internal val defaultArtifactClassesListFile: File
|
||||
|
||||
+21
-9
@@ -16,10 +16,7 @@ import org.gradle.api.file.SourceDirectorySet
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.getSourceSetHierarchy
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet
|
||||
@@ -34,8 +31,26 @@ abstract class AbstractKotlinNativeCompilation(
|
||||
compilationName: String
|
||||
) : AbstractKotlinCompilation<KotlinCommonOptions>(target, compilationName) {
|
||||
|
||||
override val kotlinOptions: KotlinCommonOptions
|
||||
get() = compileKotlinTask.kotlinOptions
|
||||
override val kotlinOptions: KotlinCommonOptions = NativeCompileOptions()
|
||||
|
||||
private inner class NativeCompileOptions : KotlinCommonOptions {
|
||||
private val languageSettings: LanguageSettingsBuilder
|
||||
get() = defaultSourceSet.languageSettings
|
||||
|
||||
override var apiVersion: String?
|
||||
get() = languageSettings.apiVersion
|
||||
set(value) { languageSettings.apiVersion = value }
|
||||
|
||||
override var languageVersion: String?
|
||||
get() = languageSettings.languageVersion
|
||||
set(value) { languageSettings.languageVersion = value }
|
||||
|
||||
override var allWarningsAsErrors: Boolean = false
|
||||
override var suppressWarnings: Boolean = false
|
||||
override var verbose: Boolean = false
|
||||
|
||||
override var freeCompilerArgs: List<String> = listOf()
|
||||
}
|
||||
|
||||
override val compileKotlinTask: KotlinNativeCompile
|
||||
get() = super.compileKotlinTask as KotlinNativeCompile
|
||||
@@ -96,9 +111,6 @@ class KotlinNativeCompilation(
|
||||
|
||||
val binariesTaskName: String
|
||||
get() = lowerCamelCaseName(target.disambiguationClassifier, compilationName, "binaries")
|
||||
|
||||
override val kotlinOptions: KotlinCommonOptions
|
||||
get() = compileKotlinTask.kotlinOptions
|
||||
}
|
||||
|
||||
class KotlinSharedNativeCompilation(override val target: KotlinMetadataTarget, val konanTargets: List<KonanTarget>, name: String) :
|
||||
|
||||
+2
-17
@@ -368,28 +368,13 @@ open class KotlinNativeCompile : AbstractKotlinNativeCompile<KotlinCommonOptions
|
||||
// endregion.
|
||||
|
||||
// region Kotlin options.
|
||||
private inner class NativeCompileOptions : KotlinCommonOptions {
|
||||
override var apiVersion: String?
|
||||
get() = languageSettings.apiVersion
|
||||
set(value) { languageSettings.apiVersion = value }
|
||||
|
||||
override var languageVersion: String?
|
||||
get() = this@KotlinNativeCompile.languageVersion
|
||||
set(value) { languageSettings.languageVersion = value }
|
||||
|
||||
override var allWarningsAsErrors: Boolean = false
|
||||
override var suppressWarnings: Boolean = false
|
||||
override var verbose: Boolean = false
|
||||
|
||||
override var freeCompilerArgs: List<String> = listOf()
|
||||
}
|
||||
override val kotlinOptions: KotlinCommonOptions
|
||||
get() = compilation.kotlinOptions
|
||||
|
||||
@get:Input
|
||||
override val additionalCompilerOptions: Collection<String>
|
||||
get() = kotlinOptions.freeCompilerArgs
|
||||
|
||||
override val kotlinOptions: KotlinCommonOptions = NativeCompileOptions()
|
||||
|
||||
override fun kotlinOptions(fn: KotlinCommonOptions.() -> Unit) {
|
||||
kotlinOptions.fn()
|
||||
}
|
||||
|
||||
+2
-3
@@ -40,9 +40,8 @@ import java.io.File
|
||||
@CacheableTask
|
||||
open class KotlinCompileCommon : AbstractKotlinCompile<K2MetadataCompilerArguments>(), KotlinCommonCompile {
|
||||
|
||||
private val kotlinOptionsImpl = KotlinMultiplatformCommonOptionsImpl()
|
||||
override val kotlinOptions: KotlinMultiplatformCommonOptions
|
||||
get() = kotlinOptionsImpl
|
||||
get() = taskData.compilation.kotlinOptions as KotlinMultiplatformCommonOptionsImpl
|
||||
|
||||
override fun createCompilerArgs(): K2MetadataCompilerArguments =
|
||||
K2MetadataCompilerArguments()
|
||||
@@ -75,7 +74,7 @@ open class KotlinCompileCommon : AbstractKotlinCompile<K2MetadataCompilerArgumen
|
||||
refinesPaths = refinesMetadataPaths.map { it.absolutePath }.toTypedArray()
|
||||
}
|
||||
|
||||
kotlinOptionsImpl.updateArguments(args)
|
||||
(kotlinOptions as KotlinMultiplatformCommonOptionsImpl).updateArguments(args)
|
||||
}
|
||||
|
||||
private fun outputPathsFromMetadataCompilationsOf(sourceSets: Iterable<KotlinSourceSet>): List<File> {
|
||||
|
||||
+4
-8
@@ -358,10 +358,8 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
|
||||
@get:Internal
|
||||
internal var parentKotlinOptionsImpl: KotlinJvmOptionsImpl? = null
|
||||
|
||||
private val kotlinOptionsImpl = KotlinJvmOptionsImpl()
|
||||
|
||||
override val kotlinOptions: KotlinJvmOptions
|
||||
get() = kotlinOptionsImpl
|
||||
get() = taskData.compilation.kotlinOptions as KotlinJvmOptions
|
||||
|
||||
@get:Internal
|
||||
internal open val sourceRootsContainer = FilteringSourceRootsContainer()
|
||||
@@ -509,10 +507,8 @@ open class Kotlin2JsCompile : AbstractKotlinCompile<K2JSCompilerArguments>(), Ko
|
||||
incremental = true
|
||||
}
|
||||
|
||||
private val kotlinOptionsImpl = KotlinJsOptionsImpl()
|
||||
|
||||
override val kotlinOptions: KotlinJsOptions
|
||||
get() = kotlinOptionsImpl
|
||||
get() = taskData.compilation.kotlinOptions as KotlinJsOptions
|
||||
|
||||
@get:Internal
|
||||
protected val defaultOutputFile: File
|
||||
@@ -548,7 +544,7 @@ open class Kotlin2JsCompile : AbstractKotlinCompile<K2JSCompilerArguments>(), Ko
|
||||
|
||||
if (defaultsOnly) return
|
||||
|
||||
kotlinOptionsImpl.updateArguments(args)
|
||||
(kotlinOptions as KotlinJsOptionsImpl).updateArguments(args)
|
||||
}
|
||||
|
||||
override fun getSourceRoots() = SourceRoots.KotlinOnly.create(getSource(), sourceFilesExtensions)
|
||||
@@ -570,7 +566,7 @@ open class Kotlin2JsCompile : AbstractKotlinCompile<K2JSCompilerArguments>(), Ko
|
||||
@get:Optional
|
||||
@get:PathSensitive(PathSensitivity.RELATIVE)
|
||||
internal val sourceMapBaseDirs: FileCollection?
|
||||
get() = kotlinOptionsImpl.sourceMapBaseDirs
|
||||
get() = (kotlinOptions as KotlinJsOptionsImpl).sourceMapBaseDirs
|
||||
|
||||
private fun isHybridKotlinJsLibrary(file: File): Boolean =
|
||||
JsLibraryUtils.isKotlinJavascriptLibrary(file) && isKotlinLibrary(file)
|
||||
|
||||
Reference in New Issue
Block a user