Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-04-21 | Work around bogus -Wrestrict in GCC 12 (GCC bug #105329) | Boris Kolpackov | 2 | -4/+10 | |
2022-04-20 | Fix bug in recursively-binless detection logic | Boris Kolpackov | 1 | -1/+5 | |
2022-04-20 | Get rid of unnecessary move() call | Boris Kolpackov | 1 | -1/+1 | |
2022-04-20 | Replace match_extra::buffer with more general data storage facility | Boris Kolpackov | 6 | -14/+84 | |
2022-04-20 | Add explicit flag to more efficiently avoid repeated load_root() calls | Boris Kolpackov | 2 | -20/+23 | |
2022-04-20 | Add import cache | Boris Kolpackov | 2 | -2/+77 | |
2022-04-19 | Use target recipe for auxiliary data storage during match-apply | Boris Kolpackov | 19 | -147/+288 | |
In particular, we now have separate auxiliary data storage for inner and outer operations. | |||||
2022-04-19 | Switch to using std::function for target::data_pad | Boris Kolpackov | 10 | -52/+98 | |
2022-04-19 | Optimize header cache some more by storing hash in key | Boris Kolpackov | 2 | -4/+42 | |
2022-04-19 | Skip find() inside target_set::insert*() if target is unlikely to be there | Boris Kolpackov | 5 | -14/+39 | |
2022-04-19 | Switch recipe from std::function to butl::move_only_function_ex | Boris Kolpackov | 5 | -45/+24 | |
2022-04-19 | Cache "recipe is group_action" information, clear recipes after execution | Boris Kolpackov | 4 | -12/+25 | |
2022-04-18 | Avoid locking target set if in load phase | Boris Kolpackov | 5 | -30/+65 | |
2022-04-15 | Tweak match progress display parameters | Boris Kolpackov | 1 | -1/+1 | |
2022-04-15 | Throttle progress display during match | Boris Kolpackov | 1 | -8/+31 | |
2022-04-15 | Adjust small vector limit in process_libraries() | Boris Kolpackov | 2 | -43/+86 | |
2022-04-15 | Omit unnecessary clearing of cached base_scope values | Boris Kolpackov | 3 | -2/+13 | |
2022-04-15 | Get rid of target::dynamic_type() virtual function | Boris Kolpackov | 10 | -132/+301 | |
Instead of overriding this function, derived targets must now set the dynamic_type variable to their static_type in their constructor body. | |||||
2022-04-14 | Add header cache to cc::compile_rule::enter_header() | Boris Kolpackov | 6 | -35/+202 | |
2022-04-13 | Fix bug in previous commit | Boris Kolpackov | 1 | -1/+1 | |
2022-04-13 | Prune library graph traversal for recursively-binless libraries | Boris Kolpackov | 3 | -57/+213 | |
2022-04-13 | Add automatic interface dependency deduplication in cc::process_libraries() | Boris Kolpackov | 3 | -18/+92 | |
2022-04-13 | Cache target base scope lookups | Boris Kolpackov | 4 | -21/+84 | |
2022-04-08 | Fix race in phase lock contention counting | Boris Kolpackov | 3 | -9/+12 | |
2022-04-08 | Register ad hoc rules for configure in addition to dist | Boris Kolpackov | 1 | -8/+12 | |
2022-04-08 | Optimize update_during_match() | Boris Kolpackov | 2 | -8/+17 | |
2022-04-08 | Add phase switch contention to build statistics | Boris Kolpackov | 3 | -11/+40 | |
2022-04-08 | Add hint-less rule match pass for non-perform meta-operations as fallback | Boris Kolpackov | 1 | -116/+143 | |
2022-04-07 | Rename {match,execute}() to *_sync(), add *_complete() | Boris Kolpackov | 14 | -138/+161 | |
In particular, the match() rename makes sure it doesn't clash with rule::match() which, after removal of the hint argument in simple_rule, has exactly the same signature, thus making it error-prone to calling recursively. | |||||
2022-04-06 | Get rid of stray trailing commas | Boris Kolpackov | 1 | -6/+6 | |
2022-04-06 | Work around Clang warnings | Boris Kolpackov | 1 | -0/+4 | |
2022-04-06 | Add support for specifying custom ad hoc pattern rule names | Boris Kolpackov | 2 | -7/+61 | |
Besides diagnostics, this allows us to use name in the rule hint, for example: [rule_name=hello.link] exe{~'/(.*)/'}: obje{~'/\1/'} {{ $cxx.path -o $path($>) $path($<[0]) }} [rule_hint=hello] exe{hello}: obje{hello} obje{hello}: c{hello-c} | |||||
2022-04-06 | Add support for rule hints | Boris Kolpackov | 58 | -253/+648 | |
A rule hint is a target attribute, for example: [rule_hint=cxx] exe{hello}: c{hello} Rule hints can be used to resolve ambiguity when multiple rules match the same target as well as to override an unambiguous match. | |||||
2022-03-31 | Use own type information instead of dynamic_cast in target::is_a() | Boris Kolpackov | 3 | -24/+35 | |
2022-03-31 | Get rid of unnecessary dynamic_cast call | Boris Kolpackov | 1 | -3/+5 | |
2022-03-31 | Add missing init_process() call in regex unit test | Boris Kolpackov | 1 | -0/+5 | |
2022-03-30 | Infrastructure for library metadata support | Boris Kolpackov | 4 | -10/+335 | |
2022-03-29 | Add variable_map::lookup_namespace(string) overload | Boris Kolpackov | 4 | -8/+14 | |
2022-03-28 | Respect dry-run in Windows assembly creation logic | Boris Kolpackov | 1 | -3/+8 | |
2022-03-28 | Add ability to customize pkg-config header and library search paths | Boris Kolpackov | 6 | -17/+85 | |
Specifically, {cc,c,cxx}.pkgconfig.{include,lib} variables specify header (-I) and library (-L) search paths to use in the generated .pc files instead of the default install.{include,lib}. Relative paths are resolved as install paths. | |||||
2022-03-25 | Store bin.whole flag in pkg-config files | Boris Kolpackov | 2 | -14/+47 | |
2022-03-23 | Add note on disfig.* variables idea | Boris Kolpackov | 1 | -0/+16 | |
2022-03-23 | Document config.config.disfigure | Boris Kolpackov | 1 | -1/+19 | |
2022-03-23 | Make project configuration variables non-nullable by default | Boris Kolpackov | 3 | -18/+99 | |
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-03-23 | Clarify config::save_*_omitted semantics | Boris Kolpackov | 1 | -5/+12 | |
2022-03-22 | Add ability to disfigure specific configuration variables | Boris Kolpackov | 1 | -0/+27 | |
The new config.config.disfigure variable can be used to specify the list of variables to ignore when loading config.build (and any files specified in config.config.load), letting them to take on the default values. For example: $ b configure config.config.disfigure=config.hello.fancy | |||||
2022-03-21 | Filter out exe{} prerequisites in install group rule similar to file rule | Boris Kolpackov | 2 | -0/+29 | |
2022-03-21 | Make sure install group rule take precedence over fallback file rule | Boris Kolpackov | 1 | -2/+8 | |
2022-03-17 | Handle absolute POSIX paths in MinGW GCC search paths | Boris Kolpackov | 1 | -2/+34 | |
2022-03-17 | Diagnose invalid paths in -print-search-dirs output | Boris Kolpackov | 1 | -8/+28 | |
For example, some mis-configured MinGW GCC builds include /mingw/lib. |