aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/variable.cxx
AgeCommit message (Collapse)AuthorFilesLines
2022-10-10Preparatory work for public/private variable distinctionBoris Kolpackov1-1/+95
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 Kolpackov1-7/+7
2022-09-22Add support for hex notation for uint64 typeBoris Kolpackov1-12/+30
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-07-07Use new cmdline type for canned command lines in {Build,Test}scriptBoris Kolpackov1-0/+132
2022-06-03Reset value::extra on variable_map value change/version incrementBoris Kolpackov1-1/+7
The reset on each modification semantics is used to implement the default value distinction as currently done in the config module but later probably will be done for ?= and $origin().
2022-05-22Add support for variable patterns in config.config.disfigureBoris Kolpackov1-0/+8
2022-03-02Add update operation-specific variable with unmatch|match additional valuesBoris Kolpackov1-1/+1
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-01-06Factor reusable code to target_key::effective_name()Boris Kolpackov1-33/+2
2021-09-28Adapt to libbutl headers extension change from .mxx to .hxxKaren Arutyunov1-1/+1
2021-09-02Don't consider aliasing in variable override lookupBoris Kolpackov1-2/+3
2021-07-23Reserve variable names/components that start with underscore to build2 coreBoris Kolpackov1-3/+3
2021-05-28Add support for regex-based target type/pattern specific variablesBoris Kolpackov1-14/+81
This is in addition to the already supported path-based target type/pattern specific variables. For example: hxx{*}: x = y # path-based hxx{~/.*/}: x = y # regex-based
2021-05-28Ban conversion of patterns to valuesBoris Kolpackov1-47/+54
Also improve conversion diagnostic.
2021-05-28Tie loose ends in target type/pattern-specific matchingBoris Kolpackov1-5/+56
2021-05-28Make notion of name pattern explicit, fix various related loose endsBoris Kolpackov1-2/+1
2021-04-20Detect environment changes in ad hoc recipesBoris Kolpackov1-3/+24
2021-04-04Add base functionality for hermetic build configurationshermeticBoris Kolpackov1-0/+8
2021-02-09Minor simplificationBoris Kolpackov1-2/+2
2021-01-30Add std::{map, multimap} to types.hxxBoris Kolpackov1-5/+5
Seeing that std::map is becoming a common Buildfile variable type.
2021-01-28Make std::map prepend (=+) overriding (like insert_or_assign())Boris Kolpackov1-0/+6
2021-01-22Add support for optional pair halves in variable valuesBoris Kolpackov1-0/+12
2020-11-11Make value_traits<bool>::convert() non-modifyingBoris Kolpackov1-1/+1
2020-08-24Add copying version of convert<T>(value)Boris Kolpackov1-0/+18
2020-08-12Add int64 and int64s variable typesBoris Kolpackov1-0/+49
2020-06-09Make metadata variable prefix mandatoryBoris Kolpackov1-4/+1
While we could automatically set it if the target is imported, there is nothing we can do if the target is used in the same project. So to avoid confusion we make it mandatory.
2020-06-03Fix $process.run() to properly handle proces_path_exKaren Arutyunov1-1/+14
2020-06-03Allow process path values and targets as buildscript program namesKaren Arutyunov1-0/+2
Also deduce the recipe name.
2020-06-02Add process_path_ex with program stable name and checksumBoris Kolpackov1-25/+197
2020-06-01Extend target metadata to include variable prefix, stable nameBoris Kolpackov1-0/+3
2020-05-27Add support for value subscript after expansionsBoris Kolpackov1-1/+7
Value subscript is only recognized in evaluation contexts (due to ambiguity with wildcard patterns; consider: $x[123].txt) and should be unseparated from the previous token. For example: x = ($y[1]) x = (($f ? $y : $z)[1]) x = ($identity($y)[$z])
2020-03-31Switch to project variable visibility by defaultBoris Kolpackov1-8/+35
2020-03-18Cleanup variable type/visibility/overridability logicBoris Kolpackov1-17/+17
2020-03-18Fix variable pattern merging logicBoris Kolpackov1-12/+31
2020-03-18Add $visibility(<variable>) function for querying variable visibilityBoris Kolpackov1-9/+9
2020-03-17Rename all find*(variable) to lookup*(variable)Boris Kolpackov1-4/+4
Now we consistently use term "lookup" for variable value lookup. At some point we should also rename type lookup to binding and get rid of all the lookup_type aliases.
2020-02-07Drop copyright notice from source codeKaren Arutyunov1-1/+0
2019-11-12Add support for vector<pair<K, V>> variable valuesBoris Kolpackov1-1/+5
2019-10-22Rename global_mutex_shards to global_mutexesBoris Kolpackov1-2/+2
2019-10-22Move global mutex shards to contextBoris Kolpackov1-7/+7
2019-10-01Adapt to moving path match to path-pattern.?xxKaren Arutyunov1-1/+1
2019-10-01Adapt to swapping of entry and pattern parameters in butl::path_match()Karen Arutyunov1-1/+1
2019-08-23Introduce notion of build contextBoris Kolpackov1-7/+5
All non-const global state is now in class context and we can now have multiple independent builds going on at the same time.
2019-08-21Cleanup context.hxx and its usageBoris Kolpackov1-1/+0
2019-07-01Split build system into library and driverBoris Kolpackov1-0/+1533