register int status = 0;
register struct file *f;
unsigned int ofiles_remade = files_remade;
- int commands_finished = 0;
for (f = file; f != 0; f = f->prev)
{
- int not_started = f->command_state == cs_not_started;
-
status |= update_file_1 (f, depth);
check_renamed (f);
switch (f->command_state)
{
case cs_finished:
- commands_finished |= not_started;
+ /* The file is done being remade. */
break;
case cs_running:
/* For a top level target, if we have found nothing whatever to do for it,
print a message saying nothing needs doing. */
- if (status == 0 && files_remade == ofiles_remade
- && commands_finished && depth == 0 && !silent_flag && !question_flag)
+ /* Give a message iff updated successfully, and never under -s or -q. */
+ if (status == 0 && !silent_flag && !question_flag
+ /* files_remade will have been incremented iff we actually
+ ran any commands (under -n, if we would have). */
+ && files_remade == ofiles_remade
+ /* Only give the diagnostic for top-level targets.
+ The makefile chain run is done with DEPTH==1 precisely
+ to avoid this message. */
+ && depth == 0)
{
if (file->phony || file->cmds == 0)
message ("Nothing to be done for `%s'.", file->name);