mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
270 lines
9.5 KiB
Groovy
270 lines
9.5 KiB
Groovy
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 {
|
|
fmtlibCpp(CppSourceSet) {
|
|
source {
|
|
srcDirs 'src/main/native/thirdparty/fmtlib/src'
|
|
include '*.cpp'
|
|
}
|
|
exportedHeaders {
|
|
srcDirs 'src/main/native/thirdparty/fmtlib/include'
|
|
}
|
|
}
|
|
ghcCpp(CppSourceSet) {
|
|
exportedHeaders {
|
|
srcDirs 'src/main/native/thirdparty/ghc/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/tcb_span/include', 'src/main/native/thirdparty/fmtlib/include'
|
|
}
|
|
}
|
|
llvmCpp(CppSourceSet) {
|
|
source {
|
|
srcDirs 'src/main/native/thirdparty/llvm'
|
|
include '**/*.cpp'
|
|
}
|
|
exportedHeaders {
|
|
srcDirs 'src/main/native/include', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/tcb_span/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/ghc/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'
|
|
}
|
|
}
|
|
tcbSpanCpp(CppSourceSet) {
|
|
exportedHeaders {
|
|
srcDirs 'src/main/native/thirdparty/tcb_span/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'
|
|
}
|
|
}
|
|
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/sigslot/include', 'src/main/native/thirdparty/tcb_span/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/tcb_span/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/tcb_span/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/tcb_span/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/ghc/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/tcb_span/include') {
|
|
into '/'
|
|
}
|
|
from('src/main/native/thirdparty/memory/include') {
|
|
into '/'
|
|
}
|
|
}
|
|
|
|
cppSourcesZip {
|
|
from('src/main/native/thirdparty/llvm/cpp') {
|
|
into '/'
|
|
}
|
|
from('src/main/native/thirdparty/json/cpp') {
|
|
into '/'
|
|
}
|
|
from('src/main/native/thirdparty/memory/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/tcb_span/include', 'src/main/native/thirdparty/ghc/include', 'src/main/native/thirdparty/memory/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'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
printlog
|
|
}
|
|
|
|
task runPrintLog(type: JavaExec) {
|
|
classpath = sourceSets.printlog.runtimeClasspath
|
|
|
|
mainClass = 'printlog.PrintLog'
|
|
}
|
|
|
|
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"
|
|
|
|
printlogImplementation sourceSets.main.output
|
|
}
|