2018-11-18 18:35:03 -08:00
|
|
|
apply from: "${rootDir}/shared/resources.gradle"
|
|
|
|
|
|
2025-08-17 01:56:32 -04:00
|
|
|
apply plugin: 'c'
|
2018-04-29 13:29:07 -07:00
|
|
|
ext {
|
2019-09-26 22:53:21 -07:00
|
|
|
noWpiutil = true
|
2019-08-03 17:24:14 -04:00
|
|
|
baseId = 'wpiutil'
|
2025-11-07 20:00:38 -05:00
|
|
|
groupId = 'org.wpilib.wpiutil'
|
2019-08-03 17:24:14 -04:00
|
|
|
|
2018-04-29 13:29:07 -07:00
|
|
|
nativeName = 'wpiutil'
|
2025-11-07 19:56:29 -05:00
|
|
|
devMain = 'org.wpilib.util.DevMain'
|
2018-11-18 18:35:03 -08:00
|
|
|
def generateTask = createGenerateResourcesTask('main', 'WPI', 'wpi', project)
|
2019-05-30 15:59:26 -07:00
|
|
|
|
2019-09-26 22:53:21 -07:00
|
|
|
splitSetup = {
|
2018-11-18 18:35:03 -08:00
|
|
|
it.tasks.withType(CppCompile) {
|
|
|
|
|
dependsOn generateTask
|
|
|
|
|
}
|
2018-06-17 13:40:41 -07:00
|
|
|
it.sources {
|
2024-11-22 09:17:23 -08:00
|
|
|
debuggingCpp(CppSourceSet) {
|
|
|
|
|
source {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/debugging/src'
|
|
|
|
|
include '*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/debugging/include'
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-03-30 23:57:41 -07:00
|
|
|
doubleConversionCpp(CppSourceSet) {
|
|
|
|
|
source {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/double-conversion/src'
|
|
|
|
|
include '*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/double-conversion/include'
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-24 23:59:35 -07:00
|
|
|
fmtlibCpp(CppSourceSet) {
|
|
|
|
|
source {
|
2022-06-18 11:08:31 -04:00
|
|
|
srcDirs 'src/main/native/thirdparty/fmtlib/src'
|
2021-05-24 23:59:35 -07:00
|
|
|
include '*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2022-06-18 11:08:31 -04:00
|
|
|
srcDirs 'src/main/native/thirdparty/fmtlib/include'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jsonCpp(CppSourceSet) {
|
|
|
|
|
source {
|
2026-03-29 15:37:32 -07:00
|
|
|
srcDirs 'src/main/native/thirdparty/json/src'
|
|
|
|
|
include '**/*.cpp'
|
2022-06-18 11:08:31 -04:00
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2026-03-29 15:37:32 -07:00
|
|
|
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'
|
2022-06-18 11:08:31 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
llvmCpp(CppSourceSet) {
|
|
|
|
|
source {
|
2022-09-03 09:23:51 -07:00
|
|
|
srcDirs 'src/main/native/thirdparty/llvm/cpp'
|
2022-06-18 11:08:31 -04:00
|
|
|
include '**/*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2024-09-12 23:45:35 -07:00
|
|
|
srcDirs 'src/main/native/include', 'src/main/native/thirdparty/expected/include', 'src/main/native/thirdparty/fmtlib/include', 'src/main/native/thirdparty/llvm/include'
|
2022-06-18 11:08:31 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mpackCpp(CppSourceSet) {
|
|
|
|
|
source {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/mpack/src'
|
|
|
|
|
include '*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/mpack/include'
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-07 22:42:50 -08:00
|
|
|
nanopbCpp(CppSourceSet) {
|
|
|
|
|
source {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/nanopb/src'
|
|
|
|
|
include '*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/nanopb/include'
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-06-18 11:08:31 -04:00
|
|
|
sigslotCpp(CppSourceSet) {
|
|
|
|
|
source {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/sigslot/src'
|
|
|
|
|
include '*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
|
|
|
|
srcDirs 'src/main/native/thirdparty/sigslot/include'
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-08-17 01:56:32 -04:00
|
|
|
resourcesCpp(CppSourceSet) {
|
2023-10-14 21:54:17 -07:00
|
|
|
source {
|
2025-08-17 01:56:32 -04:00
|
|
|
srcDirs "$buildDir/generated/main/cpp", "$rootDir/shared/singlelib"
|
|
|
|
|
include '*.cpp'
|
2023-10-14 21:54:17 -07:00
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2025-08-17 01:56:32 -04:00
|
|
|
srcDirs 'src/main/native/include'
|
2023-10-14 21:54:17 -07:00
|
|
|
}
|
|
|
|
|
}
|
2025-08-17 01:56:32 -04:00
|
|
|
upbCpp(CSourceSet) {
|
2018-11-18 18:35:03 -08:00
|
|
|
source {
|
2025-08-17 01:56:32 -04:00
|
|
|
srcDirs 'src/main/native/thirdparty/upb/src'
|
|
|
|
|
include '**/*.c'
|
2018-11-18 18:35:03 -08:00
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2025-08-17 01:56:32 -04:00
|
|
|
srcDirs 'src/main/native/thirdparty/upb/include'
|
2018-11-18 18:35:03 -08:00
|
|
|
}
|
|
|
|
|
}
|
2018-06-17 13:40:41 -07:00
|
|
|
}
|
2019-06-28 14:09:10 -07:00
|
|
|
if (!it.targetPlatform.operatingSystem.isWindows()) {
|
2018-06-17 13:40:41 -07:00
|
|
|
it.cppCompiler.define '_GNU_SOURCE'
|
|
|
|
|
it.sources {
|
2019-08-12 23:45:45 -07:00
|
|
|
wpiutilUnixCpp(CppSourceSet) {
|
|
|
|
|
source {
|
|
|
|
|
srcDirs 'src/main/native/unix'
|
|
|
|
|
include '**/*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2024-11-07 22:42:50 -08:00
|
|
|
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'
|
2019-08-12 23:45:45 -07:00
|
|
|
include '**/*.h'
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-06-17 13:40:41 -07:00
|
|
|
}
|
|
|
|
|
}
|
2019-06-28 14:09:10 -07:00
|
|
|
if (it.targetPlatform.operatingSystem.isWindows()) {
|
2018-06-17 13:40:41 -07:00
|
|
|
it.sources {
|
2019-08-12 23:45:45 -07:00
|
|
|
wpiutilWindowsCpp(CppSourceSet) {
|
|
|
|
|
source {
|
2025-05-04 11:21:29 -07:00
|
|
|
srcDirs 'src/main/native/windows'
|
2019-08-12 23:45:45 -07:00
|
|
|
include '**/*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2024-11-07 22:42:50 -08:00
|
|
|
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'
|
2019-08-12 23:45:45 -07:00
|
|
|
include '**/*.h'
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-06-17 13:40:41 -07:00
|
|
|
}
|
2019-06-28 14:09:10 -07:00
|
|
|
} else if (it.targetPlatform.operatingSystem.isMacOsX()) {
|
2018-06-17 13:40:41 -07:00
|
|
|
it.sources {
|
2021-11-25 22:08:26 -08:00
|
|
|
wpiutilmacOSCpp(CppSourceSet) {
|
|
|
|
|
source {
|
2025-05-04 11:21:29 -07:00
|
|
|
srcDirs 'src/main/native/macOS'
|
2021-11-25 22:08:26 -08:00
|
|
|
include '**/*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2024-11-07 22:42:50 -08:00
|
|
|
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'
|
2021-11-25 22:08:26 -08:00
|
|
|
include '**/*.h'
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-06-17 13:40:41 -07:00
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
it.sources {
|
2021-11-25 22:08:26 -08:00
|
|
|
wpiutilLinuxCpp(CppSourceSet) {
|
|
|
|
|
source {
|
2025-05-04 11:21:29 -07:00
|
|
|
srcDirs 'src/main/native/linux'
|
2021-11-25 22:08:26 -08:00
|
|
|
include '**/*.cpp'
|
|
|
|
|
}
|
|
|
|
|
exportedHeaders {
|
2024-11-07 22:42:50 -08:00
|
|
|
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'
|
2021-11-25 22:08:26 -08:00
|
|
|
include '**/*.h'
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-06-17 13:40:41 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-04-29 13:29:07 -07:00
|
|
|
}
|
|
|
|
|
|
2019-09-26 22:53:21 -07:00
|
|
|
apply from: "${rootDir}/shared/jni/setupBuild.gradle"
|
2018-04-29 13:29:07 -07:00
|
|
|
|
2019-06-28 14:09:10 -07:00
|
|
|
nativeUtils.exportsConfigs {
|
|
|
|
|
wpiutil {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-07 18:55:06 -08:00
|
|
|
nativeUtils.platformConfigs.each {
|
|
|
|
|
if (it.name.contains('windows')) {
|
|
|
|
|
it.cppCompiler.args.add("/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-30 15:59:26 -07:00
|
|
|
cppHeadersZip {
|
2024-10-25 09:52:14 -04:00
|
|
|
def thirdpartyIncDirs = [
|
|
|
|
|
'src/main/native/thirdparty/argparse/include',
|
2024-11-22 09:17:23 -08:00
|
|
|
'src/main/native/thirdparty/debugging/include',
|
2026-03-30 23:57:41 -07:00
|
|
|
'src/main/native/thirdparty/double-conversion/include',
|
2024-10-25 09:52:14 -04:00
|
|
|
'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',
|
2024-11-07 22:42:50 -08:00
|
|
|
'src/main/native/thirdparty/nanopb/include',
|
2024-10-25 09:52:14 -04:00
|
|
|
'src/main/native/thirdparty/sigslot/include',
|
2025-08-17 01:56:32 -04:00
|
|
|
'src/main/native/thirdparty/upb/include'
|
2024-10-25 09:52:14 -04:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
thirdpartyIncDirs.each {
|
|
|
|
|
ext.includeDirs << project.file(it)
|
|
|
|
|
from(it) {
|
|
|
|
|
into '/'
|
|
|
|
|
}
|
2023-10-14 21:54:17 -07:00
|
|
|
}
|
2022-06-18 11:08:31 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cppSourcesZip {
|
2025-07-16 00:20:28 -04:00
|
|
|
from('src/main/native/thirdparty/debugging/src') {
|
|
|
|
|
into '/'
|
|
|
|
|
}
|
2026-03-30 23:57:41 -07:00
|
|
|
from('src/main/native/thirdparty/double-conversion/src') {
|
|
|
|
|
into '/'
|
|
|
|
|
}
|
2022-09-03 09:23:51 -07:00
|
|
|
from('src/main/native/thirdparty/fmtlib/src') {
|
2022-06-18 11:08:31 -04:00
|
|
|
into '/'
|
|
|
|
|
}
|
2026-03-29 15:37:32 -07:00
|
|
|
from('src/main/native/thirdparty/json/src') {
|
2021-05-24 23:59:35 -07:00
|
|
|
into '/'
|
|
|
|
|
}
|
2022-09-03 09:23:51 -07:00
|
|
|
from('src/main/native/thirdparty/llvm/cpp') {
|
|
|
|
|
into '/'
|
|
|
|
|
}
|
|
|
|
|
from('src/main/native/thirdparty/mpack/src') {
|
|
|
|
|
into '/'
|
|
|
|
|
}
|
2024-11-07 22:42:50 -08:00
|
|
|
from('src/main/native/thirdparty/nanopb/src') {
|
|
|
|
|
into '/'
|
|
|
|
|
}
|
2025-08-17 01:56:32 -04:00
|
|
|
from('src/main/native/thirdparty/sigslot/src') {
|
2023-10-14 21:54:17 -07:00
|
|
|
into '/'
|
|
|
|
|
}
|
2025-08-17 01:56:32 -04:00
|
|
|
from('src/main/native/thirdparty/upb/src') {
|
2022-09-03 09:23:51 -07:00
|
|
|
into '/'
|
|
|
|
|
}
|
2019-05-30 15:59:26 -07:00
|
|
|
}
|
|
|
|
|
|
2018-04-29 13:29:07 -07:00
|
|
|
model {
|
2019-05-30 15:59:26 -07:00
|
|
|
components {
|
|
|
|
|
all {
|
|
|
|
|
it.sources.each {
|
|
|
|
|
it.exportedHeaders {
|
2026-03-30 23:57:41 -07:00
|
|
|
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'
|
2024-11-07 22:42:50 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
testSuites {
|
2025-09-08 17:14:23 -04:00
|
|
|
"${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'
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-07 22:42:50 -08:00
|
|
|
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'
|
2019-05-30 15:59:26 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-06-28 14:09:10 -07:00
|
|
|
}
|
2019-05-30 15:59:26 -07:00
|
|
|
|
2019-08-03 17:24:14 -04:00
|
|
|
dependencies {
|
2026-02-20 18:31:33 -05:00
|
|
|
api libs.bundles.jackson
|
|
|
|
|
api libs.quickbuf.runtime
|
2019-08-03 17:24:14 -04:00
|
|
|
}
|