blob: 9f5348125ca24edf35eba036bea2fce90b0e0405 [file] [log] [blame] [view]
# pw_toolchain_extra
[TOC]
## 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