This is the mail archive of the
mailing list for the GCC project.
Re: Building java library is slow
- From: Michael Matz <matzmich at cs dot tu-berlin dot de>
- To: Bryce McKinlay <bryce at waitaki dot otago dot ac dot nz>
- Cc: <lucier at math dot purdue dot edu>, <gcc at gcc dot gnu dot org>
- Date: Thu, 28 Mar 2002 12:12:24 +0100 (MET)
- Subject: Re: Building java library is slow
On Thu, 28 Mar 2002, Bryce McKinlay wrote:
> email@example.com wrote:
> >The java library seems to be made serially, even when "make -j 8' is
> >specified. Is there an easy way to fix this?
FWIW, I've seen the same.
> make MAKE="make -j 8"
No, with GNU make 3.79.1 this isn't necessary, because of the jobserver.
A simple make -j 12 should be (and formerly was) enough. With newer makes
the above (MAKE="make -j x") even is wrong, and gets disabled by make
internally (in that case it gives a warning about that "warning: -jN
forced in submake: disabling jobserver mode."). Unfortunately this
doesn't seem to work anymore. As soon as the target libraries are made,
somehow the jobsesrver of make seems to break. I get warnings like:
"warning: jobserver unavailable: using -j1. Add `+' to parent make rule."
This can be seen easier, if one does a "make -j 12 all-target-libiberty"
after a make bootstrap. As soon as the make enters the
$(TARGET_SUB_DIR)/libiberty the above message prints, and of course indeed
now only uses -j1.
Even hacking the -j 12 directly into the make calls in the top-level
Makefile doesn't help. Someone told me, the above error can only happen,
when the jobserver file descriptors get closed. I have no idea how a
Makefile can achieve that.