aboutsummaryrefslogtreecommitdiff
path: root/build2/version/init.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/version/init.cxx')
-rw-r--r--build2/version/init.cxx36
1 files changed, 29 insertions, 7 deletions
diff --git a/build2/version/init.cxx b/build2/version/init.cxx
index c0ce4cd..69d7401 100644
--- a/build2/version/init.cxx
+++ b/build2/version/init.cxx
@@ -272,15 +272,37 @@ namespace build2
}
}
- // Enter variables. Note: some overridable, some not.
+ // Enter variables.
//
- auto& vp (var_pool.rw (rs));
+ {
+ auto& vp (var_pool.rw (rs));
- // Alternative variable substitution symbols.
- //
- // @@ Note: should be moved to the 'in' module once we have it.
- //
- m.in_symbol = &vp.insert<string> ("in.symbol");
+ // @@ Note: these should be moved to the 'in' module once we have it.
+ //
+
+ // Alternative variable substitution symbol.
+ //
+ m.in_symbol = &vp.insert<string> ("in.symbol");
+
+ // Substitution mode. Valid values are 'strict' (default) and 'lax'.
+ // 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.
+ //
+ m.in_substitution = &vp.insert<string> ("in.substitution");
+ }
// Register rules.
//