Build systems#

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.

docs-cmake-integration