Further strange behavior that becomes apparent while I read through
the code:
pc-043:~/tmp/foo$ cat Makefile
A = all::
B = all::
$(A)
: aaa
$(B) ; : bbb
pc-043:~/tmp/foo$ gmake
: aaa
: bbb
pc-043:~/tmp/foo$ gmake A="all:: ; : xxx"
: xxx
: aaa
: bbb
pc-043:~/tmp/foo$ gmake B="all:: ; : xxx"
Makefile:5: *** target pattern contains no `%'. Stop.
pc-043:~/tmp/foo$
An uninitiated user (who has been initiated enough to know that
separators can result from variable expansion) would expect the last
run to have the $(B) rule expanded to
all :: ; : xxx ; : bbb
resulting in
$ gmake B="all:: ; : xxx"
: aaa
: xxx ; : bbb
$
but this don't happen: Semicolons in variable expansions are not
recognized as special character when a semicolon has already been
identified *before* any expansion was attempted (read.c, just before
the first "Look for a semicolon in the expanded line" comment).
Instead make thinks that the ";" is supposed to be the pattern part of
a static pattern rule, and produces the above error message.
--
Henning Makholm "Slip den panserraket og l�g
dig p� jorden med ansigtet nedad!"
_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make