aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
2022-10-19Minor tweaks to target_lock passing semanticsBoris Kolpackov2-3/+9
This should also get rid of the bogus -Wdangling-pointer issued by GCC 12.
2022-10-19Add support for post hoc prerequisitesBoris Kolpackov13-136/+443
Unlike normal and ad hoc prerequisites, a post hoc prerequisite is built after the target, not before. It may also form a dependency cycle together with normal/ad hoc prerequisites. In other words, all this form of dependency guarantees is that a post hoc prerequisite will be built if its dependent target is built. See the NEWS file for details and an example.
2022-10-18Fix unexpected 'unterminated double-quoted sequence' script errorKaren Arutyunov11-54/+152
2022-10-18Add unexpected 'unterminated double-quoted sequence' error testscript ↵Karen Arutyunov2-0/+26
reproducers
2022-10-18Invent diag preamble for buildscriptKaren Arutyunov6-140/+354
2022-10-17Add pkg-config search tracingBoris Kolpackov1-2/+14
2022-10-17Tolerate case differences when looking for pkg-config filesBoris Kolpackov1-18/+26
2022-10-14Fix 'for [<attrs>] x: ...' to treat <attrs> as value attributesKaren Arutyunov8-57/+37
2022-10-14Make -w|--whitespace to be default for for-loopKaren Arutyunov1-1/+1
2022-10-14Fix printing test id multiple times on test failureKaren Arutyunov2-14/+44
2022-10-13Work around Clang 6, 7 codegen issuesBoris Kolpackov3-36/+28
2022-10-13Reorder functions to help MinGW GCC with DLL symbol exportingBoris Kolpackov1-8/+8
2022-10-13Fix bug in pkg-config metadata extraction logicBoris Kolpackov1-6/+9
2022-10-13Fix couple of corner cases in public/private variable modelBoris Kolpackov2-45/+49
2022-10-13Improve diagnosticsBoris Kolpackov1-0/+12
2022-10-13Add support for 'for' loop second (... | for x) and third (for x <...) forms ↵Karen Arutyunov33-403/+3104
in script
2022-10-13Optimize by going straight to public variable pool where applicableBoris Kolpackov15-61/+109
2022-10-13Add visibility, overridable variable attributesBoris Kolpackov3-11/+77
2022-10-13Switch to public/private variables modelBoris Kolpackov18-128/+275
Now unqualified variables are project-private and can be typified.
2022-10-11Factor variable patterns out of variable_pool into separate variable_patternsBoris Kolpackov6-94/+168
We have patterns only for the public variables pool.
2022-10-10Preparatory work for public/private variable distinctionBoris Kolpackov31-112/+357
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool().
2022-10-10Use term shared instead of global for scope, var pool, etcBoris Kolpackov4-30/+32
2022-10-05Check for `-`-spelled cl.exe options in addition to `/`-spelledBoris Kolpackov1-19/+29
2022-09-30Move integer and bool function to separate source/testscript filesBoris Kolpackov4-158/+202
2022-09-29Tighten low-verbosity diagnostics name deduction logicBoris Kolpackov3-4/+61
Specifically, don't try to derive low-verbosity name from what looks like an eval context of a function call.
2022-09-29Add $find(<sequence>, <value>), $find_index(<sequence>, <value>) functionsBoris Kolpackov4-2/+155
The $find() function returns true if the sequence contains the specified value. The $find_index() function returns the index of the first element in the sequence that is equal to the specified value or $size(<sequence>) if none is found. For string sequences, it's possible to request case- insensitive comparison with a flag.
2022-09-29Fix variable append logic in scriptBoris Kolpackov8-91/+105
2022-09-28Don't print true and false script builtins at verbosity level 2Karen Arutyunov1-1/+4
2022-09-28Add support for 'for' loop first form (for x:...) in scriptKaren Arutyunov11-103/+903
2022-09-28Add support for 'while' loop in scriptKaren Arutyunov23-298/+1040
2022-09-28Omit -l for binless libraries, metadata from common .pc fileBoris Kolpackov2-4/+26
Having -l options for binless (header-only) libraries makes it unusable from other build systems. But omitting them could make the metadata incomplete (for example, importable headers), so we omit that as well.
2022-09-28Add support for typed value subscriptBoris Kolpackov1-5/+37
2022-09-27List dbghelp and mincore as system Windows librariesBoris Kolpackov1-0/+2
2022-09-27List winhttp and powrprof as system Windows librariesBoris Kolpackov1-0/+2
2022-09-27Fix bug in handling of name patterns with trailing dotKaren Arutyunov1-1/+8
2022-09-27Allow search to find implied alias targetsBoris Kolpackov1-2/+7
Allowing this seems harmless since all the alias does is pull its prerequisites. And they are handy to use as metadata carriers.
2022-09-27Improve diagnostics for multiple targets sharing pathBoris Kolpackov1-3/+13
2022-09-23Add $is_a(<name>, <target-type>), $filter[_out](<names>, <target-types>) ↵Boris Kolpackov1-12/+118
functions $is_a() returns true if the <name>'s target type is-a <target-type>. Note that this is a dynamic type check that takes into account target type inheritance. $filter[_out]() return names with target types which are-a (filter) or not are-a (filter_out) one of <target-types>. In particular, these functions are useful for filtering prerequisite targets ($<) in ad hoc recipes and rules.
2022-09-22Add $integer_sequence(<begin>, <end>[, <step>]) functionBoris Kolpackov1-0/+31
It returns the list of uint64 integers starting from <begin> (including) to <end> (excluding) with the specified <step> or 1 if unspecified. For example: hdr = foo.hxx bar.hxx baz.hxx src = foo.cxx bar.cxx baz.cxx assert ($size($hdr) == $size($src)) "hdr and src expected to be parallel" for i: $integer_sequence(0, $size($hdr)) { h = ($hdr[$i]) s = ($src[$i]) ... }
2022-09-22Add support for hex notation for uint64 typeBoris Kolpackov3-13/+85
Specifically, now we can do: x = [uint64] 0x0000ffff cxx.poptions += "-DOFFSET=$x" # -DOFFSET=65535 cxx.poptions += "-DOFFSET=$string($x, 16)" # -DOFFSET=0xffff cxx.poptions += "-DOFFSET=$string($x, 16, 8)" # -DOFFSET=0x0000ffff Note that there is no hex notation support for the int64 (signed) type.
2022-09-21Add winrt Platform SDK header search path for MSVCBoris Kolpackov1-3/+4
This is required, for example, to build QtGui.
2022-09-21Fix regression in dynamic dependency extraction, byproduct modeBoris Kolpackov4-15/+43
2022-09-19Fix race between load and match phase logic in cc:search_library()Boris Kolpackov1-12/+25
2022-09-19Add target_lock::first to distinguish first lock of targetBoris Kolpackov3-11/+15
2022-09-19Allow computed variables in depdb preamble similar to impure functionsBoris Kolpackov4-10/+50
2022-09-16Register fallback dist meta-operation rule for out of project targetsBoris Kolpackov3-4/+18
The problematic scenario this fixes is an ad hoc pattern rule (which we register for dist in order to inject any additional sources; see parser.cxx for details) that pulls a tool imported from the system (say /usr/bin/xxd).
2022-09-13Add $builtin.concat(dir_path, dir_path) and $builtin.concat(dir_path, path) ↵Karen Arutyunov1-0/+10
overloads
2022-09-13Fix bug in handling of disabled recipes in ad hoc pattern rulesBoris Kolpackov1-3/+16
2022-09-12Add note on backlink=overwrite modeBoris Kolpackov1-1/+23
2022-09-12Do not treat primary ad hoc group member as group for variable lookupBoris Kolpackov3-4/+38
Note that we started with this semantics but it was changed in a commit on 2021-09-16 for reasons not entirely unclear but most likely due to target- specific variables specified for the group not being set on all the members. Which we have now addressed (see the previous commit). Note also that this new (old) semantics is not without its own drawbacks. Specifically, there is a bit of waste when the target-specific variable is really only meant for the recipe and thus setting it on all the members is unnecessary. For example: <{hxx ixx cxx}{options}>: cli{options} { options = ... } {{ # Use options. }} But this feels like a quality of implementation rather than conceptual issue. For example, we could likely one day address it by synthesizing a separate group target for ad hoc groups.