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

Reply via email to