path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
3 daysMake bash module install into bin/<project>.bash/ to avoid clashesBoris Kolpackov4-20/+57
Also, expect the first component in the import path to be full project name even in case it has the .bash extension.
8 daysAdd another overload of to_target(), declare in functions-name.hxxBoris Kolpackov3-6/+44
8 daysAdd search_new() and search_new_locked() variants of search()Boris Kolpackov4-10/+132
8 daysAdd in::rule::perform_update_{pre,post}() hooksBoris Kolpackov2-9/+41
Also fix bug in depdb line parsing.
11 daysAdd dynamic prerequisites to $< unless --adhoc is specifiedBoris Kolpackov8-30/+103
Also add a few tests for depdb-dyndep.
12 daysUse UTF-8 as default input/source charset for C/C++ compilationBoris Kolpackov1-27/+89
2022-01-11Work around VC14 bugBoris Kolpackov2-10/+2
2022-01-11Add note on MSVC warning C4819Boris Kolpackov1-0/+2
2022-01-10Add psapi.lib and iphlpapi.lib to list of Windows system librariesBoris Kolpackov1-0/+2
2022-01-10Consider implied targets when resolving dynamic dependenciesBoris Kolpackov2-7/+21
2022-01-06Add depdb-dyndep --update-{include,exclude} optionsBoris Kolpackov10-180/+504
These options specify prerequisite targets/patterns to include/exclude (from the static prerequisite set) for update during match as part of dynamic dependency extraction (those excluded will be updated during execute). For example: depdb dyndep ... --update-exclude libue{hello-meta} ... depdb dyndep ... --update-exclude libue{*} ... depdb dyndep ... --update-include $moc --update-include hxx{*} ... The order in which these options are specified is significant with the first target/pattern that matches determining the result. If only the --update-include options are specified, then only the explicitly included prerequisites will be updated. Otherwise, all prerequisites that are not explicitly excluded will be updated. If none of these options is specified, then all the static prerequisites are updated during match. Note also that these options do not apply to ad hoc prerequisites which are always updated during match.
2022-01-06Factor reusable code to target_key::effective_name()Boris Kolpackov4-47/+56
2021-12-17Add TODO commentBoris Kolpackov1-0/+5
2021-12-16Verify targets that alias same path are read-onlyBoris Kolpackov3-4/+121
2021-12-16Pass context to (meta-)operation hooksBoris Kolpackov7-31/+40
2021-12-16Don't consider implied existing targets in dyndep logicBoris Kolpackov2-9/+39
While considering implied targets should be harmless, the result is racy.
2021-12-15Return stable imported target name from import_direct()Boris Kolpackov5-30/+75
2021-12-14Clarify commentBoris Kolpackov1-3/+2
2021-12-14Clean .t file in ad hoc recipeBoris Kolpackov2-3/+21
2021-12-06Recognize absolute Windows paths in make parserBoris Kolpackov7-49/+111
2021-12-06Redo make_parser interface to return path, handle invalid_path exceptionBoris Kolpackov5-20/+27
2021-12-03Get rid of unused lambda capturesBoris Kolpackov1-1/+1
2021-12-03Add depdb-dyndep --drop-cycles optionBoris Kolpackov7-60/+107
2021-12-02Automatically register pattern rules for dist meta-operationBoris Kolpackov2-4/+33
We need to do this in order to inject additional pattern prerequisites which may "pull" additional sources into the distribution.
2021-12-02Add $root_directory(<path>) functionBoris Kolpackov1-1/+42
2021-12-02Add $relative(<path>,<dir-path>) functionBoris Kolpackov1-1/+66
2021-12-01Don't save test configuration variables to ~build2 configurationKaren Arutyunov1-11/+14
Also stop saving blank lines between groups of options.
2021-11-30Get rid of unused lambda capturesBoris Kolpackov1-4/+4
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