platform: parameterize toolchain defs

This is a series of nop changes that hopes to remove the duplication
between toolchain/platform definitions. The intent is to make each
platform definition much more compact than in prior CLs.

BUG=b:220355021
TEST=`bazel build --platforms="$x" ...` in drydock, for each $x in the
     platforms we currently define.

Change-Id: I3dc11adfb6bc845800112afaa65fc212f31c9961
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/rules_cros/+/3503958
Reviewed-by: Chris McDonald <cjmcdonald@chromium.org>
Tested-by: George Burgess <gbiv@chromium.org>
diff --git a/cros/platforms/BUILD b/cros/platforms/BUILD
index 132a67c..14c7050 100644
--- a/cros/platforms/BUILD
+++ b/cros/platforms/BUILD
@@ -4,29 +4,6 @@
 
 package(default_visibility = ["//visibility:public"])
 
-platform(
-    name = "linux_x86_64",
-    constraint_values = [
-        "@platforms//os:linux",
-        "@platforms//cpu:x86_64",
-        "//cros/platforms/vendor:pc",
-    ],
-)
+load(":platform.bzl", "define_platforms")
 
-platform(
-    name = "cros_armv7a",
-    constraint_values = [
-        "@platforms//os:linux",
-        "@platforms//cpu:armv7",
-        "//cros/platforms/vendor:cros",
-    ],
-)
-
-platform(
-    name = "cros_x86_64",
-    constraint_values = [
-        "@platforms//os:linux",
-        "@platforms//cpu:x86_64",
-        "//cros/platforms/vendor:cros",
-    ],
-)
+define_platforms()
diff --git a/cros/platforms/platform.bzl b/cros/platforms/platform.bzl
new file mode 100644
index 0000000..8bb1883
--- /dev/null
+++ b/cros/platforms/platform.bzl
@@ -0,0 +1,17 @@
+load("//cros/toolchain:platforms.bzl", "all_toolchain_descs", "bazel_cpu_arch", "desc_to_triple")
+
+def define_platforms():
+    for desc in all_toolchain_descs:
+        if desc.vendor == "pc":
+            platform_name = "linux"
+        else:
+            platform_name = "cros"
+
+        native.platform(
+            name = "{}_{}".format(platform_name, desc.cpu_arch),
+            constraint_values = [
+                bazel_cpu_arch(desc),
+                "@platforms//os:linux",
+                "//cros/platforms/vendor:" + desc.vendor,
+            ],
+        )