Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-09-27 | Improve diagnostics for multiple targets sharing path | Boris Kolpackov | 1 | -3/+13 | |
2022-09-23 | Add $is_a(<name>, <target-type>), $filter[_out](<names>, <target-types>) ↵ | Boris Kolpackov | 1 | -12/+118 | |
functions $is_a() returns true if the <name>'s target type is-a <target-type>. Note that this is a dynamic type check that takes into account target type inheritance. $filter[_out]() return names with target types which are-a (filter) or not are-a (filter_out) one of <target-types>. In particular, these functions are useful for filtering prerequisite targets ($<) in ad hoc recipes and rules. | |||||
2022-09-22 | Add $integer_sequence(<begin>, <end>[, <step>]) function | Boris Kolpackov | 1 | -0/+31 | |
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 | 3 | -13/+85 | |
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-21 | Add winrt Platform SDK header search path for MSVC | Boris Kolpackov | 1 | -3/+4 | |
This is required, for example, to build QtGui. | |||||
2022-09-21 | Fix regression in dynamic dependency extraction, byproduct mode | Boris Kolpackov | 4 | -15/+43 | |
2022-09-19 | Fix race between load and match phase logic in cc:search_library() | Boris Kolpackov | 1 | -12/+25 | |
2022-09-19 | Add target_lock::first to distinguish first lock of target | Boris Kolpackov | 3 | -11/+15 | |
2022-09-19 | Allow computed variables in depdb preamble similar to impure functions | Boris Kolpackov | 4 | -10/+50 | |
2022-09-16 | Register fallback dist meta-operation rule for out of project targets | Boris Kolpackov | 3 | -4/+18 | |
The problematic scenario this fixes is an ad hoc pattern rule (which we register for dist in order to inject any additional sources; see parser.cxx for details) that pulls a tool imported from the system (say /usr/bin/xxd). | |||||
2022-09-13 | Add $builtin.concat(dir_path, dir_path) and $builtin.concat(dir_path, path) ↵ | Karen Arutyunov | 1 | -0/+10 | |
overloads | |||||
2022-09-13 | Fix bug in handling of disabled recipes in ad hoc pattern rules | Boris Kolpackov | 1 | -3/+16 | |
2022-09-12 | Add note on backlink=overwrite mode | Boris Kolpackov | 1 | -1/+23 | |
2022-09-12 | Do not treat primary ad hoc group member as group for variable lookup | Boris Kolpackov | 3 | -4/+38 | |
Note that we started with this semantics but it was changed in a commit on 2021-09-16 for reasons not entirely unclear but most likely due to target- specific variables specified for the group not being set on all the members. Which we have now addressed (see the previous commit). Note also that this new (old) semantics is not without its own drawbacks. Specifically, there is a bit of waste when the target-specific variable is really only meant for the recipe and thus setting it on all the members is unnecessary. For example: <{hxx ixx cxx}{options}>: cli{options} { options = ... } {{ # Use options. }} But this feels like a quality of implementation rather than conceptual issue. For example, we could likely one day address it by synthesizing a separate group target for ad hoc groups. | |||||
2022-09-09 | Evaluate target specific variable assignment/block on ad hoc members | Boris Kolpackov | 2 | -37/+113 | |
This is in preparation for (again) not treating primary member of an ad hoc group as a group for variable lookup. | |||||
2022-09-07 | Fix assert after cycle detection in ad hoc groups | Boris Kolpackov | 1 | -31/+31 | |
2022-09-07 | Fix fsdir{} handling corner cases in ad hoc buildscript recipes/rulesdist-remap | Boris Kolpackov | 4 | -11/+39 | |
2022-09-06 | Add ability to remap paths in distribution | Boris Kolpackov | 2 | -29/+102 | |
Specifically, the dist target-specific variable now can specify a path besides true or false. This path is the "imaginary" source location which is used to derive the corresponding distribution local. This location can be either a directory path (to remap with the same file name) or a file path (to remap with a different name). If the path is relative, then it's treated relative to the target directory. Note that to make things less error prone, simple paths without any directory separators are not allowed (use ./<name> instead). Note that if multiple targets end up with the same source location, the behavior is undefined and no diagnostics is issued. Note also that such remapping has no effect in the bootstrap distribution mode. | |||||
2022-09-05 | Allow empty prerequisites in prerequisite-specific variable assignment/block | Boris Kolpackov | 1 | -27/+52 | |
The old semantics was not very consistent, consider: exe{foo}: cxx{$empty} # Ok. exe{foo}: cxx{$empty}: include = false # Not ok? So now both are ok, as well as the block variant: exe{foo}: cxx{$empty}: { include = false } Note that the empty prerequisite list in the dependency chain is still an error: ./: exe{$empty}: cxx{foo} # Error. Note also that the syntactically-empty prerequisite list was and still is an error: exe{foo}: : include = false # Error. | |||||
2022-09-02 | Add missing if! support in recipes | Boris Kolpackov | 1 | -2/+2 | |
2022-09-02 | Add ability to specify `in` rule substitution as key-value pairs | Boris Kolpackov | 7 | -12/+65 | |
2022-09-02 | Rename in.substitution variable to in.mode | Boris Kolpackov | 2 | -2/+6 | |
The original name is still recognized for backwards compatibility. | |||||
2022-08-22 | Manually check values for NULL when using low-level function interface | Boris Kolpackov | 2 | -1/+14 | |
2022-08-17 | Allow matching empty output with here-document regex without ':' modifier | Karen Arutyunov | 1 | -0/+25 | |
2022-08-17 | Fix bug in handling of "in *.export.libs but not in prerequisites" case | Boris Kolpackov | 1 | -5/+16 | |
2022-08-17 | If cl.exe path is specified then extract VC tools directory from this path | Karen Arutyunov | 1 | -32/+74 | |
2022-08-17 | Handle another "in *.export.libs but not in prerequisites" case | Boris Kolpackov | 3 | -49/+78 | |
Also, enable this check even if proc_lib is not specified unless in the execute phase. | |||||
2022-08-17 | Get rid of Clang warning | Boris Kolpackov | 1 | -0/+2 | |
2022-08-16 | Improve MSVC /DEBUG option handling | Boris Kolpackov | 1 | -19/+26 | |
Specifically, handle the /DEBUG:<value> form in addition to /DEBUG and recognize /DEBUG:NONE. | |||||
2022-08-02 | Make bash.in rule match exe{} without bash{} modules with hint | Boris Kolpackov | 2 | -8/+9 | |
2022-07-29 | Change version to 0.16.0-a.0.z | Boris Kolpackov | 1 | -1/+1 | |
2022-07-28 | Release version 0.15.0v0.15.0 | Boris Kolpackov | 1 | -1/+1 | |
2022-07-26 | Remove unused code | Boris Kolpackov | 1 | -66/+0 | |
2022-07-26 | Disable risky sanity check | Boris Kolpackov | 1 | -1/+3 | |
2022-07-26 | Re-enable temporarily disable tests (part of cmdline work) | Boris Kolpackov | 2 | -10/+2 | |
2022-07-26 | Add <libbuild2/dyndep.hxx> to list of headers pre-included for C++ recipes | Boris Kolpackov | 1 | -0/+1 | |
2022-07-25 | Use 'C:\Program Files' instead of 'C:\Program Files (x86)' in documentation | Karen Arutyunov | 1 | -1/+1 | |
2022-07-25 | Fix typo in comment | Boris Kolpackov | 1 | -1/+1 | |
2022-07-21 | Make LLVM tools (ar, lld, etc) detection more robust | Boris Kolpackov | 1 | -6/+18 | |
2022-07-21 | Use bundle scope when deciding whether project is being distributed | Boris Kolpackov | 1 | -2/+3 | |
2022-07-21 | Map Apple Clang 13.1.6 to vanilla Clang 12.0.0 | Boris Kolpackov | 1 | -18/+20 | |
2022-07-21 | Fix bug in common .pc file generation logic (GitHub issue #198) | Boris Kolpackov | 1 | -1/+1 | |
2022-07-21 | Add link to HOWTO entry in conditional dependency declaration warning | Boris Kolpackov | 1 | -1/+3 | |
2022-07-21 | Don't issue conditional dependency declaration warning for imported projects | Boris Kolpackov | 3 | -9/+46 | |
2022-07-20 | Fix bug in cc::pkconfig_save() | Boris Kolpackov | 1 | -1/+1 | |
2022-07-20 | Tweak diagnostics | Boris Kolpackov | 1 | -1/+1 | |
2022-07-20 | Adjust conditional dependency declaration warning logic | Boris Kolpackov | 2 | -13/+19 | |
Now instead of ignoring imported stuff (which turned out to be racy), we only consider conditions up to the include boundary. The thinking here is that an included (but not sourced) buildfile is a standalone entity (e.g., imported project but also could be just a side-included buildfile). Note that unfortunately we will still be issuing warnings in imported projects since there is no straightforward way to know what is being distributed and what is not while parsing. | |||||
2022-07-20 | Adjust to match libpkg-config interface/semantics changes | Boris Kolpackov | 1 | -5/+25 | |
2022-07-19 | Warn about conditional dependency declarations during distribution | Boris Kolpackov | 2 | -0/+51 | |
2022-07-19 | Fix bug in target::matched() | Boris Kolpackov | 2 | -7/+7 | |