commit | bcdfcceeb2330fa2801ef9f701df57b60d2edd13 | [log] [tgz] |
---|---|---|
author | c-parsons <cparsons@google.com> | Thu Nov 05 16:26:08 2020 -0500 |
committer | GitHub <noreply@github.com> | Thu Nov 05 16:26:08 2020 -0500 |
tree | e3e08cf88f745341bb225c43338c878b81332733 | |
parent | 764a77191737d68820082af40cf5ddc98dd264a3 [diff] | |
parent | 5e834261a95c868b85b7a8fb383b6e5636b5f726 [diff] |
Create early-exit hook StopBeforeWriteNinja This allows exiting bootstrap directly before writing ninja files. This facilitates shorter runtime on integrations which do processing which do not require ninja file output. Test: Manually verified on Soong integration use case which involves running bootstrap twice in a single program; stopping before ninja output reduces runtime by ~20s, or ~11%.
Blueprint is a meta-build system that reads in Blueprints files that describe modules that need to be built, and produces a Ninja manifest describing the commands that need to be run and their dependencies. Where most build systems use built-in rules or a domain-specific language to describe the logic for converting module descriptions to build rules, Blueprint delegates this to per-project build logic written in Go. For large, heterogenous projects this allows the inherent complexity of the build logic to be maintained in a high-level language, while still allowing simple changes to individual modules by modifying easy to understand Blueprints files.