blob: c3e8cabb400208f6ef59b6b7dfe4e821869e5a45 [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')
13
Brian Silverman41cdd3e2019-01-19 19:48:58 -080014def baseArtifactIdCpp = 'documentation'
15def artifactGroupIdCpp = 'edu.wpi.first.wpilibc'
16def zipBaseNameCpp = '_GROUP_edu_wpi_first_wpilibc_ID_documentation_CLS'
17
18def baseArtifactIdJava = 'documentation'
19def artifactGroupIdJava = 'edu.wpi.first.wpilibj'
20def zipBaseNameJava = '_GROUP_edu_wpi_first_wpilibj_ID_documentation_CLS'
21
22def outputsFolder = file("$project.buildDir/outputs")
23
24def cppProjectZips = []
25
26cppProjectZips.add(project(':hal').cppHeadersZip)
27cppProjectZips.add(project(':wpiutil').cppHeadersZip)
28cppProjectZips.add(project(':ntcore').cppHeadersZip)
29cppProjectZips.add(project(':cscore').cppHeadersZip)
30cppProjectZips.add(project(':cameraserver').cppHeadersZip)
31cppProjectZips.add(project(':wpilibc').cppHeadersZip)
32
33doxygen {
34 executables {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080035 doxygen version : '1.8.16'
Brian Silverman41cdd3e2019-01-19 19:48:58 -080036 }
37}
38
39doxygen {
40 generate_html true
41
42 cppProjectZips.each {
43 dependsOn it
44 source it.source
45 }
46
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080047 exclude 'Eigen/**'
48 exclude 'unsupported/**'
49 exclude 'units/**'
50 exclude 'uv.h'
51 exclude 'uv/**'
52
53
Brian Silverman41cdd3e2019-01-19 19:48:58 -080054 extension_mapping 'inc=C++'
55 project_name 'WPILibC++'
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080056 project_number wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080057 javadoc_autobrief true
58 recursive true
59 quiet true
60 warnings false
61 warn_if_doc_error false
62 warn_no_paramdoc false
63 warn_format false
64 warn_logfile false
65 warn_if_undocumented false
66 generate_latex false
67 use_mathjax true
68 html_timestamp true
69 generate_treeview true
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080070 extract_static true
Brian Silverman41cdd3e2019-01-19 19:48:58 -080071}
72
73tasks.register("zipCppDocs", Zip) {
74 baseName = zipBaseNameCpp
75 destinationDir = outputsFolder
76 dependsOn doxygen
77 from ("$buildDir/docs/doxygen/html")
78 into '/'
79}
80
Brian Silverman41cdd3e2019-01-19 19:48:58 -080081// Java
82configurations {
83 javaSource {
84 transitive false
85 }
86}
87
88ext {
89 sharedCvConfigs = [:]
90 staticCvConfigs = [:]
91 useJava = true
92 useCpp = false
93 skipDev = true
94 useDocumentation = true
95}
96
97apply from: "${rootDir}/shared/opencv.gradle"
98
99task generateJavaDocs(type: Javadoc) {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800100 classpath += project(":wpiutil").sourceSets.main.compileClasspath
101 options.links("https://docs.oracle.com/en/java/javase/11/docs/api/")
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800102 options.addStringOption "tag", "pre:a:Pre-Condition"
103 options.addStringOption('Xdoclint:accessibility,html,missing,reference,syntax')
104 options.addBooleanOption('html5', true)
105 dependsOn project(':wpilibj').generateJavaVersion
106 dependsOn project(':hal').generateUsageReporting
107 source project(':hal').sourceSets.main.java
108 source project(':wpiutil').sourceSets.main.java
109 source project(':cscore').sourceSets.main.java
110 source project(':ntcore').sourceSets.main.java
111 source project(':wpilibj').sourceSets.main.java
112 source project(':cameraserver').sourceSets.main.java
113 source configurations.javaSource.collect { zipTree(it) }
114 include '**/*.java'
115 failOnError = true
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800116 options.encoding = 'UTF-8'
Brian Silverman60246092019-03-02 13:29:58 -0800117
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800118 title = "WPILib API ${wpilibVersioning.version.get()}"
Brian Silverman60246092019-03-02 13:29:58 -0800119 ext.entryPoint = "$destinationDir/index.html"
120
121 if (JavaVersion.current().isJava11Compatible()) {
122 options.addBooleanOption('-no-module-directories', true)
123 doLast {
124 // 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
125 // 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
126 // Here we generate this file manually
127 new File(destinationDir, 'package-list').text = new File(destinationDir, 'element-list').text
128 }
129 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800130}
131
132tasks.register("zipJavaDocs", Zip) {
133 baseName = zipBaseNameJava
134 destinationDir = outputsFolder
135 dependsOn generateJavaDocs
136 from ("$buildDir/docs/javadoc")
137 into '/'
138}
139
140addTaskToCopyAllOutputs(zipCppDocs)
141addTaskToCopyAllOutputs(zipJavaDocs)
142
143build.dependsOn zipCppDocs
144build.dependsOn zipJavaDocs
145
146apply plugin: 'maven-publish'
147
148publishing {
149 publications {
150 java(MavenPublication) {
151 artifact zipJavaDocs
152
153 artifactId = "${baseArtifactIdJava}"
154 groupId artifactGroupIdJava
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800155 version wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800156 }
157 cpp(MavenPublication) {
158 artifact zipCppDocs
159
160 artifactId = "${baseArtifactIdCpp}"
161 groupId artifactGroupIdCpp
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800162 version wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800163 }
164 }
165}