aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim Mishenev <vad-mishenev@yandex.ru>2022-08-25 18:23:41 +0300
committerGitHub <noreply@github.com>2022-08-25 18:23:41 +0300
commitc37c9716857d78589a9e6faba27d2c596f2384de (patch)
treecc0c1de4575b76f06e1d95ddecf2c30fdfe06adb
parent09c220e678f0a8dde3450da58fab57523fcfc047 (diff)
downloaddokka-c37c9716857d78589a9e6faba27d2c596f2384de.tar.gz
dokka-c37c9716857d78589a9e6faba27d2c596f2384de.tar.bz2
dokka-c37c9716857d78589a9e6faba27d2c596f2384de.zip
Ignore compatibility metadata variant if HMPP is enabled (#2634)
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt13
1 files changed, 13 insertions, 0 deletions
diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt
index 1d0fa4a3..b934d206 100644
--- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt
+++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt
@@ -6,12 +6,25 @@ import org.jetbrains.dokka.gradle.isAndroidTarget
import org.jetbrains.dokka.utilities.cast
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCommonCompilation
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+val Project.isHMPPEnabled
+ // [KotlinCommonCompilation.isKlibCompilation] is internal, so we use this
+ get() = (this.findProperty("kotlin.mpp.enableGranularSourceSetsMetadata") as? String)?.toBoolean() ?: false
+
internal fun Project.classpathOf(sourceSet: KotlinSourceSet): FileCollection {
val compilations = compilationsOf(sourceSet)
return if (compilations.isNotEmpty()) {
compilations
+ /**
+ * If the project has enabled Compatibility Metadata Variant (produces legacy variant),
+ * we don't touch it due to some dependant library
+ * might be published without Compatibility Metadata Variant.
+ * Dokka needs only HMPP variant
+ * Ignore [org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCommonCompilation] for `commonMain` sourceSet with name `main`
+ */
+ .filterNot { compilation -> isHMPPEnabled && compilation is KotlinCommonCompilation && compilation.name == "main" }
.map { compilation -> compileClasspathOf(compilation) }
.reduce { acc, fileCollection -> acc + fileCollection }
} else {