On Sat, Jul 28, 2001 at 09:20:10AM -0700, Justin Erenkrantz wrote:
> On Sat, Jul 28, 2001 at 08:48:59AM -0700, Justin Erenkrantz wrote:
> > On Sat, Jul 28, 2001 at 09:06:37AM -0400, Jeff Trawick wrote:
> > > FYI... I won't be offering a solution in this timeframe.  I played
> > > with it for a couple of hours yesterday; no such time today.  (Where
> > > is Sascha when we need him :) )
> > > 
> > > I'm not against rolling a beta with this temporary brokenness since
> > > (I think) Justin mentioned that GNU make is a temporary work-around on
> > > Solaris and so it ought to be fine on OS/390 as well.
> > 
> > I'm building with /usr/ccs/bin/make right now on Solaris 8 and it
> > generates exports.c fine.  I'll try and get a clean tagged tree and see 
> > if I can reproduce this.  No promises though.  -- justin
> 
> Well, I'm not sure I'm hitting the same thing you are, but I'm running
> into a problem with Solaris 7 - it gives me a problem about not knowing 
> how to build test_char.h.  However, if I execute the make again, it goes 
> cleanly.  Odd.  This doesn't happen with Solaris 8, so this may be a bug 
> with /usr/ccs/bin/make?  Let me hack at this for a few and see if I can 
> come up with a fix.  -- justin

Based on what I can tell, /usr/ccs/bin/make on Solaris 7 will only do 
the dependency generation at the beginning of the execution and toss 
out any dependencies that are invalid *at the start of make's 
execution* (i.e. no lazy bindings).  At that point in time, 
test_char.h does not exist, so it seems to remove any dependency
that reference this non-existant file.

Therefore, when it tries to compile util.lo (which is dependent upon 
test_char.h), make will fail because it has removed the test_char.h
dependency because it thinks that test_char.h does not exist (even 
though by the time we compile util.lo, test_char.h does exist).

Simply adding a blank test_char.h causes the make to work properly
(i.e. touch test_char.h).  When we actually compile the server
directory, gen_test_char will be newer than the blank test_char.h, 
so make will recreate test_char.h properly.  And, since test_char.h 
was present when we started execution, make will honor the test_char.h 
dependency for util.lo.

This is a lame hack for a broken make.  Solaris 8's /usr/ccs/bin/make
doesn't exhibit this.  And, I think Cliff mentioned that Solaris 2.6 
doesn't either.  And, GNU make doesn't have this problem either.  
Add a blank test_char.h to the tarball and we should be okay with 
Solaris 7.  Someone who is more knowledgable about make may be able
to come up with a better solution.

(This isn't the exact problem that Jeff described, but this is the
one that I'm seeing with Solaris 7's make.)  -- justin

Reply via email to