blob: f2efe2826d58611168d63cc890cfb473b7cc2521 [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 }
27 resourcesCpp(CppSourceSet) {
28 source {
29 srcDirs "$buildDir/generated/main/cpp", "$rootDir/shared/singlelib"
30 include '*.cpp'
31 }
32 exportedHeaders {
33 srcDirs 'src/main/native/include'
34 }
35 }
36 }
37 if (!it.targetPlatform.operatingSystem.isWindows()) {
38 it.cppCompiler.define '_GNU_SOURCE'
39 it.sources {
40 libuvUnixCpp(CppSourceSet) {
41 source {
42 srcDirs 'src/main/native/libuv/src/unix'
43 includes = [
44 'async.cpp',
45 'core.cpp',
46 'dl.cpp',
47 'fs.cpp',
48 'getaddrinfo.cpp',
49 'getnameinfo.cpp',
50 'loop-watcher.cpp',
51 'loop.cpp',
52 'pipe.cpp',
53 'poll.cpp',
54 'process.cpp',
55 'signal.cpp',
56 'stream.cpp',
57 'tcp.cpp',
58 'thread.cpp',
59 'timer.cpp',
60 'tty.cpp',
61 'udp.cpp',
62 ]
63 }
64 exportedHeaders {
65 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
66 }
67 }
68 wpiutilUnixCpp(CppSourceSet) {
69 source {
70 srcDirs 'src/main/native/unix'
71 include '**/*.cpp'
72 }
73 exportedHeaders {
74 srcDirs 'src/main/native/include', 'src/main/native/cpp'
75 include '**/*.h'
76 }
77 }
78 }
79 }
80 if (it.targetPlatform.operatingSystem.isWindows()) {
81 if (it in SharedLibraryBinarySpec) {
82 it.cppCompiler.define 'BUILDING_UV_SHARED'
83 }
84 it.sources {
85 libuvWindowsCpp(CppSourceSet) {
86 source {
87 srcDirs 'src/main/native/libuv/src/win'
88 include '*.cpp'
89 }
90 exportedHeaders {
91 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
92 }
93 }
94 wpiutilWindowsCpp(CppSourceSet) {
95 source {
96 srcDirs 'src/main/native/windows'
97 include '**/*.cpp'
98 }
99 exportedHeaders {
100 srcDirs 'src/main/native/include', 'src/main/native/cpp'
101 include '**/*.h'
102 }
103 }
104 }
105 } else if (it.targetPlatform.operatingSystem.isMacOsX()) {
106 it.sources {
107 libuvMacCpp(CppSourceSet) {
108 source {
109 srcDirs 'src/main/native/libuv/src/unix'
110 includes = [
111 'bsd-ifaddrs.cpp',
112 'darwin.cpp',
113 'darwin-proctitle.cpp',
114 'fsevents.cpp',
115 'kqueue.cpp',
116 'proctitle.cpp'
117 ]
118 }
119 exportedHeaders {
120 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
121 }
122 }
123 }
124 } else {
125 it.sources {
126 libuvLinuxCpp(CppSourceSet) {
127 source {
128 srcDirs 'src/main/native/libuv/src/unix'
129 includes = [
130 'linux-core.cpp',
131 'linux-inotify.cpp',
132 'linux-syscalls.cpp',
133 'procfs-exepath.cpp',
134 'proctitle.cpp',
135 'sysinfo-loadavg.cpp',
136 ]
137 }
138 exportedHeaders {
139 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
140 }
141 }
142 }
143 }
144 }
145}
146
147def examplesMap = [:];
148file("$projectDir/examples").list(new FilenameFilter() {
149 @Override
150 public boolean accept(File current, String name) {
151 return new File(current, name).isDirectory();
152 }
153}).each {
154 examplesMap.put(it, [])
155}
156
157apply from: "${rootDir}/shared/jni/setupBuild.gradle"
158
159nativeUtils.exportsConfigs {
160 wpiutil {
161 x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure',
162 '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure',
163 '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range',
164 '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast']
165 x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure',
166 '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure',
167 '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range',
168 '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast']
169 }
170}
171
172cppHeadersZip {
173 from('src/main/native/libuv/include') {
174 into '/'
175 }
Brian Silverman8fce7482020-01-05 13:18:21 -0800176}
177
178model {
179 components {
180 all {
181 it.sources.each {
182 it.exportedHeaders {
Austin Schuh1e69f942020-11-14 15:06:14 -0800183 srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
Brian Silverman8fce7482020-01-05 13:18:21 -0800184 }
185 }
186 }
187 }
188}
189
190model {
191 components {
192 examplesMap.each { key, value ->
193 "${key}"(NativeExecutableSpec) {
194 targetBuildTypes 'debug'
195 binaries.all {
196 lib library: 'wpiutil', linkage: 'shared'
197 }
198 sources {
199 cpp {
200 source {
201 srcDirs 'examples/' + "${key}"
202 include '**/*.cpp'
203 }
204 }
205 }
206 }
207 }
208 netconsoleServer(NativeExecutableSpec) {
209 targetBuildTypes 'release'
210 sources {
211 cpp {
212 source {
213 srcDirs = ['src/netconsoleServer/native/cpp']
214 includes = ['**/*.cpp']
215 }
216 }
217 }
218 binaries.all { binary ->
219 lib project: ':wpiutil', library: 'wpiutil', linkage: 'static'
220 if (binary.targetPlatform.operatingSystem.isLinux()) {
221 linker.args "-lutil"
222 }
223 }
224 }
225 netconsoleTee(NativeExecutableSpec) {
226 targetBuildTypes 'release'
227 sources {
228 cpp {
229 source {
230 srcDirs = ['src/netconsoleTee/native/cpp']
231 includes = ['**/*.cpp']
232 }
233 }
234 }
235 binaries.all { binary ->
236 lib project: ':wpiutil', library: 'wpiutil', linkage: 'static'
237 }
238 }
239 }
240}
241
242dependencies {
Brian Silverman8fce7482020-01-05 13:18:21 -0800243 api "com.fasterxml.jackson.core:jackson-annotations:2.10.0"
244 api "com.fasterxml.jackson.core:jackson-core:2.10.0"
245 api "com.fasterxml.jackson.core:jackson-databind:2.10.0"
246}