| 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' |
| } |