| apply from: "${rootDir}/shared/resources.gradle" |
| |
| ext { |
| noWpiutil = true |
| skipJniSymbols = [ |
| 'Java_edu_wpi_first_util_CombinedRuntimeLoader_setDllDirectory' |
| ] |
| 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 { |
| fmtlibCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/thirdparty/fmtlib/src' |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/thirdparty/fmtlib/include' |
| } |
| } |
| jsonCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/thirdparty/json/cpp' |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/json/include', 'src/main/native/thirdparty/fmtlib/include' |
| } |
| } |
| llvmCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/thirdparty/llvm/cpp' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/include', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/fmtlib/include' |
| } |
| } |
| mpackCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/thirdparty/mpack/src' |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/thirdparty/mpack/include' |
| } |
| } |
| sigslotCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/thirdparty/sigslot/src' |
| include '*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/thirdparty/sigslot/include' |
| } |
| } |
| memoryCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/thirdparty/memory/src', 'src/main/native/thirdparty/memory/include/wpi/memory' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/thirdparty/memory/include' |
| include '**/*.hpp' |
| } |
| } |
| protobufCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/thirdparty/protobuf/src' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| srcDirs 'src/main/native/thirdparty/protobuf/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 { |
| wpiutilUnixCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/unix' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| 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/mpack/include' |
| include '**/*.h' |
| } |
| } |
| } |
| } |
| if (it.targetPlatform.operatingSystem.isWindows()) { |
| it.sources { |
| wpiutilWindowsCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/windows', 'src/main/native/llvm/cpp/llvm', 'src/main/native/json/cpp' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| 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/mpack/include' |
| include '**/*.h' |
| } |
| } |
| } |
| } else if (it.targetPlatform.operatingSystem.isMacOsX()) { |
| it.sources { |
| wpiutilmacOSCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/macOS', 'src/main/native/llvm/cpp/llvm', 'src/main/native/json/cpp' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| 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/mpack/include' |
| include '**/*.h' |
| } |
| } |
| } |
| } else { |
| it.sources { |
| wpiutilLinuxCpp(CppSourceSet) { |
| source { |
| srcDirs 'src/main/native/linux', 'src/main/native/llvm/cpp/llvm', 'src/main/native/json/cpp' |
| include '**/*.cpp' |
| } |
| exportedHeaders { |
| 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/mpack/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 { |
| 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/thirdparty/fmtlib/include') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/json/include') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/llvm/include') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/mpack/include') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/sigslot/include') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/memory/include') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/protobuf/include') { |
| into '/' |
| } |
| } |
| |
| cppSourcesZip { |
| from('src/main/native/thirdparty/fmtlib/src') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/json/cpp') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/llvm/cpp') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/memory/src') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/mpack/src') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/protobuf/src') { |
| into '/' |
| } |
| from('src/main/native/thirdparty/sigslot/src') { |
| into '/' |
| } |
| } |
| |
| model { |
| components { |
| all { |
| it.sources.each { |
| it.exportedHeaders { |
| 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/memory/include', 'src/main/native/thirdparty/mpack/include', 'src/main/native/thirdparty/protobuf/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' |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| model { |
| binaries { |
| all { |
| if (!(it instanceof NativeBinarySpec)) return |
| if (it.component.name != 'wpiutil' && it.component.name != 'wpiutilBase') return |
| if (it.targetPlatform.name != nativeUtils.wpi.platforms.roborio) return |
| nativeUtils.useRequiredLibrary(it, 'chipobject_headers') |
| } |
| } |
| } |
| |
| sourceSets { |
| printlog |
| } |
| |
| task runPrintLog(type: JavaExec) { |
| classpath = sourceSets.printlog.runtimeClasspath |
| |
| mainClass = 'printlog.PrintLog' |
| } |
| |
| dependencies { |
| api "com.fasterxml.jackson.core:jackson-annotations:2.15.2" |
| api "com.fasterxml.jackson.core:jackson-core:2.15.2" |
| api "com.fasterxml.jackson.core:jackson-databind:2.15.2" |
| api 'us.hebi.quickbuf:quickbuf-runtime:1.3.3' |
| |
| printlogImplementation sourceSets.main.output |
| } |