Pigweed’s modules aim to be easily integratable into both new and existing embedded projects. To that goal, the pw_build module provides support for multiple build systems. Our personal favorite is GN/Ninja, which is used by upstream developers for its speed and flexibility. CMake and Bazel build files are also provided by all modules, allowing Pigweed to be added to a project with minimal effort.

Beyond just compiling code, Pigweed’s GN build system can also:

  • Generate HTML documentation, via our Sphinx integration (with pw_docgen)

  • Display memory usage report cards (with pw_bloat)

  • Incrementally run unit tests after code changes (with pw_target_runner)

  • And more!

These are only supported in the GN build, so we recommend using it if possible.