Rename our allwpilib (which is now 2020) to not have 2019 in the name
Change-Id: I3c07f85ed32ab8b97db765a9b43f2a6ce7da964a
diff --git a/simulation/frc_gazebo_plugins/build.gradle b/simulation/frc_gazebo_plugins/build.gradle
new file mode 100644
index 0000000..918094f
--- /dev/null
+++ b/simulation/frc_gazebo_plugins/build.gradle
@@ -0,0 +1,116 @@
+description = "A set of C++ plugins to interface the FRC Simulator with Gazebo."
+
+apply plugin: 'edu.wpi.first.NativeUtils'
+apply plugin: 'cpp'
+apply plugin: "google-test"
+
+ext.skiplinuxathena = true
+ext.skiplinuxraspbian = true
+
+apply from: "${rootDir}/shared/config.gradle"
+
+/* If gz_msgs or gazebo is not available, do not attempt a build */
+def gazebo_version = ""
+def gazebo_cppflags = ""
+def gazebo_linker_args = ""
+
+try {
+ gazebo_version = "pkg-config --modversion gazebo".execute().text.trim()
+ println "Gazebo version is [${gazebo_version}]"
+ gazebo_cppflags = "pkg-config --cflags gazebo".execute().text.split()
+ gazebo_linker_args = "pkg-config --libs gazebo protobuf".execute().text.split()
+} catch(Exception ex) { }
+
+if (!gazebo_version?.trim()) {
+ println "Gazebo development files are not available. (pkg-config --modversion gazebo failed)"
+ if (project.hasProperty("makeSim")) {
+ /* Force the build even though we did not find protobuf. */
+ println "makeSim set. Forcing build - failure likely."
+ }
+ else {
+ ext.skip_frc_plugins = true
+ println "Skipping FRC Plugins."
+ }
+}
+
+evaluationDependsOn(":simulation:gz_msgs")
+def gz_msgs_project = project(":simulation:gz_msgs")
+
+tasks.whenTaskAdded { task ->
+ task.onlyIf { !gz_msgs_project.hasProperty('skip_gz_msgs') && !project.hasProperty('skip_frc_plugins') }
+}
+
+model {
+ components {
+ clock(NativeLibrarySpec)
+ dc_motor(NativeLibrarySpec)
+ encoder(NativeLibrarySpec)
+ gyro(NativeLibrarySpec)
+ limit_switch(NativeLibrarySpec)
+ potentiometer(NativeLibrarySpec)
+ pneumatic_piston(NativeLibrarySpec)
+ rangefinder(NativeLibrarySpec)
+ servo(NativeLibrarySpec)
+ drive_motor(NativeLibrarySpec)
+ all { component ->
+ component.targetBuildTypes 'debug'
+ sources {
+ cpp.lib library: "${component.name}", linkage: "static"
+ }
+ }
+
+ }
+
+ /* TODO: Finish writing the test case */
+
+ /* We pass the name of the .so and a .world file to each test */
+ testSuites {
+ all { test->
+ def library_file
+ testedComponent.binaries.withType(SharedLibraryBinarySpec).each { b->
+ library_file = b.sharedLibraryFile
+ }
+
+ tasks.withType(RunTestExecutable) {
+ args library_file, file("src/${baseName}/world/${baseName}.world")
+ }
+ }
+ }
+
+
+ binaries {
+ all {
+ linker.args gazebo_linker_args
+ cppCompiler.args gazebo_cppflags
+ lib project: ":simulation:gz_msgs", library: "gz_msgs", linkage: "static"
+ }
+
+ /* TODO: build only shared object? Figure out why this doesn't work? */
+ withType(StaticLibraryBinarySpec) {
+ buildable = false
+ }
+
+ withType(GoogleTestTestSuiteBinarySpec) {
+
+ /* We currently only have a test for the clock plugin */
+ /* TODO: learn how to add this back to gmock */
+ //if (it.projectScopedName.contains("clockTest")) {
+ // buildable = true
+ // project(':gmock').addGmockToLinker(it)
+ //}
+ //else {
+ buildable = false
+ //}
+ }
+ }
+}
+
+task copyScript(type: Copy, group: "FRC Gazebo", description: "Copy the frcgazebo script to the output directory.") {
+ from "scripts"
+ into "$project.buildDir/bin"
+ fileMode 0755
+}
+
+build.dependsOn copyScript
+
+/* TODO: Publish this library */