diff options
author | Paul Smith <psmith@gnu.org> | 1999-04-09 05:57:35 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 1999-04-09 05:57:35 +0000 |
commit | a2ea1bd27fcf4b78f5464af76b505e0211f3341e (patch) | |
tree | e71ebfd38da2d10a16389da692ea678aa52177ce | |
parent | 3d1cdf4106fb107757898c92e55e928d35c02af9 (diff) | |
download | gunmake-a2ea1bd27fcf4b78f5464af76b505e0211f3341e.tar.gz |
If a file declared .INTERMEDIATE already exists before make starts, we
won't delete it--this is how normal intermediate files behave, too.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | remake.c | 13 |
2 files changed, 22 insertions, 1 deletions
@@ -1,3 +1,13 @@ +1999-04-03 Paul D. Smith <psmith@gnu.org> + + * remake.c (f_mtime): If: a) we found a file and b) we didn't + create it and c) it's not marked as an implicit target and d) it + is marked as an intermediate target, then it was so marked due to + an .INTERMEDIATE special target, but it already existed in the + directory. In this case, unset the intermediate flag so we won't + delete it when make is done. It feels like it would be cleaner to + put this check in update_file_1() but I worry it'll get missed... + 1999-04-01 Paul D. Smith <psmith@gnu.org> * job.c (construct_command_argv_internal): Use bcopy() to copy @@ -1140,11 +1140,22 @@ f_mtime (file, search) /* Store the mtime into all the entries for this file. */ if (file->double_colon) file = file->double_colon; + do { + /* If this file is not implicit but it is intermediate then it was + made so by the .INTERMEDIATE target. If this file has never + been built by us but was found now, it existed before make + started. So, turn off the intermediate bit so make doesn't + delete it, since it didn't create it. */ + if (mtime != (FILE_TIMESTAMP)-1 && file->command_state == cs_not_started + && !file->tried_implicit && file->intermediate) + file->intermediate = 0; + file->last_mtime = mtime; file = file->prev; - } while (file != 0); + } + while (file != 0); return mtime; } |