commit | 811381a585d30017e6f2df704d45e917d09879b8 | [log] [tgz] |
---|---|---|
author | Ulya Trafimovich <skvadrik@google.com> | Fri Sep 20 12:01:01 2019 +0100 |
committer | Ulya Trofimovich <skvadrik@gmail.com> | Fri Sep 20 23:58:23 2019 +0100 |
tree | 3d51259cbc63de272936595136833011a70ee1e5 | |
parent | 87050d932769bb537d9546983c82ecce219cd7b2 [diff] |
Added VisitDirectDeps* methods to SingletonContext. A an example use case is generating the graph of module dependencies, where modules are vertices and dependencies are edges. The patch was tested with a local implementation of such a module in the Soong build system. The graph was generated for all modules in the AOSP tree.
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.