| apply from: "${rootDir}/shared/resources.gradle" |
| |
| ext { |
| noWpiutil = true |
| skipJniCheck = true |
| baseId = 'wpiutil' |
| groupId = 'edu.wpi.first.wpiutil' |
| |
| nativeName = 'wpiutil' |
| devMain = 'edu.wpi.first.wpiutil.DevMain' |
| def generateTask = createGenerateResourcesTask('main', 'WPI', 'wpi', project) |
| |
| splitSetup = { |
| it.tasks.withType(CppCompile) { |
| dependsOn generateTask |
| } |
| it.sources { |
| libuvCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/libuv/src' |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src' |
| } |
| } |
| fmtlibCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/fmtlib/src' |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/fmtlib/include' |
| } |
| } |
| resourcesCpp(CppSourceSet) { |
| source { |
| srcDirs "$buildDir/generated/main/cpp", "$rootDir/shared/singlelib" |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include' |
| } |
| } |
| } |
| if (!it.targetPlatform.operatingSystem.isWindows()) { |
| it.cppCompiler.define '_GNU_SOURCE' |
| it.sources { |
| libuvUnixCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/libuv/src/unix' |
| includes = [ |
| 'async.cpp', |
| 'core.cpp', |
| 'dl.cpp', |
| 'fs.cpp', |
| 'getaddrinfo.cpp', |
| 'getnameinfo.cpp', |
| 'loop-watcher.cpp', |
| 'loop.cpp', |
| 'pipe.cpp', |
| 'poll.cpp', |
| 'process.cpp', |
| 'signal.cpp', |
| 'stream.cpp', |
| 'tcp.cpp', |
| 'thread.cpp', |
| 'timer.cpp', |
| 'tty.cpp', |
| 'udp.cpp', |
| ] |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src' |
| } |
| } |
| wpiutilUnixCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/unix' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/cpp' |
| include '**/*.h' |
| } |
| } |
| } |
| } |
| if (it.targetPlatform.operatingSystem.isWindows()) { |
| if (it in SharedLibraryBinarySpec) { |
| it.cppCompiler.define 'BUILDING_UV_SHARED' |
| } |
| it.sources { |
| libuvWindowsCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/libuv/src/win' |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src' |
| } |
| } |
| wpiutilWindowsCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/windows' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/cpp' |
| include '**/*.h' |
| } |
| } |
| } |
| } else if (it.targetPlatform.operatingSystem.isMacOsX()) { |
| it.sources { |
| libuvMacCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/libuv/src/unix' |
| includes = [ |
| 'bsd-ifaddrs.cpp', |
| 'darwin.cpp', |
| 'darwin-proctitle.cpp', |
| 'fsevents.cpp', |
| 'kqueue.cpp', |
| 'proctitle.cpp' |
| ] |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src' |
| } |
| } |
| wpiutilmacOSCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/macOS' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/cpp' |
| include '**/*.h' |
| } |
| } |
| } |
| } else { |
| it.sources { |
| libuvLinuxCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/libuv/src/unix' |
| includes = [ |
| 'linux-core.cpp', |
| 'linux-inotify.cpp', |
| 'linux-syscalls.cpp', |
| 'procfs-exepath.cpp', |
| 'proctitle.cpp', |
| 'sysinfo-loadavg.cpp', |
| ] |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src' |
| } |
| } |
| wpiutilLinuxCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/linux' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/cpp', 'src/main/native/fmtlib/include' |
| include '**/*.h' |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| def examplesMap = [:]; |
| file("$projectDir/examples").list(new FilenameFilter() { |
| @Override |
| public boolean accept(File current, String name) { |
| return new File(current, name).isDirectory(); |
| } |
| }).each { |
| examplesMap.put(it, []) |
| } |
| |
| apply from: "${rootDir}/shared/jni/setupBuild.gradle" |
| |
| nativeUtils.exportsConfigs { |
| wpiutil { |
| x86ExcludeSymbols = [ |
| '_CT??_R0?AV_System_error', |
| '_CT??_R0?AVexception', |
| '_CT??_R0?AVfailure', |
| '_CT??_R0?AVruntime_error', |
| '_CT??_R0?AVsystem_error', |
| '_CTA5?AVfailure', |
| '_TI5?AVfailure', |
| '_CT??_R0?AVout_of_range', |
| '_CTA3?AVout_of_range', |
| '_TI3?AVout_of_range', |
| '_CT??_R0?AVbad_cast' |
| ] |
| x64ExcludeSymbols = [ |
| '_CT??_R0?AV_System_error', |
| '_CT??_R0?AVexception', |
| '_CT??_R0?AVfailure', |
| '_CT??_R0?AVruntime_error', |
| '_CT??_R0?AVsystem_error', |
| '_CTA5?AVfailure', |
| '_TI5?AVfailure', |
| '_CT??_R0?AVout_of_range', |
| '_CTA3?AVout_of_range', |
| '_TI3?AVout_of_range', |
| '_CT??_R0?AVbad_cast' |
| ] |
| } |
| } |
| |
| cppHeadersZip { |
| from('src/main/native/libuv/include') { |
| into '/' |
| } |
| from('src/main/native/fmtlib/include') { |
| into '/' |
| } |
| } |
| |
| model { |
| components { |
| all { |
| it.sources.each { |
| it.exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src', 'src/main/native/fmtlib/include' |
| } |
| } |
| } |
| } |
| } |
| |
| model { |
| components { |
| examplesMap.each { key, value -> |
| "${key}"(NativeExecutableSpec) { |
| targetBuildTypes 'debug' |
| binaries.all { |
| lib library: 'wpiutil', linkage: 'shared' |
| } |
| sources { |
| cpp { |
| source { |
| srcDirs 'examples/' + "${key}" |
| include '**/*.cpp' |
| } |
| } |
| } |
| } |
| } |
| netconsoleServer(NativeExecutableSpec) { |
| targetBuildTypes 'release' |
| sources { |
| cpp { |
| source { |
| srcDirs = [ |
| 'src/netconsoleServer/native/cpp' |
| ] |
| includes = ['**/*.cpp'] |
| } |
| } |
| } |
| binaries.all { binary -> |
| lib project: ':wpiutil', library: 'wpiutil', linkage: 'static' |
| if (binary.targetPlatform.operatingSystem.isLinux()) { |
| linker.args "-lutil" |
| } |
| } |
| } |
| netconsoleTee(NativeExecutableSpec) { |
| targetBuildTypes 'release' |
| sources { |
| cpp { |
| source { |
| srcDirs = [ |
| 'src/netconsoleTee/native/cpp' |
| ] |
| includes = ['**/*.cpp'] |
| } |
| } |
| } |
| binaries.all { binary -> |
| lib project: ':wpiutil', library: 'wpiutil', linkage: 'static' |
| } |
| } |
| } |
| } |
| |
| dependencies { |
| api "com.fasterxml.jackson.core:jackson-annotations:2.12.4" |
| api "com.fasterxml.jackson.core:jackson-core:2.12.4" |
| api "com.fasterxml.jackson.core:jackson-databind:2.12.4" |
| } |