ext { addNtcoreDependency = { binary, shared-> binary.lib project: ':ntcore', library: 'ntcore', linkage: shared binary.lib project: ':datalog', library: 'datalog', linkage: shared } addNtcoreJniDependency = { binary-> binary.lib project: ':ntcore', library: 'ntcoreJNIShared', linkage: 'shared' binary.lib project: ':datalog', library: 'datalogJNIShared', linkage: 'shared' } nativeName = 'ntcore' devMain = 'org.wpilib.networktables.DevMain' generatedSources = "$projectDir/src/generated/main/native/cpp" generatedHeaders = "$projectDir/src/generated/main/native/include" jniSplitSetup = { } splitSetup = { it.tasks.withType(CppCompile) { it.includes 'src/main/native/cpp' } } exeSplitSetup = { } } apply from: "${rootDir}/shared/jni/setupBuild.gradle" model { components {} binaries { all { if (!it.buildable || !(it instanceof NativeBinarySpec)) { return } lib project: ':wpinet', library: 'wpinet', linkage: 'shared' lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' lib project: ':datalog', library: 'datalog', linkage: 'shared' } } } sourceSets.main.java.srcDir "${projectDir}/src/generated/main/java" cppHeadersZip { from(generatedHeaders) { into '/' } } cppSourcesZip { from(generatedSources) { into '/' } } Action> symbolFilter = { symbols -> symbols.removeIf({ !it.startsWith('NT_') }) } as Action>; nativeUtils.exportsConfigs { ntcore { } ntcoreJNI { x64SymbolFilter = symbolFilter } } dependencies { api project(":datalog") }