diff options
author | Roland McGrath <roland@redhat.com> | 1992-10-25 06:16:09 +0000 |
---|---|---|
committer | Roland McGrath <roland@redhat.com> | 1992-10-25 06:16:09 +0000 |
commit | 815ee70d7dbb4f47b2ce040119f0c2e33654078a (patch) | |
tree | 3603fd07769d54170f3c24eb6b5bc49d225dac9a /remake.c | |
parent | 04b7426dfa74081baf2eb2025c5a0de5d5f3b5bd (diff) | |
download | gunmake-815ee70d7dbb4f47b2ce040119f0c2e33654078a.tar.gz |
Formerly remake.c.~37~
Diffstat (limited to 'remake.c')
-rw-r--r-- | remake.c | 52 |
1 files changed, 22 insertions, 30 deletions
@@ -195,26 +195,11 @@ update_file (file, depth) for (f = file; f != 0; f = f->prev) { - register struct dep *d; int not_started = f->command_state == cs_not_started; status |= update_file_1 (f, depth); check_renamed (f); - for (d = f->also_make; d != 0; d = d->next) - { - check_renamed (d->file); - d->file->command_state = f->command_state; - d->file->update_status = f->update_status; - d->file->updated = f->updated; - if (debug_flag) - { - print_spaces (depth); - printf ("File `%s' was also made by making `%s'.\n", - d->file->name, f->name); - } - } - if (status != 0 && !keep_going_flag) return status; @@ -552,8 +537,9 @@ update_file_1 (file, depth) return file->update_status; } -/* Set FILE's `updated' flag and re-check its mtime and the mtime's - of all files listed in its `also_make' member. */ +/* Set FILE's `updated' flag and re-check its mtime and the mtime's of all + files listed in its `also_make' member. Under -t, this function also + touches FILE. */ void notice_finished_file (file) @@ -604,19 +590,24 @@ notice_finished_file (file) file->last_mtime = 0; } - for (d = file->also_make; d != 0; d = d->next) - { - d->file->command_state = cs_finished; - d->file->updated = 1; - d->file->update_status = file->update_status; - - if (!d->file->phony) - /* Fetch the new modification time. - We do this instead of just invalidating the cached time - so that a vpath_search can happen. Otherwise, it would - never be done because the target is already updated. */ - (void) file_mtime (d->file); - } + if (file->update_status != -1) + /* We actually tried to update FILE, which has + updated its also_make's as well (if it worked). + If it didn't work, it wouldn't work again for them. + So mark them as updated with the same status. */ + for (d = file->also_make; d != 0; d = d->next) + { + d->file->command_state = cs_finished; + d->file->updated = 1; + d->file->update_status = file->update_status; + + if (!d->file->phony) + /* Fetch the new modification time. + We do this instead of just invalidating the cached time + so that a vpath_search can happen. Otherwise, it would + never be done because the target is already updated. */ + (void) f_mtime (d->file); + } } /* Check whether another file (whose mtime is THIS_MTIME) @@ -792,6 +783,7 @@ remake_file (file) } } + /* This does the touching under -t. */ notice_finished_file (file); } |