From 8f8ab1e8f6d85748547c0d0e9987eed4f3c3e17b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 17 Apr 2015 15:08:05 +0200 Subject: Add support for target groups, use to handle obj/obja/objso object targets --- build/rule.cxx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'build/rule.cxx') diff --git a/build/rule.cxx b/build/rule.cxx index 884b28d..a9afe1b 100644 --- a/build/rule.cxx +++ b/build/rule.cxx @@ -102,20 +102,21 @@ namespace build // timestamp mt (dynamic_cast (t).mtime ()); - for (const prerequisite& p: t.prerequisites) + for (target* pt: t.prerequisites) { - target& pt (*p.target); - target_state ts (execute (a, pt)); + assert (pt != nullptr); // We don't skip anything. + + target_state ts (execute (a, *pt)); // If this is an mtime-based target, then compare timestamps. // - if (auto mpt = dynamic_cast (&pt)) + if (auto mpt = dynamic_cast (pt)) { timestamp mp (mpt->mtime ()); if (mt < mp) fail << "no recipe to " << diag_do (a, t) << - info << "prerequisite " << pt << " is ahead of " << t + info << "prerequisite " << *pt << " is ahead of " << t << " by " << (mp - mt); } else @@ -124,7 +125,7 @@ namespace build // if (ts == target_state::changed) fail << "no recipe to " << diag_do (a, t) << - info << "prerequisite " << pt << " is ahead of " << t + info << "prerequisite " << *pt << " is ahead of " << t << " because it was updated"; } } -- cgit v1.1