commit | 99bdb2ab4fd5168a71a20aecf10611425be47ec4 | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Fri Mar 29 16:35:02 2019 -0700 |
committer | Colin Cross <ccross@android.com> | Mon May 20 14:58:14 2019 -0700 |
tree | bb6bfcfce23c878151c32e30c80b716d7588a953 | |
parent | 818af3bfe0b42adada3a5cc00b49639e5991d170 [diff] |
Consolidate mutator contexts Move most of the mutator context methods into BaseModuleContext so they are available to both top down and bottom up mutators. Only CreateModule is unique to TopDownMutatorContext, and the dependency and variation adding methods are unique to the BottomUpMutatorContext. The dependency visiting methods are now available on BottomUpMutatorContext, which requires delaying making newly added dependencies visible to maintain the invariant that the mutator has been called on the dependency before the dependency can be visited by its parents. Test: m checkbuild Change-Id: Ie14afc02ac76d0b5a66b0e52de2aa9e17fd1bec0
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.