blob: 6de7f849c913ed429e7be15fde8ff588a29d0c20 [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001plugins {
2 id 'java'
3 id "org.ysb33r.doxygen" version "0.5"
4}
5
6evaluationDependsOn(':wpiutil')
7evaluationDependsOn(':ntcore')
8evaluationDependsOn(':cscore')
9evaluationDependsOn(':hal')
10evaluationDependsOn(':cameraserver')
Austin Schuh1e69f942020-11-14 15:06:14 -080011evaluationDependsOn(':wpimath')
Brian Silverman8fce7482020-01-05 13:18:21 -080012evaluationDependsOn(':wpilibc')
13evaluationDependsOn(':wpilibj')
14evaluationDependsOn(':wpilibOldCommands')
15evaluationDependsOn(':wpilibNewCommands')
16
17def baseArtifactIdCpp = 'documentation'
18def artifactGroupIdCpp = 'edu.wpi.first.wpilibc'
19def zipBaseNameCpp = '_GROUP_edu_wpi_first_wpilibc_ID_documentation_CLS'
20
21def baseArtifactIdJava = 'documentation'
22def artifactGroupIdJava = 'edu.wpi.first.wpilibj'
23def zipBaseNameJava = '_GROUP_edu_wpi_first_wpilibj_ID_documentation_CLS'
24
25def outputsFolder = file("$project.buildDir/outputs")
26
27def cppProjectZips = []
28
29cppProjectZips.add(project(':hal').cppHeadersZip)
30cppProjectZips.add(project(':wpiutil').cppHeadersZip)
31cppProjectZips.add(project(':ntcore').cppHeadersZip)
32cppProjectZips.add(project(':cscore').cppHeadersZip)
33cppProjectZips.add(project(':cameraserver').cppHeadersZip)
Austin Schuh1e69f942020-11-14 15:06:14 -080034cppProjectZips.add(project(':wpimath').cppHeadersZip)
Brian Silverman8fce7482020-01-05 13:18:21 -080035cppProjectZips.add(project(':wpilibc').cppHeadersZip)
36cppProjectZips.add(project(':wpilibOldCommands').cppHeadersZip)
37cppProjectZips.add(project(':wpilibNewCommands').cppHeadersZip)
38
39doxygen {
Austin Schuh1e69f942020-11-14 15:06:14 -080040 executables {
41 doxygen version : '1.8.18',
42 baseURI : 'https://frcmaven.wpi.edu/artifactory/generic-release-mirror/doxygen'
43 }
Brian Silverman8fce7482020-01-05 13:18:21 -080044}
45
46doxygen {
47 generate_html true
48
49 cppProjectZips.each {
50 dependsOn it
51 source it.source
52 }
53
54 exclude 'Eigen/**'
55 exclude 'unsupported/**'
56 exclude 'units/**'
57 exclude 'uv.h'
58 exclude 'uv/**'
59
60
61 extension_mapping 'inc=C++'
62 project_name 'WPILibC++'
63 project_number wpilibVersioning.version.get()
64 javadoc_autobrief true
65 recursive true
66 quiet true
67 warnings false
68 warn_if_doc_error false
69 warn_no_paramdoc false
70 warn_format false
71 warn_logfile false
72 warn_if_undocumented false
73 generate_latex false
74 use_mathjax true
75 html_timestamp true
76 generate_treeview true
77 extract_static true
78}
79
80tasks.register("zipCppDocs", Zip) {
81 archiveBaseName = zipBaseNameCpp
82 destinationDirectory = outputsFolder
83 dependsOn doxygen
84 from ("$buildDir/docs/doxygen/html")
85 into '/'
86}
87
88// Java
89configurations {
90 javaSource {
91 transitive false
92 }
93}
94
95ext {
96 sharedCvConfigs = [:]
97 staticCvConfigs = [:]
98 useJava = true
99 useCpp = false
100 skipDev = true
101 useDocumentation = true
102}
103
104apply from: "${rootDir}/shared/opencv.gradle"
105
106task generateJavaDocs(type: Javadoc) {
Austin Schuh1e69f942020-11-14 15:06:14 -0800107 classpath += project(":wpimath").sourceSets.main.compileClasspath
Brian Silverman8fce7482020-01-05 13:18:21 -0800108 options.links("https://docs.oracle.com/en/java/javase/11/docs/api/")
109 options.addStringOption "tag", "pre:a:Pre-Condition"
110 options.addBooleanOption "Xdoclint:html,missing,reference,syntax", true
111 options.addBooleanOption('html5', true)
112 dependsOn project(':wpilibj').generateJavaVersion
113 dependsOn project(':hal').generateUsageReporting
Austin Schuh1e69f942020-11-14 15:06:14 -0800114 dependsOn project(':wpimath').generateNat
Brian Silverman8fce7482020-01-05 13:18:21 -0800115 source project(':hal').sourceSets.main.java
116 source project(':wpiutil').sourceSets.main.java
117 source project(':cscore').sourceSets.main.java
118 source project(':ntcore').sourceSets.main.java
Austin Schuh1e69f942020-11-14 15:06:14 -0800119 source project(':wpimath').sourceSets.main.java
Brian Silverman8fce7482020-01-05 13:18:21 -0800120 source project(':wpilibj').sourceSets.main.java
121 source project(':cameraserver').sourceSets.main.java
122 source project(':wpilibOldCommands').sourceSets.main.java
123 source project(':wpilibNewCommands').sourceSets.main.java
124 source configurations.javaSource.collect { zipTree(it) }
125 include '**/*.java'
126 failOnError = true
127 options.encoding = 'UTF-8'
128
129 title = "WPILib API ${wpilibVersioning.version.get()}"
130 ext.entryPoint = "$destinationDir/index.html"
131
132 if (JavaVersion.current().isJava11Compatible()) {
Austin Schuh1e69f942020-11-14 15:06:14 -0800133 if (!JavaVersion.current().isJava12Compatible()) {
134 options.addBooleanOption('-no-module-directories', true)
135 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800136 doLast {
137 // This is a work-around for https://bugs.openjdk.java.net/browse/JDK-8211194. Can be removed once that issue is fixed on JDK's side
138 // Since JDK 11, package-list is missing from javadoc output files and superseded by element-list file, but a lot of external tools still need it
139 // Here we generate this file manually
140 new File(destinationDir, 'package-list').text = new File(destinationDir, 'element-list').text
141 }
142 }
143}
144
145tasks.register("zipJavaDocs", Zip) {
146 archiveBaseName = zipBaseNameJava
147 destinationDirectory = outputsFolder
148 dependsOn generateJavaDocs
149 from ("$buildDir/docs/javadoc")
150 into '/'
151}
152
Austin Schuh1e69f942020-11-14 15:06:14 -0800153tasks.register("zipDocs") {
154 dependsOn zipCppDocs
155 dependsOn zipJavaDocs
156}
Brian Silverman8fce7482020-01-05 13:18:21 -0800157
158apply plugin: 'maven-publish'
159
160publishing {
161 publications {
162 java(MavenPublication) {
163 artifact zipJavaDocs
164
165 artifactId = "${baseArtifactIdJava}"
166 groupId artifactGroupIdJava
167 version wpilibVersioning.version.get()
168 }
169 cpp(MavenPublication) {
170 artifact zipCppDocs
171
172 artifactId = "${baseArtifactIdCpp}"
173 groupId artifactGroupIdCpp
174 version wpilibVersioning.version.get()
175 }
176 }
177}