Upgrade WPILib and upgraded compilers to C++17
I haven't touched the CTRE libraries yet, although they may need to be
upgraded as well.
Note that this change makes it so that you need either Ubuntu 18.04 or
later or debian buster or later in order to build the code (you may be
able to build code for the roborio on older operating systems, but
running the tests will not work normally).
Change-Id: I0cfa37fe37f830edde6d305e1f50414c369098e4
diff --git a/tools/cpp/clang_6p0/BUILD b/tools/cpp/clang_6p0/BUILD
new file mode 100644
index 0000000..7777859
--- /dev/null
+++ b/tools/cpp/clang_6p0/BUILD
@@ -0,0 +1,86 @@
+package(default_visibility = ["//tools/cpp:__pkg__"])
+
+filegroup(
+ name = "ar",
+ srcs = [
+ "x86_64-linux-gnu-ar",
+ "@clang_6p0_repo//:ar",
+ ],
+)
+
+filegroup(
+ name = "ld",
+ srcs = [
+ "x86_64-linux-gnu-ld",
+ "@clang_6p0_repo//:ld",
+ ],
+)
+
+filegroup(
+ name = "nm",
+ srcs = [
+ "x86_64-linux-gnu-nm",
+ "@clang_6p0_repo//:nm",
+ ],
+)
+
+filegroup(
+ name = "objcopy",
+ srcs = [
+ "x86_64-linux-gnu-objcopy",
+ "@clang_6p0_repo//:objcopy",
+ ],
+)
+
+filegroup(
+ name = "objdump",
+ srcs = [
+ "x86_64-linux-gnu-objdump",
+ "@clang_6p0_repo//:objdump",
+ ],
+)
+
+filegroup(
+ name = "strip",
+ srcs = [
+ "x86_64-linux-gnu-strip",
+ "@clang_6p0_repo//:strip",
+ ],
+)
+
+filegroup(
+ name = "as",
+ srcs = [
+ "x86_64-linux-gnu-as",
+ "@clang_6p0_repo//:as",
+ ],
+)
+
+filegroup(
+ name = "clang",
+ srcs = [
+ "x86_64-linux-gnu-clang-6.0",
+ "@clang_6p0_repo//:clang",
+ ],
+)
+
+filegroup(
+ name = "tool-wrappers",
+ srcs = [
+ ":ar",
+ ":as",
+ ":clang",
+ ":ld",
+ ":nm",
+ ":objcopy",
+ ":objdump",
+ ":strip",
+ ],
+)
+
+filegroup(
+ name = "clang-symlinks",
+ srcs = glob([
+ "clang_more_libs/**",
+ ]),
+)
diff --git a/tools/cpp/clang_6p0/clang_6p0.BUILD b/tools/cpp/clang_6p0/clang_6p0.BUILD
new file mode 100644
index 0000000..e70f8a9
--- /dev/null
+++ b/tools/cpp/clang_6p0/clang_6p0.BUILD
@@ -0,0 +1,112 @@
+package(default_visibility = ["//visibility:public"])
+
+filegroup(
+ name = "clang-format",
+ srcs = [
+ "usr/bin/clang-6.0",
+ ":compiler_pieces",
+ ],
+)
+
+filegroup(
+ name = "clang",
+ srcs = [
+ "usr/bin/clang-6.0",
+ ],
+)
+
+filegroup(
+ name = "ar",
+ srcs = [
+ "usr/bin/ar",
+ ],
+)
+
+filegroup(
+ name = "ld",
+ srcs = [
+ "usr/bin/ld",
+ ],
+)
+
+filegroup(
+ name = "nm",
+ srcs = [
+ "usr/bin/nm",
+ ],
+)
+
+filegroup(
+ name = "objcopy",
+ srcs = [
+ "usr/bin/objcopy",
+ ],
+)
+
+filegroup(
+ name = "objdump",
+ srcs = [
+ "usr/bin/objdump",
+ ],
+)
+
+filegroup(
+ name = "strip",
+ srcs = [
+ "usr/bin/strip",
+ ],
+)
+
+filegroup(
+ name = "as",
+ srcs = [
+ "usr/bin/as",
+ ],
+)
+
+cc_library(
+ name = "librt",
+ srcs = [
+ "usr/lib/x86_64-linux-gnu/librt.so",
+ ],
+)
+
+cc_library(
+ name = "libdl",
+ srcs = [
+ "usr/lib/x86_64-linux-gnu/libdl.so",
+ ],
+)
+
+cc_library(
+ name = "libm",
+ srcs = [
+ "usr/lib/x86_64-linux-gnu/libm.so",
+ ],
+)
+
+filegroup(
+ name = "compiler_pieces",
+ srcs = glob(
+ [
+ "**",
+ ],
+ exclude = [
+ "usr/share/**",
+ ],
+ ),
+)
+
+filegroup(
+ name = "compiler_components",
+ srcs = [
+ ":ar",
+ ":as",
+ ":clang",
+ ":ld",
+ ":nm",
+ ":objcopy",
+ ":objdump",
+ ":strip",
+ ],
+)
diff --git a/tools/cpp/clang_6p0/clang_more_libs/libc.so b/tools/cpp/clang_6p0/clang_more_libs/libc.so
new file mode 100644
index 0000000..5800d08
--- /dev/null
+++ b/tools/cpp/clang_6p0/clang_more_libs/libc.so
@@ -0,0 +1,5 @@
+/* GNU ld script
+ Use the shared library, but some functions are only in
+ the static library, so try that secondarily. */
+OUTPUT_FORMAT(elf64-x86-64)
+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-x86-64.so.2 ) )
diff --git a/tools/cpp/clang_6p0/clang_more_libs/libpthread.so b/tools/cpp/clang_6p0/clang_more_libs/libpthread.so
new file mode 100644
index 0000000..f02ce72
--- /dev/null
+++ b/tools/cpp/clang_6p0/clang_more_libs/libpthread.so
@@ -0,0 +1,5 @@
+/* GNU ld script
+ Use the shared library, but some functions are only in
+ the static library, so try that secondarily. */
+OUTPUT_FORMAT(elf64-x86-64)
+GROUP ( libpthread.so.0 libpthread_nonshared.a )
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-ar b/tools/cpp/clang_6p0/x86_64-linux-gnu-ar
new file mode 100755
index 0000000..869dd16
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-ar
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a ar \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/ar \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-as b/tools/cpp/clang_6p0/x86_64-linux-gnu-as
new file mode 100755
index 0000000..5f55a68
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-as
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a as \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/as \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-clang-6.0 b/tools/cpp/clang_6p0/x86_64-linux-gnu-clang-6.0
new file mode 100755
index 0000000..a652027
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-clang-6.0
@@ -0,0 +1,11 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+# TODO(Brian): Figure out why it segfaults with this enabled, and re-enable it.
+#LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/clang-6.0 \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-cpp b/tools/cpp/clang_6p0/x86_64-linux-gnu-cpp
new file mode 100755
index 0000000..d0e1d86
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-cpp
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a cpp \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/cpp \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-gcc b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcc
new file mode 100755
index 0000000..0f822e4
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcc
@@ -0,0 +1,10 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/gcc/x86_64-linux-gnu/4.9:$PATH" \
+ exec \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/gcc \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-gcov b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcov
new file mode 100755
index 0000000..37195e5
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcov
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a gcov \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/gcov \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-ld b/tools/cpp/clang_6p0/x86_64-linux-gnu-ld
new file mode 100755
index 0000000..95e302f
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-ld
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a ld \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/ld \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-nm b/tools/cpp/clang_6p0/x86_64-linux-gnu-nm
new file mode 100755
index 0000000..4368330
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-nm
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a nm \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/nm \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-objcopy b/tools/cpp/clang_6p0/x86_64-linux-gnu-objcopy
new file mode 100755
index 0000000..d33835b
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-objcopy
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a objcopy \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/objcopy \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-objdump b/tools/cpp/clang_6p0/x86_64-linux-gnu-objdump
new file mode 100755
index 0000000..29e9e37
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-objdump
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a objdump \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/objdump \
+ "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-strip b/tools/cpp/clang_6p0/x86_64-linux-gnu-strip
new file mode 100755
index 0000000..34b412a
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-strip
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a strip \
+ ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/strip \
+ "$@"