linuxmakefile

How can I use .NOTPARALLEL in makefile only on specific targets?


I have 5 labels in Makefile:

all: label1 label2 label3 label4 last_label

I want last_label to be done last, and I want to use make -j. If I use .NOTPARALLEL, it will make all of them NOTPARALLEL, any suggestion on how to do that?


Solution

  • Create a target specifying the four targets that can be executed in parallel & include this and last_label in the all target:

    intermediate: label1 label2 label3 label4
    
    all:
            $(MAKE) intermediate
            $(MAKE) last_label
    

    This would execute the targets specified within intermediate in parallel, but intermediate and last_label would be forced consecutively.

    (Note that the leading space before $(MAKE) is a TAB character.)