aboutsummaryrefslogtreecommitdiff
path: root/build2/install/rule.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-03-28 09:14:31 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-03-28 16:03:35 +0200
commit3ce44330cca9dbc4314feebb27403ebc3175b6c2 (patch)
tree8c1f27442f3b2dafaec3ba50baaca3d5fd63dca7 /build2/install/rule.cxx
parent9d0d078ff297138622cd2f3f1076f5984395e42b (diff)
New variable architecture
Diffstat (limited to 'build2/install/rule.cxx')
-rw-r--r--build2/install/rule.cxx29
1 files changed, 16 insertions, 13 deletions
diff --git a/build2/install/rule.cxx b/build2/install/rule.cxx
index 6933828..89463f8 100644
--- a/build2/install/rule.cxx
+++ b/build2/install/rule.cxx
@@ -31,7 +31,7 @@ namespace build2
if (!l)
return nullptr;
- const dir_path& r (as<dir_path> (*l));
+ const dir_path& r (cast<dir_path> (*l));
return r.simple () && r.string () == "false" ? nullptr : &r;
}
@@ -64,7 +64,7 @@ namespace build2
//
auto l (pt["install"]);
- if (l && as<dir_path> (*l).string () == "false")
+ if (l && cast<dir_path> (*l).string () == "false")
{
l5 ([&]{trace << "ignoring " << pt;});
continue;
@@ -148,7 +148,7 @@ namespace build2
// See if the user instructed us not to install it.
//
auto l ((*pt)["install"]);
- if (l && as<dir_path> (*l).string () == "false")
+ if (l && cast<dir_path> (*l).string () == "false")
continue;
build2::match (a, *pt);
@@ -216,10 +216,13 @@ namespace build2
struct install_dir
{
+ // @@ Why do we copy these? Why not just point to the values in vars?
+ //
+
dir_path dir;
string sudo;
string cmd; //@@ VAR type
- const_strings_value options {nullptr};
+ strings options;
string mode;
string dir_mode;
};
@@ -239,7 +242,7 @@ namespace build2
args.push_back (base.cmd.c_str ());
args.push_back ("-d");
- if (base.options.d != nullptr) //@@ VAR
+ if (!base.options.empty ())
append_options (args, base.options);
args.push_back ("-m");
@@ -285,7 +288,7 @@ namespace build2
args.push_back (base.cmd.c_str ());
- if (base.options.d != nullptr) //@@ VAR
+ if (!base.options.empty ())
append_options (args, base.options);
args.push_back ("-m");
@@ -355,11 +358,11 @@ namespace build2
//
if (var != nullptr)
{
- if (auto l = s[*var + ".sudo"]) r.sudo = as<string> (*l);
- if (auto l = s[*var + ".cmd"]) r.cmd = as<string> (*l);
- if (auto l = s[*var + ".mode"]) r.mode = as<string> (*l);
- if (auto l = s[*var + ".dir_mode"]) r.dir_mode = as<string> (*l);
- if (auto l = s[*var + ".options"]) r.options = as<strings> (*l);
+ if (auto l = s[*var + ".sudo"]) r.sudo = cast<string> (*l);
+ if (auto l = s[*var + ".cmd"]) r.cmd = cast<string> (*l);
+ if (auto l = s[*var + ".mode"]) r.mode = cast<string> (*l);
+ if (auto l = s[*var + ".dir_mode"]) r.dir_mode = cast<string> (*l);
+ if (auto l = s[*var + ".options"]) r.options = cast<strings> (*l);
}
// Set defaults for unspecified components.
@@ -400,12 +403,12 @@ namespace build2
//
install_dir d (
resolve (t.base_scope (),
- as<dir_path> (*t["install"]))); // We know it's there.
+ cast<dir_path> (*t["install"]))); // We know it's there.
// Override mode if one was specified.
//
if (auto l = t["install.mode"])
- d.mode = as<string> (*l);
+ d.mode = cast<string> (*l);
install (d, ft);
return (r |= target_state::changed);