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