I found this with make 3.78.1 (from redhat 6.2); it is the same in 3.79.1

Non-working Makefile:
------
dir:
        mkdir -p dir/subdir

dir/subdir/file.b: dir
        touch dir/subdir/file.b

dir/subdir/%.a: dir/subdir/%.b
        cp $< $@

all: dir/subdir/file.a

------
if dir/subdir doesn't exist, "make all" fails:
 *** No rule to make target `dir/subdir/file.a', needed by `all'.

if they do exist, everything is fine.

if the rule for file.b is a pattern rule:
------
dir:
        mkdir -p dir/subdir

%/subdir/file.b: %
        touch dir/subdir/file.b

dir/subdir/%.a: dir/subdir/%.b
        cp $< $@

all: dir/subdir/file.a

------
everything is fine in either case.

I assume my original example is supposed to work, since it works if the
directory exists (not a condition mentioned anywhere I can see), and using
a pattern rule instead of a regular rule works (which should, if anything,
be less likely to work).

        -Daniel
*This .sig left intentionally blank*



_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make

Reply via email to