On 4/9/11 5:48 PM, David Boyce wrote: > On Sat, Apr 9, 2011 at 2:32 PM, Philip Prindeville > <phil...@redfish-solutions.com> wrote: >> [philipp@builder ~/openwrt2]$ make -j5 -f /tmp/Makefile >> MAKEFLAGS= >> MFLAGS= >> MAKE=make >> PBUILD= >> MAKEFLAGS=w >> MFLAGS=-w >> MAKE=make >> make[1]: Entering directory `/home/philipp/openwrt2' >> make[1]: Nothing to be done for `stop'. >> make[1]: Leaving directory `/home/philipp/openwrt2' >> [philipp@builder ~/openwrt2]$ >> >> Not sure what I'm missing... > > Unfortunately it appears that MAKEFLAGS is composed on the fly when > forking a command (aka job). See the following makefile: > > % cat /tmp/Makefile > $(info MAKEFLAGS='$(MAKEFLAGS)') > > .PHONY: all > all: > @echo "MAKEFLAGS='$(MAKEFLAGS)' (recipe)" > > % make -f /tmp/Makefile -j2 > MAKEFLAGS='' > MAKEFLAGS=' --jobserver-fds=3,4 -j' (recipe) > > So it's not available to $(info) and other functions outside of a > recipe. There's probably a way to trick make into doing a simple > recursion to harvest the data. Or if you're dealing with an > automated/nightly build you could set MAKEFLAGS yourself to turn on > parallelism: > > MAKEFLAGS=-j8 make ... > > but at that point you might as well just take control yourself > > PARALLEL=YES make -j8 ... > > Here's a hack which will work by calling make recursively once, but > note that it will only work when no explicit target is mentioned: > > % cat Makefile > .PHONY: all > all: > > ifndef PARALLEL > .PHONY: _is_parallel > .DEFAULT_GOAL := _is_parallel > _is_parallel: > +@PARALLEL=`PARALLEL=tbd $(MAKE) -s -f $(MAKEFILE_LIST) > _is_parallel2` &&\ > PARALLEL=$$PARALLEL $(MAKE) --no-print-directory -f > $(MAKEFILE_LIST) $(MAKECMDGOALS) > else > .PHONY: _is_parallel2 > _is_parallel2: ; @echo "$(if $(findstring -j,$(MAKEFLAGS)),YES,NO)" > endif > > all: > @echo "We $(if $(findstring YES,$(PARALLEL)),ARE,ARE NOT) > building in parallel" > > > David Boyce
Can we come up with a patch so that the -j argument is visible at all levels of make? It would seem to be a trivial and fairly harmless change. Thanks, -Philip _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make