mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
114 lines
3.9 KiB
Groovy
114 lines
3.9 KiB
Groovy
import org.gradle.language.base.internal.ProjectLayout
|
|
|
|
if (!project.hasProperty('skipAthena')) {
|
|
apply plugin: 'cpp'
|
|
apply plugin: 'visual-studio'
|
|
apply plugin: 'edu.wpi.first.NativeUtils'
|
|
|
|
apply from: '../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, [])
|
|
}
|
|
|
|
model {
|
|
dependencyConfigs {
|
|
wpiutil(DependencyConfig) {
|
|
groupId = 'edu.wpi.first.wpiutil'
|
|
artifactId = 'wpiutil-cpp'
|
|
headerClassifier = 'headers'
|
|
ext = 'zip'
|
|
version = '3.+'
|
|
sharedConfigs = examplesMap + templatesMap
|
|
}
|
|
ntcore(DependencyConfig) {
|
|
groupId = 'edu.wpi.first.ntcore'
|
|
artifactId = 'ntcore-cpp'
|
|
headerClassifier = 'headers'
|
|
ext = 'zip'
|
|
version = '4.+'
|
|
sharedConfigs = examplesMap + templatesMap
|
|
}
|
|
opencv(DependencyConfig) {
|
|
groupId = 'org.opencv'
|
|
artifactId = 'opencv-cpp'
|
|
headerClassifier = 'headers'
|
|
ext = 'zip'
|
|
version = '3.2.0'
|
|
sharedConfigs = examplesMap + templatesMap
|
|
}
|
|
cscore(DependencyConfig) {
|
|
groupId = 'edu.wpi.first.cscore'
|
|
artifactId = 'cscore-cpp'
|
|
headerClassifier = 'headers'
|
|
ext = 'zip'
|
|
version = '1.+'
|
|
sharedConfigs = examplesMap + templatesMap
|
|
}
|
|
}
|
|
|
|
components {
|
|
examplesMap.each { key, value->
|
|
"${key}"(NativeExecutableSpec) {
|
|
binaries.all { binary->
|
|
if (binary.targetPlatform.architecture.name == 'athena') {
|
|
project(':ni-libraries').addNiLibrariesToLinker(binary)
|
|
project(':hal').addHalToLinker(binary)
|
|
project(':wpilibc').addWpilibCToLinker(binary)
|
|
} else {
|
|
binary.buildable = false
|
|
}
|
|
}
|
|
sources {
|
|
cpp {
|
|
source {
|
|
srcDirs 'src/main/cpp/examples/' + "${key}"
|
|
include '**/*.cpp'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
templatesMap.each { key, value->
|
|
"${key}"(NativeExecutableSpec) {
|
|
binaries.all { binary->
|
|
if (binary.targetPlatform.architecture.name == 'athena') {
|
|
project(':ni-libraries').addNiLibrariesToLinker(binary)
|
|
project(':hal').addHalToLinker(binary)
|
|
project(':wpilibc').addWpilibCToLinker(binary)
|
|
} else {
|
|
binary.buildable = false
|
|
}
|
|
}
|
|
sources {
|
|
cpp {
|
|
source {
|
|
srcDirs 'src/main/cpp/templates/' + "${key}"
|
|
include '**/*.cpp'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|