diff options
-rw-r--r-- | remake.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -211,7 +211,24 @@ update_file (file, depth) if (status != 0 && !keep_going_flag) return status; - commands_finished |= not_started && f->command_state == cs_finished; + switch (f->command_state) + { + case cs_finished: + commands_finished |= not_started; + break; + + case cs_running: + case cs_deps_running: + /* Don't run the other :: rules for this + file until this rule is finished. */ + return 0; + + default: + error ("internal error: `%s' command_state == %d in update_file_1", + f->name, (int) f->command_state); + abort (); + break; + } } /* For a top level target, if we have found nothing whatever to do for it, |