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