mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
This will allow us at the user code side to determine to include old commands, new commands or both.
247 lines
11 KiB
Groovy
247 lines
11 KiB
Groovy
import org.gradle.language.base.internal.ProjectLayout
|
|
|
|
apply plugin: 'cpp'
|
|
apply plugin: 'c'
|
|
apply plugin: 'visual-studio'
|
|
apply plugin: 'edu.wpi.first.NativeUtils'
|
|
apply plugin: ExtraTasks
|
|
|
|
apply from: '../shared/config.gradle'
|
|
|
|
ext.examplesMap = [:]
|
|
ext.templatesMap = [:]
|
|
|
|
File examplesTree = file("$projectDir/src/main/cpp/examples")
|
|
examplesTree.list(new FilenameFilter() {
|
|
@Override
|
|
public boolean accept(File current, String name) {
|
|
return new File(current, name).isDirectory();
|
|
}
|
|
}).each {
|
|
examplesMap.put(it, [])
|
|
}
|
|
File templatesTree = file("$projectDir/src/main/cpp/templates")
|
|
templatesTree.list(new FilenameFilter() {
|
|
@Override
|
|
public boolean accept(File current, String name) {
|
|
return new File(current, name).isDirectory();
|
|
}
|
|
}).each {
|
|
templatesMap.put(it, [])
|
|
}
|
|
|
|
nativeUtils.platformConfigs.named(nativeUtils.wpi.platforms.roborio).configure {
|
|
cppCompiler.args.remove('-Wno-error=deprecated-declarations')
|
|
cppCompiler.args.add('-Werror=deprecated-declarations')
|
|
}
|
|
|
|
ext {
|
|
sharedCvConfigs = examplesMap + templatesMap + [commands: []]
|
|
staticCvConfigs = [:]
|
|
useJava = false
|
|
useCpp = true
|
|
}
|
|
|
|
apply from: "${rootDir}/shared/opencv.gradle"
|
|
|
|
ext {
|
|
chipObjectComponents = ['commands']
|
|
netCommComponents = ['commands']
|
|
examplesMap.each { key, value ->
|
|
chipObjectComponents << key.toString()
|
|
netCommComponents << key.toString()
|
|
}
|
|
templatesMap.each { key, value ->
|
|
chipObjectComponents << key.toString()
|
|
netCommComponents << key.toString()
|
|
}
|
|
}
|
|
|
|
apply from: "${rootDir}/shared/nilibraries.gradle"
|
|
|
|
model {
|
|
components {
|
|
commands(NativeLibrarySpec) {
|
|
binaries.all { binary ->
|
|
if (binary in StaticLibraryBinarySpec) {
|
|
binary.buildable = false
|
|
return
|
|
}
|
|
lib project: ':wpilibOldCommands', library: 'wpilibOldCommands', linkage: 'shared'
|
|
lib project: ':wpilibNewCommands', library: 'wpilibNewCommands', linkage: 'shared'
|
|
lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared'
|
|
lib project: ':ntcore', library: 'ntcore', linkage: 'shared'
|
|
lib project: ':cscore', library: 'cscore', linkage: 'shared'
|
|
project(':hal').addHalDependency(binary, 'shared')
|
|
lib project: ':cameraserver', library: 'cameraserver', linkage: 'shared'
|
|
lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared'
|
|
}
|
|
sources {
|
|
cpp {
|
|
source {
|
|
srcDirs = ['src/main/cpp/commands']
|
|
include '**/*.cpp'
|
|
}
|
|
exportedHeaders {
|
|
srcDirs 'src/main/cpp/commands'
|
|
include '**/*.h'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
examplesMap.each { key, value ->
|
|
"${key}"(NativeExecutableSpec) {
|
|
targetBuildTypes 'debug'
|
|
binaries.all { binary ->
|
|
lib project: ':wpilibOldCommands', library: 'wpilibOldCommands', linkage: 'shared'
|
|
lib project: ':wpilibNewCommands', library: 'wpilibNewCommands', linkage: 'shared'
|
|
lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared'
|
|
lib project: ':ntcore', library: 'ntcore', linkage: 'shared'
|
|
lib project: ':cscore', library: 'cscore', linkage: 'shared'
|
|
project(':hal').addHalDependency(binary, 'shared')
|
|
lib project: ':cameraserver', library: 'cameraserver', linkage: 'shared'
|
|
lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared'
|
|
if (binary.targetPlatform.name != nativeUtils.wpi.platforms.roborio) {
|
|
lib project: ':simulation:halsim_lowfi', library: 'halsim_lowfi', linkage: 'shared'
|
|
lib project: ':simulation:halsim_print', library: 'halsim_print', linkage: 'shared'
|
|
lib project: ':simulation:halsim_ds_nt', library: 'halsim_ds_nt', linkage: 'shared'
|
|
}
|
|
}
|
|
sources {
|
|
cpp {
|
|
source {
|
|
srcDirs 'src/main/cpp/examples/' + "${key}" + "/cpp"
|
|
include '**/*.cpp'
|
|
}
|
|
exportedHeaders {
|
|
srcDirs 'src/main/cpp/examples/' + "${key}" + "/include"
|
|
include '**/*.h'
|
|
}
|
|
}
|
|
}
|
|
sources {
|
|
c {
|
|
source {
|
|
srcDirs 'src/main/cpp/examples/' + "${key}" + "/c"
|
|
include '**/*.c'
|
|
}
|
|
exportedHeaders {
|
|
srcDirs 'src/main/cpp/examples/' + "${key}" + "/include"
|
|
include '**/*.h'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
templatesMap.each { key, value ->
|
|
"${key}"(NativeExecutableSpec) {
|
|
targetBuildTypes 'debug'
|
|
binaries.all { binary ->
|
|
lib project: ':wpilibOldCommands', library: 'wpilibOldCommands', linkage: 'shared'
|
|
lib project: ':wpilibNewCommands', library: 'wpilibNewCommands', linkage: 'shared'
|
|
lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared'
|
|
lib project: ':ntcore', library: 'ntcore', linkage: 'shared'
|
|
lib project: ':cscore', library: 'cscore', linkage: 'shared'
|
|
project(':hal').addHalDependency(binary, 'shared')
|
|
lib project: ':cameraserver', library: 'cameraserver', linkage: 'shared'
|
|
lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared'
|
|
binary.tasks.withType(CppCompile) {
|
|
if (!(binary.toolChain in VisualCpp)) {
|
|
cppCompiler.args "-Wno-error=deprecated-declarations"
|
|
} else {
|
|
cppCompiler.args "/wd4996"
|
|
}
|
|
}
|
|
if (binary.targetPlatform.name != nativeUtils.wpi.platforms.roborio) {
|
|
lib project: ':simulation:halsim_lowfi', library: 'halsim_lowfi', linkage: 'shared'
|
|
lib project: ':simulation:halsim_print', library: 'halsim_print', linkage: 'shared'
|
|
lib project: ':simulation:halsim_ds_nt', library: 'halsim_ds_nt', linkage: 'shared'
|
|
}
|
|
}
|
|
sources {
|
|
cpp {
|
|
source {
|
|
srcDirs 'src/main/cpp/templates/' + "${key}" + "/cpp"
|
|
include '**/*.cpp'
|
|
}
|
|
exportedHeaders {
|
|
srcDirs 'src/main/cpp/templates/' + "${key}" + "/include"
|
|
include '**/*.h'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
tasks {
|
|
def b = $.binaries
|
|
b.each { binary->
|
|
if (binary in NativeExecutableBinarySpec) {
|
|
def installDir = binary.tasks.install.installDirectory.get().toString() + File.separatorChar
|
|
def runFile = binary.tasks.install.runScriptFile.get().asFile.toString()
|
|
|
|
binary.tasks.install.doLast {
|
|
if (binary.targetPlatform.operatingSystem.isWindows()) {
|
|
// Windows batch scripts
|
|
def fileName = binary.component.name + 'LowFi.bat'
|
|
def file = new File(installDir + fileName)
|
|
file.withWriter { out ->
|
|
out.println '@ECHO OFF'
|
|
out.print 'SET HALSIM_EXTENSIONS='
|
|
out.print '"' + new File(installDir + 'lib\\halsim_lowfi.dll').toString() + '";'
|
|
out.println '"' + new File(installDir + 'lib\\halsim_ds_nt.dll').toString() + '"'
|
|
out.println runFile + ' %*'
|
|
}
|
|
|
|
fileName = binary.component.name + 'LowFiRealDS.bat'
|
|
file = new File(installDir + fileName)
|
|
file.withWriter { out ->
|
|
out.println '@ECHO OFF'
|
|
out.print 'SET HALSIM_EXTENSIONS='
|
|
out.print '"' + new File(installDir + 'lib\\halsim_lowfi.dll').toString() + '";'
|
|
out.println '"' + new File(installDir + 'lib\\halsim_ds_socket.dll').toString() + '"'
|
|
out.println runFile + ' %*'
|
|
}
|
|
} else {
|
|
def fileName = binary.component.name + 'LowFi.sh'
|
|
def file = new File(installDir + fileName)
|
|
|
|
file.withWriter { out ->
|
|
out.print 'export HALSIM_EXTENSIONS='
|
|
out.print '"' + new File(installDir + '/lib/libhalsim_lowfi.so').toString() + '";'
|
|
out.println '"' + new File(installDir + '/lib/libhalsim_ds_nt.so').toString() + '"'
|
|
out.println runFile + ' "$@"'
|
|
}
|
|
|
|
fileName = binary.component.name + 'LowFiRealDS.sh'
|
|
file = new File(installDir + fileName)
|
|
file.withWriter { out ->
|
|
out.print 'export HALSIM_EXTENSIONS='
|
|
out.print '"' + new File(installDir + '/lib/libhalsim_lowfi.so').toString() + '":'
|
|
out.println '"' + new File(installDir + '/lib/libhalsim_ds_socket.so').toString() + '"'
|
|
out.println runFile + ' "$@"'
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
apply from: 'publish.gradle'
|
|
|
|
ext {
|
|
templateDirectory = new File("$projectDir/src/main/cpp/templates/")
|
|
templateFile = new File("$projectDir/src/main/cpp/templates/templates.json")
|
|
exampleDirectory = new File("$projectDir/src/main/cpp/examples/")
|
|
exampleFile = new File("$projectDir/src/main/cpp/examples/examples.json")
|
|
commandDirectory = new File("$projectDir/src/main/cpp/commands/")
|
|
commandFile = new File("$projectDir/src/main/cpp/commands/commands.json")
|
|
}
|
|
|
|
ext {
|
|
isCppCommands = true
|
|
}
|
|
apply from: "${rootDir}/shared/examplecheck.gradle"
|