Subject: Re: CVS commit: src
To: None <firstname.lastname@example.org>
From: Christos Zoulas <email@example.com>
Date: 11/11/1998 19:45:31
In article <199811111530.KAA05766@antaeus.grey17.org> ghudson@MIT.EDU (Greg Hudson) writes:
>In a recent CVS commit to src/usr.bin/make/make.c, you wrote:
>> The fix is to consider the parent unmade when children have been
>This was in response to PR 6426 from Jim Bernard, where a bogus target
>like FORCE gets updated to the current time and a directory which
>already has that time (to the nearest second) won't get remade.
>First, I am confused. I thought our version of make already did this,
>because of previous problems I've had in the past, but neither 1.2 nor
>1.3.2 appear to behave this way. (The problems I've had relate to the
>emacs Makefile always rebuilding the emacs binary because of the
>really-lwlib target; I can analyze that more carefully.)
>Second, I'm concerned. People often write Makefiles like:
> foo: bar
> touch foo
> bar: baz
> cmp -s bar baz || cp baz bar
>The idea is that bar will commonly be out of date with respect to baz,
>but foo only needs to be remade when baz is actually different from
>bar. The common case is that baz a y.tab.h file produced by "yacc -d"
>which often doesn't change when the grammar file changes. This
>practice is documented in Kernighan and Pike, _The Unix Programming
>Environment_. It won't work with your change, as I understand it.
You are absolutely right. This was the reason I had ifdef'ed out the code
in the first place. Unfortunately I did not put a comment why I ifdef'ed
out the code... Anyway it is fixed properly now, and maybe even the emacs
problem might go away.