If you want to call a third party Makefile, you've got no choice. You
already have a recursive make, parallel or not.


I have probably incorrectly expressed myself. I don't want to *call* a third
party Makefile.
I am just using it, and want to improve it, but I can't afford to spend a
lot of time exposing all of the actual dependencies (there would really be a
huge number of them). So, my only alternative is to introduce recursive
calls to make, which I dislike.

Specifically, we are working on a compiler (Open64), and as we are not the
official maintainers, we don't want to diverge to much from the official
sources. Yet, we want to improve build time, while focusing on our activity
(compiler development), not on the build system.

BTW your example won't build those two targets in parallel, even if parallel
compilation is possible. I'd consider the way you've done this to be bad
practice. Instead I'd have

all: all-subdir all-local
.PHONY all-subdir all-local
all-subdir:
  $(MAKE) <whatever>

all-local:
  $(MAKE) <whatever2>

If I wanted to make it clear that these had to be serialized, I'd just add

all-local: all-subdir

I find that prettier than the .WAIT syntax. Beauty is in the eye of the
beholder in this case, but what I like about the above method is that it
does what you are talking about right now.


Consider a variant of this; the original Makefile is:
all: one two three
one:  some-deps1
  cmds1
two: some-deps2
 cmds2
three: some-deps3
 cmds3

Now, I call "make -j" and discover that one two and three should be ran
sequentially, I suppose you will suggest to have two depend on one and three
depend on two.

But then, I would like that when I call "make two", only two is rebuilt, not
"one".

Inserting .WAIT in the all target solves this issue, without calling make
recursively.

Christophe.
_______________________________________________
Help-make mailing list
Help-make@gnu.org
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to