Files
allwpilib/wpiutil/build.gradle
2026-04-08 08:28:28 -07:00

291 lines
11 KiB
Groovy

apply from: "${rootDir}/shared/resources.gradle"
apply plugin: 'c'
ext {
noWpiutil = true
baseId = 'wpiutil'
groupId = 'org.wpilib.wpiutil'
nativeName = 'wpiutil'
devMain = 'org.wpilib.util.DevMain'
def generateTask = createGenerateResourcesTask('main', 'WPI', 'wpi', project)
splitSetup = {
it.tasks.withType(CppCompile) {
dependsOn generateTask
}
it.sources {
debuggingCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/thirdparty/debugging/src'
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/thirdparty/debugging/include'
}
}
doubleConversionCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/thirdparty/double-conversion/src'
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/thirdparty/double-conversion/include'
}
}
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/src'
include '**/*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/thirdparty/double-conversion/include', 'src/main/native/thirdparty/expected/include', 'src/main/native/thirdparty/llvm/include', 'src/main/native/thirdparty/json/include'
}
}
llvmCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/thirdparty/llvm/cpp'
include '**/*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/thirdparty/expected/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/llvm/include'
}
}
mpackCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/thirdparty/mpack/src'
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/thirdparty/mpack/include'
}
}
nanopbCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/thirdparty/nanopb/src'
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/thirdparty/nanopb/include'
}
}
sigslotCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/thirdparty/sigslot/src'
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/thirdparty/sigslot/include'
}
}
resourcesCpp(CppSourceSet) {
source {
srcDirs "$buildDir/generated/main/cpp", "$rootDir/shared/singlelib"
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/include'
}
}
upbCpp(CSourceSet) {
source {
srcDirs 'src/main/native/thirdparty/upb/src'
include '**/*.c'
}
exportedHeaders {
srcDirs 'src/main/native/thirdparty/upb/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', 'src/main/native/thirdparty/nanopb/include'
include '**/*.h'
}
}
}
}
if (it.targetPlatform.operatingSystem.isWindows()) {
it.sources {
wpiutilWindowsCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/windows'
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', 'src/main/native/thirdparty/nanopb/include'
include '**/*.h'
}
}
}
} else if (it.targetPlatform.operatingSystem.isMacOsX()) {
it.sources {
wpiutilmacOSCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/macOS'
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', 'src/main/native/thirdparty/nanopb/include'
include '**/*.h'
}
}
}
} else {
it.sources {
wpiutilLinuxCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/linux'
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', 'src/main/native/thirdparty/nanopb/include'
include '**/*.h'
}
}
}
}
}
}
apply from: "${rootDir}/shared/jni/setupBuild.gradle"
nativeUtils.exportsConfigs {
wpiutil {
}
}
nativeUtils.platformConfigs.each {
if (it.name.contains('windows')) {
it.cppCompiler.args.add("/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR")
}
}
cppHeadersZip {
def thirdpartyIncDirs = [
'src/main/native/thirdparty/argparse/include',
'src/main/native/thirdparty/debugging/include',
'src/main/native/thirdparty/double-conversion/include',
'src/main/native/thirdparty/expected/include',
'src/main/native/thirdparty/fmtlib/include',
'src/main/native/thirdparty/json/include',
'src/main/native/thirdparty/llvm/include',
'src/main/native/thirdparty/mpack/include',
'src/main/native/thirdparty/nanopb/include',
'src/main/native/thirdparty/sigslot/include',
'src/main/native/thirdparty/upb/include'
]
thirdpartyIncDirs.each {
ext.includeDirs << project.file(it)
from(it) {
into '/'
}
}
}
cppSourcesZip {
from('src/main/native/thirdparty/debugging/src') {
into '/'
}
from('src/main/native/thirdparty/double-conversion/src') {
into '/'
}
from('src/main/native/thirdparty/fmtlib/src') {
into '/'
}
from('src/main/native/thirdparty/json/src') {
into '/'
}
from('src/main/native/thirdparty/llvm/cpp') {
into '/'
}
from('src/main/native/thirdparty/mpack/src') {
into '/'
}
from('src/main/native/thirdparty/nanopb/src') {
into '/'
}
from('src/main/native/thirdparty/sigslot/src') {
into '/'
}
from('src/main/native/thirdparty/upb/src') {
into '/'
}
}
model {
components {
all {
it.sources.each {
it.exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/thirdparty/argparse/include/', 'src/main/native/thirdparty/debugging/include', 'src/main/native/thirdparty/double-conversion/include', 'src/main/native/thirdparty/expected/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/mpack/include', 'src/main/native/thirdparty/nanopb/include', 'src/main/native/thirdparty/upb/include'
}
}
}
}
testSuites {
"${nativeName}Catch2Test"(GoogleTestTestSuiteSpec) {
for(NativeComponentSpec c : $.components) {
if (c.name == nativeName) {
testing c
break
}
}
sources {
cpp {
source {
srcDirs 'src/test/native/cpp'
include '**/TestCatch2.cpp', '**/catch2main.cpp'
}
exportedHeaders {
srcDirs 'src/test/native/include', 'src/main/native/cpp'
}
}
}
binaries.all {
lib project: ':thirdparty:catch2', library: 'catch2', linkage: 'static'
}
}
withType(GoogleTestTestSuiteSpec) {
sources {
protobufGenCpp(CppSourceSet) {
source {
srcDirs 'src/generated/test/native/cpp'
include '**/*.cpp'
}
exportedHeaders {
srcDirs 'src/generated/test/native/cpp'
}
}
}
it.sources.each {
it.exportedHeaders {
srcDirs 'src/test/native/include', 'src/generated/test/native/cpp'
}
}
}
}
}
dependencies {
api libs.bundles.jackson
api libs.quickbuf.runtime
}