diff options
Diffstat (limited to 'build2/cc/install-rule.cxx')
-rw-r--r-- | build2/cc/install-rule.cxx | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/build2/cc/install-rule.cxx b/build2/cc/install-rule.cxx index 0fdb98b..e74104c 100644 --- a/build2/cc/install-rule.cxx +++ b/build2/cc/install-rule.cxx @@ -107,14 +107,18 @@ namespace build2 // // Note: for now we assume bmi*{} never come from see-through groups. // - if (p.is_a<bmi> () || p.is_a (compile_types (ot).bmi)) + bool g (false); + if (p.is_a<bmi> () || (g = p.is_a (compile_types (ot).bmi))) { - // This is tricky: we need to "look" inside groups for mxx{} but if - // found, remap to the group, not member. - // + if (g) + resolve_group (a, *pt); + for (prerequisite_member pm: group_prerequisite_members (a, *pt, members_mode::maybe)) { + // This is tricky: we need to "look" inside groups for mxx{} but if + // found, remap to the group, not member. + // if (pm.is_a (*x_mod)) { pt = t.is_a<exe> () @@ -304,8 +308,12 @@ namespace build2 return pt; } - if (p.is_a<bmi> () || p.is_a (compile_types (ot).bmi)) + bool g (false); + if (p.is_a<bmi> () || (g = p.is_a (compile_types (ot).bmi))) { + if (g) + resolve_group (a, *pt); + for (prerequisite_member pm: group_prerequisite_members (a, *pt, members_mode::maybe)) { |