pw_polyfill: Add polyfill to toolchain

This adds the pw_polyfill bazel targets that can be consumed by a
remote toolchain. This change also adds a dependency on a set of remote
toolchains that target both host and ARM cortex-m devices. The remote
toolchain is compatible with the bazel targets in pw_polyfill.

Change-Id: I868d3349d8c20a70725e6f936cd6ca54acd93ef3
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/32820
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Reviewed-by: Akira Baruah <akira.baruah@gmail.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
diff --git a/pw_build/docs.rst b/pw_build/docs.rst
index 43ff762..18aadb1 100644
--- a/pw_build/docs.rst
+++ b/pw_build/docs.rst
@@ -514,11 +514,44 @@
 
 Bazel
 =====
-Bazel is currently very experimental, and only builds for host.
+Bazel is currently very experimental, and only builds for host and ARM Cortex-M
+microcontrollers.
 
 The common configuration for Bazel for all modules is in the ``pigweed.bzl``
 file. The built-in Bazel rules ``cc_binary``, ``cc_library``, and ``cc_test``
 are wrapped with ``pw_cc_binary``, ``pw_cc_library``, and ``pw_cc_test``.
 These wrappers add parameters to calls to the compiler and linker.
 
-The ``BUILD`` file is merely a placeholder and currently does nothing.
+Currently Pigweed is making use of a set of
+[open source](https://github.com/silvergasp/bazel-embedded) toolchains. The host
+builds are only supported on Linux/Mac based systems. Additionally the host
+builds are not entirely hermetic, and will make use of system
+libraries and headers. This is close to the default configuration for Bazel,
+though slightly more hermetic. The host toolchain is based around clang-11 which
+has a system dependency on 'libtinfo.so.5' which is often included as part of
+the libncurses packages. On Debian based systems this can be installed using the
+command below:
+
+.. code-block:: sh
+
+  sudo apt install libncurses5
+
+The host toolchain does not currently support native Windows, though using WSL
+is a viable alternative.
+
+The ARM Cortex-M Bazel toolchains are based around gcc-arm-non-eabi and are
+entirely hermetic. You can target Cortex-M, by using the platforms command line
+option. This set of toolchains is supported from hosts; Windows, Mac and Linux.
+The platforms that are currently supported are listed below.
+
+.. code-block:: sh
+
+  bazel build //:your_target --platforms=@bazel_embedded//platforms:cortex_m0
+  bazel build //:your_target --platforms=@bazel_embedded//platforms:cortex_m1
+  bazel build //:your_target --platforms=@bazel_embedded//platforms:cortex_m3
+  bazel build //:your_target --platforms=@bazel_embedded//platforms:cortex_m4
+  bazel build //:your_target --platforms=@bazel_embedded//platforms:cortex_m7
+  bazel build //:your_target \
+       --platforms=@bazel_embedded//platforms:cortex_m4_fpu
+  bazel build //:your_target \
+       --platforms=@bazel_embedded//platforms:cortex_m7_fpu
\ No newline at end of file