help-make
[Top][All Lists]
Advanced

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

[no subject]


From: Nicholas Clark
Subject:
Date: Mon, 10 Nov 2014 21:44:33 -0800

Hi all,

Lately I've been needing to work hard to get around GNU Make's lack of
simultaneous multi-target recipes. It seems like it crops up in the world
of FPGA/ASIC/chip design, which has all kinds of ill-behaved compilers that
produce lots of outputs simultaneously.

I went back and read a bunch of the mailing-list conversations about ways
it could be implemented, and it seemed like nobody ever proposed a way we
could describe the syntax in-keeping with GNU Make's conventions.

So I've been chewing on the issue a bit, and I wanted to float this syntax
proposal:

What about having a special target called .GROUPTARGET, which could work as
shown below.

--- (sample Makefile) ---

foo1.out report.txt foo2.out foo3.out non_pattern.bit: TASK1_OUTPUTS
fob1.out static_file.bmm fob2.out fob3.out project_file.ngc: TASK2_OUTPUTS

TASK1_OUTPUTS: source1_a.src source1_b.src
    $(EXTERNAL_UTIL_1) source1_a.src source1_b.src

TASK2_OUTPUTS: source2_a.src source2_b.src
    $(EXTERNAL_UTIL_2) source2_a.src source2_b.src

.GROUPTARGET: TASK1_OUTPUTS TASK2_OUTPUTS

--- (end sample Makefile) ---

In the example above, any dependencies of .GROUPTARGET would be a
target-group. Each target group could be treated sort of like a conditional
PHONY that would run if any of the group's members were out-of-date.

What do you think?

-Nick

-- 
Nicholas Clark
Email: address@hidden


reply via email to

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