diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-11-30 14:31:40 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-11-30 14:36:18 +0200 |
commit | b2374e3174e13682fcfa3ffe3fc62f2fd161a7cc (patch) | |
tree | bd39bda41e2ee352b73d80b84153ba95b80e84c4 /build/parser | |
parent | 1fb88fce9681e88f4140457cfe00a998d9c2588d (diff) |
Implement target type/pattern-specific variables
For example:
cxx{*-options}: dist = true
1. Only single '*' wildcard is supported, matches 0 or more characters.
2. If target type is not specified, it defaults to any target.
3. Appending (+=) is not allowed.
4. The value is expanded immediately in the context of the scope.
5. The more specific pattern (i.e., with the shortest "stem") is preferred.
If the stem has the same length, then the last defined (but not redefined)
pattern is used. This will probably have to change to become an error.
See tests/variable/type-pattern for more examples.
Diffstat (limited to 'build/parser')
-rw-r--r-- | build/parser | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/build/parser b/build/parser index 04066ff..e37e68a 100644 --- a/build/parser +++ b/build/parser @@ -25,6 +25,7 @@ namespace build { public: typedef build::names names_type; + typedef build::variable variable_type; parser (): fail (&path_) {} @@ -77,6 +78,9 @@ namespace build variable_name (names_type&&, const location&); names_type + variable_value (token&, token_type&, const variable_type&); + + names_type eval (token&, token_type&); // If chunk is true, then parse the smallest but complete, name-wise, |