aboutsummaryrefslogtreecommitdiff
path: root/build2/variable.cxx
AgeCommit message (Collapse)AuthorFilesLines
2017-08-03Issue diagnostics instead of asserting on variable type/visibility changeBoris Kolpackov1-6/+8
2017-07-31Experimental (and probably broken) pkg-config generation supportBoris Kolpackov1-1/+1
2017-06-26Make path value type to be base for dir_pathKaren Arutyunov1-2/+7
2017-05-01Add hxx extension for headersKaren Arutyunov1-3/+3
2017-03-07Specify config.test.output variableBoris Kolpackov1-0/+78
2017-02-13Add MT-safe variable_cache, use for variable overridesBoris Kolpackov1-0/+3
2017-02-13Track variable value modificationsBoris Kolpackov1-13/+9
2017-02-13Allow back overriding variables specified in buildfilesBoris Kolpackov1-4/+10
It is still not clear whether this is the right thing to allow, conceptually, but with this disallowed it's hard to test this functionality. Perhaps we should have an attribute [overridable]. The problem is one will also have to set this variable to some value (e.g., [null]) which is not exactly the same as undefined (especially when testing).
2017-02-13Redo variable pattern-typing to match in more specific orderBoris Kolpackov1-12/+57
2017-02-13Add load generation to global variable_map valuesBoris Kolpackov1-20/+57
2017-02-13Add global flag to variable_mapBoris Kolpackov1-1/+1
2017-02-13Add notion of load phase generationBoris Kolpackov1-3/+9
2017-02-13Implement pattern-based variable typing, tighten variable type updateBoris Kolpackov1-54/+129
2017-02-13Add notion of phase, enforceBoris Kolpackov1-9/+38
2017-02-13Add model mutex, make var_pool const by defaultBoris Kolpackov1-3/+22
2017-01-06Store platform targets as typed target_tripletBoris Kolpackov1-0/+45
2017-01-05Update copyright yearBoris Kolpackov1-1/+1
2016-11-30Add support for typed/untyped concatenated expansionBoris Kolpackov1-42/+26
2016-11-23Implement value type propagation on expansionBoris Kolpackov1-5/+68
Currently, we only propagate types of sole, unquoted expansions (variable, function call, or eval context), similar to NULL. To untypify the value, simply quote it.
2016-11-18Add function machinery, implement path.normalize()Boris Kolpackov1-32/+75
Note that multi-argument functions are not yet "callable" since there is no support for value packs.
2016-11-04Minor dependency cleanupBoris Kolpackov1-5/+0
2016-11-04Various design/implementation cleanupsBoris Kolpackov1-8/+15
2016-08-23Reverse empty simple values as an empty names sequence rather than empty nameBoris Kolpackov1-11/+16
This way we get: config.import.foo = Rather than: config.import.foo = {}
2016-08-23Don't complete empty abs_dir_pathBoris Kolpackov1-3/+6
The empty value is used as a special indicator
2016-08-22Cache process_path, use fallback search directory for binutilsBoris Kolpackov1-0/+98
2016-07-30Actualize project root directoriesBoris Kolpackov1-1/+1
This solves the problem of changing path spelling on platforms with case- insensitive filesystems. For example, you may build a project in the current working directory without specifying any paths. This means the current working directory will be used as the project's root. On Windows this could be C:\x. Now you are building another project that imports the above project and you specify config.import.x variable pointing to the above build. But you are lazy to type capital C so you spell it as config.import.x=c:\x. What happens now is the value from config.import.x is used as the project root. And now it is a different spelling compared to your original build. This is not a problem when the build system itself is concerned -- it is smart enough to use case-insensitive comparison. However, we often use roots to derive other things, say, -I options that we pass to compilers. And these options are normally no longer treated as (case-insensitive) paths. If they are hashed and the result stored in depdb, then we end up with rebuilds that are triggered by changes from C:\ to c:\.
2016-07-28Adjust to new path implementation, use to support reversibilityBoris Kolpackov1-13/+11
2016-07-20Switch to dynamic empty() implementation in variable valueBoris Kolpackov1-100/+69
The current model fell apart when we modified values directly.
2016-07-20Implement support for <, >, <=, >= in eval contextBoris Kolpackov1-0/+62
Now can write: if ($build.version > 30000)
2016-07-16Add support for prepend/append in target type/pattern-specific varsBoris Kolpackov1-11/+18
Semantically, these are similar to variable overrides and are essentially treated as "templates" that are applied on lookup to the "stem" value that is specific to the target type/name. For example: x = [string] a file{f*}: x =+ b sub/: { file{*}: x += c print $(file{foo}:x) # abc print $(file{bar}:x) # ac }
2016-07-01Port to MSVCKaren Arutyunov1-8/+7
2016-06-28Work around static initialization order issueBoris Kolpackov1-7/+22
value_traits<T>::value_type initialization is not constexpr in VC because of pointers to function template instantiations (which apparently are not constexpr).
2016-06-27Add config.bin.target var/hint, use to decide libso{} install modeBoris Kolpackov1-1/+1
Normally the user doesn't need to specify config.bin.target explicitly since the cxx module will hint it. We now also have the whole set of target's components: bin.target.{cpu,vendor,system,version,class}
2016-04-18Add support for using value attributes in eval contextBoris Kolpackov1-17/+41
For example: if ($x == [null]) Or: if ([uint64] 01 == [uint64] 1)
2016-04-11Redo config inheritance logicBoris Kolpackov1-2/+2
2016-04-11Add basic support for variable value inheritanceBoris Kolpackov1-3/+10
Currently, only abs_dir_path inherits from dir_path.
2016-04-11New configuration logic, iteration 1Boris Kolpackov1-0/+2
2016-04-09Tweak override logic WRT location of overridden valueBoris Kolpackov1-1/+2
2016-04-09Add abs_dir_path type, auto-complete if initialized from namesBoris Kolpackov1-0/+28
2016-04-06Fix NULL variable value assignment bugBoris Kolpackov1-18/+28
2016-04-04Implement value typing, null support via value attributesBoris Kolpackov1-25/+23
For example: v = [null] v = [string] abc v += ABC # abcABC
2016-04-01Get part of variable override implementationBoris Kolpackov1-0/+4
2016-03-31Clean up variable lookup interfacesBoris Kolpackov1-9/+7
2016-03-31Set part of variable override implementationBoris Kolpackov1-0/+40
2016-03-28Clean up variable usageBoris Kolpackov1-0/+79
2016-03-28New variable architectureBoris Kolpackov1-242/+362
2016-03-28Add support for pair representation reversibilityBoris Kolpackov1-27/+47
2016-02-12<types>/<utility> scheme cleanupBoris Kolpackov1-4/+1
2016-01-09Update copyright yearBoris Kolpackov1-1/+1
2016-01-05Rename build directory/namespace to build2Boris Kolpackov1-0/+452