MAKE_JOBS_SAFE with gmake
Coleman Kane
cokane at FreeBSD.org
Tue Mar 24 13:19:15 PDT 2009
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20090324/e96a35d8/attachment.pgp
More information about the freebsd-ports
mailing list