Build systems#

Bazel, GN, and CMake integrations and rules

Pigweed has full support for Bazel and partial support for GN and CMake. See Build system integrations for more information.

General#

Overview

A high-level explanation of Pigweed’s approach to build systems.

Build systems overview

Bazel#

Install Bazel

Recommendations on how to install Bazel.

docs-install-bazel
Bazel quickstart

Fork our minimal, Bazel-based starter project to create a new Pigweed project from scratch. The project includes a basic blinky LED program that runs on Raspberry Pi Picos and can be simulated on your development host.

https://cs.opensource.google/pigweed/quickstart/bazel
Bazel integration

Learn how to use Pigweed in an existing Bazel project: add Pigweed as a dependency, start using Pigweed modules, and set up static and runtime analysis.

Using Pigweed in an existing Bazel project
Bazel build compatibility patterns

A deep-dive into the Bazel patterns Pigweed uses to express that a build target is compatible with a platform

Pigweed Bazel build compatibility patterns

GN / Ninja#

Pigweed’s GN Python build

Details on the custom GN-based build system that Pigweed uses to manage its Python code.

Pigweed’s GN Python Build

CMake#

CMake integration

Learn how to use Pigweed in an existing CMake project: add Pigweed as a dependency, configure backends, and use modules.

CMake integration guide

Modules#

The following table lists all modules related to Build systems.

Name

Status

Description

Languages

pw_build

stable

Integrations for Bazel, GN, and CMake

Bazel, CMake, GN, Rust

pw_build_info

stable

Generate, embed, and parse build-related information

Bazel, CMake, GN

pw_codegen

unstable

Source code generation utilities

Python

pw_rust

experimental