blob: 7e4cc16990748f7bb857d4b7cbcc5040b1a746db [file] [log] [blame]
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
}