Many output variables are intended to be evaluated both by
make and by the shell. Some characters are expanded
differently in these two contexts, so to avoid confusion these
variables’ values should not contain any of the following characters:
" # $ & ' ( ) * ; < > ? [ \ ^ ` |
Also, these variables’ values should neither contain newlines, nor start with ‘~’, nor contain white space or ‘:’ immediately followed by ‘~’. The values can contain nonempty sequences of white space characters like tabs and spaces, but each such sequence might arbitrarily be replaced by a single space during substitution.
These restrictions apply both to the values that
computes, and to the values set directly by the user. For example, the
following invocations of
configure are problematic, since they
attempt to use special characters within
CPPFLAGS and white space
CPPFLAGS='-DOUCH="&\"#$*?"' '../My Source/ouch-1.0/configure' '../My Source/ouch-1.0/configure' CPPFLAGS='-DOUCH="&\"#$*?"'