summaryrefslogtreecommitdiff
path: root/remake.c
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2007-08-15 13:53:53 +0000
committerPaul Smith <psmith@gnu.org>2007-08-15 13:53:53 +0000
commit19b6504f8a92ec9db6330976dba85804e9c18d6e (patch)
tree77e2083b69f3e020f68260352c51f5f41832d10d /remake.c
parentbb4d040fadcb76a8828eaf24b4f0557ec11f44fb (diff)
downloadgunmake-19b6504f8a92ec9db6330976dba85804e9c18d6e.tar.gz
Incorporate Icarus Sparry's fix for 3330 and 15919, and test cases.
One of our translations disappeared from the translations site so remove it. The fdl.texi file was changed to not contain any @node entries, so add some around it in make.texi.
Diffstat (limited to 'remake.c')
-rw-r--r--remake.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/remake.c b/remake.c
index 6168d29..d1cf702 100644
--- a/remake.c
+++ b/remake.c
@@ -982,6 +982,12 @@ check_dep (struct file *file, unsigned int depth,
necessary, and see whether any of them is more recent than the
file on whose behalf we are checking. */
struct dep *lastd;
+ int deps_running = 0;
+
+ /* Reset this target's state so that we check it fresh. It could be
+ that it's already been checked as part of an order-only
+ prerequisite and so wasn't rebuilt then, but should be now. */
+ set_command_state (file, cs_not_started);
lastd = 0;
d = file->deps;
@@ -1020,14 +1026,17 @@ check_dep (struct file *file, unsigned int depth,
if (d->file->command_state == cs_running
|| d->file->command_state == cs_deps_running)
- /* Record that some of FILE's deps are still being made.
- This tells the upper levels to wait on processing it until
- the commands are finished. */
- set_command_state (file, cs_deps_running);
+ deps_running = 1;
lastd = d;
d = d->next;
}
+
+ if (deps_running)
+ /* Record that some of FILE's deps are still being made.
+ This tells the upper levels to wait on processing it until the
+ commands are finished. */
+ set_command_state (file, cs_deps_running);
}
}