Pigweed Toolchain#

Pigweed Toolchain is an LLVM/Clang toolchain for embedded use cases.

Background#

Our toolchain philosophy is to co-evolve the support for embedded use cases in the LLVM project as we onboard new projects to use the Clang/LLVM toolchain distributed by us. Teams at Google that we partner with make contributions to the LLVM project regularly. Recent contributions include:

  • Compiler optimizations

  • LLVM libc library support

  • Improvements to the LLD linker

We follow the live at HEAD model and do all development in LLVM which enables us to rapidly adopt new features and provide fast feedback to the LLVM community. We continuously build new versions of the Clang toolchain binaries and distribute them to our users. Pigweed’s toolchain version is periodically updated along with code changes necessary to the Pigweed codebase itself to be compatible with and take advantage of new toolchain features as soon as they land.

For more information, check out the following presentation:

Prebuilts#

The toolchain can be downloaded from CIPD Packages. It includes a cross-compiler that can target the following architectures.

Embedded targets:

  • ARM 32-bit

    • ARMv6

    • ARMv7

    • ARMv8

  • RISC-V 32-bit

Host targets:

  • Linux

  • Windows1

  • macOS2

1 Contains some limitations around user-side licensing.

2 MLInliner is not supported yet.

Support#

File a bug or talk to the Pigweed team on Discord.