Use KotlinNativeCompilerOptions in KotlinNativeCompile task
^KT-53108 Fixed
This commit is contained in:
committed by
Space Team
parent
96316a4016
commit
40a4845541
+7
-1
@@ -24,6 +24,7 @@ import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.Exec
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.TEST_COMPILATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo.KPM
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES
|
||||
@@ -45,6 +46,7 @@ import org.jetbrains.kotlin.gradle.testing.internal.configureConventions
|
||||
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
||||
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
||||
import org.jetbrains.kotlin.gradle.utils.Xcode
|
||||
import org.jetbrains.kotlin.gradle.utils.klibModuleName
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.gradle.utils.newInstance
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
@@ -482,7 +484,10 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
||||
val project = compilationInfo.project
|
||||
val compileTaskProvider = project.registerTask<KotlinNativeCompile>(
|
||||
compilationInfo.compileKotlinTaskName,
|
||||
listOf(compilationInfo)
|
||||
listOf(
|
||||
compilationInfo,
|
||||
compilationInfo.compilerOptions.options as KotlinNativeCompilerOptions
|
||||
)
|
||||
) {
|
||||
it.group = BasePlugin.BUILD_GROUP
|
||||
it.description = "Compiles a klibrary from the '${compilationInfo.compilationName}' " +
|
||||
@@ -490,6 +495,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
||||
it.enabled = konanTarget.enabledOnCurrentHost
|
||||
|
||||
it.destinationDirectory.set(project.klibOutputDirectory(compilationInfo).resolve("klib"))
|
||||
it.compilerOptions.moduleName.set(project.klibModuleName(it.baseName))
|
||||
}
|
||||
|
||||
compilationInfo.classesDirs.from(compileTaskProvider.map { it.outputFile })
|
||||
|
||||
+4
-3
@@ -7,15 +7,16 @@ package org.jetbrains.kotlin.gradle.targets.native
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsDefault
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptionsDefault
|
||||
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions
|
||||
import org.jetbrains.kotlin.project.model.LanguageSettings
|
||||
|
||||
class NativeCompilerOptions(project: Project) : HasCompilerOptions<KotlinCommonCompilerOptions> {
|
||||
|
||||
override val options: KotlinCommonCompilerOptions = project.objects
|
||||
.newInstance(KotlinCommonCompilerOptionsDefault::class.java)
|
||||
override val options: KotlinNativeCompilerOptions = project.objects
|
||||
.newInstance(KotlinNativeCompilerOptionsDefault::class.java)
|
||||
.apply {
|
||||
useK2.finalizeValue()
|
||||
}
|
||||
|
||||
+3
-3
@@ -9,6 +9,7 @@ import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.file.FileTree
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode
|
||||
import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions
|
||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||
@@ -37,10 +38,9 @@ internal fun buildKotlinNativeKlibCompilerArgs(
|
||||
libraries: List<File>,
|
||||
|
||||
languageSettings: LanguageSettings,
|
||||
compilerOptions: KotlinCommonCompilerOptions,
|
||||
compilerOptions: KotlinNativeCompilerOptions,
|
||||
compilerPlugins: List<CompilerPluginData>,
|
||||
|
||||
moduleName: String,
|
||||
shortModuleName: String,
|
||||
friendModule: FileCollection,
|
||||
libraryVersion: String,
|
||||
@@ -58,7 +58,7 @@ internal fun buildKotlinNativeKlibCompilerArgs(
|
||||
}
|
||||
|
||||
// Configure FQ module name to avoid cyclic dependencies in klib manifests (see KT-36721).
|
||||
addArg("-module-name", moduleName)
|
||||
addArg("-module-name", compilerOptions.moduleName.get())
|
||||
add("-Xshort-module-name=$shortModuleName")
|
||||
|
||||
val friends = friendModule.files
|
||||
|
||||
+10
-8
@@ -23,6 +23,7 @@ import org.gradle.process.ExecOperations
|
||||
import org.gradle.work.NormalizeLineEndings
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2NativeCompilerArguments
|
||||
import org.jetbrains.kotlin.compilerRunner.*
|
||||
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCInteropRunner.Companion.run
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
@@ -307,12 +308,13 @@ internal constructor(
|
||||
@get:Internal
|
||||
@Transient // can't be serialized for Gradle configuration cache
|
||||
final override val compilation: KotlinCompilationInfo,
|
||||
override val compilerOptions: KotlinNativeCompilerOptions,
|
||||
private val objectFactory: ObjectFactory,
|
||||
private val providerFactory: ProviderFactory,
|
||||
private val execOperations: ExecOperations
|
||||
) : AbstractKotlinNativeCompile<KotlinCommonOptions, StubK2NativeCompilerArguments>(objectFactory),
|
||||
KotlinCompile<KotlinCommonOptions>,
|
||||
KotlinCompilationTask<KotlinCommonCompilerOptions> {
|
||||
KotlinCompilationTask<KotlinNativeCompilerOptions> {
|
||||
|
||||
@get:Input
|
||||
override val outputKind = LIBRARY
|
||||
@@ -332,10 +334,12 @@ internal constructor(
|
||||
// Store as an explicit provider in order to allow Gradle Instant Execution to capture the state
|
||||
// private val allSourceProvider = compilation.map { project.files(it.allSources).asFileTree }
|
||||
|
||||
@get:Input
|
||||
val moduleName: String by lazy {
|
||||
project.klibModuleName(baseName)
|
||||
}
|
||||
@Deprecated(
|
||||
message = "Please use 'compilerOptions.moduleName' to configure",
|
||||
replaceWith = ReplaceWith("compilerOptions.moduleName.get()")
|
||||
)
|
||||
@get:Internal
|
||||
val moduleName: String get() = compilerOptions.moduleName.get()
|
||||
|
||||
@get:OutputFile
|
||||
override val outputFile: Provider<File>
|
||||
@@ -377,8 +381,7 @@ internal constructor(
|
||||
@Input get() = languageSettings.optInAnnotationsInUse
|
||||
// endregion.
|
||||
|
||||
// region Kotlin options.
|
||||
override val compilerOptions: KotlinCommonCompilerOptions = compilation.compilerOptions.options
|
||||
// region Kotlin options
|
||||
|
||||
override val kotlinOptions: KotlinCommonOptions = object : KotlinCommonOptions {
|
||||
override val options: KotlinCommonCompilerOptions
|
||||
@@ -471,7 +474,6 @@ internal constructor(
|
||||
languageSettings,
|
||||
compilerOptions,
|
||||
plugins,
|
||||
moduleName,
|
||||
shortModuleName,
|
||||
friendModule,
|
||||
artifactVersion,
|
||||
|
||||
Reference in New Issue
Block a user