Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2015-12-03 | Implement new potential directive keyword test | Boris Kolpackov | 1 | -4/+31 | |
Now we can use directive names as variables and targets type, for example: print = foo # variable print{foo}: # target | |||||
2015-12-03 | Implement if-else conditions | Boris Kolpackov | 1 | -20/+172 | |
if if! elif elif! else The expression should evaluate to true of false. The if! and elif! versions are provided as shortcuts to writing if (!...). See tests/if-else for examples. | |||||
2015-12-02 | Redo extension derivation for file{}, doc{}, and cli{} | Boris Kolpackov | 1 | -0/+7 | |
We now first check the 'extension' variable, then use the default. | |||||
2015-12-02 | Implement optional module loading | Boris Kolpackov | 1 | -6/+9 | |
The syntax is: using? cli Now each module use results in two bool variables: <module>.loaded and <module>.configured. Also implement variable visibility (the above two variables are limited to project). | |||||
2015-12-01 | Reimplement define as dynamic derivation rather than alias | Boris Kolpackov | 1 | -22/+21 | |
New syntax: define cli: file The rationale is we need to be able to assign the file extension (using type/pattern-specific variables). And if it is an alias, we will assign it to the original target type. Note that we could still support aliases if we need to. Will need to bring back the id member in target_type that would normally point to itself but for an alias would point to the origin. | |||||
2015-12-01 | Implement support for definition target type aliases | Boris Kolpackov | 1 | -1/+75 | |
For example: define cli=file Currently, the semantics is that of a real alias with only name differences that are used for display. See tests/define/buildfile for more use cases. | |||||
2015-11-30 | Implement target type/pattern-specific variables | Boris Kolpackov | 1 | -18/+65 | |
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. | |||||
2015-11-28 | Add support for name crosses, for example {hxx ixx cxx}{foo bar} | Boris Kolpackov | 1 | -31/+115 | |
See tests/names for more examples. | |||||
2015-11-28 | Fix separated { handling in names parser | Boris Kolpackov | 1 | -2/+2 | |
'foo/ {a b}' should be equivalent to 'foo/ a b', not 'foo/a foo/b'. | |||||
2015-09-11 | Handle file io failures in parser | Boris Kolpackov | 1 | -46/+60 | |
2015-09-11 | Preserve pairs in expansion | Boris Kolpackov | 1 | -0/+6 | |
2015-09-10 | Reimplement buildspec parsing to deal with eval context | Boris Kolpackov | 1 | -71/+108 | |
In short, in buildspec, parens are treated as operation application rather than eval context unless double-quoted. So in 'clean(foo)' we have the clean operation on target foo while in '"clean(foo)"' we have target cleanfoo. Also, as a bonus, we can now do {clean update}(/long/target/name/). | |||||
2015-09-10 | Fix bug in names() chunking mode | Boris Kolpackov | 1 | -4/+4 | |
2015-09-10 | Add support for chunking name parsing | Boris Kolpackov | 1 | -4/+18 | |
2015-09-09 | Add support for quoting directive names | Boris Kolpackov | 1 | -13/+14 | |
Now only unquoted, literal names are recognized as directives, for example: 'print' = abc print $print | |||||
2015-09-09 | Add initial support for function calls: $func(a b c) | Boris Kolpackov | 1 | -27/+59 | |
Now it is just a stub that prints the function name and its argument. Currently only single argument can be passed (no value pack support yet). | |||||
2015-09-09 | Add support for evaluation context | Boris Kolpackov | 1 | -65/+120 | |
For now it acts as just the value mode that can be enabled anywhere variable expansion is supported, for example: (foo=bar): And the primary use currently is to enable/test quoted and indirect variable expansion: "foo bar" = FOO BAR print $"foo bar" # Invalid. print $("foo bar") # Yeah, baby. foo = FOO FOO = foo print $($foo) Not that you should do something like this... | |||||
2015-09-08 | Use mode stack in lexer | Boris Kolpackov | 1 | -1/+1 | |
2015-09-08 | Clean up lexer mode logic | Boris Kolpackov | 1 | -0/+1 | |
2015-09-08 | Rework diagnostics verbosity, add quiet mode/option | Boris Kolpackov | 1 | -7/+7 | |
2015-09-04 | Fix clang warnings | Boris Kolpackov | 1 | -2/+0 | |
2015-08-31 | Clean parser implementation | Boris Kolpackov | 1 | -52/+13 | |
2015-08-31 | Rework scoping logic | Boris Kolpackov | 1 | -53/+107 | |
Now the src directory is entered into the scope map and points to the same scope as out. This means that targets that are in src, not out (e.g., source files) will "see" rules, variables, etc. This becomes important when we try, for example, to install a source file (say, a header) from src: we need the rule as well as the install.* variables. | |||||
2015-08-27 | Dist module/meta-operation initial implementation | Boris Kolpackov | 1 | -0/+31 | |
2015-08-24 | Cosmetic change | Boris Kolpackov | 1 | -1/+1 | |
2015-08-24 | Only treat name as directory if it is reversible | Boris Kolpackov | 1 | -22/+32 | |
2015-08-24 | New variable architecture | Boris Kolpackov | 1 | -50/+36 | |
2015-07-31 | Essential install module functionality | Boris Kolpackov | 1 | -5/+5 | |
2015-07-15 | Implement project-qualified names/prerequisites, two-stage import | Boris Kolpackov | 1 | -20/+96 | |
2015-07-13 | Add support for pair-enabled variables | Boris Kolpackov | 1 | -20/+16 | |
2015-07-07 | Relax requirement on amalgamation src_root to track sub-project | Boris Kolpackov | 1 | -32/+32 | |
2015-07-07 | Rework module architecture | Boris Kolpackov | 1 | -10/+4 | |
Now the target type and rule maps are in scopes (builtins -- in global scope). We also now have the map of loaded modules in the root scope of each project. | |||||
2015-05-22 | Get rid of gcc, clang warnings (-Wall) | Boris Kolpackov | 1 | -1/+0 | |
2015-05-11 | Correct copyright | Boris Kolpackov | 1 | -1/+1 | |
2015-04-29 | Add support for setting target-specific variables from buildfiles | Boris Kolpackov | 1 | -92/+140 | |
2015-04-28 | Remove sourcing triggers support for now | Boris Kolpackov | 1 | -21/+0 | |
2015-04-28 | Second iteration over import/export support | Boris Kolpackov | 1 | -24/+32 | |
2015-04-20 | Merge config.cxx.* variables into cxx.* when loading cxx module | Boris Kolpackov | 1 | -3/+12 | |
2015-04-20 | Automatically decide when to print relative/absolute paths | Boris Kolpackov | 1 | -1/+1 | |
2015-04-17 | Add support for target groups, use to handle obj/obja/objso object targets | Boris Kolpackov | 1 | -2/+2 | |
2015-04-15 | New variables architecture | Boris Kolpackov | 1 | -11/+11 | |
Now operator[] is only used for lookup. | |||||
2015-04-13 | Add separate type to represent directory paths | Boris Kolpackov | 1 | -26/+26 | |
2015-04-13 | Add initial import support | Boris Kolpackov | 1 | -83/+133 | |
2015-04-08 | Inherit list_value directly from names | Boris Kolpackov | 1 | -11/+11 | |
2015-04-08 | Get rid of need to store scope in variable value | Boris Kolpackov | 1 | -4/+4 | |
2015-04-07 | Initial support for amalgamation/subprojects | Boris Kolpackov | 1 | -2/+75 | |
For now both need to be manually specified in src bootstrap. At this stage main() loads any outer root scopes while include loads any inner. | |||||
2015-03-31 | Rename root_scope to global_scope | Boris Kolpackov | 1 | -2/+2 | |
To avoid confusion with project's root scopes. | |||||
2015-03-30 | Initial support for command line variables | Boris Kolpackov | 1 | -82/+74 | |
2015-03-30 | Add support for configurable pair separator, use @ instead of = in buildspec | Boris Kolpackov | 1 | -17/+19 | |
2015-03-27 | Rework dependency state dump support | Boris Kolpackov | 1 | -3/+3 | |
We now have a combined (scopes, variables, and targets) dump. |