On Tue, 2009-03-24 at 12:43 -0700, Doug Barton wrote:
> Question,
> 
> I'm testing my ports for MAKE_JOBS_SAFE-ness, and came across this
> message when building xscreensaver (which uses gmake):
> 
> gmake[1]: warning: jobserver unavailable: using -j1.  Add `+' to
> parent make rule.
> 
> I have zero gmake fu, can anyone help me make sense of that? The good
> news is that the build finished successfully ...
> 
> 
> Doug
> 

I'll give it a stab, as I've dealt with this when trying to write a "one
makefile to rule them all" build system recently (in other words, I
maintain a collection of 200+ packages and my makefile attempts to call
$(MAKE) within those subdirectories).

The GNU make process for some reason was not able to determine the type
of your "make" that was used for building a target of the following
flavor:

mytarget: deps dep2 ...
        $(MAKE) -C $(mytargetdir) mytarget

Supposedly, GNU make is supposed to recognize that $(MAKE) above is a
"make program" and not a "normal program" (such as install, BSD make,
sed, etc....). In the event that it is calling a compatible GNU make
program, it can (through some means I don't fully understand) provide
access to its job pool to the "child" (the make process that will be
executed in the target above). This allows, for instance, you to pass -j
4 to the parent make process, and it will guarantee that no more than
four jobs get run, even if there are subdirs-within-subdirs, etc....

Something is preventing this detection from succeeding in your case. I
see this a lot as well (in my own make system), but I've chosen to
ignore it in my environment. I think, in my case, that I am using
$(MAKE) within an $(eval ...) block and the $(MAKE) gets expanded before
the $(eval ...) does, making the GNU make program actually see something
like this, before it actually builds the target list:
mytarget: deps dep2 ...
        /usr/local/bin/gmake -C $(mytargetdir) mytarget

Which may confuse it.

Here's a link to the ambiguous description on the GNU make website:
http://www.gnu.org/software/automake/manual/make/Error-Messages.html


-- 
Coleman Kane

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to