From ed2b817409bf104f4f2f82e7c57701e0d456fa62 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Wed, 19 Apr 2023 11:27:35 +0200 Subject: [PATCH] [Gradle] KotlinNativeCompile: Only add -Xfragment{x} arguments for platform compilations Shared Native compilations shall only use -Xcommon-sources w/o setting any of the -Xfragment arguments in K2 ^KT-57944 Verification Pending --- .../targets/native/tasks/KotlinNativeTasks.kt | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) 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 35dfb456260..e2f1b860fe6 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 @@ -452,7 +452,8 @@ internal constructor( args.pluginOptions = compilerPlugins.flatMap { it.options.arguments }.toTypedArray() - if (compilerOptions.usesK2.get()) { + /* Shared native compilations in K2 still use -Xcommon-sources and klib dependencies */ + if (compilerOptions.usesK2.get() && sharedCompilationData == null) { args.fragments = multiplatformStructure.fragmentsCompilerArgs args.fragmentRefines = multiplatformStructure.fragmentRefinesCompilerArgs } @@ -475,14 +476,9 @@ internal constructor( } sources { args -> - if (compilerOptions.usesK2.get()) { - /* - For now, we only pass multiplatform structure to K2 for platform compilations - Metadata compilations will compile against pre-compiled klibs from their dependsOn - */ - if (sharedCompilationData == null) { - args.fragmentSources = multiplatformStructure.fragmentSourcesCompilerArgs - } + /* Shared native compilations in K2 still use -Xcommon-sources and klib dependencies */ + if (compilerOptions.usesK2.get() && sharedCompilationData == null) { + args.fragmentSources = multiplatformStructure.fragmentSourcesCompilerArgs } else { args.commonSources = commonSourcesTree.files.takeIf { it.isNotEmpty() }?.toPathsArray() }