summaryrefslogtreecommitdiff
blob: 77c5587ebea46f0cd3e736c19f8236e434e69300 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Patch by Kamil Mierzejewski and Jeremy Devenport to fix parallel
build issues present in GNU make 3.82

diff -u make-3.82-orig/remake.c make-3.82/remake.c
--- make-3.82-orig/remake.c	2010-07-13 03:20:42.000000000 +0200
+++ make-3.82/remake.c	2012-03-21 12:47:52.000000000 +0100
@@ -301,7 +301,7 @@
       /* 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 @@
                 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);