Age | Commit message (Collapse) | Author | Files | Lines |
|
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:\.
|
|
|
|
The current model fell apart when we modified values directly.
|
|
Now can write:
if ($build.version > 30000)
|
|
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
}
|
|
|
|
value_traits<T>::value_type initialization is not constexpr in VC because
of pointers to function template instantiations (which apparently are not
constexpr).
|
|
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}
|
|
For example:
if ($x == [null])
Or:
if ([uint64] 01 == [uint64] 1)
|
|
|
|
Currently, only abs_dir_path inherits from dir_path.
|
|
|
|
|
|
|
|
|
|
For example:
v = [null]
v = [string] abc
v += ABC # abcABC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|