Bruno Haible <[EMAIL PROTECTED]> writes: > To reproduce: In an otherwise empty directory, create this Makefile: > > ==================================== > %.erg : ../bar > echo done > > %.erw : ../baz > echo done > > foo.res : ../baz > echo done > ==================================== > > $ make foo.erg > make: *** No rule to make target `foo.erg'. Stop. > $ make foo.erw > make: *** No rule to make target `../baz', needed by `foo.erw'. Stop. > $ make foo.res > make: *** No rule to make target `../baz', needed by `foo.res'. Stop. > > The first error message is incorrect and should look like the other two: > make: *** No rule to make target `../bar', needed by `foo.erg'. Stop.
Actually the second error message is incorrect and should look like the first ;-). In fact it is a side effect of a bug which is more serious than just incorrect diagnostic. Consider the following makefile test.foo: %.foo : baz echo done %.foo : bar echo done fox: baz Also assume that there is a file `baz' in current directory. When you run make on this makefile (3.80 or current cvs) you get make: *** No rule to make target `baz', needed by `test.foo'. Stop. This is wrong since the second pattern rule, if tried, would succeed. The bug is in implicit.c line 399. I have a patch which will appear in make-bk6 patch-set. I can also submit a patch against make-cvs if there is any interest. -boris _______________________________________________ Bug-make mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/bug-make