blob: d0b66496c3d2c687ea1fd412c2e69b6eb7d78688 [file] [log] [blame]
John Park7eb90422018-01-27 12:04:57 -08001import org.gradle.language.base.internal.ProjectLayout
2
3if (!project.hasProperty('skipAthena')) {
4 apply plugin: 'cpp'
5 apply plugin: 'visual-studio'
6 apply plugin: 'edu.wpi.first.NativeUtils'
7
8 apply from: '../config.gradle'
9
10 ext.examplesMap = [:]
11 ext.templatesMap = [:]
12
13 File examplesTree = file("$projectDir/src/main/cpp/examples")
14 examplesTree.list(new FilenameFilter() {
15 @Override
16 public boolean accept(File current, String name) {
17 return new File(current, name).isDirectory();
18 }
19 }).each {
20 examplesMap.put(it, [])
21 }
22 File templatesTree = file("$projectDir/src/main/cpp/templates")
23 templatesTree.list(new FilenameFilter() {
24 @Override
25 public boolean accept(File current, String name) {
26 return new File(current, name).isDirectory();
27 }
28 }).each {
29 templatesMap.put(it, [])
30 }
31
32 model {
33 dependencyConfigs {
34 wpiutil(DependencyConfig) {
35 groupId = 'edu.wpi.first.wpiutil'
36 artifactId = 'wpiutil-cpp'
37 headerClassifier = 'headers'
38 ext = 'zip'
39 version = '3.+'
40 sharedConfigs = examplesMap + templatesMap
41 }
42 ntcore(DependencyConfig) {
43 groupId = 'edu.wpi.first.ntcore'
44 artifactId = 'ntcore-cpp'
45 headerClassifier = 'headers'
46 ext = 'zip'
47 version = '4.+'
48 sharedConfigs = examplesMap + templatesMap
49 }
50 opencv(DependencyConfig) {
51 groupId = 'org.opencv'
52 artifactId = 'opencv-cpp'
53 headerClassifier = 'headers'
54 ext = 'zip'
55 version = '3.2.0'
56 sharedConfigs = examplesMap + templatesMap
57 }
58 cscore(DependencyConfig) {
59 groupId = 'edu.wpi.first.cscore'
60 artifactId = 'cscore-cpp'
61 headerClassifier = 'headers'
62 ext = 'zip'
63 version = '1.+'
64 sharedConfigs = examplesMap + templatesMap
65 }
66 }
67
68 components {
69 examplesMap.each { key, value->
70 "${key}"(NativeExecutableSpec) {
71 binaries.all { binary->
72 if (binary.targetPlatform.architecture.name == 'athena') {
73 project(':ni-libraries').addNiLibrariesToLinker(binary)
74 project(':hal').addHalToLinker(binary)
75 project(':wpilibc').addWpilibCToLinker(binary)
76 } else {
77 binary.buildable = false
78 }
79 }
80 sources {
81 cpp {
82 source {
83 srcDirs 'src/main/cpp/examples/' + "${key}"
84 include '**/*.cpp'
85 }
86 }
87 }
88 }
89 }
90 templatesMap.each { key, value->
91 "${key}"(NativeExecutableSpec) {
92 binaries.all { binary->
93 if (binary.targetPlatform.architecture.name == 'athena') {
94 project(':ni-libraries').addNiLibrariesToLinker(binary)
95 project(':hal').addHalToLinker(binary)
96 project(':wpilibc').addWpilibCToLinker(binary)
97 } else {
98 binary.buildable = false
99 }
100 }
101 sources {
102 cpp {
103 source {
104 srcDirs 'src/main/cpp/templates/' + "${key}"
105 include '**/*.cpp'
106 }
107 }
108 }
109 }
110 }
111 }
112 }
113 apply from: 'publish.gradle'
114}