Get all our roborio tools loading downloaded .sos

This is the last piece to make `bazel build --cpu=roborio //...` work on
a barebones Stretch system.

Change-Id: I87b8737ee479dd16c9421f81a42c5ecf6413f822
diff --git a/README.md b/README.md
index 42faed2..eef71a6 100644
--- a/README.md
+++ b/README.md
@@ -101,14 +101,12 @@
 setup_roborio.sh roboRIO-971-frc.local
 ```
 
-# ============================ Notes for running under Stretch ===================
-#
-# Parker and Austin helped me compile the code under the Stretch version of Debian.
-# Below are my notes on what was done differently.  I started with a cleanly
-# installed Debian Stretch OS.  Michael Schuh, May 13, 2018.
-#
+### Some other useful packages
+These aren't strictly necessary to build the code, but Michael found the
+additional tools provided by these packages useful to install when working with
+the code on May 13, 2018.
 
-# Install different packages than those listed above:
+```console
 # Get some useful packages including git and subversion.
    apt-get update
    apt-get install git subversion ruby python vim-gtk3 subversion-tools
@@ -132,124 +130,4 @@
 # understanding the revision history of the repository and viewing
 # log messages and changes.
    apt-get install gitg
-
-# Make the following changes to the configuration files.
-# The one change to the graph.cc file is to update it to work with current
-# complilers.  The other changes are required to work with a newer version
-# of clang.
-#
-# The sed commands can be run by copying and pasting them to the command line.
-# The sed commands will change the file contents and replace the file with the
-# updated changes.
-
-#
-# aos/build/queues/compiler.rb
-#
-sed -i -e 's/clang-format-3.5/clang-format-3.8/' aos/build/queues/compiler.rb
-
-diff --git a/aos/build/queues/compiler.rb b/aos/build/queues/compiler.rb
-index 51646702..6a273ae9 100644
---- a/aos/build/queues/compiler.rb
-+++ b/aos/build/queues/compiler.rb
-@@ -77,7 +77,7 @@ def parse_args(globals,args)
- end
- def format_pipeline(output)
-   read_in, write_in = IO.pipe()
--  child = Process.spawn('/usr/bin/clang-format-3.5 --style=google',
-+  child = Process.spawn('/usr/bin/clang-format-3.8 --style=google',
-                         {:in=>read_in, write_in=>:close,
-                          :out=>output.fileno})
-   read_in.close
-
-#
-# tools/cpp/CROSSTOOL
-#
-sed -e 's?clang/3.6.2?clang/3.8.1?' \
-    -e 's/clang-3.6/clang-3.8/' \
-    -e 's/clang_3.6/clang_3.8/' \
-    -e 's/llvm-3.6/llvm-3.8/' \
-    -e 's?clang/3.6?clang/3.8?' \
-    -i tools/cpp/CROSSTOOL
-
-diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
-index d4e7fbb1..caa2f633 100644
---- a/tools/cpp/CROSSTOOL
-+++ b/tools/cpp/CROSSTOOL
-@@ -83,7 +83,7 @@ toolchain {
-   tool_path { name: "compat-ld" path: "/usr/bin/ld" }
-   tool_path { name: "cpp" path: "/usr/bin/cpp" }
-   tool_path { name: "dwp" path: "/usr/bin/dwp" }
--  tool_path { name: "gcc" path: "/usr/bin/clang-3.6" }
-+  tool_path { name: "gcc" path: "/usr/bin/clang-3.8" }
-   tool_path { name: "gcov" path: "/usr/bin/gcov" }
-   # C(++) compiles invoke the compiler (as that is the one knowing where
-   # to find libraries), but we provide LD so other rules can invoke the linker.
-@@ -104,10 +104,10 @@ toolchain {
-   cxx_builtin_include_directory: '/usr/include/x86_64-linux-gnu/c++/4.9'
-   cxx_builtin_include_directory: '/usr/include/c++/4.9/backward'
-   cxx_builtin_include_directory: '/usr/local/include'
--  cxx_builtin_include_directory: '/usr/lib/llvm-3.6/lib/clang/3.6.2/include'
-+  cxx_builtin_include_directory: '/usr/lib/llvm-3.8/lib/clang/3.8.1/include'
-   cxx_builtin_include_directory: '/usr/include/x86_64-linux-gnu'
-   cxx_builtin_include_directory: '/usr/include'
--  cxx_builtin_include_directory: '/usr/lib/clang/3.6.2/include'
-+  cxx_builtin_include_directory: '/usr/lib/clang/3.8.1/include'
-
-   linker_flag: "-lstdc++"
-   linker_flag: "-B/usr/bin/"
-@@ -535,7 +535,7 @@ toolchain {
- }
-
- toolchain {
--  abi_version: "clang_3.6"
-+  abi_version: "clang_3.8"
-   abi_libc_version: "glibc_2.19"
-   builtin_sysroot: ""
-   compiler: "clang"
-@@ -578,7 +578,7 @@ toolchain {
-
-   compiler_flag: "-nostdinc"
-   compiler_flag: "-isystem"
--  compiler_flag: "/usr/lib/clang/3.6/include"
-+  compiler_flag: "/usr/lib/clang/3.8/include"
-   compiler_flag: "-isystem"
-   compiler_flag: "external/linaro_linux_gcc_4_9_repo/lib/gcc/arm-linux-gnueabihf/4.9.3/include"
-   compiler_flag: "-isystem"
-@@ -604,7 +604,7 @@ toolchain {
-   cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//lib/gcc/arm-linux-gnueabihf/4.9.3/include)%"
-   cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed)%"
-   cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/include)%/c++/4.9.3"
--  cxx_builtin_include_directory: '/usr/lib/clang/3.6/include'
-+  cxx_builtin_include_directory: '/usr/lib/clang/3.8/include'
-
-   linker_flag: "-target"
-   linker_flag: "armv7a-arm-linux-gnueabif"
-
-#
-# To compile the code for the robot, libisl.so.10 is needed.  It is not
-# available on stretch package servers so download the amd64 jessie package
-# from https://packages.debian.org/jessie/libisl10
-# and install it with dpkg.
-# This installs
-#   /usr/lib/x86_64-linux-gnu/libisl.so.10
-#   /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2
-#   /usr/share/doc/libisl10/changelog.Debian.gz
-#   /usr/share/doc/libisl10/changelog.gz
-#   /usr/share/doc/libisl10/copyright
-#
-wget http://ftp.us.debian.org/debian/pool/main/i/isl/libisl10_0.12.2-2_amd64.deb
-dpkg -i libisl10_0.12.2-2_amd64.deb
-
-# After doing this, this compile command should work.
-time bazel build --cpu=roborio --compilation_mode=opt //y2018:download
-# On Michael's Lenovo ThinkPad X270 with an
-#    Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz
-# compiling the 2018 robot code takes
-#   INFO: Elapsed time: 499.177s, Critical Path: 63.33s
-#   INFO: Build completed successfully, 4901 total actions
-#
-#   real	8m19.234s
-#   user	0m0.277s
-#   sys	0m0.518s
-
-
+```
diff --git a/WORKSPACE b/WORKSPACE
index 3921318..eb49852 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -32,6 +32,10 @@
     "//debian:matplotlib.bzl",
     matplotlib_debs = "files",
 )
+load(
+    "//debian:arm_frc_gnueabi_deps.bzl",
+    arm_frc_gnueabi_deps_debs = "files",
+)
 load("//debian:packages.bzl", "generate_repositories_for_debs")
 
 generate_repositories_for_debs(python_debs)
@@ -50,6 +54,8 @@
 
 generate_repositories_for_debs(matplotlib_debs)
 
+generate_repositories_for_debs(arm_frc_gnueabi_deps_debs)
+
 new_http_archive(
     name = "python_repo",
     build_file = "debian/python.BUILD",
@@ -234,3 +240,10 @@
     sha256 = "bf8b709909d7d9e30815dd228eeded7dc282e3ce3919d0589ccbb56ac8632abc",
     url = "http://frc971.org/Build-Dependencies/patchelf.tar.gz",
 )
+
+new_http_archive(
+    name = "arm_frc_gnueabi_deps",
+    build_file = "debian/arm_frc_gnueabi_deps.BUILD",
+    sha256 = "4b26fe45010817dc136488ee1604ade21bd7c264c29f17d864fc6eba9d7442c4",
+    url = "http://frc971.org/Build-Dependencies/arm_frc_gnueabi_deps.tar.gz",
+)
diff --git a/debian/BUILD b/debian/BUILD
index aa1b85f..a052657 100644
--- a/debian/BUILD
+++ b/debian/BUILD
@@ -32,6 +32,10 @@
     ":matplotlib.bzl",
     matplotlib_debs = "files",
 )
+load(
+    ":arm_frc_gnueabi_deps.bzl",
+    arm_frc_gnueabi_deps_debs = "files",
+)
 load("//debian:packages.bzl", "download_packages", "generate_deb_tarball")
 
 filegroup(
@@ -143,6 +147,23 @@
     ],
 )
 
+# This list was obtained by manually looking at the output from:
+# find bazel-out/../../../external/arm_frc_linux_gnueabi_repo/ -executable -type f -exec ldd {} + | sed 's/=>.*//g' | sort -u
+download_packages(
+    name = "download_arm_frc_gnueabi_deps",
+    packages = [
+        "libexpat1",
+        "libgmp10",
+        "libisl10",
+        "liblzma5",
+        "libmpc3",
+        "libmpfr4",
+        "libncurses5",
+        "libtinfo5",
+        "zlib1g",
+    ],
+)
+
 generate_deb_tarball(
     name = "python",
     files = python_debs,
@@ -182,3 +203,8 @@
     name = "matplotlib",
     files = matplotlib_debs,
 )
+
+generate_deb_tarball(
+    name = "arm_frc_gnueabi_deps",
+    files = arm_frc_gnueabi_deps_debs,
+)
diff --git a/debian/arm_frc_gnueabi_deps.BUILD b/debian/arm_frc_gnueabi_deps.BUILD
new file mode 100644
index 0000000..8d1034d
--- /dev/null
+++ b/debian/arm_frc_gnueabi_deps.BUILD
@@ -0,0 +1,8 @@
+filegroup(
+    name = "arm_frc_gnueabi_deps",
+    srcs = glob([
+        "lib/x86_64-linux-gnu/*.so*",
+        "usr/lib/x86_64-linux-gnu/*.so*",
+    ]),
+    visibility = ["@arm_frc_linux_gnueabi_repo//:__pkg__"],
+)
diff --git a/debian/arm_frc_gnueabi_deps.bzl b/debian/arm_frc_gnueabi_deps.bzl
new file mode 100644
index 0000000..69a568e
--- /dev/null
+++ b/debian/arm_frc_gnueabi_deps.bzl
@@ -0,0 +1,9 @@
+files = {
+    "libexpat1_2.1.0-6+deb8u4_amd64.deb": "de7979297d0298271d71b4554772ba4da60ba6895ed86ca8fc9c1159c58913e4",
+    "libgmp10_6.0.0+dfsg-6_amd64.deb": "155a31b0f716aa3dcd7ee68e9bd57e0b76a6b31f4e41fb2d953e986315437082",
+    "libisl10_0.12.2-2_amd64.deb": "5a091cf30221e183d319f4906a746043be7220061f3b742b2ad958ee79ac01f7",
+    "libmpc3_1.0.2-1_amd64.deb": "0a252dcf89843ee8b402fd226c8fb552d69c82c7013a28e335ba36878468d959",
+    "libmpfr4_3.1.2-2_amd64.deb": "1b6ef16024e7850c4f2d47dbe06cba1143ac36d5584db515f63d5fbd873e3eb2",
+    "libncurses5_5.9+20140913-1+deb8u3_amd64.deb": "529417741277e91ed343e1e01aa68a0e4bca33b1fee5bdfb19093634b21ed0c5",
+    "libtinfo5_5.9+20140913-1+deb8u3_amd64.deb": "36a0f120da15f82c0c729535ac48d95e126c5d7fc2c4aceb94bf27ced5a4cecc",
+}
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index 3bee68e..e5cdcc7 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -133,6 +133,14 @@
     ],
 )
 
+filegroup(
+    name = "roborio_strip_files",
+    srcs = [
+        "//tools/cpp/arm-frc-linux-gnueabi:strip",
+        "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
+    ],
+)
+
 cc_toolchain(
     name = "cc-compiler-roborio",
     all_files = ":roborio-compiler-files",
@@ -143,7 +151,7 @@
     linker_files = ":roborio_linker_files",
     objcopy_files = "//tools/cpp/arm-frc-linux-gnueabi:objcopy",
     static_runtime_libs = [":empty"],
-    strip_files = "//tools/cpp/arm-frc-linux-gnueabi:strip",
+    strip_files = ":roborio_strip_files",
     supports_param_files = 1,
 )
 
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
index d70337f..5725bbb 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-ar \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-ar" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
index 5f1a2fc..6e67db8 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-as \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-as" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
index 3262658..d2968e3 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-cpp \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-cpp" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
index dbd074b..697f65a 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-dwp \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-dwp" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
index aab008a..7b127aa 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-gcc" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
index a3c71c3..35d71c2 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-gcov \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-gcov" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
index d5dce71..f3dc5ef 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-ld \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-ld" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
index 4163be0..b9bc2b8 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-nm \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-nm" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
index a77d3a9..04381fa 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-objcopy \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-objcopy" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
index 0de0532..2c6a99c 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-objdump \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-objdump" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
index 15cc2f9..78a0f65 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
@@ -1,5 +1,9 @@
 #!/bin/bash --norc
 
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
+export LD_LIBRARY_PATH
+
 exec -a arm-frc-linux-gnueabi-strip \
 	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-strip" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
index 438c9f1..a2725fe 100644
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
@@ -1,108 +1,84 @@
 package(default_visibility = ["//visibility:public"])
 
 filegroup(
-  name = 'gcc',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-gcc',
-  ],
+    name = "gcc",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-gcc",
+    ],
 )
 
 filegroup(
-  name = 'ar',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-ar',
-  ],
+    name = "ar",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-ar",
+    ],
 )
 
 filegroup(
-  name = 'as',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-as',
-  ],
+    name = "as",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-as",
+    ],
 )
 
 filegroup(
-  name = 'ld',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-ld',
-  ],
+    name = "ld",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-ld",
+    ],
 )
 
 filegroup(
-  name = 'nm',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-nm',
-  ],
+    name = "nm",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-nm",
+    ],
 )
 
 filegroup(
-  name = 'objcopy',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-objcopy',
-  ],
+    name = "objcopy",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-objcopy",
+    ],
 )
 
 filegroup(
-  name = 'objdump',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-objdump',
-  ],
+    name = "objdump",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-objdump",
+    ],
 )
 
 filegroup(
-  name = 'strip',
-  srcs = [
-    'usr/bin/arm-frc-linux-gnueabi-strip',
-  ],
+    name = "strip",
+    srcs = [
+        "usr/bin/arm-frc-linux-gnueabi-strip",
+    ],
 )
 
 filegroup(
-  name = 'compiler_pieces',
-  srcs = glob([
-    'usr/bin/**/*',
-    'usr/include/**/*',
-    'usr/lib/**/*',
-    'usr/arm-frc-linux-gnueabi/**/*',
-    'usr/lib/x86_64-linux-gnu/gcc/**/*',
-  ]),
+    name = "compiler_pieces",
+    srcs = glob([
+        "usr/bin/**/*",
+        "usr/include/**/*",
+        "usr/lib/**/*",
+        "usr/arm-frc-linux-gnueabi/**/*",
+        "usr/lib/x86_64-linux-gnu/gcc/**/*",
+    ]) + [
+        "@arm_frc_gnueabi_deps",
+    ],
 )
 
 filegroup(
-  name = 'compiler_components',
-  srcs = [
-    ':gcc',
-    ':ar',
-    ':as',
-    ':ld',
-    ':nm',
-    ':objcopy',
-    ':objdump',
-    ':strip',
-  ],
+    name = "compiler_components",
+    srcs = [
+        ":ar",
+        ":as",
+        ":gcc",
+        ":ld",
+        ":nm",
+        ":objcopy",
+        ":objdump",
+        ":strip",
+    ],
 )
-
-cc_library(
-  name = 'librt',
-  srcs = [
-    'usr/arm-frc-linux-gnueabi/usr/lib/librt.so'
-  ],
-)
-
-cc_library(
-  name = 'libdl',
-  srcs = [
-    'usr/arm-frc-linux-gnueabi/usr/lib/libdl.so'
-  ],
-)
-
-cc_library(
-  name = 'libm',
-  srcs = [
-    'usr/arm-frc-linux-gnueabi/usr/lib/libm.so'
-  ],
-)
-
-cc_library(
-  name = 'libpthread',
-)
-