On 07/26/2012 05:55 AM, Paolo Bonzini wrote: > Il 26/07/2012 13:50, Markus Armbruster ha scritto: >>>> +qapi-errors.h qapi-errors.c :\ >>>> +$(SRC_PATH)/qapi-schema-errors.json $(SRC_PATH)/scripts/qapi-errors.py >>>> + $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-errors.py -o >>>> "." < $<, " GEN $@") >> I'm afraid this isn't quite what you want. It's shorthand for two >> separate rules with the same recipe[*]. Therefore, it's prone to run >> the recipe twice, with make blissfully unaware that each of the two runs >> clobbers the other file, too. Could conceivably lead to trouble with >> parallel execution. >> >> Paolo, Eric, maybe you can provide advice on how to best tell make that >> a recipe generates multiple files. > > Hmm, I would just do > > qapi-errors.h: qapi-errors.c > qapi-errors.c: $(SRC_PATH)/qapi-schema-errors.json > $(SRC_PATH)/scripts/qapi-errors.py > $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-errors.py -o > "." < $<, " GEN $@") > > I think that's what I usually saw for bison (which creates both .h and .c).
Indeed, per https://www.gnu.org/software/automake/manual/automake.html#Multiple-Outputs, that is an appropriate solution for a 2-file generation. It is only when you have more than two files where... > > A perhaps cleaner alternative is to add a stamp file, and make both files > depend on it. a stamp file makes more sense. -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature