The manual
(https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html)
describes various ways to handle commands with multiple outputs.

One intermediate solution that's said to work except with phony
dependencies doesn't actually seem to work:

% cat Makefile
all: data.c data.h
data.c data.h: data.foo
        touch data.c data.h
data.h: data.c
% rm -f data.[ch]; touch data.foo; make -j
touch data.c data.h
touch data.c data.h

It says "[...] therefore a parallel make will have to serialize the
builds of data.c and data.h, and will detect that the second is no
longer needed once the first is over." This doesn't seem to be so.

Am I missing something?

More importantly (at least to me), the final paragraph of the page
should really be first. After reading about increasingly more
complex solutions to handle various corner cases, I found it *much*
easier to just turn my rule into a pseudo-pattern rule a la:

%ata.c %ata.h: %ata.foo

Regards,
Frank

  • Manual: Multi... Frank Heckenbach

Reply via email to