Subject: Re: rescue lossage (previously mentioned by others...)
To: None <current-users@netbsd.org>
From: J Chapman Flack <flack@cs.purdue.edu>
List: current-users
Date: 01/28/2005 17:22:55
> > Get rid of any -j entries in invocation of build.sh.
> 
> Forgive me for asking the obvious question, but is it going to actually be
> fixed? Or is the -j option going to be removed?

The main problem seems to be that -j is overloaded.  It doesn't only specify
whether to make in parallel or not.  BSD make has lots of useful semantic
extensions over the original make.  According to the old BSD make paper,
those extensions were on by default, with a way to turn them off.  But
apparently the extensions cause enough trouble for old makefiles that
were not written for BSD make, that the extensions have been made OFF by
default.  They're only turned on by (you guessed it) -j.

So make is only BSD make when you use -j ... and it's only old make when
you don't, and (this is the part that surprised me most), a lot of the
makefiles in NetBSD require old make semantics and break under BSD make
semantics.

If there were anything to be 'fixed', I'd suggest having two separate options,
one for parallel building and one for BSD semantics ... and/or define some
directive that can be included *in the makefile* to identify which language
it was written to - that really is a property of the makefile, after all,
not something you might change on the command line from one build to the next.
That would leave -j just for specifying parallel building, which is a
perfectly sensible thing to tweak on the command line depending on your
build environment.

-Chap