commit | 4572edddfa0d6288bdf71208e29d9f99f58ae583 | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Wed May 13 14:36:24 2015 -0700 |
committer | Colin Cross <ccross@android.com> | Fri Jun 26 10:51:44 2015 -0700 |
tree | ef54ec11adffa1b9ed3efdb963771eb664fef2f1 | |
parent | 4adc8194905e72bcc240ef5bf5bbb2175c329c16 [diff] |
Add self-documenting support The primary builder will now generate a rule to call itself with --docs=.bootstrap/docs/<name>.html to produce an automatically generated documentation file. The documentation generation process is: - Call each factory once to get empty property structs associated with the module type - Use reflection to determine the names of the type of each property struct - Use the bootstrap_go_package modules from reading the Blueprints files to find the source files for each Go package used to build the primary builder - Use the go/parser module to find the type declaration for each property struct - Extract comments for the property struct and each property declaration - Format all the comments into HTML Change-Id: Icae9307cc10549a30bfc14d6922824099de5a9b0
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.