Update to the 2019 wpilib

Lots of gratuitious incompatibilities to deal with. Started sanifying a
few classes rather than figuring out how to update them too. Has not yet
been tested on a robot, but everything still builds so it should be
fine.

Also ported over our FPGA timestamp fixes, which were previously only in
allwpilib_2018.

Also upgraded to the new roborio compiler, which has to happen at the
same time due to incompatible pre-compiled libraries.

Change-Id: Ib9b6ad8fc0112d90a9855afe1b706588ef4ebde9
diff --git a/third_party/BUILD b/third_party/BUILD
index 934486e..d67d4b4 100644
--- a/third_party/BUILD
+++ b/third_party/BUILD
@@ -10,5 +10,17 @@
     name = "wpilib_hal",
     restricted_to = ["//tools:roborio"],
     visibility = ["//visibility:public"],
-    deps = ["//third_party/allwpilib_2018:hal"],
+    deps = ["//third_party/allwpilib_2019:hal"],
+)
+
+cc_library(
+    name = "phoenix",
+    restricted_to = ["//tools:roborio"],
+    visibility = ["//visibility:public"],
+    deps = [
+        "@ctre_phoenix_api_cpp_athena_2019//:api-cpp",
+        "@ctre_phoenix_api_cpp_headers_2019//:api-cpp",
+        "@ctre_phoenix_cci_athena_2019//:cci",
+        "@ctre_phoenix_cci_headers_2019//:cci",
+    ],
 )
diff --git a/third_party/allwpilib_2019/BUILD b/third_party/allwpilib_2019/BUILD
index ea548fc..e35687d 100644
--- a/third_party/allwpilib_2019/BUILD
+++ b/third_party/allwpilib_2019/BUILD
@@ -63,9 +63,10 @@
     srcs = glob(
         include = [
             "hal/src/main/native/athena/*.cpp",
-            "hal/src/main/native/athena/cpp/*.cpp",
+            "hal/src/main/native/cpp/cpp/*.cpp",
             "hal/src/main/native/athena/ctre/*.cpp",
             "hal/src/main/native/shared/handles/*.cpp",
+            "hal/src/main/native/cpp/handles/*.cpp",
         ],
         exclude = ["**/%s.*" % d for d in _excluded_devices],
     ),
diff --git a/third_party/allwpilib_2019/wpiutil/BUILD b/third_party/allwpilib_2019/wpiutil/BUILD
index aceed4a..e579466 100644
--- a/third_party/allwpilib_2019/wpiutil/BUILD
+++ b/third_party/allwpilib_2019/wpiutil/BUILD
@@ -4,9 +4,12 @@
     name = "wpiutil",
     srcs = glob([
         "src/main/native/cpp/llvm/*.cpp",
+    ]) + [
         "src/main/native/cpp/llvm/Unix/Path.inc",
-        "src/main/native/cpp/support/timestamp.cpp",
-    ]),
+        "src/main/native/cpp/timestamp.cpp",
+        "src/main/native/cpp/SafeThread.cpp",
+        "src/main/native/cpp/memory.cpp",
+    ],
     hdrs = glob([
         "src/main/native/include/**",
     ]),
diff --git a/third_party/cddlib/lib-src/cddlib.c b/third_party/cddlib/lib-src/cddlib.c
index ca9469f..1fb9551 100644
--- a/third_party/cddlib/lib-src/cddlib.c
+++ b/third_party/cddlib/lib-src/cddlib.c
@@ -114,7 +114,7 @@
     }
     if (!cone->PreOrderedRun){
       for (itemp=1; cone->OrderVector[itemp]!=hh; itemp++);
-        otemp=cone->OrderVector[cone->Iteration];
+      otemp=cone->OrderVector[cone->Iteration];
       cone->OrderVector[cone->Iteration]=hh;
         /* store the dynamic ordering in ordervec */
       cone->OrderVector[itemp]=otemp;
diff --git a/third_party/ceres/BUILD b/third_party/ceres/BUILD
index 216b1b5..8bc1dde 100644
--- a/third_party/ceres/BUILD
+++ b/third_party/ceres/BUILD
@@ -32,6 +32,7 @@
 # not support parameterization around threading choice or sparse backends.
 
 load("//:bazel/ceres.bzl", "ceres_library")
+load("@//tools/build_rules:select.bzl", "cpu_select")
 
 ceres_library(
     name = "ceres",
@@ -170,7 +171,10 @@
     "-Wno-format-nonliteral",
     "-Wno-missing-braces",
     "-Wno-missing-field-initializers",
-]
+] + cpu_select({
+    "roborio": ["-Wno-nonnull-compare"],
+    "else": [],
+})
 
 TEST_DEPS = [
     "//:ceres",
diff --git a/third_party/googletest/googlemock/test/BUILD.bazel b/third_party/googletest/googlemock/test/BUILD.bazel
index 550a77a..541ef8e 100644
--- a/third_party/googletest/googlemock/test/BUILD.bazel
+++ b/third_party/googletest/googlemock/test/BUILD.bazel
@@ -46,6 +46,7 @@
     ),
     copts = [
         "-Wno-unused-parameter",
+        "-Wno-unused-function",
     ],
     deps = ["//third_party/googletest:gtest"],
 )
diff --git a/third_party/libjpeg/BUILD b/third_party/libjpeg/BUILD
index 3fb36ec..2f3a812 100644
--- a/third_party/libjpeg/BUILD
+++ b/third_party/libjpeg/BUILD
@@ -65,7 +65,16 @@
         "-Wno-switch-enum",
         "-Wno-format-nonliteral",
         "-Wno-unused-parameter",
-    ],
+    ] + select({
+        "//tools:cpu_roborio": [
+            # This is sketchy under the standard, but it's a known issue with
+            # libjpeg which isn't particularly well defined by the JPEG standard
+            # either. We should be fine because all our platforms are two's
+            # complement.
+            "-Wno-shift-negative-value",
+        ],
+        "//conditions:default": [],
+    }),
     includes = ["src/main/c"],
     visibility = ["//visibility:public"],
 )