2006-10-31
A Solaris 8 make bug
; cat Makefile foo : /tmp/bar touch foo ; mkdir /tmp/bar ; make touch foo ; make `foo' is up to date. ; touch /tmp/bar/t ; make `foo' is up to date. ; gmake touch foo
As 'make -ndd' shows, for some reason Solaris 8's version of make
decides that directories always have a timestamp of 0. It knows that
they exist, because if you remove /tmp/bar it complains about
it. This behavior is the same for both /usr/ccs/bin/make and
/usr/xpg4/bin/make.
On a quick test, this bug appears to be gone in Solaris 9. There's
a Solaris 8 make patch not applied to our systems, but the README
doesn't mention anything like this bug.
(Depending on a directory is the kind of thing you do if you're building something from a bunch of files dropped into a directory, and you need to do something every time a file is added or removed.)
I note in passing that make problems that cause things to not get
rebuilt are much more annoying than make problems that cause things
to get rebuilt all the time.