blob: 501176a206279cdff9bed1992e27ae583e83df5b [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001apply from: "${rootDir}/shared/resources.gradle"
2
3ext {
4 noWpiutil = true
James Kuszmaulcf324122023-01-14 14:07:17 -08005 skipJniSymbols = [
6 'Java_edu_wpi_first_util_CombinedRuntimeLoader_setDllDirectory'
7 ]
Brian Silverman8fce7482020-01-05 13:18:21 -08008 baseId = 'wpiutil'
9 groupId = 'edu.wpi.first.wpiutil'
10
11 nativeName = 'wpiutil'
12 devMain = 'edu.wpi.first.wpiutil.DevMain'
13 def generateTask = createGenerateResourcesTask('main', 'WPI', 'wpi', project)
14
15 splitSetup = {
16 it.tasks.withType(CppCompile) {
17 dependsOn generateTask
18 }
19 it.sources {
Austin Schuh812d0d12021-11-04 20:16:48 -070020 fmtlibCpp(CppSourceSet) {
21 source {
James Kuszmaulcf324122023-01-14 14:07:17 -080022 srcDirs 'src/main/native/thirdparty/fmtlib/src'
Austin Schuh812d0d12021-11-04 20:16:48 -070023 include '*.cpp'
24 }
25 exportedHeaders {
James Kuszmaulcf324122023-01-14 14:07:17 -080026 srcDirs 'src/main/native/thirdparty/fmtlib/include'
27 }
28 }
29 ghcCpp(CppSourceSet) {
30 exportedHeaders {
31 srcDirs 'src/main/native/thirdparty/ghc/include'
32 }
33 }
34 jsonCpp(CppSourceSet) {
35 source {
36 srcDirs 'src/main/native/thirdparty/json/cpp'
37 include '*.cpp'
38 }
39 exportedHeaders {
40 srcDirs 'src/main/native/include', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/json/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/fmtlib/include'
41 }
42 }
43 llvmCpp(CppSourceSet) {
44 source {
45 srcDirs 'src/main/native/thirdparty/llvm/cpp'
46 include '**/*.cpp'
47 }
48 exportedHeaders {
49 srcDirs 'src/main/native/include', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/ghc/include'
50 }
51 }
52 mpackCpp(CppSourceSet) {
53 source {
54 srcDirs 'src/main/native/thirdparty/mpack/src'
55 include '*.cpp'
56 }
57 exportedHeaders {
58 srcDirs 'src/main/native/thirdparty/mpack/include'
59 }
60 }
61 sigslotCpp(CppSourceSet) {
62 source {
63 srcDirs 'src/main/native/thirdparty/sigslot/src'
64 include '*.cpp'
65 }
66 exportedHeaders {
67 srcDirs 'src/main/native/thirdparty/sigslot/include'
68 }
69 }
70 tcbSpanCpp(CppSourceSet) {
71 exportedHeaders {
72 srcDirs 'src/main/native/thirdparty/tcb_span/include'
73 }
74 }
75 memoryCpp(CppSourceSet) {
76 source {
77 srcDirs 'src/main/native/thirdparty/memory/src', 'src/main/native/thirdparty/memory/include/wpi/memory'
78 include '**/*.cpp'
79 }
80 exportedHeaders {
81 srcDirs 'src/main/native/thirdparty/memory/include'
82 include '**/*.hpp'
Austin Schuh812d0d12021-11-04 20:16:48 -070083 }
84 }
Brian Silverman8fce7482020-01-05 13:18:21 -080085 resourcesCpp(CppSourceSet) {
86 source {
87 srcDirs "$buildDir/generated/main/cpp", "$rootDir/shared/singlelib"
88 include '*.cpp'
89 }
90 exportedHeaders {
91 srcDirs 'src/main/native/include'
92 }
93 }
94 }
95 if (!it.targetPlatform.operatingSystem.isWindows()) {
96 it.cppCompiler.define '_GNU_SOURCE'
97 it.sources {
Brian Silverman8fce7482020-01-05 13:18:21 -080098 wpiutilUnixCpp(CppSourceSet) {
99 source {
100 srcDirs 'src/main/native/unix'
101 include '**/*.cpp'
102 }
103 exportedHeaders {
James Kuszmaulcf324122023-01-14 14:07:17 -0800104 srcDirs 'src/main/native/include', 'src/main/native/cpp', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/sigslot/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/mpack/include'
Brian Silverman8fce7482020-01-05 13:18:21 -0800105 include '**/*.h'
106 }
107 }
108 }
109 }
110 if (it.targetPlatform.operatingSystem.isWindows()) {
Brian Silverman8fce7482020-01-05 13:18:21 -0800111 it.sources {
Brian Silverman8fce7482020-01-05 13:18:21 -0800112 wpiutilWindowsCpp(CppSourceSet) {
113 source {
James Kuszmaulcf324122023-01-14 14:07:17 -0800114 srcDirs 'src/main/native/windows', 'src/main/native/llvm/cpp/llvm', 'src/main/native/json/cpp'
Brian Silverman8fce7482020-01-05 13:18:21 -0800115 include '**/*.cpp'
116 }
117 exportedHeaders {
James Kuszmaulcf324122023-01-14 14:07:17 -0800118 srcDirs 'src/main/native/include', 'src/main/native/cpp', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/sigslot/include', 'src/main/native/thirdparty/json/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/mpack/include'
Brian Silverman8fce7482020-01-05 13:18:21 -0800119 include '**/*.h'
120 }
121 }
122 }
123 } else if (it.targetPlatform.operatingSystem.isMacOsX()) {
124 it.sources {
Austin Schuh75263e32022-02-22 18:05:32 -0800125 wpiutilmacOSCpp(CppSourceSet) {
126 source {
James Kuszmaulcf324122023-01-14 14:07:17 -0800127 srcDirs 'src/main/native/macOS', 'src/main/native/llvm/cpp/llvm', 'src/main/native/json/cpp'
Austin Schuh75263e32022-02-22 18:05:32 -0800128 include '**/*.cpp'
129 }
130 exportedHeaders {
James Kuszmaulcf324122023-01-14 14:07:17 -0800131 srcDirs 'src/main/native/include', 'src/main/native/cpp', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/sigslot/include', 'src/main/native/thirdparty/json/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/mpack/include'
Austin Schuh75263e32022-02-22 18:05:32 -0800132 include '**/*.h'
133 }
134 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800135 }
136 } else {
137 it.sources {
Austin Schuh75263e32022-02-22 18:05:32 -0800138 wpiutilLinuxCpp(CppSourceSet) {
139 source {
James Kuszmaulcf324122023-01-14 14:07:17 -0800140 srcDirs 'src/main/native/linux', 'src/main/native/llvm/cpp/llvm', 'src/main/native/json/cpp'
Austin Schuh75263e32022-02-22 18:05:32 -0800141 include '**/*.cpp'
142 }
143 exportedHeaders {
James Kuszmaulcf324122023-01-14 14:07:17 -0800144 srcDirs 'src/main/native/include', 'src/main/native/cpp', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/sigslot/include', 'src/main/native/thirdparty/json/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/mpack/include'
Austin Schuh75263e32022-02-22 18:05:32 -0800145 include '**/*.h'
146 }
147 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800148 }
149 }
150 }
151}
152
153def examplesMap = [:];
154file("$projectDir/examples").list(new FilenameFilter() {
Austin Schuh812d0d12021-11-04 20:16:48 -0700155 @Override
156 public boolean accept(File current, String name) {
157 return new File(current, name).isDirectory();
158 }
159 }).each {
160 examplesMap.put(it, [])
161 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800162
163apply from: "${rootDir}/shared/jni/setupBuild.gradle"
164
165nativeUtils.exportsConfigs {
166 wpiutil {
Austin Schuh812d0d12021-11-04 20:16:48 -0700167 x64ExcludeSymbols = [
168 '_CT??_R0?AV_System_error',
169 '_CT??_R0?AVexception',
170 '_CT??_R0?AVfailure',
171 '_CT??_R0?AVruntime_error',
172 '_CT??_R0?AVsystem_error',
173 '_CTA5?AVfailure',
174 '_TI5?AVfailure',
175 '_CT??_R0?AVout_of_range',
176 '_CTA3?AVout_of_range',
177 '_TI3?AVout_of_range',
178 '_CT??_R0?AVbad_cast'
179 ]
Brian Silverman8fce7482020-01-05 13:18:21 -0800180 }
181}
182
183cppHeadersZip {
James Kuszmaulcf324122023-01-14 14:07:17 -0800184 from('src/main/native/thirdparty/fmtlib/include') {
Brian Silverman8fce7482020-01-05 13:18:21 -0800185 into '/'
186 }
James Kuszmaulcf324122023-01-14 14:07:17 -0800187 from('src/main/native/thirdparty/ghc/include') {
188 into '/'
189 }
190 from('src/main/native/thirdparty/json/include') {
191 into '/'
192 }
193 from('src/main/native/thirdparty/llvm/include') {
194 into '/'
195 }
196 from('src/main/native/thirdparty/mpack/include') {
197 into '/'
198 }
199 from('src/main/native/thirdparty/sigslot/include') {
200 into '/'
201 }
202 from('src/main/native/thirdparty/tcb_span/include') {
203 into '/'
204 }
205 from('src/main/native/thirdparty/memory/include') {
206 into '/'
207 }
208}
209
210cppSourcesZip {
211 from('src/main/native/thirdparty/fmtlib/src') {
212 into '/'
213 }
214 from('src/main/native/thirdparty/json/cpp') {
215 into '/'
216 }
217 from('src/main/native/thirdparty/llvm/cpp') {
218 into '/'
219 }
220 from('src/main/native/thirdparty/memory/src') {
221 into '/'
222 }
223 from('src/main/native/thirdparty/mpack/src') {
224 into '/'
225 }
226 from('src/main/native/thirdparty/sigslot/src') {
Austin Schuh812d0d12021-11-04 20:16:48 -0700227 into '/'
228 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800229}
230
231model {
232 components {
233 all {
234 it.sources.each {
235 it.exportedHeaders {
James Kuszmaulcf324122023-01-14 14:07:17 -0800236 srcDirs 'src/main/native/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/sigslot/include', 'src/main/native/thirdparty/json/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/ghc/include', 'src/main/native/thirdparty/memory/include', 'src/main/native/thirdparty/mpack/include'
Brian Silverman8fce7482020-01-05 13:18:21 -0800237 }
238 }
239 }
240 }
241}
242
243model {
244 components {
245 examplesMap.each { key, value ->
246 "${key}"(NativeExecutableSpec) {
247 targetBuildTypes 'debug'
248 binaries.all {
249 lib library: 'wpiutil', linkage: 'shared'
250 }
251 sources {
252 cpp {
253 source {
254 srcDirs 'examples/' + "${key}"
255 include '**/*.cpp'
256 }
257 }
258 }
259 }
260 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800261 }
262}
263
James Kuszmaulcf324122023-01-14 14:07:17 -0800264sourceSets {
265 printlog
266}
267
268task runPrintLog(type: JavaExec) {
269 classpath = sourceSets.printlog.runtimeClasspath
270
271 mainClass = 'printlog.PrintLog'
272}
273
Brian Silverman8fce7482020-01-05 13:18:21 -0800274dependencies {
Austin Schuh75263e32022-02-22 18:05:32 -0800275 api "com.fasterxml.jackson.core:jackson-annotations:2.12.4"
276 api "com.fasterxml.jackson.core:jackson-core:2.12.4"
277 api "com.fasterxml.jackson.core:jackson-databind:2.12.4"
James Kuszmaulcf324122023-01-14 14:07:17 -0800278
279 printlogImplementation sourceSets.main.output
Brian Silverman8fce7482020-01-05 13:18:21 -0800280}