foo =echo\;echo -n foo\\\ =\;make -s getfoo\;echo\;echo open\\\ = \\\(\;echo close\\\ = \\\)\;echo empty\\\ =\;echo tab\\\ = \\\$$\\\(empty\\\)\\\ \\\$$\\\(empty\\\)\;echo \;echo make:\;echo \\\ @echo \\\$$\\\(foo\\\) \\\| /bin/sh\;echo \;echo getfoo:\;echo \\\ echo \\\$$\\\(subst \\\$$\\\$$,\\\$$\\\$$\\\$$\\\$$,\\\$$\\\(subst \\\$$\\\$$,\\\\\\\$$\\\$$,\\\$$\\\(subst \\\',\\\\\\\',\\\$$\\\(subst \\\$$\\\(tab\\\),\\\\\\\$$\\\(tab\\\),\\\$$\\\(subst \\\>,\\\\\\\>,\\\$$\\\(subst \\\<,\\\\\\\<,\\\$$\\\(subst \\\",\\\\\\\",\\\$$\\\(subst \\\;,\\\\\\\;,\\\$$\\\(subst \\\|,\\\\\\\|,\\\$$\\\(subst \\\$$\\\(close\\\),\\\\\\\$$\\\(close\\\),\\\$$\\\(subst \\\$$\\\(open\\\),\\\\\\\$$\\\(open\\\),\\\$$\\\(subst \\\*,\\\\\\\*,\\\$$\\\(subst \\\&,\\\\\\\&,\\\$$\\\(subst \\\`,\\\\\\\`,\\\$$\\\(subst \\\~,\\\\\\\~,\\\$$\\\(subst \\\\,\\\\\\\\,\\\$$\\\(foo\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\; open = ( close = ) empty = tab = $(empty) $(empty) make: @echo $(foo) | /bin/sh getfoo: echo $(subst $$,$$$$,$(subst $$,\$$,$(subst ',\',$(subst $(tab),\$(tab),$(subst >,\>,$(subst <,\<,$(subst ",\",$(subst ;,\;,$(subst |,\|,$(subst $(close),\$(close),$(subst $(open),\$(open),$(subst *,\*,$(subst &,\&,$(subst `,\`,$(subst ~,\~,$(subst \,\\,$(foo)))))))))))))))))