blob: 10ba02b0523d628c093d4f605d053af00509ef50 [file] [log] [blame]
Brian Silverman41cdd3e2019-01-19 19:48:58 -08001plugins {
2 id 'java'
3 id "org.ysb33r.doxygen" version "0.5"
4}
5
6evaluationDependsOn(':wpiutil')
7evaluationDependsOn(':ntcore')
8evaluationDependsOn(':cscore')
9evaluationDependsOn(':hal')
10evaluationDependsOn(':cameraserver')
11evaluationDependsOn(':wpilibc')
12evaluationDependsOn(':wpilibj')
James Kuszmaul4b81d302019-12-14 20:53:14 -080013evaluationDependsOn(':wpilibOldCommands')
14evaluationDependsOn(':wpilibNewCommands')
Brian Silverman41cdd3e2019-01-19 19:48:58 -080015
Brian Silverman41cdd3e2019-01-19 19:48:58 -080016def baseArtifactIdCpp = 'documentation'
17def artifactGroupIdCpp = 'edu.wpi.first.wpilibc'
18def zipBaseNameCpp = '_GROUP_edu_wpi_first_wpilibc_ID_documentation_CLS'
19
20def baseArtifactIdJava = 'documentation'
21def artifactGroupIdJava = 'edu.wpi.first.wpilibj'
22def zipBaseNameJava = '_GROUP_edu_wpi_first_wpilibj_ID_documentation_CLS'
23
24def outputsFolder = file("$project.buildDir/outputs")
25
26def cppProjectZips = []
27
28cppProjectZips.add(project(':hal').cppHeadersZip)
29cppProjectZips.add(project(':wpiutil').cppHeadersZip)
30cppProjectZips.add(project(':ntcore').cppHeadersZip)
31cppProjectZips.add(project(':cscore').cppHeadersZip)
32cppProjectZips.add(project(':cameraserver').cppHeadersZip)
33cppProjectZips.add(project(':wpilibc').cppHeadersZip)
James Kuszmaul4b81d302019-12-14 20:53:14 -080034cppProjectZips.add(project(':wpilibOldCommands').cppHeadersZip)
35cppProjectZips.add(project(':wpilibNewCommands').cppHeadersZip)
Brian Silverman41cdd3e2019-01-19 19:48:58 -080036
37doxygen {
38 executables {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080039 doxygen version : '1.8.16'
Brian Silverman41cdd3e2019-01-19 19:48:58 -080040 }
41}
42
43doxygen {
44 generate_html true
45
46 cppProjectZips.each {
47 dependsOn it
48 source it.source
49 }
50
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080051 exclude 'Eigen/**'
52 exclude 'unsupported/**'
53 exclude 'units/**'
54 exclude 'uv.h'
55 exclude 'uv/**'
56
57
Brian Silverman41cdd3e2019-01-19 19:48:58 -080058 extension_mapping 'inc=C++'
59 project_name 'WPILibC++'
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080060 project_number wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080061 javadoc_autobrief true
62 recursive true
63 quiet true
64 warnings false
65 warn_if_doc_error false
66 warn_no_paramdoc false
67 warn_format false
68 warn_logfile false
69 warn_if_undocumented false
70 generate_latex false
71 use_mathjax true
72 html_timestamp true
73 generate_treeview true
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080074 extract_static true
Brian Silverman41cdd3e2019-01-19 19:48:58 -080075}
76
77tasks.register("zipCppDocs", Zip) {
James Kuszmaul4b81d302019-12-14 20:53:14 -080078 archiveBaseName = zipBaseNameCpp
79 destinationDirectory = outputsFolder
Brian Silverman41cdd3e2019-01-19 19:48:58 -080080 dependsOn doxygen
81 from ("$buildDir/docs/doxygen/html")
82 into '/'
83}
84
Brian Silverman41cdd3e2019-01-19 19:48:58 -080085// Java
86configurations {
87 javaSource {
88 transitive false
89 }
90}
91
92ext {
93 sharedCvConfigs = [:]
94 staticCvConfigs = [:]
95 useJava = true
96 useCpp = false
97 skipDev = true
98 useDocumentation = true
99}
100
101apply from: "${rootDir}/shared/opencv.gradle"
102
103task generateJavaDocs(type: Javadoc) {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800104 classpath += project(":wpiutil").sourceSets.main.compileClasspath
105 options.links("https://docs.oracle.com/en/java/javase/11/docs/api/")
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800106 options.addStringOption "tag", "pre:a:Pre-Condition"
James Kuszmaul4b81d302019-12-14 20:53:14 -0800107 options.addBooleanOption "Xdoclint:html,missing,reference,syntax", true
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800108 options.addBooleanOption('html5', true)
109 dependsOn project(':wpilibj').generateJavaVersion
110 dependsOn project(':hal').generateUsageReporting
111 source project(':hal').sourceSets.main.java
112 source project(':wpiutil').sourceSets.main.java
113 source project(':cscore').sourceSets.main.java
114 source project(':ntcore').sourceSets.main.java
115 source project(':wpilibj').sourceSets.main.java
116 source project(':cameraserver').sourceSets.main.java
James Kuszmaul4b81d302019-12-14 20:53:14 -0800117 source project(':wpilibOldCommands').sourceSets.main.java
118 source project(':wpilibNewCommands').sourceSets.main.java
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800119 source configurations.javaSource.collect { zipTree(it) }
120 include '**/*.java'
121 failOnError = true
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800122 options.encoding = 'UTF-8'
Brian Silverman60246092019-03-02 13:29:58 -0800123
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800124 title = "WPILib API ${wpilibVersioning.version.get()}"
Brian Silverman60246092019-03-02 13:29:58 -0800125 ext.entryPoint = "$destinationDir/index.html"
126
127 if (JavaVersion.current().isJava11Compatible()) {
Brian Silverman60246092019-03-02 13:29:58 -0800128 doLast {
129 // 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
130 // 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
131 // Here we generate this file manually
132 new File(destinationDir, 'package-list').text = new File(destinationDir, 'element-list').text
133 }
134 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800135}
136
137tasks.register("zipJavaDocs", Zip) {
James Kuszmaul4b81d302019-12-14 20:53:14 -0800138 archiveBaseName = zipBaseNameJava
139 destinationDirectory = outputsFolder
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800140 dependsOn generateJavaDocs
141 from ("$buildDir/docs/javadoc")
142 into '/'
143}
144
145addTaskToCopyAllOutputs(zipCppDocs)
146addTaskToCopyAllOutputs(zipJavaDocs)
147
148build.dependsOn zipCppDocs
149build.dependsOn zipJavaDocs
150
151apply plugin: 'maven-publish'
152
153publishing {
154 publications {
155 java(MavenPublication) {
156 artifact zipJavaDocs
157
158 artifactId = "${baseArtifactIdJava}"
159 groupId artifactGroupIdJava
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800160 version wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800161 }
162 cpp(MavenPublication) {
163 artifact zipCppDocs
164
165 artifactId = "${baseArtifactIdCpp}"
166 groupId artifactGroupIdCpp
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800167 version wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800168 }
169 }
170}