pythonic metaphor
pythonic metaphor

Reputation: 10556

Make in parallel

In this project, a top level rule looks like this:

all:
        for l in $(LIBDIRS); do $(MAKE) -C $$l all; done

If I run make -jx, the files in each directory are compiled in parallel, but because of this bash loop, make doesn't move onto files in the next library until everything is done in the current one. What's the best way to change the loop so that it call truly be done in parallel? I only use gnumake, so gnu extensions are fine.

* Edit * as an aside, I was trying something like this

ALL_DEPENDENCY = $(foreach l, $(LIBDIRS), $(l).PHONY_LIB_RULE)
.PHONY: $(ALL_DEPENDENCY)
%.PHONY_LIB_RULE:
        $(MAKE) --no-print-directory -C $(patsubst %.PHONY_LIB_RULE,%,$@) all

all: $(ALL_DEPENDENCY)

but these rules aren't tripped.

Upvotes: 0

Views: 1875

Answers (1)

MadScientist
MadScientist

Reputation: 101081

You can check this answer for an example of how to do this more correctly: makefile: foreach "make -C" call

Upvotes: 1

Related Questions