aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
2021-11-30Add support for dynamic dependencies as byproduct of script bodyBoris Kolpackov13-327/+1136
Specifically, the `depdb dyndep` builtin now has the --byproduct option (which must come first). In this mode only the --file input is supported. For example: obje{hello.o}: cxx{hello} {{ o = $path($>) t = $(o).t depdb dyndep --byproduct --what=header --default-type=h --file $t diag c++ ($<[0]) $cxx.path $cxx.poptions $cc.poptions $cc.coptions $cxx.coptions $cxx.mode -o $o -MD -MF $t -c $path($<[0]) }} Naturally, this mode does not support dynamic auto-generated prerequisites. If present, such prerequisites must be specified statically in the buildfile. Note also that the --default-prereq-type option has been rename to --default-type.
2021-11-30Add support for reopening depdbBoris Kolpackov2-16/+101
2021-11-29Fix bug in in::ruleBoris Kolpackov2-4/+4
2021-11-28Avoid unnecessary work in depdb::close() if using static check_mtime()Boris Kolpackov4-6/+8
2021-11-28Generalize depdb::touch functionality to support custom timestampBoris Kolpackov4-10/+34
2021-11-26Add $size(string), $size(path), and $size(dir_path) functionsBoris Kolpackov2-0/+16
2021-11-24Fix bug in attempt to allow calling cc module functions during matchBoris Kolpackov1-2/+2
2021-11-24Add ability to add extra depdb entries in in::ruleBoris Kolpackov2-6/+21
2021-11-24Allow calling cc module functions during matchBoris Kolpackov1-2/+8
An ad hoc recipe with dynamic dependency extraction (depdb-dyndep) executes its depdb preamble during match (but after matching all the prerequisites).
2021-11-23Fix multi-line comment parsing to accept trailing eos in place of newlineBoris Kolpackov1-6/+7
2021-11-23Add support for dynamic dependencies in ad hoc Buildscript recipesBoris Kolpackov29-1263/+4718
Specifically, add the new `depdb dyndep` builtin that can be used to extract dynamic dependencies from a program run or a file. For example: obje{hello.o}: cxx{hello} {{ s = $path($<[0]) depdb dyndep $cxx.poptions $cc.poptions --what=header --default-prereq-type=h -- $cxx.path $cxx.poptions $cc.poptions $cxx.mode -M -MG $s diag c++ ($<[0]) o = $path($>) $cxx.path $cxx.poptions $cc.poptions $cc.coptions $cxx.coptions $cxx.mode -o $o -c $s }} Currently only the `make` dependency format is supported.
2021-11-16Ignore (with warning) directory symlink cycles in bootstrap distBoris Kolpackov1-3/+44
2021-11-16Minor optimizations in cc::compile_ruleBoris Kolpackov1-5/+4
2021-11-09Suppress few unused variable warnings caused by NDEBUGBoris Kolpackov1-5/+10
While we normally don't bother, these specific cases cause failures in the ad hoc C++ recipe tests.
2021-11-08Incorporate derived target types into generated header logicBoris Kolpackov2-6/+37
2021-11-05Keep multiple prefixless entries for generated header mappingBoris Kolpackov3-36/+78
2021-11-04Do not apply install scope to update-for-install pre-operationBoris Kolpackov4-14/+39
2021-11-04Add $size() function to get size of sequence (names, strings, etc)Boris Kolpackov4-40/+82
2021-11-03Add line processing customization hook to in::ruleBoris Kolpackov7-141/+268
2021-11-02Add $sort() functionBoris Kolpackov4-1/+150
Available overloads: $sort(<names> [, <flags>]) $sort(<ints> [, <flags>]) $sort(<strings> [, <flags>]) $sort(<paths> [, <flags>]) $sort(<dir_paths> [, <flags>]) The following flag is supported by the all overloads: dedup - in addition to sorting also remove duplicates Additionally, the strings overload also support the following flag: icase - sort ignoring case Note that on case-insensitive filesystem the paths and dir_paths overload's order is case-insensitive.
2021-10-27Handle "common symbols" in symbol exporting .def generation ruleBoris Kolpackov1-15/+53
2021-10-26Add commentBoris Kolpackov1-2/+4
2021-10-21Add more entries to list of Windows system librariesBoris Kolpackov1-0/+2
2021-10-21Skip NULL entries in BMI's prerequisite_targets when looking for sourceBoris Kolpackov1-1/+1
Fixes GitHub issue #169.
2021-10-21Add build.progress global variable with --[no-]progress option valueBoris Kolpackov1-0/+11
2021-10-20Change to version 0.15.0-a.0.zBoris Kolpackov1-1/+1
2021-10-16Release version 0.14.0v0.14.0Boris Kolpackov1-1/+1
2021-10-16Skip regenerating .pc files during uninstallBoris Kolpackov2-2/+13
2021-10-16Improve info meta-operation not to print trailing spacesBoris Kolpackov1-8/+22
2021-10-15Allow explicit amalgamation by simple projectsBoris Kolpackov1-9/+8
2021-10-14Map latest to -std=c++2b from Clang 13, /std:c++20 from MSVC 16.11Boris Kolpackov1-17/+16
2021-10-14Use tidier pc and def names instead of generic gen for .pc and .def generationBoris Kolpackov2-2/+2
2021-10-14Disable re-parse of sole expansions in BuildscriptBoris Kolpackov6-12/+53
2021-10-14Pass along parse_names_result during script command parsingBoris Kolpackov4-28/+34
2021-10-14Add ability to detect sole expansion in parser::parse_names()Boris Kolpackov2-7/+15
2021-10-13Add --cwd|-t option to env pseudo-builtinKaren Arutyunov5-17/+87
2021-10-13Allow out-qualified names in $name.*() function familyBoris Kolpackov1-19/+36
2021-10-11Update Apple to vanilla Clang version mapping for Apple Clang 13.0.0Boris Kolpackov1-2/+5
2021-10-11Update bin.lib.version documentationBoris Kolpackov1-3/+0
2021-10-07Fix bug in internal scope logicBoris Kolpackov1-1/+1
2021-10-07Allow forcing installation of exe{} prerequisites of file targetsBoris Kolpackov3-3/+13
This can be achieved with prerequisite-specific install=true, for example: exe{foo}: exe{bar}: install = true # foo runs bar
2021-10-07Verify libraries and targets they are linked to a for-install-compatibleBoris Kolpackov10-11/+45
2021-10-07Minor install-related cleanupsBoris Kolpackov5-18/+43
2021-10-06Do not install exe{} prerequisites of file targetsBoris Kolpackov2-7/+18
2021-10-05Get rid of no longer necessary diagnosticsBoris Kolpackov1-38/+2
2021-10-04Document internal scope functionalityBoris Kolpackov1-1/+1
2021-10-04Optimize internal scope implementationBoris Kolpackov7-74/+68
2021-10-04Add support for treating specific libraries as always internalBoris Kolpackov5-8/+76
2021-10-01Add notion of internal scope, translate external -I to -isystem or equivalentBoris Kolpackov13-53/+552
2021-10-01Add missing return to scope::bundle_root()Boris Kolpackov1-0/+4