>>Just to be clear, I tried this makefile: >> >> $ cat Makefile >> foo: FORCE ; @echo '$$? = $?' >> FORCE: >> >> $ make >> $? = FORCE >> >>every time, so I don't understand your comment that FORCE should be >>visible in $?, as if it weren't visible there... it IS visible there?
>The difference to the mentioned example is the missing 'touch foo' >prior to running make. Depending on whether foo exists, $? will or will >not be empty; its commands, however, will always be run (as expected). >My point is that if a target's commands get run, should it be obvious >that then $? cannot be empty? This patch seems to create the expected behavior. I haven't found any situations where it does the wrong thing. Anyone have comments on this? Can anyone think of a situation where a prerequisite does not exist, and is NOT considered updated/changed relative to the target that depends on it? When the prerequisite exists there can be more complexity, of course. But if it doesn't exist? --- remake.c 7 Dec 2005 11:33:38 -0000 1.119 +++ remake.c 3 Jan 2006 21:26:02 -0000 @@ -530,7 +530,10 @@ break; if (!running) - d->changed = file_mtime (d->file) != mtime; + /* The prereq is considered changed if the timestamp has changed while + it was built, OR it doesn't exist. */ + d->changed = ((file_mtime (d->file) != mtime) + || (mtime == NONEXISTENT_MTIME)); lastd = d; d = d->next; -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://make.paulandlesley.org "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make