From db7633eac4fc8bd6b797cc21220f8d2696f48514 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 20 Aug 1992 18:10:20 +0000 Subject: Formerly remake.c.~32~ --- remake.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'remake.c') diff --git a/remake.c b/remake.c index ee92d14..5714c81 100644 --- a/remake.c +++ b/remake.c @@ -35,7 +35,7 @@ extern int try_implicit_rule (); /* Incremented when a file has been remade. */ static unsigned int files_remade = 0; -static int update_file (), update_file_1 (), check_dep (); +static int update_file (), update_file_1 (), check_dep (), touch_file (); static void remake_file (); static time_t name_mtime (), library_file_mtime (); extern time_t f_mtime (); @@ -559,6 +559,22 @@ notice_finished_file (file) ++files_remade; + if (touch_flag + /* The update status will be: + -1 if no commands were run; + 0 if some commands (+ or ${MAKE}) were run and won; + 1 if some commands were run and lost. + The only time we don't want to touch the target is if + it had some recursive commands, and they lost. */ + && file->update_status != 1) + { + if (file->phony) + file->update_status = 0; + else + /* Should set file's modification date and do nothing else. */ + file->update_status = touch_file (file); + } + if (!file->phony) { if (just_print_flag || question_flag @@ -660,7 +676,7 @@ check_dep (file, depth, this_mtime, must_make_ptr) return dep_status; } -/* Touch FILE. Return zero if successful, nonzero if not. */ +/* Touch FILE. Return zero if successful, one if not. */ #define TOUCH_ERROR(call) return (perror_with_name (call, file->name), 1) @@ -749,15 +765,7 @@ remake_file (file) { chop_commands (file->cmds); - if (touch_flag && !file->cmds->any_recurse) - { - if (file->phony) - file->update_status = 0; - else - /* Should set file's modification date and do nothing else. */ - file->update_status = touch_file (file); - } - else + if (!touch_flag || file->cmds->any_recurse) { execute_file_commands (file); return; -- cgit v1.2.3