help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MAKEFLAGS var does not show "-j" param ???


From: Fabrice GIRARDOT
Subject: Re: MAKEFLAGS var does not show "-j" param ???
Date: Fri, 14 Mar 2008 10:24:21 +0100
User-agent: Thunderbird 2.0.0.12 (Windows/20080213)


David Wuertele wrote :

I want my makefile to behave as follows:
1.  if I type "make" with no "-j", I want all builds to be sequential, including
the glibc submake

2.  if I type "make -j N", I want the total number of parallel jobs to be at
least N, but I can tolerate it being larger than N.

I had exactly the same wish, and here is how I did it.

I have a "top-level" Makefile, which is able to build "modules"
(= library or executable). It can scan for dependencies, and
recursively calls itself to build dependencies, and dependencies's
dependencies.
This top-level Makefile doesn't support yet parallel building itself,
but each module does.
I wanted to be able to run the top level Makefile with "-j N"
(despite the fact that it does not support parallel build !),
and if this option is present, then all modules would be built
with "-j N".


In the top-level Makefile, I have an empty ".NOTPARALLEL:" target,
so that it disables parrallel build for top-level.

Each time it has to call a sub-make, it calls :
   $(MAKE) $(if $(findstring j,$(MAKEFLAGS)),-j8,) -C /path/to/Makefile

a) if /path/to/Makefile is the top-level Makefile, then it ensures that
   parallel build information is kept between all recursive calls
   of the top-level Makefile
b) if /path/to/Makefile is a module, then it is build with parallel
   option.

Note that the "N" value of the initial invokation of Make is lost
because as far as I know, a Makefile can't read it (unless you use
some trick like "make JOBS=8 -j8", which I don't want).


The tricky part was here : when you dump $(MAKEFLAGS) somewhere *NOT*
in a command, then it *NEVER* shows the "-j" otpion.
If you dump it *IN A COMMAND* for some target, then it shows the
"-j" option (forced to "-j 1" on win32").


Regards,

--
Fabrice GIRARDOT






reply via email to

[Prev in Thread] Current Thread [Next in Thread]