aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
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
2021-09-29Add notion of bundle amalgamation scopeBoris Kolpackov5-0/+58
2021-09-28Adapt to libbutl headers extension change from .mxx to .hxxKaren Arutyunov34-84/+84
2021-09-24Fortify tests against NDEBUGKaren Arutyunov12-10/+36
2021-09-21Add more libraries to list of Windows system librariesBoris Kolpackov1-0/+5
2021-09-20Add more libraries to list of Windows system librariesBoris Kolpackov1-2/+10
2021-09-20Add support for disabling clean through target-prerequisite relationshipBoris Kolpackov7-37/+59
Our current semantics is to clean any prerequisites that are in the same project (root scope) as the target and it may seem more natural to rather only clean prerequisites that are in the same base scope. While it's often true for simple projects, in more complex cases it's not unusual to have common intermediate build results (object files, utility libraries, etc) reside in the parent and/or sibling directories. With such arrangements, cleaning only in base (even from the project root) may leave such intermediate build results laying around (since there is no reason to list them as prerequisites of any directory aliases). So we clean in the root scope by default but now any target-prerequisite relationship can be marked not to trigger a clean with the clean=false prerequisite-specific value.
2021-09-20Improve MSVC /showIncludes output handlingBoris Kolpackov1-13/+35
2021-09-20Add netapi32.lib to the list of Windows system librariesBoris Kolpackov1-0/+1
2021-09-20Assign pre-defined semantics to config.<project>.develop variablesBoris Kolpackov6-45/+123
This variable allows a project to distinguish between development and consumption builds. While normally there is no distinction between these two modes, sometimes a project may need to provide additional functionality during development. For example, a source code generator which uses its own generated code in its implementation may need to provide a bootstrap step from the pre-generated code. Normally, such a step is only needed during development. See "Project Configuration" in the manual for details.