Lean on constraints more heavily for m4f targets

We want to have the CI script test //... and have bazel sort out the
rest rather than keep a target list up to date by hand.

Change-Id: I1ab48b8d115fd878fecdd87b00f8221712061ab0
diff --git a/tools/build_rules/select.bzl b/tools/build_rules/select.bzl
index 8754f26..7e6501c 100644
--- a/tools/build_rules/select.bzl
+++ b/tools/build_rules/select.bzl
@@ -7,6 +7,7 @@
     "amd64",
     "roborio",
     "armhf",
+    "cortex-m",
 ]
 
 """All of the CPUs we know about."""
@@ -15,9 +16,9 @@
 
 Args:
   values: A mapping from architecture names (as strings) to other things.
-          Currently amd64, roborio, and armhf are recognized.
+          Currently amd64, roborio, armhf, and cortex are recognized.
           'else' is also allowed as a default.
-          'arm' is allowed instead of roborio and armhf.
+          'arm' is allowed instead of roborio, armhf, and cortex.
 Returns a select which evaluates to the correct element of values.
 """
 
@@ -29,6 +30,7 @@
         new_values[cpu] = values[cpu]
     new_values['armhf'] = values['arm']
     new_values['roborio'] = values['arm']
+    new_values['cortex-m'] = values['arm']
     values = new_values
   for cpu in all_cpus:
     if cpu not in values:
@@ -43,6 +45,8 @@
     '@//tools:cpu_k8': values['amd64'],
     '@//tools:cpu_roborio': values['roborio'],
     '@//tools:cpu_armhf': values['armhf'],
+    '@//tools:cpu_cortex_m4f': values['cortex-m'],
+    '@//tools:cpu_cortex_m4f_k22': values['cortex-m'],
   })
 
 """A select wrapper for address space sizes.
@@ -61,6 +65,8 @@
     '@//tools:cpu_k8': values['64'],
     '@//tools:cpu_roborio': values['32'],
     '@//tools:cpu_armhf': values['32'],
+    '@//tools:cpu_cortex_m4f': values['32'],
+    '@//tools:cpu_cortex_m4f_k22': values['32'],
   })
 
 """A select wrapper for compilers.