Switch to a new cortex-m4 compiler

This one is newer, so it supports a newer C++ standard. It's also
hermetic.

Also add a variant for building for some Kinetis-K chips with less RAM
that are used on fet12v2.

Change-Id: I9e50b6aae498e0c35acfedb846b3ada619a0e630
diff --git a/compilers/gcc_arm_none_eabi.BUILD b/compilers/gcc_arm_none_eabi.BUILD
new file mode 100644
index 0000000..db2cc77
--- /dev/null
+++ b/compilers/gcc_arm_none_eabi.BUILD
@@ -0,0 +1,80 @@
+package(default_visibility = ["//visibility:public"])
+
+filegroup(
+    name = "gcc",
+    srcs = [
+        "bin/arm-none-eabi-gcc",
+    ],
+)
+
+filegroup(
+    name = "ar",
+    srcs = [
+        "bin/arm-none-eabi-ar",
+    ],
+)
+
+filegroup(
+    name = "ld",
+    srcs = [
+        "bin/arm-none-eabi-ld",
+    ],
+)
+
+filegroup(
+    name = "nm",
+    srcs = [
+        "bin/arm-none-eabi-nm",
+    ],
+)
+
+filegroup(
+    name = "objcopy",
+    srcs = [
+        "bin/arm-none-eabi-objcopy",
+    ],
+)
+
+filegroup(
+    name = "objdump",
+    srcs = [
+        "bin/arm-none-eabi-objdump",
+    ],
+)
+
+filegroup(
+    name = "strip",
+    srcs = [
+        "bin/arm-none-eabi-strip",
+    ],
+)
+
+filegroup(
+    name = "as",
+    srcs = [
+        "bin/arm-none-eabi-as",
+    ],
+)
+
+filegroup(
+    name = "compiler_pieces",
+    srcs = glob([
+        "arm-none-eabi/**",
+        "lib/gcc/arm-none-eabi/**",
+        "include/**",
+    ]),
+)
+
+filegroup(
+    name = "compiler_components",
+    srcs = [
+        ":ar",
+        ":as",
+        ":gcc",
+        ":ld",
+        ":nm",
+        ":objcopy",
+        ":objdump",
+        ":strip",
+    ],
+)