blob: 5bf8dd4997eab0b2d915383ac3fb46a952970cbf [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
14def pubVersion = ''
15if (project.hasProperty("publishVersion")) {
16 pubVersion = project.publishVersion
17} else {
18 pubVersion = WPILibVersion.version
19}
20
21def baseArtifactIdCpp = 'documentation'
22def artifactGroupIdCpp = 'edu.wpi.first.wpilibc'
23def zipBaseNameCpp = '_GROUP_edu_wpi_first_wpilibc_ID_documentation_CLS'
24
25def baseArtifactIdJava = 'documentation'
26def artifactGroupIdJava = 'edu.wpi.first.wpilibj'
27def zipBaseNameJava = '_GROUP_edu_wpi_first_wpilibj_ID_documentation_CLS'
28
29def outputsFolder = file("$project.buildDir/outputs")
30
31def cppProjectZips = []
32
33cppProjectZips.add(project(':hal').cppHeadersZip)
34cppProjectZips.add(project(':wpiutil').cppHeadersZip)
35cppProjectZips.add(project(':ntcore').cppHeadersZip)
36cppProjectZips.add(project(':cscore').cppHeadersZip)
37cppProjectZips.add(project(':cameraserver').cppHeadersZip)
38cppProjectZips.add(project(':wpilibc').cppHeadersZip)
39
40doxygen {
41 executables {
42 doxygen version : '1.8.8'
43 }
44}
45
46doxygen {
47 generate_html true
48
49 cppProjectZips.each {
50 dependsOn it
51 source it.source
52 }
53
54 extension_mapping 'inc=C++'
55 project_name 'WPILibC++'
56 project_number pubVersion
57 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
70}
71
72tasks.register("zipCppDocs", Zip) {
73 baseName = zipBaseNameCpp
74 destinationDir = outputsFolder
75 dependsOn doxygen
76 from ("$buildDir/docs/doxygen/html")
77 into '/'
78}
79
80
81// 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) {
100 options.links("https://docs.oracle.com/javase/8/docs/api/")
101 options.addStringOption "tag", "pre:a:Pre-Condition"
102 options.addStringOption('Xdoclint:accessibility,html,missing,reference,syntax')
103 options.addBooleanOption('html5', true)
104 dependsOn project(':wpilibj').generateJavaVersion
105 dependsOn project(':hal').generateUsageReporting
106 source project(':hal').sourceSets.main.java
107 source project(':wpiutil').sourceSets.main.java
108 source project(':cscore').sourceSets.main.java
109 source project(':ntcore').sourceSets.main.java
110 source project(':wpilibj').sourceSets.main.java
111 source project(':cameraserver').sourceSets.main.java
112 source configurations.javaSource.collect { zipTree(it) }
113 include '**/*.java'
114 failOnError = true
Brian Silverman60246092019-03-02 13:29:58 -0800115
116 title = "WPILib API $pubVersion"
117 ext.entryPoint = "$destinationDir/index.html"
118
119 if (JavaVersion.current().isJava11Compatible()) {
120 options.addBooleanOption('-no-module-directories', true)
121 doLast {
122 // 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
123 // 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
124 // Here we generate this file manually
125 new File(destinationDir, 'package-list').text = new File(destinationDir, 'element-list').text
126 }
127 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800128}
129
130tasks.register("zipJavaDocs", Zip) {
131 baseName = zipBaseNameJava
132 destinationDir = outputsFolder
133 dependsOn generateJavaDocs
134 from ("$buildDir/docs/javadoc")
135 into '/'
136}
137
138addTaskToCopyAllOutputs(zipCppDocs)
139addTaskToCopyAllOutputs(zipJavaDocs)
140
141build.dependsOn zipCppDocs
142build.dependsOn zipJavaDocs
143
144apply plugin: 'maven-publish'
145
146publishing {
147 publications {
148 java(MavenPublication) {
149 artifact zipJavaDocs
150
151 artifactId = "${baseArtifactIdJava}"
152 groupId artifactGroupIdJava
153 version pubVersion
154 }
155 cpp(MavenPublication) {
156 artifact zipCppDocs
157
158 artifactId = "${baseArtifactIdCpp}"
159 groupId artifactGroupIdCpp
160 version pubVersion
161 }
162 }
163}