Put in new allwiplib-2018 and packaged the large files
added new allwpilib
added ntcore
Added new wpiutil
Change-Id: I5bbb966a69ac2fbdce056e4c092a13f246dbaa6a
diff --git a/third_party/allwpilib_2018/wpilibc/build.gradle b/third_party/allwpilib_2018/wpilibc/build.gradle
new file mode 100644
index 0000000..23d06a3
--- /dev/null
+++ b/third_party/allwpilib_2018/wpilibc/build.gradle
@@ -0,0 +1,233 @@
+apply plugin: 'cpp'
+apply plugin: 'google-test'
+apply plugin: 'visual-studio'
+apply plugin: 'edu.wpi.first.NativeUtils'
+
+apply from: '../config.gradle'
+
+ext.addWpilibCCompilerArguments = { binary->
+ binary.tasks.withType(CppCompile) {
+ binary.cppCompiler.args "-DNAMESPACED_WPILIB"
+ }
+}
+
+ext.addWpilibCToLinker = { binary->
+ binary.lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared'
+}
+
+def versionClass = """
+/*
+ * Autogenerated file! Do not manually edit this file. This version is regenerated
+ * any time the publish task is run, or when this file is deleted.
+ */
+const char* GetWPILibVersion() {
+ return "${WPILibVersion.version}";
+}
+""".trim()
+
+def wpilibVersionFile = file('src/main/native/cpp/WPILibVersion.cpp')
+
+def willPublish = false
+gradle.taskGraph.addTaskExecutionGraphListener { graph ->
+ willPublish = graph.hasTask(publish)
+}
+
+task generateCppVersion() {
+ description = 'Generates the wpilib version class'
+ group = 'WPILib'
+
+ // We follow a simple set of checks to determine whether we should generate a new version file:
+ // 1. If the release type is not development, we generate a new verison file
+ // 2. If there is no generated version number, we generate a new version file
+ // 3. If there is a generated build number, and the release type is development, then we will
+ // only generate if the publish task is run.
+ doLast {
+ if (!WPILibVersion.releaseType.toString().equalsIgnoreCase('official') && !willPublish && wpilibVersionFile.exists()) {
+ return
+ }
+ println "Writing version ${WPILibVersion.version} to $wpilibVersionFile"
+
+ if (wpilibVersionFile.exists()) {
+ wpilibVersionFile.delete()
+ }
+ wpilibVersionFile.write(versionClass)
+ }
+}
+
+clean {
+ delete wpilibVersionFile
+}
+
+model {
+ dependencyConfigs {
+ wpiutil(DependencyConfig) {
+ groupId = 'edu.wpi.first.wpiutil'
+ artifactId = 'wpiutil-cpp'
+ headerClassifier = 'headers'
+ ext = 'zip'
+ version = '3.+'
+ sharedConfigs = [ wpilibc: [],
+ wpilibcTestingBaseTest: [],
+ wpilibcDev: [] ]
+ }
+ ntcore(DependencyConfig) {
+ groupId = 'edu.wpi.first.ntcore'
+ artifactId = 'ntcore-cpp'
+ headerClassifier = 'headers'
+ ext = 'zip'
+ version = '4.+'
+ sharedConfigs = [ wpilibc: [],
+ wpilibcTestingBaseTest: [],
+ wpilibcDev: [] ]
+ }
+ opencv(DependencyConfig) {
+ groupId = 'org.opencv'
+ artifactId = 'opencv-cpp'
+ headerClassifier = 'headers'
+ ext = 'zip'
+ version = '3.2.0'
+ sharedConfigs = [ wpilibc: [],
+ wpilibcTestingBaseTest: [],
+ wpilibcDev: [] ]
+ }
+ cscore(DependencyConfig) {
+ groupId = 'edu.wpi.first.cscore'
+ artifactId = 'cscore-cpp'
+ headerClassifier = 'headers'
+ ext = 'zip'
+ version = '1.+'
+ sharedConfigs = [ wpilibc: [],
+ wpilibcTestingBaseTest: [],
+ wpilibcDev: [] ]
+ }
+ }
+ exportsConfigs {
+ wpilibc(ExportsConfig) {
+ x86ExcludeSymbols = [ '_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure',
+ '_CT??_R0?AVbad_cast',
+ '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure',
+ '_TI5?AVfailure' ]
+ x64ExcludeSymbols = [ '_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure',
+ '_CT??_R0?AVbad_cast',
+ '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure',
+ '_TI5?AVfailure' ]
+ }
+ }
+ components {
+ wpilibc(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDirs = [ 'src/main/native/cpp' ]
+ includes = ["**/*.cpp"]
+ }
+ exportedHeaders {
+ srcDirs = ["src/main/native/include"]
+ }
+ }
+ }
+ }
+ // The TestingBase library is a workaround for an issue with the GoogleTest plugin.
+ // The plugin by default will rebuild the entire test source set, which increases
+ // build time. By testing an empty library, and then just linking the already built component
+ // into the test, we save the extra build
+ if (!project.hasProperty('onlyAthena')) {
+ wpilibcTestingBase(NativeLibrarySpec) { }
+ }
+ // By default, a development executable will be generated. This is to help the case of
+ // testing specific functionality of the library.
+ if (!project.hasProperty('skipDevExe')) {
+ wpilibcDev(NativeExecutableSpec) {
+ binaries.all {
+ project.addWpilibCToLinker(it)
+ }
+ sources {
+ cpp {
+ source {
+ srcDirs 'src/dev/native/cpp'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDirs 'src/dev/native/include'
+ }
+ }
+ }
+ }
+ }
+ }
+ testSuites {
+ if (!project.hasProperty('onlyAthena')) {
+ wpilibcTestingBaseTest {
+ sources {
+ cpp.source.srcDir 'src/test/native/cpp'
+ cpp.exportedHeaders.srcDir 'src/test/native/include'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ tasks.withType(CppCompile) {
+ dependsOn generateCppVersion
+ }
+ project(':ni-libraries').addNiLibrariesToLinker(it)
+ project(':hal').addHalToLinker(it)
+ project.addWpilibCCompilerArguments(it)
+ }
+ withType(GoogleTestTestSuiteBinarySpec) {
+ if (it.component.testedComponent.name.contains('TestingBase') && !project.hasProperty('onlyAthena')) {
+ project(':gmock').addGmockToLinker(it)
+ project.addWpilibCToLinker(it)
+ } else {
+ it.buildable = false
+ }
+ }
+ }
+ tasks {
+ runCpp(Exec) {
+ def found = false
+ $.components.each {
+ if (it in NativeExecutableSpec && it.name == 'wpilibcDev') {
+ it.binaries.each {
+ if (!found) {
+ def arch = it.targetPlatform.architecture.name
+ if (arch == 'x86-64' || arch == 'x86') {
+ dependsOn it.tasks.install
+ commandLine it.tasks.install.runScript
+ found = true
+ }
+ }
+ }
+ }
+ }
+ }
+ getHeaders(Task) {
+ def list = []
+ $.components.each {
+ if (it in NativeLibrarySpec && it.name == 'wpilibc') {
+ it.sources.each {
+ it.exportedHeaders.srcDirs.each {
+ list.add(it)
+ }
+ }
+ it.binaries.each {
+ it.libs.each {
+ it.includeRoots.each {
+ list.add(it)
+ }
+ }
+ }
+ }
+ }
+ list = list.unique(false)
+ doLast {
+ list.each {
+ print "WPIHEADER: "
+ println it
+ }
+ }
+ }
+ }
+}
+
+apply from: 'publish.gradle'