commit | f586544ab7711c1e50e26852d3a4005520cf3d0c | [log] [tgz] |
---|---|---|
author | Nan Zhang <nanzhang@google.com> | Wed Nov 01 14:03:28 2017 -0700 |
committer | Nan Zhang <nanzhang@google.com> | Thu Nov 02 22:10:47 2017 -0700 |
tree | f287ad39f59d3180cc58dc742b4d71320c009d30 | |
parent | eb6192cf669ca2a0db71dcd41674fdfc6a6563c4 [diff] |
Support parsing int64 in Blueprint file. Support int64 number instead of int to be more fixed to bit size so that the underlying arch won't affect overflow cases. Besides, refection: func (v Value) Int() int64 always cast to int64 no matter the input is int, int16, int32. Currently we always treat "-" as negative sign to bind to next value, and "+" as plus operator to add operands together. So we allow: a = 5 + -4 + 5 or a = -4 + 5 But we don't allow: a = +5 + 4 + -4 since we don't treat "+" as a positive sign, otherwise, a = 5 + +5 would exist which looks pretty weird. In the future, we may want fully support number calculator logic eg, "+"/"-" can be positive/negative sign or operator, and "(" and ")" will be considered to group expressions with a higher precedence. int & uint properties within struct keeps unchanged, which is only allowed when tagged with 'blueprint:mutated'. We only allow *int64 property instead of int64 property within struct since it does't make sense to do prepending or appending to int64. Change-Id: I565e046dbd268af3538aee148cd7300037e56523
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.