Gradle, native: Propagate compilation free args to link tasks

The free args DSL may be changed in 1.3.70 for all platforms. So it
was decided to preserve the old behaviour here to avoid making
similar changes in two releases in a row.
This commit is contained in:
Ilya Matveev
2019-09-05 19:08:33 +07:00
parent 20332ae231
commit 7122a9d819
5 changed files with 27 additions and 8 deletions
@@ -24,8 +24,9 @@ class KotlinNativeCompilationFactory(
if (name == KotlinCompilation.TEST_COMPILATION_NAME) {
friendCompilationName = KotlinCompilation.MAIN_COMPILATION_NAME
}
project.whenEvaluated {
CompilationFreeArgsValidator.validate(this@apply)
}
// TODO: Validate compilation free args using the [CompilationFreeArgsValidator]
// when the compilation and the link args are separated (see KT-33717).
// Note: such validation should be done in the whenEvaluate block because
// a user can change args during project configuration.
}
}
@@ -121,15 +121,15 @@ abstract class AbstractKotlinNativeCompile<T : KotlinCommonToolOptions> : Abstra
val target: String
@Input get() = compilation.target.konanTarget.name
val additionalCompilerOptions: Collection<String>
@Input get() = kotlinOptions.freeCompilerArgs
// region Compiler options.
@get:Internal
abstract val kotlinOptions: T
abstract fun kotlinOptions(fn: T.() -> Unit)
abstract fun kotlinOptions(fn: Closure<*>)
@get:Input
abstract val additionalCompilerOptions: Collection<String>
@get:Internal
val languageSettings: LanguageSettingsBuilder?
get() = project.kotlinExtension.sourceSets.findByName(compilation.defaultSourceSetName)?.languageSettings
@@ -310,6 +310,10 @@ open class KotlinNativeCompile : AbstractKotlinNativeCompile<KotlinCommonOptions
}
}
@get:Input
override val additionalCompilerOptions: Collection<String>
get() = kotlinOptions.freeCompilerArgs
override val kotlinOptions: KotlinCommonOptions = NativeCompileOptions()
override fun kotlinOptions(fn: KotlinCommonOptions.() -> Unit) {
@@ -412,6 +416,11 @@ open class KotlinNativeLink : AbstractKotlinNativeCompile<KotlinCommonToolOption
override var freeCompilerArgs: List<String> = listOf()
}
// We propagate compilation free args to the link task for now (see KT-33717).
@get:Input
override val additionalCompilerOptions: Collection<String>
get() = kotlinOptions.freeCompilerArgs + compilation.kotlinOptions.freeCompilerArgs
override val kotlinOptions: KotlinCommonToolOptions = NativeLinkOptions()
override fun kotlinOptions(fn: KotlinCommonToolOptions.() -> Unit) {