aboutsummaryrefslogtreecommitdiff
path: root/build/target.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-11-29 14:31:00 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-11-29 14:31:00 +0200
commitb1d778b2303c3dcb3f70e4b29a0a9bcba72c11d6 (patch)
treec300eebf51f2f72d37bfea48114ffcefedc61fc5 /build/target.ixx
parent15d7a706a5f6904a4f295b5cddd7cbd51b04e863 (diff)
Allow for target group members to remain unresolved
This, for example, can happen when we have a fallback rule for dist(update) or configure(update).
Diffstat (limited to 'build/target.ixx')
-rw-r--r--build/target.ixx15
1 files changed, 12 insertions, 3 deletions
diff --git a/build/target.ixx b/build/target.ixx
index 3ae9660..3d48904 100644
--- a/build/target.ixx
+++ b/build/target.ixx
@@ -57,17 +57,26 @@ namespace build
}
template <typename T>
- inline void prerequisite_members_range<T>::iterator::
+ inline bool prerequisite_members_range<T>::iterator::
switch_members ()
{
- j_ = 1;
-
do
{
g_ = resolve_group_members (r_->a_, search (*i_));
+
+ // If members are not know, iterate over the group as itself.
+ //
+ if (g_.members == nullptr)
+ {
+ g_.count = 0;
+ return false;
+ }
}
while (g_.count == 0 && // Skip empty groups.
++i_ != r_->e_ &&
i_->get ().type.see_through);
+
+ j_ = 1; // Start from the first group member.
+ return true;
}
}