Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-09-22 | Add $integer_sequence(<begin>, <end>[, <step>]) function | Boris Kolpackov | 1 | -0/+8 | |
It returns the list of uint64 integers starting from <begin> (including) to <end> (excluding) with the specified <step> or 1 if unspecified. For example: hdr = foo.hxx bar.hxx baz.hxx src = foo.cxx bar.cxx baz.cxx assert ($size($hdr) == $size($src)) "hdr and src expected to be parallel" for i: $integer_sequence(0, $size($hdr)) { h = ($hdr[$i]) s = ($src[$i]) ... } | |||||
2022-09-22 | Add support for hex notation for uint64 type | Boris Kolpackov | 1 | -0/+8 | |
Specifically, now we can do: x = [uint64] 0x0000ffff cxx.poptions += "-DOFFSET=$x" # -DOFFSET=65535 cxx.poptions += "-DOFFSET=$string($x, 16)" # -DOFFSET=0xffff cxx.poptions += "-DOFFSET=$string($x, 16, 8)" # -DOFFSET=0x0000ffff Note that there is no hex notation support for the int64 (signed) type. | |||||
2022-09-19 | Allow computed variables in depdb preamble similar to impure functions | Boris Kolpackov | 1 | -5/+27 | |
2022-09-02 | Add ability to specify `in` rule substitution as key-value pairs | Boris Kolpackov | 1 | -2/+27 | |
2022-09-02 | Rename in.substitution variable to in.mode | Boris Kolpackov | 1 | -1/+1 | |
The original name is still recognized for backwards compatibility. | |||||
2022-07-08 | Fix some tests to match canned command line semantics | Karen Arutyunov | 4 | -4/+4 | |
2022-07-07 | Use new cmdline type for canned command lines in {Build,Test}script | Boris Kolpackov | 5 | -6/+30 | |
2022-06-28 | Add support for querying out-qualified target-specific variables | Boris Kolpackov | 2 | -8/+11 | |
2022-04-19 | Use target recipe for auxiliary data storage during match-apply | Boris Kolpackov | 1 | -2/+2 | |
In particular, we now have separate auxiliary data storage for inner and outer operations. | |||||
2022-03-23 | Make project configuration variables non-nullable by default | Boris Kolpackov | 1 | -3/+33 | |
A project configuration variable with the NULL default value is naturally assumed nullable, for example: config [string] config.libhello.fallback_name ?= [null] Otherwise, to make a project configuration nullable we use the `null` variable attribute, for example: config [string, null] config.libhello.fallback_name ?= "World" | |||||
2022-02-21 | Factor process-wide initialization to init_process() function | Boris Kolpackov | 1 | -1/+1 | |
2022-02-14 | Fix module loading in libbuild2 test | Boris Kolpackov | 1 | -8/+17 | |
2022-02-10 | Make few global types separately constructible/initializable | Boris Kolpackov | 1 | -1/+1 | |
2022-01-26 | Make bash module install into bin/<project>.bash/ to avoid clashes | Boris Kolpackov | 1 | -2/+2 | |
Also, expect the first component in the import path to be full project name even in case it has the .bash extension. | |||||
2022-01-18 | Add dynamic prerequisites to $< unless --adhoc is specified | Boris Kolpackov | 1 | -57/+152 | |
Also add a few tests for depdb-dyndep. | |||||
2021-12-02 | Fix path function test failure on Windows | Boris Kolpackov | 1 | -1/+1 | |
2021-12-02 | Add $root_directory(<path>) function | Boris Kolpackov | 1 | -0/+22 | |
2021-12-02 | Add $relative(<path>,<dir-path>) function | Boris Kolpackov | 1 | -0/+6 | |
2021-11-26 | Add $size(string), $size(path), and $size(dir_path) functions | Boris Kolpackov | 2 | -0/+18 | |
2021-11-16 | Disable C++20 modules tests for MinGW GCC | Boris Kolpackov | 1 | -0/+7 | |
Things appear to be completely broken in GCC 11.x. | |||||
2021-11-04 | Fix test | Boris Kolpackov | 1 | -1/+1 | |
2021-11-04 | Add $size() function to get size of sequence (names, strings, etc) | Boris Kolpackov | 3 | -5/+24 | |
2021-11-02 | Add $sort() function | Boris Kolpackov | 3 | -1/+34 | |
Available overloads: $sort(<names> [, <flags>]) $sort(<ints> [, <flags>]) $sort(<strings> [, <flags>]) $sort(<paths> [, <flags>]) $sort(<dir_paths> [, <flags>]) The following flag is supported by the all overloads: dedup - in addition to sorting also remove duplicates Additionally, the strings overload also support the following flag: icase - sort ignoring case Note that on case-insensitive filesystem the paths and dir_paths overload's order is case-insensitive. | |||||
2021-10-13 | Add --cwd|-t option to env pseudo-builtin | Karen Arutyunov | 2 | -60/+106 | |
2021-09-28 | Adapt to libbutl headers extension change from .mxx to .hxx | Karen Arutyunov | 1 | -4/+4 | |
2021-09-24 | Fortify tests against NDEBUG | Karen Arutyunov | 4 | -1/+12 | |
2021-09-14 | Consistently install prerequisites from any scope by default | Boris Kolpackov | 1 | -0/+1 | |
It is also now possible to adjust this behavior with global config.install.scope override. Valid values for this variable are: project -- only from project strong -- from strong amalgamation weak -- from weak amalgamation global -- from all projects (default) | |||||
2021-07-08 | Also disable GCC -Wstringop-overread in tests | Boris Kolpackov | 1 | -1/+2 | |
2021-06-09 | Fix cxx pattern rule test | Boris Kolpackov | 1 | -6/+7 | |
2021-06-08 | Redo low verbosity diagnostic deduction to use scope instead of target | Boris Kolpackov | 1 | -45/+20 | |
2021-06-08 | Get rid of special *{} wildcard target type notation in target type/patterns | Boris Kolpackov | 1 | -1/+1 | |
Explicit target{} should be used instead. Also, in this context, absent target type is now treated as file{} rather than target{}, for consistency with all other cases. | |||||
2021-06-08 | Implement ad hoc regex pattern rule support | Boris Kolpackov | 3 | -2/+79 | |
An ad hoc pattern rule consists of a pattern that mimics a dependency declaration followed by one or more recipes. For example: exe{~'/(.*)/'}: cxx{~'/\1/'} {{ $cxx.path -o $path($>) $path($<[0]) }} If a pattern matches a dependency declaration of a target, then the recipe is used to perform the corresponding operation on this target. For example, the following dependency declaration matches the above pattern which means the rule's recipe will be used to update this target: exe{hello}: cxx{hello} While the following declarations do not match the above pattern: exe{hello}: c{hello} # Type mismatch. exe{hello}: cxx{howdy} # Name mismatch. On the left hand side of `:` in the pattern we can have a single target or an ad hoc target group. The single target or the first (primary) ad hoc group member must be a regex pattern (~). The rest of the ad hoc group members can be patterns or substitutions (^). For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} On the left hand side of `:` in the pattern we have prerequisites which can be patterns, substitutions, or non-patterns. For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} hxx{^'/\1/'} hxx{common} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} Substitutions on the left hand side of `:` and substitutions and non-patterns on the right hand side are added to the dependency declaration. For example, given the above rule and dependency declaration, the effective dependency is going to be: <exe{hello} file{hello.map>: cxx{hello} hxx{hello} hxx{common} | |||||
2021-06-08 | Only pass target to recipe_text() if recipe is not shared | Boris Kolpackov | 1 | -20/+45 | |
2021-05-28 | Add support for regex-based target type/pattern specific variables | Boris Kolpackov | 1 | -0/+127 | |
This is in addition to the already supported path-based target type/pattern specific variables. For example: hxx{*}: x = y # path-based hxx{~/.*/}: x = y # regex-based | |||||
2021-05-28 | Ban conversion of patterns to values | Boris Kolpackov | 3 | -2/+5 | |
Also improve conversion diagnostic. | |||||
2021-04-21 | Add buildscript depdb builtin 'env' command | Karen Arutyunov | 1 | -0/+62 | |
2021-04-20 | Disable bunch of bogus GCC warnings | Boris Kolpackov | 1 | -0/+2 | |
2021-03-22 | Fix tests to work for compressed file cache entries | Boris Kolpackov | 1 | -1/+1 | |
2021-03-18 | Add noop mode to file cache, add --file-cache option to select | Boris Kolpackov | 1 | -1/+1 | |
2021-03-16 | Define intermediate build results file cache interface | Boris Kolpackov | 1 | -1/+3 | |
2021-02-11 | Improve module name to file name matching logic | Boris Kolpackov | 1 | -0/+3 | |
2021-02-11 | Update header unit tests | Boris Kolpackov | 1 | -4/+4 | |
2021-01-12 | Diagnose typed and project-qualified empty names | Boris Kolpackov | 1 | -1/+0 | |
2020-12-14 | Make use of export testscript builtin | Karen Arutyunov | 1 | -5/+7 | |
2020-12-14 | Make export script builtin tests more robust | Karen Arutyunov | 1 | -0/+5 | |
2020-12-11 | Add export script pseudo-builtin | Karen Arutyunov | 3 | -4/+170 | |
2020-12-11 | Copy parent scope's test program list in runner's entry() function rather ↵ | Karen Arutyunov | 1 | -3/+29 | |
than in scope's constructor | |||||
2020-12-11 | Fix set pseudo-builtin to reset special variables when required | Karen Arutyunov | 1 | -0/+9 | |
2020-12-11 | Prefix pseudo-builtin diagnostincs messages with their names | Karen Arutyunov | 3 | -12/+12 | |
2020-12-08 | Redo $normalize(true) as separate $actualize() | Karen Arutyunov | 1 | -9/+12 | |