Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-12-12 | Diagnose --match-only use with dist meta-operation | Boris Kolpackov | 1 | -1/+8 | |
2024-12-12 | Fix incorrect logic based on dry_run_option value | Boris Kolpackov | 4 | -8/+66 | |
2024-12-06 | Adapt to renaming of some butl::{ucase,lcase,sanitize_identifier}() function ↵ | Karen Arutyunov | 3 | -4/+6 | |
overloads | |||||
2024-11-26 | Sanitize as identifiers <name>/<type in config.import.<proj>.<name>.<type> | Boris Kolpackov | 2 | -14/+26 | |
2024-11-20 | Handle config.import.*.<name>.lib in cc::search_library() | Boris Kolpackov | 2 | -57/+85 | |
In particular, this provides support for using prefixed/suffixed installed libraries (GH issue #449). | |||||
2024-11-20 | Handle config.import.*.<name>.{liba,libs} in cc::search_library() | Boris Kolpackov | 2 | -54/+212 | |
In particular, this provides support for using prefixed/suffixed installed libraries (GH issue #449). Note that the current implementation only supports immediate import but it feels like this limitation can be removed with some effort in the future. | |||||
2024-11-20 | Generalize config::specified_config() | Boris Kolpackov | 4 | -23/+39 | |
2024-11-18 | Only install runtime part of static library prerequisites of share libraries ↵ | Boris Kolpackov | 5 | -8/+58 | |
(GH issue #448) | |||||
2024-11-18 | Drop some disabled code that is unlikely to be needed | Boris Kolpackov | 1 | -132/+0 | |
2024-11-06 | Make $target.path() work for dir{} and fsdir{} targets | Boris Kolpackov | 1 | -2/+6 | |
2024-11-04 | Add support for symlinks as group{} members in ad hoc recipes (GH issue #445) | Boris Kolpackov | 1 | -34/+72 | |
We already had this support for file{} targets so this feels like a natural extension. | |||||
2024-11-04 | Redo group_prerequisites to use snapshots of prerequisites (GH issue #408) | Boris Kolpackov | 5 | -32/+54 | |
It turns out both target and group prerequisites can be replaced during dependency synthesis in more obscure cases. | |||||
2024-10-29 | Minor performance optimization | Boris Kolpackov | 1 | -5/+7 | |
2024-10-29 | Tweak some more fix for data race in ad hoc member state when group is postponed | Boris Kolpackov | 2 | -4/+4 | |
2024-10-29 | Tweak fix for data race in ad hoc member state when group is postponed | Boris Kolpackov | 1 | -7/+7 | |
2024-10-29 | Add note on relative paths in compiledb | Boris Kolpackov | 1 | -2/+12 | |
2024-10-28 | Make $regex.*search() functions not to match empty substrings in non empty ↵ | Karen Arutyunov | 1 | -4/+38 | |
strings | |||||
2024-10-28 | Fix data race in ad hoc member state when group is postponed | Boris Kolpackov | 3 | -9/+28 | |
2024-10-23 | Add config.cc.compiledb=<path> shortcut for placing file into source directory | Boris Kolpackov | 1 | -7/+105 | |
2024-10-23 | Fix bug in compiledb parsing logic (GH issue #441) | Boris Kolpackov | 1 | -5/+6 | |
Also improve diagnostics around invalid compiledb format. | |||||
2024-10-16 | Stop on first error for install and uninstall operations | Boris Kolpackov | 4 | -8/+34 | |
2024-10-10 | Tune match progress for more accurate update during match figure | Boris Kolpackov | 1 | -1/+1 | |
2024-10-10 | Don't match group-based targets with fallback rule during configure (GH #364) | Boris Kolpackov | 4 | -8/+19 | |
Membership of such targets can only be accurately determined by the ad hoc recipe. | |||||
2024-10-09 | Add support for JSON compilation database generation and maintenance | Boris Kolpackov | 13 | -55/+1964 | |
See the "Compilation Database" section in the "cc Module" chapter of the manual for details. | |||||
2024-10-08 | Expose custom save function in config module | Boris Kolpackov | 7 | -42/+90 | |
It can generally be useful, for example, to complete relative paths before saving them to config.build (if abs_dir_path does not fit). | |||||
2024-10-08 | Add context-wide pre/post operation callbacks | Boris Kolpackov | 6 | -122/+286 | |
2024-10-08 | Add uxtheme.lib to list of Windows system libraries | Boris Kolpackov | 1 | -0/+1 | |
2024-10-03 | Make header cache case-sensitive on Windows (GH issue #390) | Boris Kolpackov | 2 | -4/+29 | |
2024-10-03 | Show executed during match target count in match progress | Boris Kolpackov | 4 | -43/+74 | |
2024-09-30 | Add ability to specify custom MSVC /MACHINE value | Boris Kolpackov | 1 | -10/+24 | |
This, for example, can be used to link for ARM64EC instead of the default ARM64: "config.cxx=cl.exe /arm64EC" config.cc.loptions=/MACHINE:ARM64EC | |||||
2024-09-30 | Fix more issues in MSVC ARM64 support | Boris Kolpackov | 2 | -5/+11 | |
2024-09-30 | Fix issues in MSVC ARM64 support | Boris Kolpackov | 2 | -11/+22 | |
2024-09-25 | Use type-aware iteration in script for-loop (GH issue #436) | Boris Kolpackov | 5 | -44/+110 | |
2024-09-11 | Make b-dist in bootstrap mode to ignore .git*, .bdep, .bpkg, and .build2 ↵ | Karen Arutyunov | 1 | -3/+7 | |
file targets rather than .* | |||||
2024-09-05 | Fix bug in whole archive prerequisite change tracking | Boris Kolpackov | 1 | -3/+3 | |
2024-09-05 | Don't suppress duplicate libraries if linking whole archive (GH issue #411) | Boris Kolpackov | 1 | -3/+10 | |
2024-08-30 | Add absolute compiler path to compiler checksum | Boris Kolpackov | 2 | -4/+9 | |
In particular, this will allow us to use depdb change tracking to also detect changes to compilation database entries. | |||||
2024-08-29 | Improve diagnostics around importation | Boris Kolpackov | 1 | -9/+12 | |
2024-08-28 | Don't assume preprocessed TU exists if reprocessing (GH issue #409) | Boris Kolpackov | 1 | -2/+3 | |
2024-08-27 | Handle invalid scope paths specified in buildfile (GH issue #396) | Boris Kolpackov | 1 | -14/+28 | |
2024-08-21 | Don't work own queue in wait_guard dtor | Boris Kolpackov | 2 | -4/+12 | |
There is suspicion this causes a deadlock for reasons so far unclear. See also GH issue #319. | |||||
2024-08-06 | Add support for specifying compile options on exe/lib{} targets | Boris Kolpackov | 2 | -38/+354 | |
It is now possible to specify compile option (*.poptions and *.coptions) on the exe/lib{} targets (we call them "binary-specific compile options"). Such options are propagated to obj/bmi{} targets that are synthesized for source prerequisites of the binary. Note that this propagation does not apply to obj/bmi{} prerequisites. For example: exe{foo}: cxx{foo} obj{common} { cxx.poptions += -DFOO } exe{bar}: cxx{bar} obj{common} { cxx.poptions += -DBAR } obj{common}: cxx{common} { cxx.poptions += -DCOMMON } In this example, cxx{foo} will be compiled with -DFOO, cxx{bar} -- with -DBAR, and cxx{common} -- with -DCOMMON. Note that if a source prerequisite is shared between several binaries, then the values of the propagated compile options (or their absence) must match. For instance, the following variant of the above example would result in an error since cxx{common} would have contradictory cxx.poptions values: exe{foo}: cxx{foo common} { cxx.poptions += -DFOO } exe{bar}: cxx{bar common} { cxx.poptions += -DBAR } As another example, here is how we can rewrite a typical library buildfile (which requires different macros to distinguish between shared/static builds) using this mechanism, in this case, to build two libraries in the same scope: ./: lib{foo}: {hxx cxx}{*-foo} ./: lib{bar}: {hxx cxx}{*-bar} cxx.poptions =+ "-I$out_root" "-I$src_root" lib{foo}: { cxx.poptions += -DFOO cxx.export.poptions = "-I$out_root" "-I$src_root" } liba{foo}: { cxx.poptions += -DLIBFOO_STATIC_BUILD cxx.export.poptions += -DLIBFOO_STATIC } libs{foo}: { cxx.poptions += -DLIBFOO_SHARED_BUILD cxx.export.poptions += -DLIBFOO_SHARED } lib{bar}: { cxx.poptions += -DBAR cxx.export.poptions = "-I$out_root" "-I$src_root" } liba{bar}: { cxx.poptions += -DLIBBAR_STATIC_BUILD cxx.export.poptions += -DLIBBAR_STATIC } libs{bar}: { cxx.poptions += -DLIBBAR_SHARED_BUILD cxx.export.poptions += -DLIBBAR_SHARED } The exact semantics of this mechanism is as-if the binary-specific compile options were set on the synthesized obj/bmi{} targets at the end of the buildfile. One nuance to keep in mind is that target type/pattern-specific assign/append/prepend specified for obj/bmi{} will not be in effect for options specified on lib/exe{}. For example: cxx.poptions += -DSCOPE obj{*}: cxx.poptions += -DTARGET exe{foo}: cxx.poptions += -DFOO Here the effective cxx.poptions for exe{foo} prerequisites will be -DSCOPE -DFOO since exe{foo} does not match the obj{*} pattern. As result, if using this mechanism, remember to include the binary target types in obj{} patterns. For example: {obj exe}{*}: cxx.poptions += -DTARGET | |||||
2024-08-06 | Rename certain target_set::insert() versions to insert_implied() for clarity | Boris Kolpackov | 7 | -57/+64 | |
Also clarify the target_decl documentation. | |||||
2024-07-31 | Add cross-reference note | Boris Kolpackov | 1 | -0/+3 | |
2024-07-31 | Add lookup limit to {scope,target}::lookup_original() | Boris Kolpackov | 9 | -80/+100 | |
2024-07-29 | Fix bug in $string.{contains,ends_with,replace}() (GH issue #405) | Boris Kolpackov | 1 | -2/+2 | |
These functions use the common rfind() helper which contains the bug. | |||||
2024-07-29 | Add scope::lookup_original_info() that provides additional info about lookup | Boris Kolpackov | 4 | -28/+56 | |
2024-07-28 | Factor out and generalize/extend to_stream_quoted(string) | Boris Kolpackov | 3 | -44/+80 | |
2024-06-24 | Fail instead of aborting on src and out directories naming scheme mismatch ↵ | Karen Arutyunov | 1 | -2/+3 | |
(GH issue #394) | |||||
2024-06-20 | Fix crashing of $install.resolve() on absolute paths (GH issue #393) | Karen Arutyunov | 1 | -3/+11 | |