Hello!
I've found a strange behaviour of make v3.79.1. A sample of the Makefile is joined with this mail. The interesting part is the $(BASE) rule: $(BASE): $(BASE).h $(OBJ2) $(OBJ1).o @echo "it's okay..." This rule indicate to generate $(BASE).h if it doesn't exists, a special rule has been created for that, which looks like after substitution: $(BASE).h: touch $(BASE).h foo-def.c foo-ijk.c foo-xyz.c The second part of the $(BASE) rule, indicate to generate "foo-def.o foo-ijk.o foo-xyz.o" (after substitution). For that, another special rule exists: %.o: %.c touch %.o This indicates that starting with a .c file, we can generate a .o file. But here make complains with: $ make clean ; make rm -f foo* abc.o touch foo.h foo-def.c foo-ijk.c foo-xyz.c make: *** No rule to make target `foo-def.o', required for `foo'. Stop. More strange, running make a second time seems to solve the problem... $ make touch foo-def.o touch foo-ijk.o touch foo-xyz.o touch abc.o it's okay... I presume that make read once directory content and then use this list for checking file existence. Is this really a conveniant behaviour? Thierry
make-bugs.tgz
Description: Binary data