aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build2/install/rule.cxx3
-rw-r--r--build2/target5
-rw-r--r--build2/target.cxx2
3 files changed, 6 insertions, 4 deletions
diff --git a/build2/install/rule.cxx b/build2/install/rule.cxx
index 82dde04..68000af 100644
--- a/build2/install/rule.cxx
+++ b/build2/install/rule.cxx
@@ -273,8 +273,7 @@ namespace build2
{
// The target can be in out or src.
//
- const dir_path& d (
- (t.out.empty () ? t.dir : t.out).leaf (p->out_path ()));
+ const dir_path& d (t.out_dir ().leaf (p->out_path ()));
// Add it as another leading directory rather than modifying
// the last one directly; somehow, it feels right.
diff --git a/build2/target b/build2/target
index 3123905..8c2b2da 100644
--- a/build2/target
+++ b/build2/target
@@ -149,6 +149,9 @@ namespace build2
const string name;
const string* ext; // Extension. NULL - unspecified, empty - no extension.
+ const dir_path&
+ out_dir () const {return out.empty () ? dir : out;}
+
// Target group to which this target belongs, if any. Note that we assume
// that the group and all its members are in the same scope (for example,
// in variable lookup). We also don't support nested groups (with a small
@@ -308,7 +311,7 @@ namespace build2
bool
in (const scope& s) const
{
- return (out.empty () ? dir : out).sub (s.out_path ());
+ return out_dir ().sub (s.out_path ());
}
// Prerequisites.
diff --git a/build2/target.cxx b/build2/target.cxx
index 540f4b4..3b6e06f 100644
--- a/build2/target.cxx
+++ b/build2/target.cxx
@@ -110,7 +110,7 @@ namespace build2
// If this target is from the src tree, use its out directory to find
// the scope.
//
- return scopes.find (out.empty () ? dir : out);
+ return scopes.find (out_dir ());
}
scope& target::