diff options
-rw-r--r-- | libbuild2/algorithm.hxx | 5 | ||||
-rw-r--r-- | libbuild2/algorithm.ixx | 6 |
2 files changed, 7 insertions, 4 deletions
diff --git a/libbuild2/algorithm.hxx b/libbuild2/algorithm.hxx index 33bc624..2a07acf 100644 --- a/libbuild2/algorithm.hxx +++ b/libbuild2/algorithm.hxx @@ -343,8 +343,9 @@ namespace build2 // The standard prerequisite search and match implementations. They call // search() (unless a custom is provided) and then match() (unless custom // returned NULL) for each prerequisite in a loop omitting out of project - // prerequisites for the clean operation. If this target is a member of a - // group, then first do this to the group's prerequisites. + // prerequisites for the clean operation unless the target is an alias. If + // the target is a member of a group, then first do this to the group's + // prerequisites. // using match_search = function< prerequisite_target (action, diff --git a/libbuild2/algorithm.ixx b/libbuild2/algorithm.ixx index d75ad16..9d77d61 100644 --- a/libbuild2/algorithm.ixx +++ b/libbuild2/algorithm.ixx @@ -498,14 +498,16 @@ namespace build2 a, t, ms, - (a.operation () != clean_id ? nullptr : &t.root_scope ())); + (a.operation () != clean_id || t.is_a<alias> () + ? nullptr + : &t.root_scope ())); } inline void match_prerequisite_members (action a, target& t, const match_search_member& msm) { - if (a.operation () != clean_id) + if (a.operation () != clean_id || t.is_a<alias> ()) match_prerequisite_members (a, t, msm, nullptr); else { |