diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2012-02-26 22:32:48 (GMT) |
---|---|---|
committer | Peter Collingbourne <pcc03@doc.ic.ac.uk> | 2012-02-28 18:12:01 (GMT) |
commit | 3353e5508614598ff18592bda55f68a6223911cf (patch) | |
tree | 0f34480996f8942a120408fa5d31ea2798ecbc85 /src/clean.cc | |
parent | eab83e9774330a754e44ba023781e1c0a07d923f (diff) | |
download | Ninja-3353e5508614598ff18592bda55f68a6223911cf.zip Ninja-3353e5508614598ff18592bda55f68a6223911cf.tar.gz Ninja-3353e5508614598ff18592bda55f68a6223911cf.tar.bz2 |
Don't delete phony targets when cleaning a specified target
Also, modify Cleaner::CleanAll to use Edge::is_phony.
Diffstat (limited to 'src/clean.cc')
-rw-r--r-- | src/clean.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/clean.cc b/src/clean.cc index e09ab4e..2565c28 100644 --- a/src/clean.cc +++ b/src/clean.cc @@ -102,7 +102,7 @@ int Cleaner::CleanAll(bool generator) { for (vector<Edge*>::iterator e = state_->edges_.begin(); e != state_->edges_.end(); ++e) { // Do not try to remove phony targets - if ((*e)->rule_ == &State::kPhonyRule) + if ((*e)->is_phony()) continue; // Do not remove generator's files unless generator specified. if (!generator && (*e)->rule().generator()) @@ -123,12 +123,14 @@ int Cleaner::CleanAll(bool generator) { } void Cleaner::DoCleanTarget(Node* target) { - if (target->in_edge()) { - Remove(target->path()); - if (target->in_edge()->HasRspFile()) - Remove(target->in_edge()->GetRspFile()); - for (vector<Node*>::iterator n = target->in_edge()->inputs_.begin(); - n != target->in_edge()->inputs_.end(); + if (Edge* e = target->in_edge()) { + // Do not try to remove phony targets + if (!e->is_phony()) { + Remove(target->path()); + if (e->HasRspFile()) + Remove(e->GetRspFile()); + } + for (vector<Node*>::iterator n = e->inputs_.begin(); n != e->inputs_.end(); ++n) { DoCleanTarget(*n); } |