Follow-up Comment #1, bug #19108 (project make):

Hello Christoph,

I believe that the problem lies in your Makefile rule:

%.tgt1 %.tgt2: %.src
cp $< $(patsubst %.src,%.tgt1,$<)
cp $< $(patsubst %.src,%.tgt2,$<) 

This rule states that %.tgt1 depends on %.src and %.tgt2 depends on %.src.
However this single rule should NOT generate both files at once. I believe
that if you rewrite your rule as follows:

%.tgt1 %.tgt2: %.src
cp $< $@

then it would work as desired.

The issue is that if multiple targets pattern rule is defined, make runs
commands for one fitting target at the time. Now, when you build "final",
make sees that it depends on "x". "x" depends on x.tgt1, which can be built
due to no further dependencies, so it calls your rules to build x.tgt1 ONLY.
But your rule builds also x.tgt2, so when make comes back to check other
dependencies of x, x.tgt2 is already up-to-date and does not need to be
followed.

My belief is that no rule should make more targets then make wants. Every
rule should only generate [EMAIL PROTECTED] Otherwise one is asking for trouble.

Best regards,
Krzysztof Malinowski

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?19108>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/



_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to