blob: d0b66496c3d2c687ea1fd412c2e69b6eb7d78688 [file] [log] [blame]
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'
}
}
}
}
}
}
}
apply from: 'publish.gradle'
}