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"
Is the following a bug?
pc-043:~/tmp/foo$ cat Makefile
declare = $(eval all:: ; : $1)
$(call declare, A)
foo: $(call declare, B) ; $(call declare, C)
: $(call declare, D) ; $(call declare, E)
pc-043:~/tmp/foo$ gmake
: A
: B
pc-043:~/tmp/foo$
Intuitively I'd expect make to run ": D" too.
It