Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Significantly, the version::in_rule rule now track changes to the substitution
values.
|
|
Given test.in containing something along these lines:
foo = $foo$
Now we can do:
using in
file{test}: in{test.in}
file{test}: foo = FOO
The alternative variable substitution symbol can be specified with the
in.symbol variable and lax (instead of the default strict) mode with
in.substitution. For example:
file{test}: in.symbol = '@'
file{test}: in.substitution = lax
|
|
The inclusion/exclusion is controlled via the 'include' prerequisite-specific
variable. Valid values are:
false - exclude
true - include
adhoc - include but treat as an ad hoc input
For example:
lib{foo}: cxx{win32-utility}: include = ($cxx.targe.class == 'windows')
exe{bar}: libs{plugin}: include = adhoc
|
|
|
|
|
|
|
|
Instead we now have two more or less separate match states for outer and
inner parts of an action.
|
|
|
|
In the strict mode every substitution symbol is expected to start a
substitution with the double symbol (e.g., $$) serving as an
escape sequence.
In the lax mode a pair of substitution symbols is only treated as a
substitution if what's between them looks like a build2 variable
name (i.e., doesn't contain spaces, etc). Everything else,
including unterminated substitution symbols is copied as is. Note
also that in this mode the double symbol is not treated as an
escape sequence.
The lax mode is mostly useful when trying to reuse existing .in
files, for example from autoconf. Note, however, that the lax mode
is still stricter than the autoconf's semantics which also leaves
unknown substitutions as is.
|
|
Give this (legacy) version.h.in:
Can now do:
h{version}: in{version} file{$src_root/manifest}
h{version}: in.symbol = '@'
h{version}: FOO = $project.version
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also implement the build system version check.
|
|
|
|
|