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

Reply via email to