]> git.ipfire.org Git - thirdparty/make.git/commitdiff
Reconsider targets waiting for prerequisites. Fixes Savannah bug #37703.
authorPaul Smith <psmith@gnu.org>
Sat, 6 Apr 2013 14:29:20 +0000 (10:29 -0400)
committerPaul Smith <psmith@gnu.org>
Sat, 6 Apr 2013 14:29:20 +0000 (10:29 -0400)
ChangeLog
remake.c

index 8dc920a4cb835bda2239db0a55ec048ed57c29be..1318e5bb0fabeca19070b6cdce914902302997c9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-06  Paul Smith  <psmith@gnu.org>
+
+       * remake.c (check_dep): Reconsider files waiting on prerequisites,
+       as they may have finished.  Fixes Savannah bug #37703.
+
 2013-02-28  Paul Smith  <psmith@gnu.org>
 
        * function.c (func_realpath): On Solaris (at least) realpath() can
index 85102648cdda35d7f4242de92eb757bd711199ff..788d489f7cfecb87760d419a5729905c2474a2a4 100644 (file)
--- a/remake.c
+++ b/remake.c
@@ -1046,7 +1046,14 @@ check_dep (struct file *file, unsigned int depth,
              fresh.  It could be it was checked as part of an order-only
              prerequisite and so wasn't rebuilt then, but should be now.  */
           if (file->command_state != cs_running)
-            set_command_state (file, cs_not_started);
+            {
+              /* If the target was waiting for a dependency it has to be
+                 reconsidered, as that dependency might have finished.  */
+              if (file->command_state == cs_deps_running)
+                file->considered = !considered;
+
+              set_command_state (file, cs_not_started);
+            }
 
          ld = 0;
          d = file->deps;