aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
2022-03-08Add update=execute special value for cases where it's not defaultBoris Kolpackov3-4/+6
2022-03-07Fix operation-specific variables logic for inner/outer operationsBoris Kolpackov6-23/+52
2022-03-07Add support for update=unmatch|match to ad hoc recipesBoris Kolpackov9-47/+214
2022-03-04Convert stream names to lower case in documentationKaren Arutyunov2-7/+7
2022-03-02Add update operation-specific variable with unmatch|match additional valuesBoris Kolpackov24-148/+395
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-21Factor process-wide initialization to init_process() functionBoris Kolpackov6-4/+105
2022-02-21Ban module names that start with underscoreBoris Kolpackov2-3/+9
2022-02-21Factor additional logic to parse_cmdline()Boris Kolpackov2-5/+90
2022-02-18Factor out common CLI types (scanners, etc)Karen Arutyunov20-2901/+1888
2022-02-18Move parse_cmdline() to libbuild2Karen Arutyunov9-9/+4347
2022-02-17Add support for cheaply starting parallel scheduler pre-tuned to serialBoris Kolpackov3-15/+43
2022-02-17Add build.mode global variableBoris Kolpackov1-0/+12
This value signals any special mode the build system may be running in. The two core modes are `no-external-modules` (bootstrapping of external modules is disabled) and `normal` (normal build system execution). Build system drivers may invent additional modes (for example, the bpkg `skeleton` mode that is used to evaluate depends clauses).
2022-02-16Invent quoting modes for to_stream(name)Karen Arutyunov10-35/+86
2022-02-16Get rid of stray variableBoris Kolpackov1-2/+0
2022-02-16Add pre/post hooks to load_root()Boris Kolpackov2-2/+22
2022-02-15Fix stray logic where libue{} was still considered member of libul{}Boris Kolpackov1-10/+27
Fixes GitHub issue #179.
2022-02-15Diagnose various misuses of library metadata protocolBoris Kolpackov4-8/+28
2022-02-14Add parser::parse_eval() public API functionBoris Kolpackov2-12/+62
2022-02-14Add ability to override amalgamation and subprojects in bootstrap_src()Boris Kolpackov2-3/+41
2022-02-14Factor reusable code to contex::enter_project_overrides()Boris Kolpackov2-0/+68
2022-02-11Remove unnecessary header inclusionsBoris Kolpackov5-5/+8
2022-02-10Add note on GNU ar deprecating -T in favor of --thinBoris Kolpackov1-0/+3
2022-02-10Make few global types separately constructible/initializableBoris Kolpackov6-7/+28
2022-02-10Fix issue with string::assign() call without third argumentBoris Kolpackov1-1/+1
2022-02-10Reorder inline function definition to help with MinGW GCC symbol exportBoris Kolpackov2-28/+32
2022-02-09Adapt version module to package dependency new representation syntaxKaren Arutyunov2-44/+86
2022-02-09Fix issue with implicit size_t to meta_operation_id conversionBoris Kolpackov1-9/+13
2022-02-09Add dyndep_rule::inject_group_member()Boris Kolpackov2-1/+69
2022-02-09Don't use fallback file_rule to clean real targetsBoris Kolpackov3-3/+22
2022-02-09Improve commentsBoris Kolpackov1-3/+6
2022-02-09Don't skip empty see-through target groupsBoris Kolpackov3-38/+34
2022-02-09Add perform_clean_group_extra()Boris Kolpackov2-123/+151
2022-02-09Add read-only mode to depdbBoris Kolpackov3-58/+98
2022-02-07Add support for meta-operation wildcard in scope::insert_rule()Boris Kolpackov2-1/+31
2022-02-07Make match_inc_dependents() part of public APIBoris Kolpackov3-5/+10
2022-02-07Use target::as instead of static_cast everywhereBoris Kolpackov3-8/+8
2022-02-02Work around issue in older Clang versionsBoris Kolpackov1-0/+2
2022-02-02Redo diagnostics without operator<< in namespace stdBoris Kolpackov7-113/+103
2022-01-26Make 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.
2022-01-21Add another overload of to_target(), declare in functions-name.hxxBoris Kolpackov3-6/+44
2022-01-21Add search_new() and search_new_locked() variants of search()Boris Kolpackov4-10/+132
2022-01-20Add in::rule::perform_update_{pre,post}() hooksBoris Kolpackov2-9/+41
Also fix bug in depdb line parsing.
2022-01-18Add dynamic prerequisites to $< unless --adhoc is specifiedBoris Kolpackov8-30/+103
Also add a few tests for depdb-dyndep.
2022-01-17Use 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