summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-11-05 11:22:40 -0800
committerAnas Nashif <anas.nashif@intel.com>2013-05-30 03:24:45 -0400
commit28ebed0ccf1ab630eea514d44e8ff18987b235ea (patch)
treeac3801dd168bff97672615ca3c2682d38d464c40
parentc6884ac05ee7d08fcfb2bf816bf5de62dbcdb214 (diff)
downloadmake-28ebed0ccf1ab630eea514d44e8ff18987b235ea.tar.gz
make-28ebed0ccf1ab630eea514d44e8ff18987b235ea.tar.bz2
make-28ebed0ccf1ab630eea514d44e8ff18987b235ea.zip
parallel build
-rw-r--r--remake.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/remake.c b/remake.c
index 27d2550..7fe5259 100644
--- a/remake.c
+++ b/remake.c
@@ -301,7 +301,7 @@ update_file (struct file *file, unsigned int depth)
/* Check for the case where a target has been tried and failed but
the diagnostics hasn't been issued. If we need the diagnostics
then we will have to continue. */
- if (!(f->updated && f->update_status > 0 && !f->dontcare && f->no_diag))
+ if (!(f->updated && f->update_status > 0 && !f->dontcare && f->no_diag) && f->command_state!=cs_not_started )
{
DBF (DB_VERBOSE, _("Pruning file `%s'.\n"));
return f->command_state == cs_finished ? f->update_status : 0;
@@ -614,6 +614,12 @@ update_file_1 (struct file *file, unsigned int depth)
d->file->dontcare = file->dontcare;
}
+ /* We may have already encountered this file earlier in the same
+ * pass before we knew we'd be updating this target. In that
+ * case calling update_file now would result in the file being
+ * inappropriately pruned so we toggle the considered bit back
+ * off first. */
+ d->file->considered = !considered;
dep_status |= update_file (d->file, depth);