aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
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 Kolpackov6-199/+199
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 Kolpackov18-145/+286
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 Kolpackov9-126/+291
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 Kolpackov2-7/+8
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 Kolpackov2-1/+14
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 Kolpackov13-137/+160
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 Kolpackov54-249/+633
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 Kolpackov5-11/+58
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-25Store bin.whole flag in pkg-config filesBoris Kolpackov2-14/+47
2022-03-23Add note on disfig.* variables ideaBoris Kolpackov1-0/+16
2022-03-23Make project configuration variables non-nullable by defaultBoris Kolpackov1-4/+46
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-23Clarify config::save_*_omitted semanticsBoris Kolpackov1-5/+12
2022-03-22Add ability to disfigure specific configuration variablesBoris Kolpackov1-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