Edgar Fuß | 28 Jul 2012 18:36
Picon
Favicon

bmake oddity with +=

I discovered an oddity how (b)make expands variables which have been 
assigned empty and then been added to using +=.

This Makefile (the underscores are just there to make leading blanks 
more obvious in the output):

x=
x+= foo bar

default:
	echo _${x}
	echo _${x:[1]}
	echo _${x:ts }

outputs

echo _ foo bar
_ foo bar
echo _foo
_foo
echo _foo bar
_foo bar

So x's first Element is "foo" (not " foo"), nevertheless x expands to 
" foo bar" (not "foo bar"). And explicitely asking the words to be 
separated by a space gives the expected result.

If you just assign to x (e.g. "x= foo bar"), it works as expected.

I suspect the inner workings of make are, err, interesting.


Gmane