aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-05-10Use our own implementation of C++14 threads on MinGWBoris Kolpackov3-27/+49
2022-05-06Minor terminology fix in diagnostics and commentsBoris Kolpackov6-8/+8
2022-05-06Minor terminology fix in documentationBoris Kolpackov1-2/+2
2022-05-05Recognize -pthread as king of -l in *.libsBoris Kolpackov4-38/+56
2022-05-05Allow linking libraries without any sources/headers with hintBoris Kolpackov1-3/+8
This can be useful for creating "metadata libraries".
2022-05-02Don't verify parser replay integrity if exception is being thrownBoris Kolpackov1-3/+21
2022-04-25Rename cmdline to b_cmdline, and options to b_optionsBoris Kolpackov7-204/+204
2022-04-24Omit ignorable change detection for header unitsBoris Kolpackov1-1/+9
Since the checksum ignores preprocessor directives, this may cause us to ignore a change to an exported macro.
2022-04-24Fix bug in previous commitBoris Kolpackov1-1/+1
2022-04-24Recognize ARM64 as MSVC targetBoris Kolpackov1-12/+19
2022-04-21Work around bogus -Wrestrict in GCC 12 (GCC bug #105329)Boris Kolpackov2-4/+10
2022-04-20Fix bug in recursively-binless detection logicBoris Kolpackov1-1/+5
2022-04-20Get rid of unnecessary move() callBoris Kolpackov1-1/+1
2022-04-20Replace match_extra::buffer with more general data storage facilityBoris Kolpackov6-14/+84
2022-04-20Add explicit flag to more efficiently avoid repeated load_root() callsBoris Kolpackov2-20/+23
2022-04-20Add import cacheBoris Kolpackov2-2/+77
2022-04-19Use target recipe for auxiliary data storage during match-applyBoris Kolpackov19-147/+288
In particular, we now have separate auxiliary data storage for inner and outer operations.
2022-04-19Switch to using std::function for target::data_padBoris Kolpackov10-52/+98
2022-04-19Optimize header cache some more by storing hash in keyBoris Kolpackov2-4/+42
2022-04-19Skip find() inside target_set::insert*() if target is unlikely to be thereBoris Kolpackov5-14/+39
2022-04-19Switch recipe from std::function to butl::move_only_function_exBoris Kolpackov5-45/+24
2022-04-19Cache "recipe is group_action" information, clear recipes after executionBoris Kolpackov4-12/+25
2022-04-18Avoid locking target set if in load phaseBoris Kolpackov5-30/+65
2022-04-15Tweak match progress display parametersBoris Kolpackov1-1/+1
2022-04-15Throttle progress display during matchBoris Kolpackov1-8/+31
2022-04-15Adjust small vector limit in process_libraries()Boris Kolpackov2-43/+86
2022-04-15Omit unnecessary clearing of cached base_scope valuesBoris Kolpackov3-2/+13
2022-04-15Get rid of target::dynamic_type() virtual functionBoris Kolpackov10-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-14Add header cache to cc::compile_rule::enter_header()Boris Kolpackov6-35/+202
2022-04-13Fix bug in previous commitBoris Kolpackov1-1/+1
2022-04-13Prune library graph traversal for recursively-binless librariesBoris Kolpackov3-57/+213
2022-04-13Add automatic interface dependency deduplication in cc::process_libraries()Boris Kolpackov3-18/+92
2022-04-13Cache target base scope lookupsBoris Kolpackov4-21/+84
2022-04-08Fix race in phase lock contention countingBoris Kolpackov3-9/+12
2022-04-08Register ad hoc rules for configure in addition to distBoris Kolpackov1-8/+12
2022-04-08Optimize update_during_match()Boris Kolpackov2-8/+17
2022-04-08Add phase switch contention to build statisticsBoris Kolpackov3-11/+40
2022-04-08Add hint-less rule match pass for non-perform meta-operations as fallbackBoris Kolpackov1-116/+143
2022-04-07Rename {match,execute}() to *_sync(), add *_complete()Boris Kolpackov14-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-06Get rid of stray trailing commasBoris Kolpackov1-6/+6
2022-04-06Work around Clang warningsBoris Kolpackov1-0/+4
2022-04-06Add support for specifying custom ad hoc pattern rule namesBoris Kolpackov2-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-06Add support for rule hintsBoris Kolpackov58-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-31Use own type information instead of dynamic_cast in target::is_a()Boris Kolpackov3-24/+35
2022-03-31Get rid of unnecessary dynamic_cast callBoris Kolpackov1-3/+5
2022-03-31Add missing init_process() call in regex unit testBoris Kolpackov1-0/+5
2022-03-30Infrastructure for library metadata supportBoris Kolpackov4-10/+335
2022-03-29Add variable_map::lookup_namespace(string) overloadBoris Kolpackov4-8/+14
2022-03-28Respect dry-run in Windows assembly creation logicBoris Kolpackov1-3/+8
2022-03-28Add ability to customize pkg-config header and library search pathsBoris Kolpackov6-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.