blob: aff3368dc2c7469ba37b53e2838ea4fc742c54b4 [file] [log] [blame]
Roman Elizarov1f74a2d2018-06-29 19:19:45 +03001/*
2 * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3 */
4
Roman Elizarov65eff0b2017-12-20 15:51:31 +03005// Configures generation of JavaDoc & Dokka artifacts
6
7def platform = platformOf(project)
Roman Elizarove00f0ba2017-12-23 00:29:29 +03008def coroutines_core = platformLib("kotlinx-coroutines-core", platform)
Roman Elizarov65eff0b2017-12-20 15:51:31 +03009
Roman Elizarov4cdf8832017-12-25 17:07:02 +030010def makeLinkMapping(dokka, projectDir) {
11 dokka.linkMapping {
12 def relPath = rootProject.projectDir.toPath().relativize(projectDir.toPath())
13 dir = "$projectDir/src/main/kotlin"
Vsevolod Tolstopyatovc1eb19f2018-06-19 17:04:09 +030014 url = "http://github.com/kotlin/kotlinx.coroutines/tree/master/$relPath/src"
Roman Elizarov4cdf8832017-12-25 17:07:02 +030015 suffix = "#L"
16 }
Roman Elizarov65eff0b2017-12-20 15:51:31 +030017}
18
19if (platform == "jvm") {
Roman Elizarov4cdf8832017-12-25 17:07:02 +030020 apply plugin: 'org.jetbrains.dokka'
21
22 tasks.withType(dokka.getClass()) {
23 jdkVersion = 8
24 includes = ['README.md']
25 }
26
27 dokka {
28 outputFormat = 'kotlin-website'
29 }
30
31 if (project.name == coroutines_core) {
Roman Elizarova9647992017-12-26 13:09:43 +030032 // Custom configuration for MPP modules
33 dependencies {
34 compileOnly project(":js-stub") // so that JS library reference can resolve properly
35 }
36
Roman Elizarov4cdf8832017-12-25 17:07:02 +030037 dokka {
38 kotlinTasks { [] }
39 suppressedModifiers = ['actual']
40 // map for JS & Common sources
41 makeLinkMapping(it, projectDir)
Roman Elizarova9647992017-12-26 13:09:43 +030042 makeLinkMapping(it, rootProject.file("js/$project.name-js"))
43 makeLinkMapping(it, rootProject.file("common/$project.name-common"))
Roman Elizarov4cdf8832017-12-25 17:07:02 +030044 // source roots
45 impliedPlatforms = ['JVM', 'JS']
46 sourceRoot {
Vsevolod Tolstopyatovc1eb19f2018-06-19 17:04:09 +030047 path = rootProject.file("core/$project.name/src")
Roman Elizarov4cdf8832017-12-25 17:07:02 +030048 platforms = ['JVM']
49 }
50 sourceRoot {
Vsevolod Tolstopyatovc1eb19f2018-06-19 17:04:09 +030051 path = rootProject.file("js/$project.name-js/src")
Roman Elizarov4cdf8832017-12-25 17:07:02 +030052 platforms = ['JS']
53 }
54 sourceRoot {
Vsevolod Tolstopyatovc1eb19f2018-06-19 17:04:09 +030055 path = rootProject.file("common/$project.name-common/src")
Roman Elizarov4cdf8832017-12-25 17:07:02 +030056 }
57 // depends on JS & Common, too
58 afterEvaluate {
Roman Elizarov09ca3b62018-01-29 21:27:47 +030059 dependsOn(tasks.getByPath(":$project.name:classes"))
Roman Elizarova9647992017-12-26 13:09:43 +030060 dependsOn(tasks.getByPath(":$project.name-js:classes"))
61 dependsOn(tasks.getByPath(":$project.name-common:classes"))
Roman Elizarov4cdf8832017-12-25 17:07:02 +030062 dependsOn(project.configurations.compileClasspath)
Roman Elizarov415df7e2018-01-29 17:35:40 +030063 classpath = project.configurations.compileClasspath.files + project.sourceSets.main.output.files
Roman Elizarov4cdf8832017-12-25 17:07:02 +030064 }
65 }
66 }
67
Roman Elizarov65eff0b2017-12-20 15:51:31 +030068 // real xxx-javadoc.jar for JVM
69 task dokkaJavadoc(type: dokka.getClass()) {
70 outputFormat = 'javadoc'
71 outputDirectory = "$buildDir/javadoc"
72 }
73
74 task javadocJar(type: Jar, dependsOn: dokkaJavadoc) {
75 classifier = 'javadoc'
76 from "$buildDir/javadoc"
77 }
78} else {
Roman Elizarov4cdf8832017-12-25 17:07:02 +030079 // empty xxx-javadoc.jar for JS and Common modules
Roman Elizarov65eff0b2017-12-20 15:51:31 +030080 task javadocJar(type: Jar) {
81 classifier = 'javadoc'
82 from "$buildDir/javadoc" // would not exist
83 }
84}