aboutsummaryrefslogtreecommitdiff
path: root/build2/test/init.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-01-09 15:40:05 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-01-09 15:40:05 +0200
commit1a46a0a1c3b0b463e13c46550998a3df1db0fdbe (patch)
treea0ac3a3d1bad08842fdc8d09a9978b722e8a813f /build2/test/init.cxx
parent9f5c4c1ae3bff517eefb39130287016514fb31c7 (diff)
Implement test.target variable
The plan is to use it for the portable path conversions.
Diffstat (limited to 'build2/test/init.cxx')
-rw-r--r--build2/test/init.cxx47
1 files changed, 30 insertions, 17 deletions
diff --git a/build2/test/init.cxx b/build2/test/init.cxx
index af83aea..f592568 100644
--- a/build2/test/init.cxx
+++ b/build2/test/init.cxx
@@ -37,25 +37,38 @@ namespace build2
// Enter module variables. Do it during boot in case they get assigned
// in bootstrap.build.
//
+ auto& vp (var_pool);
+
+ // Note: none are overridable.
+ //
+ // The test variable is a name which can be a path (with the
+ // true/false special values) or a target name.
+ //
+ vp.insert<name> ("test", variable_visibility::target);
+ vp.insert<name> ("test.input", variable_visibility::project);
+ vp.insert<name> ("test.output", variable_visibility::project);
+ vp.insert<name> ("test.roundtrip", variable_visibility::project);
+ vp.insert<strings> ("test.options", variable_visibility::project);
+ vp.insert<strings> ("test.arguments", variable_visibility::project);
+
+ // These are only used in testscript.
+ //
+ vp.insert<strings> ("test.redirects", variable_visibility::project);
+ vp.insert<strings> ("test.cleanups", variable_visibility::project);
+
+ // Test target platform.
+ //
+ // Unless already set, default test.target to build.host. Note that it
+ // can still be overriden by the user, e.g., in root.build.
+ //
{
- auto& v (var_pool);
+ value& v (
+ rs.assign (
+ vp.insert<target_triplet> (
+ "test.target", variable_visibility::project)));
- // Note: none are overridable.
- //
- // The test variable is a name which can be a path (with the
- // true/false special values) or a target name.
- //
- v.insert<name> ("test", variable_visibility::target);
- v.insert<name> ("test.input", variable_visibility::project);
- v.insert<name> ("test.output", variable_visibility::project);
- v.insert<name> ("test.roundtrip", variable_visibility::project);
- v.insert<strings> ("test.options", variable_visibility::project);
- v.insert<strings> ("test.arguments", variable_visibility::project);
-
- // These are only used in testscript.
- //
- v.insert<strings> ("test.redirects", variable_visibility::project);
- v.insert<strings> ("test.cleanups", variable_visibility::project);
+ if (!v || v.empty ())
+ v = cast<target_triplet> ((*global_scope)["build.host"]);
}
}