pw_toolchain_extra

Overview

This module provides experimental toolchain-related features. Some of these may make their way into Pigweed, some are illustrative examples.

GN pw_toolchain and pw_cortex_m_gcc_toolchain templates

These templates imagine a slightly different API for instantiating toolchains. Rather than toolchains being pre-defined scopes that you can import and extend or override, pw_cortex_m_gcc_toolchain illustrates a configurable toolchain that puts more control into the hands of the user while also being more legible at-a-glance.

pw_cortex_m_gcc_toolchain is built on top of pw_toolchain. The naming of the pw_toolchain template is intentionally similar to generate_toolchain, and this is for two reasons:

  1. generate_toolchain should have been named pw_generate_toolchain from the Beginning. Namespacing templates behind pw_* is a well-established pattern that unfortunately wasn't applied to the generate_toolchain template during its inception. pw_toolchain takes the verb out of the name, and prefixes with pw_* to match the established naming patterns.
  2. pw_toolchain extends upon and improves generate_toolchain with the intent to eventually replace it. This naming difference provides a migration path.

The pw_toolchain template also makes it easier to stand up RBE for a given toolchain by parameterizing the required flags.

As the GN build will likely be turned down in the distant future, it‘s unlikely these templates will make their way into the core Pigweed repository. It’s left here as a proof-of-concept for the direction Pigweed might have gone