blob: 31687233d516498c767342a1dfa329a90d0b1e72 [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001apply from: "${rootDir}/shared/resources.gradle"
2
3ext {
4 noWpiutil = true
Austin Schuh1e69f942020-11-14 15:06:14 -08005 skipJniCheck = true
Brian Silverman8fce7482020-01-05 13:18:21 -08006 baseId = 'wpiutil'
7 groupId = 'edu.wpi.first.wpiutil'
8
9 nativeName = 'wpiutil'
10 devMain = 'edu.wpi.first.wpiutil.DevMain'
11 def generateTask = createGenerateResourcesTask('main', 'WPI', 'wpi', project)
12
13 splitSetup = {
14 it.tasks.withType(CppCompile) {
15 dependsOn generateTask
16 }
17 it.sources {
18 libuvCpp(CppSourceSet) {
19 source {
20 srcDirs 'src/main/native/libuv/src'
21 include '*.cpp'
22 }
23 exportedHeaders {
24 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
25 }
26 }
Austin Schuh812d0d12021-11-04 20:16:48 -070027 fmtlibCpp(CppSourceSet) {
28 source {
29 srcDirs 'src/main/native/fmtlib/src'
30 include '*.cpp'
31 }
32 exportedHeaders {
33 srcDirs 'src/main/native/fmtlib/include'
34 }
35 }
Brian Silverman8fce7482020-01-05 13:18:21 -080036 resourcesCpp(CppSourceSet) {
37 source {
38 srcDirs "$buildDir/generated/main/cpp", "$rootDir/shared/singlelib"
39 include '*.cpp'
40 }
41 exportedHeaders {
42 srcDirs 'src/main/native/include'
43 }
44 }
45 }
46 if (!it.targetPlatform.operatingSystem.isWindows()) {
47 it.cppCompiler.define '_GNU_SOURCE'
48 it.sources {
49 libuvUnixCpp(CppSourceSet) {
50 source {
51 srcDirs 'src/main/native/libuv/src/unix'
52 includes = [
53 'async.cpp',
54 'core.cpp',
55 'dl.cpp',
56 'fs.cpp',
57 'getaddrinfo.cpp',
58 'getnameinfo.cpp',
59 'loop-watcher.cpp',
60 'loop.cpp',
61 'pipe.cpp',
62 'poll.cpp',
63 'process.cpp',
64 'signal.cpp',
65 'stream.cpp',
66 'tcp.cpp',
67 'thread.cpp',
68 'timer.cpp',
69 'tty.cpp',
70 'udp.cpp',
71 ]
72 }
73 exportedHeaders {
74 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
75 }
76 }
77 wpiutilUnixCpp(CppSourceSet) {
78 source {
79 srcDirs 'src/main/native/unix'
80 include '**/*.cpp'
81 }
82 exportedHeaders {
83 srcDirs 'src/main/native/include', 'src/main/native/cpp'
84 include '**/*.h'
85 }
86 }
87 }
88 }
89 if (it.targetPlatform.operatingSystem.isWindows()) {
90 if (it in SharedLibraryBinarySpec) {
91 it.cppCompiler.define 'BUILDING_UV_SHARED'
92 }
93 it.sources {
94 libuvWindowsCpp(CppSourceSet) {
95 source {
96 srcDirs 'src/main/native/libuv/src/win'
97 include '*.cpp'
98 }
99 exportedHeaders {
100 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
101 }
102 }
103 wpiutilWindowsCpp(CppSourceSet) {
104 source {
105 srcDirs 'src/main/native/windows'
106 include '**/*.cpp'
107 }
108 exportedHeaders {
109 srcDirs 'src/main/native/include', 'src/main/native/cpp'
110 include '**/*.h'
111 }
112 }
113 }
114 } else if (it.targetPlatform.operatingSystem.isMacOsX()) {
115 it.sources {
116 libuvMacCpp(CppSourceSet) {
117 source {
118 srcDirs 'src/main/native/libuv/src/unix'
119 includes = [
120 'bsd-ifaddrs.cpp',
121 'darwin.cpp',
122 'darwin-proctitle.cpp',
123 'fsevents.cpp',
124 'kqueue.cpp',
125 'proctitle.cpp'
126 ]
127 }
128 exportedHeaders {
129 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
130 }
131 }
Austin Schuh75263e32022-02-22 18:05:32 -0800132 wpiutilmacOSCpp(CppSourceSet) {
133 source {
134 srcDirs 'src/main/native/macOS'
135 include '**/*.cpp'
136 }
137 exportedHeaders {
138 srcDirs 'src/main/native/include', 'src/main/native/cpp'
139 include '**/*.h'
140 }
141 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800142 }
143 } else {
144 it.sources {
145 libuvLinuxCpp(CppSourceSet) {
146 source {
147 srcDirs 'src/main/native/libuv/src/unix'
148 includes = [
149 'linux-core.cpp',
150 'linux-inotify.cpp',
151 'linux-syscalls.cpp',
152 'procfs-exepath.cpp',
153 'proctitle.cpp',
154 'sysinfo-loadavg.cpp',
155 ]
156 }
157 exportedHeaders {
158 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
159 }
160 }
Austin Schuh75263e32022-02-22 18:05:32 -0800161 wpiutilLinuxCpp(CppSourceSet) {
162 source {
163 srcDirs 'src/main/native/linux'
164 include '**/*.cpp'
165 }
166 exportedHeaders {
167 srcDirs 'src/main/native/include', 'src/main/native/cpp', 'src/main/native/fmtlib/include'
168 include '**/*.h'
169 }
170 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800171 }
172 }
173 }
174}
175
176def examplesMap = [:];
177file("$projectDir/examples").list(new FilenameFilter() {
Austin Schuh812d0d12021-11-04 20:16:48 -0700178 @Override
179 public boolean accept(File current, String name) {
180 return new File(current, name).isDirectory();
181 }
182 }).each {
183 examplesMap.put(it, [])
184 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800185
186apply from: "${rootDir}/shared/jni/setupBuild.gradle"
187
188nativeUtils.exportsConfigs {
189 wpiutil {
Austin Schuh812d0d12021-11-04 20:16:48 -0700190 x86ExcludeSymbols = [
191 '_CT??_R0?AV_System_error',
192 '_CT??_R0?AVexception',
193 '_CT??_R0?AVfailure',
194 '_CT??_R0?AVruntime_error',
195 '_CT??_R0?AVsystem_error',
196 '_CTA5?AVfailure',
197 '_TI5?AVfailure',
198 '_CT??_R0?AVout_of_range',
199 '_CTA3?AVout_of_range',
200 '_TI3?AVout_of_range',
201 '_CT??_R0?AVbad_cast'
202 ]
203 x64ExcludeSymbols = [
204 '_CT??_R0?AV_System_error',
205 '_CT??_R0?AVexception',
206 '_CT??_R0?AVfailure',
207 '_CT??_R0?AVruntime_error',
208 '_CT??_R0?AVsystem_error',
209 '_CTA5?AVfailure',
210 '_TI5?AVfailure',
211 '_CT??_R0?AVout_of_range',
212 '_CTA3?AVout_of_range',
213 '_TI3?AVout_of_range',
214 '_CT??_R0?AVbad_cast'
215 ]
Brian Silverman8fce7482020-01-05 13:18:21 -0800216 }
217}
218
219cppHeadersZip {
220 from('src/main/native/libuv/include') {
221 into '/'
222 }
Austin Schuh812d0d12021-11-04 20:16:48 -0700223 from('src/main/native/fmtlib/include') {
224 into '/'
225 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800226}
227
228model {
229 components {
230 all {
231 it.sources.each {
232 it.exportedHeaders {
Austin Schuh812d0d12021-11-04 20:16:48 -0700233 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src', 'src/main/native/fmtlib/include'
Brian Silverman8fce7482020-01-05 13:18:21 -0800234 }
235 }
236 }
237 }
238}
239
240model {
241 components {
242 examplesMap.each { key, value ->
243 "${key}"(NativeExecutableSpec) {
244 targetBuildTypes 'debug'
245 binaries.all {
246 lib library: 'wpiutil', linkage: 'shared'
247 }
248 sources {
249 cpp {
250 source {
251 srcDirs 'examples/' + "${key}"
252 include '**/*.cpp'
253 }
254 }
255 }
256 }
257 }
258 netconsoleServer(NativeExecutableSpec) {
259 targetBuildTypes 'release'
260 sources {
261 cpp {
262 source {
Austin Schuh812d0d12021-11-04 20:16:48 -0700263 srcDirs = [
264 'src/netconsoleServer/native/cpp'
265 ]
Brian Silverman8fce7482020-01-05 13:18:21 -0800266 includes = ['**/*.cpp']
267 }
268 }
269 }
270 binaries.all { binary ->
271 lib project: ':wpiutil', library: 'wpiutil', linkage: 'static'
272 if (binary.targetPlatform.operatingSystem.isLinux()) {
273 linker.args "-lutil"
274 }
275 }
276 }
277 netconsoleTee(NativeExecutableSpec) {
278 targetBuildTypes 'release'
279 sources {
280 cpp {
281 source {
Austin Schuh812d0d12021-11-04 20:16:48 -0700282 srcDirs = [
283 'src/netconsoleTee/native/cpp'
284 ]
Brian Silverman8fce7482020-01-05 13:18:21 -0800285 includes = ['**/*.cpp']
286 }
287 }
288 }
289 binaries.all { binary ->
290 lib project: ':wpiutil', library: 'wpiutil', linkage: 'static'
291 }
292 }
293 }
294}
295
296dependencies {
Austin Schuh75263e32022-02-22 18:05:32 -0800297 api "com.fasterxml.jackson.core:jackson-annotations:2.12.4"
298 api "com.fasterxml.jackson.core:jackson-core:2.12.4"
299 api "com.fasterxml.jackson.core:jackson-databind:2.12.4"
Brian Silverman8fce7482020-01-05 13:18:21 -0800300}