Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2023-12-03 | Make fsdir{} usable as target of ad hoc Buildscript recipes | Boris Kolpackov | 1 | -3/+33 | |
In particular, it can now be used to represent a directory symlink. For example: exe{hello}: ... fsdir{assets} fsdir{assets}: % update {{ ln -s $src_base/assets $out_base/assets }} % clean {{ rm $out_base/assets }} | |||||
2023-11-01 | Fix incorrect fsdir_rule::perform_update_direct() calls | Boris Kolpackov | 1 | -1/+1 | |
Also make fsdir_rule::perform_{update,clean}_direct() harder to misuse. | |||||
2023-11-01 | Add notion of match options | Boris Kolpackov | 1 | -1/+3 | |
Now, when matching a rule, the caller may request a subset of the full functionality of performing an operation on a target. This is achieved with match options. | |||||
2023-07-20 | Don't treat unmatched prerequisites as implicitly ad hoc | Boris Kolpackov | 1 | -4/+10 | |
It was surprising and inconvenient that they didn't end up in $<. Plus, such prerequisites can always be marked as ad hoc explicitly. | |||||
2023-07-20 | Consider unmatched prerequisites in updated_during_match() check | Boris Kolpackov | 1 | -3/+21 | |
2023-06-14 | Use dry_run_option instead of dry_run during match | Boris Kolpackov | 1 | -2/+2 | |
2023-06-12 | Hack around GCC 13 -Wdangling-reference false positives | Boris Kolpackov | 1 | -2/+3 | |
See GCC bugs 107532, 110213. | |||||
2023-06-01 | Add inner_recipe for expressiveness | Boris Kolpackov | 1 | -1/+1 | |
2023-06-01 | Resolve (but disable for now) target_count issue in resolve_members() | Boris Kolpackov | 1 | -0/+2 | |
2023-05-30 | Fix previous commits to work in C++14 | Boris Kolpackov | 1 | -2/+2 | |
2023-05-30 | Add support for fsdir{} dynamic prerequisites in the dyndep lines format | Boris Kolpackov | 1 | -19/+74 | |
This can be used to handle situations where the dynamic targets are placed into subdirectories. | |||||
2023-05-30 | Store dynamic group member types in depdb, use in clean | Boris Kolpackov | 1 | -42/+38 | |
2023-05-29 | Move old dynamic members cleanup from execute to apply | Boris Kolpackov | 1 | -31/+40 | |
2023-05-29 | New 'lines' dependency format in depdb-dyndep | Boris Kolpackov | 1 | -1/+43 | |
2023-05-29 | Extend special match_rule() logic to all groups with dynamic targets | Boris Kolpackov | 1 | -7/+5 | |
2023-05-29 | Explicit group: pattern members | Boris Kolpackov | 1 | -26/+31 | |
2023-05-29 | Explicit group: dynamic members | Boris Kolpackov | 1 | -80/+233 | |
2023-05-29 | Explicit group: static members | Boris Kolpackov | 1 | -70/+299 | |
2023-05-21 | Add support for dynamic target extraction in addition to prerequisites | Boris Kolpackov | 1 | -25/+202 | |
This functionality is enabled with the depdb-dyndep --dyn-target option. Only the make format is supported, where the listed targets are added as ad hoc group members (unless already specified as static members). This functionality is not available in the --byproduct mode. | |||||
2022-12-14 | Improve empty simple value to empty list of names reduction heuristics | Boris Kolpackov | 1 | -1/+1 | |
Specifically, do not reduce typed RHS empty simple values for prepend/append and additionally for assignment provided LHS is typed and is a container. | |||||
2022-11-18 | Fix incorrect diag builtin examples | Boris Kolpackov | 1 | -2/+2 | |
2022-11-18 | Complete low verbosity diagnostics rework | Boris Kolpackov | 1 | -16/+308 | |
2022-11-16 | Initial low verbosity diagnostics rework | Boris Kolpackov | 1 | -4/+4 | |
2022-10-18 | Invent diag preamble for buildscript | Karen Arutyunov | 1 | -32/+61 | |
2022-10-10 | Preparatory work for public/private variable distinction | Boris Kolpackov | 1 | -21/+19 | |
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool(). | |||||
2022-09-21 | Fix regression in dynamic dependency extraction, byproduct mode | Boris Kolpackov | 1 | -0/+10 | |
2022-09-07 | Fix fsdir{} handling corner cases in ad hoc buildscript recipes/rulesdist-remap | Boris Kolpackov | 1 | -3/+31 | |
2022-06-24 | Allow ad hoc rules not to list targets that are updated during match | Boris Kolpackov | 1 | -14/+21 | |
For example, this allows a Qt moc rule not to list generated headers from libQtCore since they are pre-generated by the library. | |||||
2022-04-19 | Use target recipe for auxiliary data storage during match-apply | Boris Kolpackov | 1 | -3/+19 | |
In particular, we now have separate auxiliary data storage for inner and outer operations. | |||||
2022-04-19 | Switch recipe from std::function to butl::move_only_function_ex | Boris Kolpackov | 1 | -30/+4 | |
2022-04-07 | Rename {match,execute}() to *_sync(), add *_complete() | Boris Kolpackov | 1 | -4/+2 | |
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-03-15 | Don't consider mtime of failed to unmatch prerequisite in ad hoc recipe | Boris Kolpackov | 1 | -3/+5 | |
2022-03-09 | Parallel implementation of update_during_match_prerequisites() | Boris Kolpackov | 1 | -2/+3 | |
2022-03-08 | Improve performance of update during match for multiple targets | Boris Kolpackov | 1 | -9/+5 | |
2022-03-08 | Add update=execute special value for cases where it's not default | Boris Kolpackov | 1 | -1/+1 | |
2022-03-07 | Add support for update=unmatch|match to ad hoc recipes | Boris Kolpackov | 1 | -11/+144 | |
2022-03-02 | Add update operation-specific variable with unmatch|match additional values | Boris Kolpackov | 1 | -8/+8 | |
Note that the unmatch (match but do not update) and match (update during match) values are only supported by certain rules (and potentially only for certain prerequisite types). Additionally: - All operation-specific variables are now checked for false as an override for the prerequisite-specific include value. In particular, this can now be used to disable a prerequisite for update, for example: ./: exe{test}: update = false - The cc::link_rule now supports the update=match value for headers and ad hoc prerequisites. In particular, this can be used to make sure all the library headers are updated before matching any of its (or dependent's) object files. | |||||
2022-02-16 | Invent quoting modes for to_stream(name) | Karen Arutyunov | 1 | -1/+1 | |
2022-01-18 | Add dynamic prerequisites to $< unless --adhoc is specified | Boris Kolpackov | 1 | -0/+2 | |
Also add a few tests for depdb-dyndep. | |||||
2022-01-06 | Add depdb-dyndep --update-{include,exclude} options | Boris Kolpackov | 1 | -135/+155 | |
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. | |||||
2021-12-14 | Clean .t file in ad hoc recipe | Boris Kolpackov | 1 | -3/+18 | |
2021-12-06 | Recognize absolute Windows paths in make parser | Boris Kolpackov | 1 | -2/+1 | |
2021-12-06 | Redo make_parser interface to return path, handle invalid_path exception | Boris Kolpackov | 1 | -2/+2 | |
2021-12-03 | Get rid of unused lambda captures | Boris Kolpackov | 1 | -1/+1 | |
2021-12-03 | Add depdb-dyndep --drop-cycles option | Boris Kolpackov | 1 | -33/+23 | |
2021-11-30 | Get rid of unused lambda captures | Boris Kolpackov | 1 | -4/+4 | |
2021-11-30 | Add support for dynamic dependencies as byproduct of script body | Boris Kolpackov | 1 | -64/+509 | |
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-28 | Avoid unnecessary work in depdb::close() if using static check_mtime() | Boris Kolpackov | 1 | -1/+1 | |
2021-11-28 | Generalize depdb::touch functionality to support custom timestamp | Boris Kolpackov | 1 | -1/+1 | |
2021-11-23 | Add support for dynamic dependencies in ad hoc Buildscript recipes | Boris Kolpackov | 1 | -215/+528 | |
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. |