Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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. | |||||
2022-03-15 | Don't consider mtime of failed to unmatch prerequisite in ad hoc recipe | Boris Kolpackov | 2 | -4/+7 | |
2022-03-11 | Add JSON format support for --structured-result option and info meta operation | Karen Arutyunov | 20 | -242/+964 | |
2022-03-11 | Allow effective quoting for names that need curly braces in their ↵ | Karen Arutyunov | 2 | -5/+4 | |
representations | |||||
2022-03-10 | Update manual to match new header pre-generation functionality | Boris Kolpackov | 1 | -25/+22 | |
2022-03-10 | Fix operator<<(ostream,target_state) | Karen Arutyunov | 2 | -0/+4 | |
2022-03-10 | Add reverse_execute_prerequisites() variant | Boris Kolpackov | 4 | -14/+154 | |
2022-03-10 | Remove update variable from source of synthesized dependency | Boris Kolpackov | 1 | -1/+14 | |
2022-03-09 | Rename execute_wait() to execute() | Boris Kolpackov | 3 | -26/+23 | |
The old half-way semantics of execute() wasn't useful. | |||||
2022-03-09 | Parallel implementation of update_during_match_prerequisites() | Boris Kolpackov | 5 | -34/+150 | |
2022-03-08 | Improve performance of update during match for multiple targets | Boris Kolpackov | 5 | -19/+95 | |
2022-03-08 | Update C/C++ headers and ad hoc sources during match by default | Boris Kolpackov | 1 | -19/+50 | |
Essentially, all headers as well as ad hoc headers and sources are now treated by the cc::link_rule as if they had update=match unless explicit update=execute is specified. | |||||
2022-03-08 | Add update=execute special value for cases where it's not default | Boris Kolpackov | 3 | -4/+6 | |
2022-03-07 | Fix operation-specific variables logic for inner/outer operations | Boris Kolpackov | 6 | -23/+52 | |
2022-03-07 | Add support for update=unmatch|match to ad hoc recipes | Boris Kolpackov | 10 | -48/+217 | |
2022-03-04 | Convert stream names to lower case in documentation | Karen Arutyunov | 2 | -7/+7 | |
2022-03-02 | Add update operation-specific variable with unmatch|match additional values | Boris Kolpackov | 24 | -148/+395 | |
Note that the unmatch (match but do not update) and match (update during match) values are only supported by certain rules (and potentially only for certain prerequisite types). Additionally: - All operation-specific variables are now checked for false as an override for the prerequisite-specific include value. In particular, this can now be used to disable a prerequisite for update, for example: ./: exe{test}: update = false - The cc::link_rule now supports the update=match value for headers and ad hoc prerequisites. In particular, this can be used to make sure all the library headers are updated before matching any of its (or dependent's) object files. | |||||
2022-02-24 | Add note on disabling subprojects/amalgamations import search | Boris Kolpackov | 1 | -0/+10 | |
2022-02-21 | Factor process-wide initialization to init_process() function | Boris Kolpackov | 8 | -85/+109 | |
2022-02-21 | Ban module names that start with underscore | Boris Kolpackov | 2 | -3/+9 | |