This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Sequential build of libjava
- From: Brad Lucier <lucier at math dot purdue dot edu>
- To: matz at suse dot de (Michael Matz)
- Cc: tromey at redhat dot com (Tom Tromey), lucier at math dot purdue dot edu (Brad Lucier), gcc at gcc dot gnu dot org, java at gcc dot gnu dot org
- Date: Thu, 5 Sep 2002 14:44:24 -0500 (EST)
- Subject: Re: Sequential build of libjava
> On 5 Sep 2002, Tom Tromey wrote:
>
> > Do other target directories build in parallel?
>
> No, _all_ of the target libraries, if they are started by the toplevel
> Makefile are built serially. GNU make thinks, that suddenly the jobserver
> is missing and goes back to -j1. Probably because file descriptors used
> for communication with the submakes are closed or so. This happens since,
> erhm, forever. I never quite understood, why the submakes building the
> target libs miss the jobserver, but e.g. the submakes doing the normal
> bootstrap in gcc/ have it available.
OK, the precise message in the build log is
make[3]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
(repeated 8 times)
Any gnu make experts here? Anybody know what this means? (Yes, I read the
make.info* text, and, no, I don't understand it.) Is it a matter of
putting a + somewhere in the Makefiles to get this to work?
I don't want to put "MAKE=make -j 8" for submakes, since then I might get
64 or 512 or ... processes running all at once. I *like* how gnu make
keeps the total number of jobs at 8 with "make -j 8".
Brad
PS: Sorry about implying that it was libjava's fault. It's just that
libjava seemed to always be library being built when the load was 1
instead of higher on my machine.