diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt index 87bb8f855c1..8de7d4c53eb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt @@ -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 : AbstractKotl val project = compilationInfo.project val compileTaskProvider = project.registerTask( 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 : 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 }) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerOptions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerOptions.kt index 35488607cac..a6d4bf3be53 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerOptions.kt @@ -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 { - override val options: KotlinCommonCompilerOptions = project.objects - .newInstance(KotlinCommonCompilerOptionsDefault::class.java) + override val options: KotlinNativeCompilerOptions = project.objects + .newInstance(KotlinNativeCompilerOptionsDefault::class.java) .apply { useK2.finalizeValue() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeCompilerArgBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeCompilerArgBuilder.kt index 4effdc1e480..4eade97b7d0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeCompilerArgBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeCompilerArgBuilder.kt @@ -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, languageSettings: LanguageSettings, - compilerOptions: KotlinCommonCompilerOptions, + compilerOptions: KotlinNativeCompilerOptions, compilerPlugins: List, - 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 diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index 8ff83401e05..fcdae637a64 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -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(objectFactory), KotlinCompile, - KotlinCompilationTask { + KotlinCompilationTask { @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 @@ -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,