Use the downloaded clang when building for armhf-debian

This makes it work on a barebones Stretch installation.

Also add building for this CPU to the CI script so we know it keeps
working, which means marking everything that's supposed to work
appropriately.

Change-Id: Ic050ce20eae45c6b23e0e42dddb24db3ebc70b84
diff --git a/aos/BUILD b/aos/BUILD
index 2e73c51..8aa274c 100644
--- a/aos/BUILD
+++ b/aos/BUILD
@@ -45,6 +45,9 @@
     hdrs = [
         "once.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     visibility = ["//visibility:public"],
     deps = [
         "//aos/common:gtest_prod",
diff --git a/aos/build/queues.bzl b/aos/build/queues.bzl
index 9dd23bd..840b4fe 100644
--- a/aos/build/queues.bzl
+++ b/aos/build/queues.bzl
@@ -25,28 +25,28 @@
   }
 
 _single_queue_file = rule(
-  implementation = _single_queue_file_impl,
-  attrs = {
-    'src': attr.label(
-      mandatory = True,
-      single_file = True,
-      allow_files = ['.q'],
-    ),
-    'q_deps': attr.label(
-      providers = ['transitive_q_files'],
-      mandatory = True,
-    ),
-    'package_name': attr.string(
-      mandatory = True,
-    ),
-    '_queue_compiler': attr.label(
-      executable = True,
-      default = Label('//aos/build/queues:compiler'),
-      cfg = 'host',
-    ),
-  },
-  outputs = _single_queue_file_outputs,
-  output_to_genfiles = True,
+    attrs = {
+        "src": attr.label(
+            mandatory = True,
+            single_file = True,
+            allow_files = [".q"],
+        ),
+        "q_deps": attr.label(
+            providers = ["transitive_q_files"],
+            mandatory = True,
+        ),
+        "package_name": attr.string(
+            mandatory = True,
+        ),
+        "_queue_compiler": attr.label(
+            executable = True,
+            default = Label("//aos/build/queues:compiler"),
+            cfg = "host",
+        ),
+    },
+    output_to_genfiles = True,
+    outputs = _single_queue_file_outputs,
+    implementation = _single_queue_file_impl,
 )
 
 def _q_deps_impl(ctx):
@@ -56,34 +56,38 @@
   return struct(transitive_q_files = transitive_q_files)
 
 _q_deps = rule(
-  implementation = _q_deps_impl,
-  attrs = {
-    'srcs': attr.label_list(
-      mandatory = True,
-      non_empty = True,
-      allow_files = ['.q'],
-    ),
-    'deps': attr.label_list(
-      mandatory = True,
-      non_empty = False,
-      providers = ['transitive_q_files'],
-    ),
-  },
+    attrs = {
+        "srcs": attr.label_list(
+            mandatory = True,
+            non_empty = True,
+            allow_files = [".q"],
+        ),
+        "deps": attr.label_list(
+            mandatory = True,
+            non_empty = False,
+            providers = ["transitive_q_files"],
+        ),
+    },
+    implementation = _q_deps_impl,
 )
 
-'''Creates a C++ library from a set of .q files.
+"""Creates a C++ library from a set of .q files.
 
 Attrs:
   srcs: A list of .q files.
   deps: Other queue_library rules this one depends on.
-'''
+"""
+
 def queue_library(name, srcs, deps = [],
+                  compatible_with = None, restricted_to = None,
                   visibility = None):
   q_deps = _q_deps(
     name = name + '__q_deps',
     srcs = srcs,
     deps = [dep + '__q_deps' for dep in deps],
     visibility = visibility,
+    compatible_with = compatible_with,
+    restricted_to = restricted_to,
   )
 
   for src in srcs:
@@ -93,6 +97,8 @@
       q_deps = ':%s__q_deps' % name,
       package_name = PACKAGE_NAME,
       visibility = ['//visibility:private'],
+      compatible_with = compatible_with,
+      restricted_to = restricted_to,
     )
 
   native.cc_library(
@@ -106,4 +112,6 @@
       '//aos/common/logging:printf_formats',
     ],
     visibility = visibility,
+    compatible_with = compatible_with,
+    restricted_to = restricted_to,
   )
diff --git a/aos/common/BUILD b/aos/common/BUILD
index b1c5b3b..f9ef264 100644
--- a/aos/common/BUILD
+++ b/aos/common/BUILD
@@ -23,7 +23,9 @@
     hdrs = [
         "macros.h",
     ],
-    compatible_with = mcu_cpus,
+    compatible_with = mcu_cpus + [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
@@ -31,6 +33,9 @@
     hdrs = [
         "type_traits.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
@@ -41,6 +46,9 @@
     hdrs = [
         "time.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":macros",
         ":mutex",
@@ -53,6 +61,9 @@
     name = "gen_queue_primitives",
     outs = ["queue_primitives.h"],
     cmd = "$(location //aos/build/queues:queue_primitives) $@",
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     tools = ["//aos/build/queues:queue_primitives"],
     visibility = ["//visibility:private"],
 )
@@ -61,6 +72,9 @@
     name = "gen_print_field",
     outs = ["print_field.cc"],
     cmd = "$(location //aos/build/queues:print_field) $@",
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     tools = ["//aos/build/queues:print_field"],
     visibility = ["//visibility:private"],
 )
@@ -70,6 +84,9 @@
     hdrs = [
         ":gen_queue_primitives",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     visibility = ["//aos/common/logging:__pkg__"],
 )
 
@@ -93,6 +110,9 @@
     hdrs = [
         "unique_malloc_ptr.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
@@ -105,6 +125,9 @@
     hdrs = [
         "queue_types.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":byteorder",
         ":generated_queue_headers",
@@ -142,6 +165,9 @@
     hdrs = [
         "byteorder.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
@@ -152,6 +178,9 @@
     hdrs = [
         "message.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":byteorder",
         ":macros",
@@ -161,10 +190,12 @@
 
 cc_library(
     name = "queues",
-    srcs = [],
     hdrs = [
         "queue.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":messages",
         "//aos/linux_code:queue",
@@ -177,6 +208,9 @@
     hdrs = [
         "scoped_fd.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         "//aos/common/logging",
     ],
@@ -212,6 +246,9 @@
     hdrs = [
         "gtest_prod.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_test(
@@ -235,6 +272,9 @@
     hdrs = [
         "die.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":macros",
         "//aos/common/libc:aos_strerror",
@@ -280,6 +320,9 @@
     hdrs = [
         "condition.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":mutex",
         "//aos/common/logging",
@@ -337,6 +380,9 @@
     hdrs = [
         "mutex.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":die",
         ":type_traits",
diff --git a/aos/common/controls/BUILD b/aos/common/controls/BUILD
index 46b5f24..7ca2e60 100644
--- a/aos/common/controls/BUILD
+++ b/aos/common/controls/BUILD
@@ -78,6 +78,9 @@
     srcs = [
         "control_loops.q",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
diff --git a/aos/common/libc/BUILD b/aos/common/libc/BUILD
index e2a87cb..74a4c70 100644
--- a/aos/common/libc/BUILD
+++ b/aos/common/libc/BUILD
@@ -1,68 +1,71 @@
-package(default_visibility = ['//visibility:public'])
+package(default_visibility = ["//visibility:public"])
 
 cc_library(
-  name = 'aos_strsignal',
-  srcs = [
-    'aos_strsignal.cc',
-  ],
-  hdrs = [
-    'aos_strsignal.h',
-  ],
-  deps = [
-    '//aos/common/logging',
-  ],
+    name = "aos_strsignal",
+    srcs = [
+        "aos_strsignal.cc",
+    ],
+    hdrs = [
+        "aos_strsignal.h",
+    ],
+    deps = [
+        "//aos/common/logging",
+    ],
 )
 
 cc_test(
-  name = 'aos_strsignal_test',
-  srcs = [
-    'aos_strsignal_test.cc',
-  ],
-  deps = [
-    ':aos_strsignal',
-    '//aos/testing:googletest',
-    '//aos/common/logging',
-  ],
+    name = "aos_strsignal_test",
+    srcs = [
+        "aos_strsignal_test.cc",
+    ],
+    deps = [
+        ":aos_strsignal",
+        "//aos/common/logging",
+        "//aos/testing:googletest",
+    ],
 )
 
 cc_library(
-  name = 'dirname',
-  srcs = [
-    'dirname.cc',
-  ],
-  hdrs = [
-    'dirname.h',
-  ],
+    name = "dirname",
+    srcs = [
+        "dirname.cc",
+    ],
+    hdrs = [
+        "dirname.h",
+    ],
 )
 
 cc_test(
-  name = 'dirname_test',
-  srcs = [
-    'dirname_test.cc',
-  ],
-  deps = [
-    ':dirname',
-    '//aos/testing:googletest',
-  ],
+    name = "dirname_test",
+    srcs = [
+        "dirname_test.cc",
+    ],
+    deps = [
+        ":dirname",
+        "//aos/testing:googletest",
+    ],
 )
 
 cc_library(
-  name = 'aos_strerror',
-  srcs = [
-    'aos_strerror.cc',
-  ],
-  hdrs = [
-    'aos_strerror.h',
-  ],
+    name = "aos_strerror",
+    srcs = [
+        "aos_strerror.cc",
+    ],
+    hdrs = [
+        "aos_strerror.h",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_test(
-  name = 'aos_strerror_test',
-  srcs = [
-    'aos_strerror_test.cc',
-  ],
-  deps = [
-    ':aos_strerror',
-    '//aos/testing:googletest',
-  ],
+    name = "aos_strerror_test",
+    srcs = [
+        "aos_strerror_test.cc",
+    ],
+    deps = [
+        ":aos_strerror",
+        "//aos/testing:googletest",
+    ],
 )
diff --git a/aos/common/logging/BUILD b/aos/common/logging/BUILD
index 6d0d956..09e355d 100644
--- a/aos/common/logging/BUILD
+++ b/aos/common/logging/BUILD
@@ -10,6 +10,9 @@
         "interface.h",
         "logging.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     visibility = ["//visibility:public"],
     deps = [
         ":sizes",
@@ -106,6 +109,9 @@
     hdrs = [
         "sizes.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_test(
@@ -128,6 +134,9 @@
     hdrs = [
         "queue_logging.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     visibility = ["//visibility:public"],
     deps = [
         ":logging",
@@ -161,6 +170,9 @@
     hdrs = [
         "printf_formats.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     visibility = ["//visibility:public"],
     deps = [
         "//aos/common:macros",
@@ -175,6 +187,9 @@
     hdrs = [
         "implementations.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     linkopts = [
         "-lpthread",
     ],
diff --git a/aos/common/network/BUILD b/aos/common/network/BUILD
index c5476b2..470969f 100644
--- a/aos/common/network/BUILD
+++ b/aos/common/network/BUILD
@@ -1,49 +1,51 @@
-package(default_visibility = ['//visibility:public'])
+package(default_visibility = ["//visibility:public"])
 
 cc_library(
-  name = 'team_number',
-  srcs = [
-    'team_number.cc',
-  ],
-  hdrs = [
-    'team_number.h',
-  ],
-  deps = [
-    '//aos/linux_code:configuration',
-    '//aos:once',
-    '//aos/common/logging',
-    '//aos/common/util:string_to_num',
-  ],
+    name = "team_number",
+    srcs = [
+        "team_number.cc",
+    ],
+    hdrs = [
+        "team_number.h",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos:once",
+        "//aos/common/logging",
+        "//aos/common/util:string_to_num",
+        "//aos/linux_code:configuration",
+    ],
 )
 
 cc_library(
-  name = 'socket',
-  srcs = [
-    'receive_socket.cc',
-    'send_socket.cc',
-    'socket.cc',
-  ],
-  hdrs = [
-    'receive_socket.h',
-    'send_socket.h',
-    'socket.h',
-  ],
-  deps = [
-    '//aos/common/logging',
-    '//aos/common:time',
-    '//aos/common/util:inet_addr',
-    '//aos/linux_code:configuration',
-  ],
+    name = "socket",
+    srcs = [
+        "receive_socket.cc",
+        "send_socket.cc",
+        "socket.cc",
+    ],
+    hdrs = [
+        "receive_socket.h",
+        "send_socket.h",
+        "socket.h",
+    ],
+    deps = [
+        "//aos/common:time",
+        "//aos/common/logging",
+        "//aos/common/util:inet_addr",
+        "//aos/linux_code:configuration",
+    ],
 )
 
 cc_test(
-  name = 'team_number_test',
-  srcs = [
-    'team_number_test.cc',
-  ],
-  deps = [
-    ':team_number',
-    '//aos/testing:googletest',
-  ],
+    name = "team_number_test",
+    srcs = [
+        "team_number_test.cc",
+    ],
+    deps = [
+        ":team_number",
+        "//aos/testing:googletest",
+    ],
 )
-
diff --git a/aos/common/util/BUILD b/aos/common/util/BUILD
index 8fcd2fe..0f2ca73 100644
--- a/aos/common/util/BUILD
+++ b/aos/common/util/BUILD
@@ -90,6 +90,9 @@
     hdrs = [
         "string_to_num.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_test(
@@ -172,6 +175,9 @@
     hdrs = [
         "options.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_test(
@@ -190,6 +196,9 @@
     hdrs = [
         "compiler_memory_barrier.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
diff --git a/aos/linux_code/BUILD b/aos/linux_code/BUILD
index 3884130..b572a25 100644
--- a/aos/linux_code/BUILD
+++ b/aos/linux_code/BUILD
@@ -17,6 +17,9 @@
     hdrs = [
         "queue-tmpl.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     visibility = ["//aos/common:__pkg__"],
 )
 
@@ -28,6 +31,9 @@
     hdrs = [
         "complex_thread_local.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     linkopts = [
         "-lpthread",
     ],
@@ -58,6 +64,9 @@
     hdrs = [
         "init.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         "//aos/common:die",
         "//aos/common/logging:implementations",
@@ -73,6 +82,9 @@
     hdrs = [
         "configuration.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         "//aos:once",
         "//aos/common:unique_malloc_ptr",
diff --git a/aos/linux_code/ipc_lib/BUILD b/aos/linux_code/ipc_lib/BUILD
index d5d2c8d..289bde8 100644
--- a/aos/linux_code/ipc_lib/BUILD
+++ b/aos/linux_code/ipc_lib/BUILD
@@ -8,6 +8,9 @@
     hdrs = [
         "aos_sync.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     linkopts = [
         "-lpthread",
     ],
@@ -27,6 +30,9 @@
     hdrs = [
         "core_lib.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":aos_sync",
         ":shared_mem_types",
@@ -41,6 +47,9 @@
     hdrs = [
         "shared_mem.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     linkopts = [
         "-lrt",
     ],
@@ -59,6 +68,9 @@
     hdrs = [
         "shared_mem_types.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
         ":aos_sync",
     ],
@@ -72,6 +84,9 @@
     hdrs = [
         "queue.h",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     linkopts = [
         "-lrt",
     ],
@@ -109,6 +124,9 @@
     srcs = [
         "ipc_stress_test.cc",
     ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     tags = [
         "manual",
     ],
diff --git a/aos/testing/BUILD b/aos/testing/BUILD
index 4f2fc83..93cd4bb 100644
--- a/aos/testing/BUILD
+++ b/aos/testing/BUILD
@@ -1,86 +1,89 @@
 cc_library(
-  name = 'googletest',
-  visibility = ['//visibility:public'],
-  srcs = [
-    'gtest_main.cc',
-  ],
-  deps = [
-    '//third_party/googletest',
-  ],
-  testonly = True,
+    name = "googletest",
+    testonly = True,
+    srcs = [
+        "gtest_main.cc",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//third_party/googletest",
+    ],
 )
 
 cc_library(
-  name = 'test_logging',
-  visibility = ['//visibility:public'],
-  srcs = [
-    'test_logging.cc',
-  ],
-  hdrs = [
-    'test_logging.h',
-  ],
-  deps = [
-    ':googletest',
-    '//aos/common/logging:implementations',
-    '//aos:once',
-    '//aos/common:mutex',
-  ],
-  testonly = True,
+    name = "test_logging",
+    testonly = True,
+    srcs = [
+        "test_logging.cc",
+    ],
+    hdrs = [
+        "test_logging.h",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        ":googletest",
+        "//aos:once",
+        "//aos/common:mutex",
+        "//aos/common/logging:implementations",
+    ],
 )
 
 cc_test(
-  name = 'test_logging_test',
-  srcs = [
-    'test_logging_test.cc',
-  ],
-  deps = [
-    ':googletest',
-    ':test_logging',
-    '//aos/common/logging',
-  ],
+    name = "test_logging_test",
+    srcs = [
+        "test_logging_test.cc",
+    ],
+    deps = [
+        ":googletest",
+        ":test_logging",
+        "//aos/common/logging",
+    ],
 )
 
 cc_library(
-  name = 'prevent_exit',
-  visibility = ['//visibility:public'],
-  srcs = [
-    'prevent_exit.cc',
-  ],
-  hdrs = [
-    'prevent_exit.h',
-  ],
-  deps = [
-    '//aos/common/logging',
-  ],
-  testonly = True,
+    name = "prevent_exit",
+    testonly = True,
+    srcs = [
+        "prevent_exit.cc",
+    ],
+    hdrs = [
+        "prevent_exit.h",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//aos/common/logging",
+    ],
 )
 
 cc_library(
-  name = 'test_shm',
-  visibility = ['//visibility:public'],
-  srcs = [
-    'test_shm.cc',
-  ],
-  hdrs = [
-    'test_shm.h',
-  ],
-  deps = [
-    '//aos/common:queues',
-    '//aos/linux_code/ipc_lib:shared_mem',
-    '//aos/common/logging',
-    ':test_logging',
-  ],
-  testonly = True,
+    name = "test_shm",
+    testonly = True,
+    srcs = [
+        "test_shm.cc",
+    ],
+    hdrs = [
+        "test_shm.h",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        ":test_logging",
+        "//aos/common:queues",
+        "//aos/common/logging",
+        "//aos/linux_code/ipc_lib:shared_mem",
+    ],
 )
 
 cc_library(
-  name = 'random_seed',
-  visibility = ['//visibility:public'],
-  srcs = [
-    'random_seed.cc',
-  ],
-  hdrs = [
-    'random_seed.h',
-  ],
-  testonly = True,
+    name = "random_seed",
+    testonly = True,
+    srcs = [
+        "random_seed.cc",
+    ],
+    hdrs = [
+        "random_seed.h",
+    ],
+    visibility = ["//visibility:public"],
 )
diff --git a/aos/vision/blob/BUILD b/aos/vision/blob/BUILD
index d7a39ad..e1255c8 100644
--- a/aos/vision/blob/BUILD
+++ b/aos/vision/blob/BUILD
@@ -1,144 +1,187 @@
-load('//tools/build_rules:gtk_dependent.bzl', 'gtk_dependent_cc_binary', 'gtk_dependent_cc_library')
-package(default_visibility = ['//visibility:public'])
+load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary", "gtk_dependent_cc_library")
+
+package(default_visibility = ["//visibility:public"])
 
 cc_library(
-  name = 'range_image',
-  hdrs = ['range_image.h'],
-  srcs = ['range_image.cc'],
-  deps = [
-    '//aos/vision/math:vector',
-    '//aos/vision/debug:overlay',
-    '//aos/vision/math:segment',
-    '//aos/vision/image:image_types',
-    '//third_party/eigen',
-  ],
+    name = "range_image",
+    srcs = ["range_image.cc"],
+    hdrs = ["range_image.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/vision/debug:overlay",
+        "//aos/vision/image:image_types",
+        "//aos/vision/math:segment",
+        "//aos/vision/math:vector",
+        "//third_party/eigen",
+    ],
 )
 
 cc_library(
-  name = 'region_alloc',
-  hdrs = ['region_alloc.h'],
-  deps = [
-    '//aos/common/logging',
-  ],
+    name = "region_alloc",
+    hdrs = ["region_alloc.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/common/logging",
+    ],
 )
 
 cc_library(
-  name = 'contour',
-  hdrs = ['contour.h'],
-  srcs = ['contour.cc'],
-  deps = [
-    '//aos/vision/debug:overlay',
-    '//aos/vision/math:segment',
-    ':range_image',
-    ':region_alloc',
-  ],
+    name = "contour",
+    srcs = ["contour.cc"],
+    hdrs = ["contour.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":range_image",
+        ":region_alloc",
+        "//aos/vision/debug:overlay",
+        "//aos/vision/math:segment",
+    ],
 )
 
 cc_library(
-  name = 'threshold',
-  hdrs = ['threshold.h'],
-  deps = [
-    ':range_image',
-    '//aos/vision/image:image_types',
-  ]
+    name = "threshold",
+    hdrs = ["threshold.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":range_image",
+        "//aos/vision/image:image_types",
+    ],
 )
 
 cc_library(
-  name = 'hierarchical_contour_merge',
-  hdrs = ['hierarchical_contour_merge.h'],
-  srcs = ['hierarchical_contour_merge.cc'],
-  deps = [
-    ':contour',
-    ':disjoint_set',
-    ':range_image',
-    '//third_party/eigen',
-  ],
-  restricted_to = ['//tools:k8', '//tools:armhf-debian'],
+    name = "hierarchical_contour_merge",
+    srcs = ["hierarchical_contour_merge.cc"],
+    hdrs = ["hierarchical_contour_merge.h"],
+    restricted_to = [
+        "//tools:k8",
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":contour",
+        ":disjoint_set",
+        ":range_image",
+        "//third_party/eigen",
+    ],
 )
 
 cc_library(
-  name = 'disjoint_set',
-  hdrs = ['disjoint_set.h'],
+    name = "disjoint_set",
+    hdrs = ["disjoint_set.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
-  name = 'find_blob',
-  hdrs = ['find_blob.h'],
-  srcs = ['find_blob.cc'],
-  deps = [
-    '//aos/vision/debug:overlay',
-    '//aos/vision/math:segment',
-    ':disjoint_set',
-    ':range_image',
-    '//third_party/eigen',
-  ]
+    name = "find_blob",
+    srcs = ["find_blob.cc"],
+    hdrs = ["find_blob.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":disjoint_set",
+        ":range_image",
+        "//aos/vision/debug:overlay",
+        "//aos/vision/math:segment",
+        "//third_party/eigen",
+    ],
 )
 
 cc_library(
-  name = 'codec',
-  hdrs = ['codec.h'],
-  srcs = ['codec.cc'],
-  deps = [
-    '//aos/vision/debug:overlay',
-    '//aos/vision/math:segment',
-    ':range_image',
-    '//third_party/eigen',
-  ],
+    name = "codec",
+    srcs = ["codec.cc"],
+    hdrs = ["codec.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":range_image",
+        "//aos/vision/debug:overlay",
+        "//aos/vision/math:segment",
+        "//third_party/eigen",
+    ],
 )
 
 cc_test(
-  name = 'codec_test',
-  srcs = ['codec_test.cc'],
-  deps = [
-    ':codec',
-    '//aos/testing:googletest',
-  ],
+    name = "codec_test",
+    srcs = ["codec_test.cc"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":codec",
+        "//aos/testing:googletest",
+    ],
 )
 
 cc_library(
-  name = 'move_scale',
-  hdrs = ['move_scale.h'],
-  srcs = ['move_scale.cc'],
-  deps = [
-    ':range_image',
-    '//aos/vision/image:image_types',
-  ],
+    name = "move_scale",
+    srcs = ["move_scale.cc"],
+    hdrs = ["move_scale.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":range_image",
+        "//aos/vision/image:image_types",
+    ],
 )
 
 cc_library(
-  name = 'test_utils',
-  hdrs = ['test_utils.h'],
-  srcs = ['test_utils.cc'],
-  deps = [
-    ':range_image',
-  ],
+    name = "test_utils",
+    srcs = ["test_utils.cc"],
+    hdrs = ["test_utils.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":range_image",
+    ],
 )
 
 cc_library(
-  name = 'transpose',
-  hdrs = ['transpose.h'],
-  srcs = ['transpose.cc'],
-  deps = [
-    ':range_image',
-  ],
+    name = "transpose",
+    srcs = ["transpose.cc"],
+    hdrs = ["transpose.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":range_image",
+    ],
 )
 
 cc_test(
-  name = 'transpose_test',
-  srcs = ['transpose_test.cc'],
-  deps = [
-    ':transpose',
-    ':test_utils',
-    '//aos/testing:googletest',
-  ],
+    name = "transpose_test",
+    srcs = ["transpose_test.cc"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":test_utils",
+        ":transpose",
+        "//aos/testing:googletest",
+    ],
 )
 
 gtk_dependent_cc_library(
-  name = 'stream_view',
-  hdrs = ['stream_view.h'],
-  deps = [
-    ':range_image',
-    '//aos/vision/debug:debug_window',
-    '//aos/vision/image:image_types',
-  ],
+    name = "stream_view",
+    hdrs = ["stream_view.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":range_image",
+        "//aos/vision/debug:debug_window",
+        "//aos/vision/image:image_types",
+    ],
 )
diff --git a/aos/vision/debug/BUILD b/aos/vision/debug/BUILD
index ed26c69..06f5d0b 100644
--- a/aos/vision/debug/BUILD
+++ b/aos/vision/debug/BUILD
@@ -1,51 +1,62 @@
-load('//tools/build_rules:gtk_dependent.bzl', 'gtk_dependent_cc_binary', 'gtk_dependent_cc_library')
+load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary", "gtk_dependent_cc_library")
+
 package(default_visibility = ["//visibility:public"])
 
 cc_library(
     name = "overlay",
     hdrs = ["overlay.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
     deps = [
-        '//aos/vision/math:vector',
-        '//aos/vision/math:segment',
-        '//aos/vision/image:image_types',
-        ],
-)
-
-gtk_dependent_cc_library(name = "debug_window",
-    srcs = ["debug_window.cc"],
-    hdrs = ["debug_window.h"],
-    deps = [
-        '@usr_repo//:gtk+-3.0',
         "//aos/vision/image:image_types",
-        ":overlay",
-    ]
+        "//aos/vision/math:segment",
+        "//aos/vision/math:vector",
+    ],
 )
 
 gtk_dependent_cc_library(
-  name = 'debug_framework',
-  srcs = [
-    'debug_framework.cc',
-    'jpeg_list-source.cc',
-    'tcp-source.cc',
-    'blob_log-source.cc',
-    'camera-source.cc'
-  ],
-  hdrs = ['debug_framework.h'],
-  deps = [
-    '//aos/common/logging:logging',
-    '//aos/common/logging:implementations',
-    '//aos/vision/blob:codec',
-    '//aos/vision/blob:range_image',
-    '//aos/vision/blob:stream_view',
-    '//aos/vision/blob:find_blob',
-    '//aos/vision/events:gtk_event',
-    '//aos/vision/events:epoll_events',
-    "//aos/vision/events:tcp_client",
-    '//aos/vision/image:jpeg_routines',
-    '//aos/vision/image:image_stream',
-    '//aos/vision/image:image_types',
-    '//aos/common/util:global_factory',
-    '@usr_repo//:gtk+-3.0',
-  ],
-  alwayslink = 1,
+    name = "debug_window",
+    srcs = ["debug_window.cc"],
+    hdrs = ["debug_window.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":overlay",
+        "//aos/vision/image:image_types",
+        "@usr_repo//:gtk+-3.0",
+    ],
+)
+
+gtk_dependent_cc_library(
+    name = "debug_framework",
+    srcs = [
+        "blob_log-source.cc",
+        "camera-source.cc",
+        "debug_framework.cc",
+        "jpeg_list-source.cc",
+        "tcp-source.cc",
+    ],
+    hdrs = ["debug_framework.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/common/logging",
+        "//aos/common/logging:implementations",
+        "//aos/common/util:global_factory",
+        "//aos/vision/blob:codec",
+        "//aos/vision/blob:find_blob",
+        "//aos/vision/blob:range_image",
+        "//aos/vision/blob:stream_view",
+        "//aos/vision/events:epoll_events",
+        "//aos/vision/events:gtk_event",
+        "//aos/vision/events:tcp_client",
+        "//aos/vision/image:image_stream",
+        "//aos/vision/image:image_types",
+        "//aos/vision/image:jpeg_routines",
+        "@usr_repo//:gtk+-3.0",
+    ],
+    alwayslink = 1,
 )
diff --git a/aos/vision/events/BUILD b/aos/vision/events/BUILD
index 495c50a..b3affc2 100644
--- a/aos/vision/events/BUILD
+++ b/aos/vision/events/BUILD
@@ -1,70 +1,98 @@
-load('//tools/build_rules:gtk_dependent.bzl', 'gtk_dependent_cc_binary', 'gtk_dependent_cc_library')
-package(default_visibility = ['//visibility:public'])
+load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary", "gtk_dependent_cc_library")
+
+package(default_visibility = ["//visibility:public"])
 
 cc_library(
-  name = 'epoll_events',
-  srcs = ['epoll_events.cc'],
-  hdrs = ['epoll_events.h'],
-  deps = [
-    '//aos/common:scoped_fd',
-    '//aos/common/logging',
-    '//aos/common:time',
-  ],
+    name = "epoll_events",
+    srcs = ["epoll_events.cc"],
+    hdrs = ["epoll_events.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/common:scoped_fd",
+        "//aos/common:time",
+        "//aos/common/logging",
+    ],
 )
 
 cc_library(
-  name = 'socket_types',
-  hdrs = ['socket_types.h'],
-  deps = [
-    '//aos/vision/events:tcp_server',
-    '//aos/vision/image:image_types',
-    '//third_party/protobuf:protobuf',
-  ],
+    name = "socket_types",
+    hdrs = ["socket_types.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/vision/events:tcp_server",
+        "//aos/vision/image:image_types",
+        "//third_party/protobuf",
+    ],
 )
 
 cc_library(
-  name = 'intrusive_free_list',
-  hdrs = ['intrusive_free_list.h'],
+    name = "intrusive_free_list",
+    hdrs = ["intrusive_free_list.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
-  name = 'tcp_server',
-  srcs = ['tcp_server.cc'],
-  hdrs = ['tcp_server.h'],
-  deps = [':epoll_events', ':intrusive_free_list'],
+    name = "tcp_server",
+    srcs = ["tcp_server.cc"],
+    hdrs = ["tcp_server.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":epoll_events",
+        ":intrusive_free_list",
+    ],
 )
 
 cc_library(
-  name = 'tcp_client',
-  srcs = ['tcp_client.cc'],
-  hdrs = ['tcp_client.h'],
-  deps = [':epoll_events'],
+    name = "tcp_client",
+    srcs = ["tcp_client.cc"],
+    hdrs = ["tcp_client.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [":epoll_events"],
 )
 
 cc_library(
-  name = 'udp',
-  srcs = ['udp.cc'],
-  hdrs = ['udp.h'],
-  deps = [
-    '//aos/common:macros',
-    '//aos/common:scoped_fd',
-  ],
+    name = "udp",
+    srcs = ["udp.cc"],
+    hdrs = ["udp.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/common:macros",
+        "//aos/common:scoped_fd",
+    ],
 )
 
 cc_test(
-  name = 'udp_test',
-  srcs = ['udp_test.cc'],
-  deps = [
-    ':udp',
-    '//aos/testing:googletest',
-  ],
+    name = "udp_test",
+    srcs = ["udp_test.cc"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":udp",
+        "//aos/testing:googletest",
+    ],
 )
 
 gtk_dependent_cc_library(
-  name = 'gtk_event',
-  srcs = ['gtk_event.cc'],
-  deps = [
-    ':epoll_events',
-    '@usr_repo//:gtk+-3.0',
-  ],
+    name = "gtk_event",
+    srcs = ["gtk_event.cc"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":epoll_events",
+        "@usr_repo//:gtk+-3.0",
+    ],
 )
diff --git a/aos/vision/image/BUILD b/aos/vision/image/BUILD
index e41aabc..8409ea5 100644
--- a/aos/vision/image/BUILD
+++ b/aos/vision/image/BUILD
@@ -1,46 +1,66 @@
-package(default_visibility = ['//visibility:public'])
-load('//tools/build_rules:protobuf.bzl', 'proto_cc_library')
+package(default_visibility = ["//visibility:public"])
+
+load("//tools/build_rules:protobuf.bzl", "proto_cc_library")
 
 cc_library(
-  name = 'image_types',
-  hdrs = ['image_types.h'],
-  deps = [
-    '//aos/common/logging:logging',
-  ],
+    name = "image_types",
+    hdrs = ["image_types.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/common/logging",
+    ],
 )
 
 proto_cc_library(
-  name = 'camera_params',
-  src = 'camera_params.proto',
+    name = "camera_params",
+    src = "camera_params.proto",
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
 )
 
 cc_library(
-  name = 'reader',
-  srcs = ['reader.cc'],
-  hdrs = ['V4L2.h', 'reader.h'],
-  deps = [
-    '//aos/common:time',
-    '//aos/common/logging:logging',
-    ':image_types',
-    ':camera_params',
-  ],
+    name = "reader",
+    srcs = ["reader.cc"],
+    hdrs = [
+        "V4L2.h",
+        "reader.h",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":camera_params",
+        ":image_types",
+        "//aos/common:time",
+        "//aos/common/logging",
+    ],
 )
 
 cc_library(
-  name = 'jpeg_routines',
-  srcs = ['jpeg_routines.cc'],
-  hdrs = ['jpeg_routines.h'],
-  deps = [
-    '//third_party/libjpeg',
-    '//aos/common/logging:logging',
-    ':image_types'
-  ],
+    name = "jpeg_routines",
+    srcs = ["jpeg_routines.cc"],
+    hdrs = ["jpeg_routines.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":image_types",
+        "//aos/common/logging",
+        "//third_party/libjpeg",
+    ],
 )
 
-cc_library(name = 'image_stream',
-  hdrs = ['image_stream.h'],
-  deps = [
-    '//aos/vision/events:epoll_events',
-    '//aos/vision/image:reader'
-  ]
+cc_library(
+    name = "image_stream",
+    hdrs = ["image_stream.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//aos/vision/events:epoll_events",
+        "//aos/vision/image:reader",
+    ],
 )
diff --git a/aos/vision/math/BUILD b/aos/vision/math/BUILD
index fe4927b..1de8436 100644
--- a/aos/vision/math/BUILD
+++ b/aos/vision/math/BUILD
@@ -1,29 +1,38 @@
-package(default_visibility = ['//visibility:public'])
+package(default_visibility = ["//visibility:public"])
 
 cc_library(
-  name = 'segment',
-  hdrs = ['segment.h'],
-  deps = [':vector'],
+    name = "segment",
+    hdrs = ["segment.h"],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [":vector"],
 )
 
 cc_library(
-  name = 'vector',
-  hdrs = [
-    'vector.h',
-  ],
-  deps = [
-    '//third_party/eigen',
-  ],
+    name = "vector",
+    hdrs = [
+        "vector.h",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        "//third_party/eigen",
+    ],
 )
 
 cc_test(
-  name = 'vector_test',
-  srcs = [
-    'vector_test.cc',
-  ],
-  deps = [
-    ':vector',
-    '//aos/testing:googletest',
-  ],
-  size = 'small',
+    name = "vector_test",
+    size = "small",
+    srcs = [
+        "vector_test.cc",
+    ],
+    compatible_with = [
+        "//tools:armhf-debian",
+    ],
+    deps = [
+        ":vector",
+        "//aos/testing:googletest",
+    ],
 )