diff options
Diffstat (limited to 'gradle/dokka.gradle.kts')
-rw-r--r-- | gradle/dokka.gradle.kts | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/gradle/dokka.gradle.kts b/gradle/dokka.gradle.kts new file mode 100644 index 00000000..659890a3 --- /dev/null +++ b/gradle/dokka.gradle.kts @@ -0,0 +1,75 @@ +import org.jetbrains.dokka.gradle.* +import java.net.* + +/* + * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +// Configures generation of JavaDoc & Dokka artifacts +apply<DokkaPlugin>() +//apply<JavaPlugin>() + +fun GradleDokkaSourceSetBuilder.makeLinkMapping(projectDir: File) { + sourceLink { + val relPath = rootProject.projectDir.toPath().relativize(projectDir.toPath()) + localDirectory.set(projectDir.resolve("src")) + remoteUrl.set(URL("https://github.com/kotlin/kotlinx.coroutines/tree/master/$relPath/src")) + remoteLineSuffix.set("#L") + } +} + +val knit_version: String by project +tasks.withType(DokkaTaskPartial::class).configureEach { + dependencies { + plugins("org.jetbrains.kotlinx:dokka-pathsaver-plugin:$knit_version") + } +} + +tasks.withType(DokkaTaskPartial::class).configureEach { + suppressInheritedMembers.set(true) + dokkaSourceSets.configureEach { + jdkVersion.set(11) + includes.from("README.md") + noStdlibLink.set(true) + + externalDocumentationLink { + url.set(URL("https://kotlinlang.org/api/latest/jvm/stdlib/")) + packageListUrl.set(rootProject.projectDir.toPath().resolve("site/stdlib.package.list").toUri().toURL()) + } + + if (project.name != "kotlinx-coroutines-core") { + dependsOn(project.configurations["compileClasspath"]) + doFirst { + // resolve classpath only during execution + classpath.from(project.configurations["compileClasspath"].files)// + project.sourceSets.main.output.files) + } + } + } +} + +if (project.name == "kotlinx-coroutines-core") { + // Custom configuration for MPP modules + tasks.withType(DokkaTaskPartial::class).configureEach { + dokkaSourceSets { + val commonMain by getting { + makeLinkMapping(project.file("common")) + } + + val nativeMain by getting { + makeLinkMapping(project.file("native")) + } + + val jsMain by getting { + makeLinkMapping(project.file("js")) + } + + val jvmMain by getting { + makeLinkMapping(project.file("jvm")) + } + + configureEach { + classpath.from(project.configurations["jvmCompileClasspath"].files) + } + } + } +} |