Add a non-public-API mechanism to import free args for MPP source sets
Arguments can be set using a project extra property following the pattern: `kotlin.mpp.freeCompilerArgsForSourceSet.$sourceSetName`. Only a compilation's default source set free args are appended to the compiler args during Gradle builds.
This commit is contained in:
+1
@@ -891,6 +891,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
||||
it.useExperimental = languageSettings.experimentalAnnotationsInUse.toTypedArray()
|
||||
it.pluginOptions = languageSettings.compilerPluginArguments
|
||||
it.pluginClasspaths = languageSettings.compilerPluginClasspath.map(File::getPath).toTypedArray()
|
||||
it.freeArgs = languageSettings.freeCompilerArgs.toMutableList()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,7 @@ interface KotlinLanguageSettings : Serializable {
|
||||
val experimentalAnnotationsInUse: Set<String>
|
||||
val compilerPluginArguments: Array<String>
|
||||
val compilerPluginClasspath: Set<File>
|
||||
val freeCompilerArgs: Array<String>
|
||||
}
|
||||
|
||||
interface KotlinCompilationOutput : Serializable {
|
||||
|
||||
@@ -214,6 +214,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
||||
val getExperimentalAnnotationsInUse = languageSettingsClass.getMethodOrNull("getExperimentalAnnotationsInUse")
|
||||
val getCompilerPluginArguments = languageSettingsClass.getMethodOrNull("getCompilerPluginArguments")
|
||||
val getCompilerPluginClasspath = languageSettingsClass.getMethodOrNull("getCompilerPluginClasspath")
|
||||
val getFreeCompilerArgs = languageSettingsClass.getMethodOrNull("getFreeCompilerArgs")
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return KotlinLanguageSettingsImpl(
|
||||
getLanguageVersion(gradleLanguageSettings) as? String,
|
||||
@@ -222,7 +223,8 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
||||
getEnabledLanguageFeatures(gradleLanguageSettings) as? Set<String> ?: emptySet(),
|
||||
getExperimentalAnnotationsInUse?.invoke(gradleLanguageSettings) as? Set<String> ?: emptySet(),
|
||||
(getCompilerPluginArguments?.invoke(gradleLanguageSettings) as? List<String> ?: emptyList()).toTypedArray(),
|
||||
(getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet()
|
||||
(getCompilerPluginClasspath?.invoke(gradleLanguageSettings) as? FileCollection)?.files ?: emptySet(),
|
||||
(getFreeCompilerArgs?.invoke(gradleLanguageSettings) as? List<String>).orEmpty().toTypedArray()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,8 @@ data class KotlinLanguageSettingsImpl(
|
||||
override val enabledLanguageFeatures: Set<String>,
|
||||
override val experimentalAnnotationsInUse: Set<String>,
|
||||
override val compilerPluginArguments: Array<String>,
|
||||
override val compilerPluginClasspath: Set<File>
|
||||
override val compilerPluginClasspath: Set<File>,
|
||||
override val freeCompilerArgs: Array<String>
|
||||
) : KotlinLanguageSettings {
|
||||
constructor(settings: KotlinLanguageSettings) : this(
|
||||
settings.languageVersion,
|
||||
@@ -75,7 +76,8 @@ data class KotlinLanguageSettingsImpl(
|
||||
settings.enabledLanguageFeatures,
|
||||
settings.experimentalAnnotationsInUse,
|
||||
settings.compilerPluginArguments,
|
||||
settings.compilerPluginClasspath
|
||||
settings.compilerPluginClasspath,
|
||||
settings.freeCompilerArgs
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user