Update KotlinNativeLinkArtifactTask task to use compiler options
^KT-27301 In Progress
This commit is contained in:
+54
-14
@@ -14,11 +14,15 @@ import org.gradle.api.tasks.*
|
|||||||
import org.gradle.process.ExecOperations
|
import org.gradle.process.ExecOperations
|
||||||
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCompilerRunner
|
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCompilerRunner
|
||||||
import org.jetbrains.kotlin.compilerRunner.KotlinToolRunner
|
import org.jetbrains.kotlin.compilerRunner.KotlinToolRunner
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.CompilerCommonToolOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.CompilerCommonToolOptionsDefault
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions
|
||||||
import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated
|
import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode
|
import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.tasks.buildKotlinNativeBinaryLinkerArgs
|
import org.jetbrains.kotlin.gradle.targets.native.tasks.buildKotlinNativeBinaryLinkerArgs
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinToolTask
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.newInstance
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.util.visibleName
|
import org.jetbrains.kotlin.konan.util.visibleName
|
||||||
@@ -31,7 +35,8 @@ open class KotlinNativeLinkArtifactTask @Inject constructor(
|
|||||||
private val objectFactory: ObjectFactory,
|
private val objectFactory: ObjectFactory,
|
||||||
private val execOperations: ExecOperations,
|
private val execOperations: ExecOperations,
|
||||||
private val projectLayout: ProjectLayout
|
private val projectLayout: ProjectLayout
|
||||||
) : DefaultTask() {
|
) : DefaultTask(),
|
||||||
|
KotlinToolTask<CompilerCommonToolOptions> {
|
||||||
|
|
||||||
@get:Input
|
@get:Input
|
||||||
var baseName: String = project.name
|
var baseName: String = project.name
|
||||||
@@ -112,37 +117,72 @@ open class KotlinNativeLinkArtifactTask @Inject constructor(
|
|||||||
|
|
||||||
private val nativeBinaryOptions = PropertiesProvider(project).nativeBinaryOptions
|
private val nativeBinaryOptions = PropertiesProvider(project).nativeBinaryOptions
|
||||||
|
|
||||||
|
override val toolOptions: CompilerCommonToolOptions = objectFactory
|
||||||
|
.newInstance<CompilerCommonToolOptionsDefault>()
|
||||||
|
.apply {
|
||||||
|
freeCompilerArgs.addAll(PropertiesProvider(project).nativeLinkArgs)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
@Deprecated(
|
||||||
|
message = "Replaced with toolOptions",
|
||||||
|
replaceWith = ReplaceWith("toolOptions")
|
||||||
|
)
|
||||||
@get:Internal
|
@get:Internal
|
||||||
val kotlinOptions = object : KotlinCommonToolOptions {
|
val kotlinOptions = object : KotlinCommonToolOptions {
|
||||||
override var allWarningsAsErrors: Boolean = false
|
override val options: CompilerCommonToolOptions
|
||||||
override var suppressWarnings: Boolean = false
|
get() = toolOptions
|
||||||
override var verbose: Boolean = false
|
|
||||||
override var freeCompilerArgs: List<String> = PropertiesProvider(project).nativeLinkArgs
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
@Deprecated(
|
||||||
|
message = "Replaced with toolOptions()",
|
||||||
|
replaceWith = ReplaceWith("toolOptions(fn)")
|
||||||
|
)
|
||||||
fun kotlinOptions(fn: KotlinCommonToolOptions.() -> Unit) {
|
fun kotlinOptions(fn: KotlinCommonToolOptions.() -> Unit) {
|
||||||
kotlinOptions.fn()
|
kotlinOptions.fn()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
@Deprecated(
|
||||||
|
message = "Replaced with toolOptions()",
|
||||||
|
replaceWith = ReplaceWith("toolOptions(fn)")
|
||||||
|
)
|
||||||
fun kotlinOptions(fn: Action<KotlinCommonToolOptions>) {
|
fun kotlinOptions(fn: Action<KotlinCommonToolOptions>) {
|
||||||
fn.execute(kotlinOptions)
|
fn.execute(kotlinOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
@get:Input
|
@Deprecated(
|
||||||
|
message = "Replaced with toolOptions.allWarningsAsErrors",
|
||||||
|
replaceWith = ReplaceWith("toolOptions.allWarningsAsErrors")
|
||||||
|
)
|
||||||
|
@get:Internal
|
||||||
val allWarningsAsErrors: Boolean
|
val allWarningsAsErrors: Boolean
|
||||||
get() = kotlinOptions.allWarningsAsErrors
|
get() = toolOptions.allWarningsAsErrors.get()
|
||||||
|
|
||||||
@get:Input
|
@Deprecated(
|
||||||
|
message = "Replaced with toolOptions.suppressWarnings",
|
||||||
|
replaceWith = ReplaceWith("toolOptions.suppressWarnings")
|
||||||
|
)
|
||||||
|
@get:Internal
|
||||||
val suppressWarnings: Boolean
|
val suppressWarnings: Boolean
|
||||||
get() = kotlinOptions.suppressWarnings
|
get() = toolOptions.suppressWarnings.get()
|
||||||
|
|
||||||
@get:Input
|
@Deprecated(
|
||||||
|
message = "Replaced with toolOptions.verbose",
|
||||||
|
replaceWith = ReplaceWith("toolOptions.verbose")
|
||||||
|
)
|
||||||
|
@get:Internal
|
||||||
val verbose: Boolean
|
val verbose: Boolean
|
||||||
get() = kotlinOptions.verbose
|
get() = toolOptions.verbose.get()
|
||||||
|
|
||||||
@get:Input
|
@Deprecated(
|
||||||
|
message = "Replaced with toolOptions.freeCompilerArgs",
|
||||||
|
replaceWith = ReplaceWith("toolOptions.freeCompilerArgs")
|
||||||
|
)
|
||||||
|
@get:Internal
|
||||||
val freeCompilerArgs: List<String>
|
val freeCompilerArgs: List<String>
|
||||||
get() = kotlinOptions.freeCompilerArgs
|
get() = toolOptions.freeCompilerArgs.get()
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
val outputFile: File
|
val outputFile: File
|
||||||
@@ -171,7 +211,7 @@ open class KotlinNativeLinkArtifactTask @Inject constructor(
|
|||||||
libraries = libraries.klibs(),
|
libraries = libraries.klibs(),
|
||||||
friendModules = emptyList(), //FriendModules aren't needed here because it's no test artifact
|
friendModules = emptyList(), //FriendModules aren't needed here because it's no test artifact
|
||||||
enableEndorsedLibs = enableEndorsedLibs,
|
enableEndorsedLibs = enableEndorsedLibs,
|
||||||
toolOptions = kotlinOptions,
|
toolOptions = toolOptions,
|
||||||
compilerPlugins = emptyList(),//CompilerPlugins aren't needed here because it's no compilation but linking
|
compilerPlugins = emptyList(),//CompilerPlugins aren't needed here because it's no compilation but linking
|
||||||
processTests = processTests,
|
processTests = processTests,
|
||||||
entryPoint = entryPoint,
|
entryPoint = entryPoint,
|
||||||
|
|||||||
Reference in New Issue
Block a user