diff --git a/support/misc/utils.mk b/support/misc/utils.mk index b422c67d76..2f00ccfdb7 100644 --- a/support/misc/utils.mk +++ b/support/misc/utils.mk @@ -14,6 +14,20 @@ comma := , empty := space := $(empty) $(empty) +# make 4.3: +# https://lwn.net/Articles/810071/ +# Number signs (#) appearing inside a macro reference or function invocation +# no longer introduce comments and should not be escaped with backslashes: +# thus a call such as: +# foo := $(shell echo '#') +# is legal. Previously the number sign needed to be escaped, for example: +# foo := $(shell echo '\#') +# Now this latter will resolve to "\#". If you want to write makefiles +# portable to both versions, assign the number sign to a variable: +# H := \# +# foo := $(shell echo '$H') +SHARP_SIGN := \# + # Case conversion macros. This is inspired by the 'up' macro from gmsl # (http://gmsl.sf.net). It is optimised very heavily because these macros # are used a lot. It is about 5 times faster than forking a shell and tr. diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 2c2a987c3e..44d0c83d1e 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -119,12 +119,12 @@ copy_toolchain_sysroot = \ done ; \ for link in $$(find $(STAGING_DIR) -type l); do \ target=$$(readlink $${link}) ; \ - if [ "$${target}" == "$${target\#/}" ] ; then \ + if [ "$${target}" == "$${target$(SHARP_SIGN)/}" ] ; then \ continue ; \ fi ; \ - relpath="$(call relpath_prefix,$${target\#/})" ; \ - echo "Fixing symlink $${link} from $${target} to $${relpath}$${target\#/}" ; \ - ln -sf $${relpath}$${target\#/} $${link} ; \ + relpath="$(call relpath_prefix,$${target$(SHARP_SIGN)/})" ; \ + echo "Fixing symlink $${link} from $${target} to $${relpath}$${target$(SHARP_SIGN)/}" ; \ + ln -sf $${relpath}$${target$(SHARP_SIGN)/} $${link} ; \ done ; \ relpath="$(call relpath_prefix,$${ARCH_LIB_DIR})" ; \ if [ "$${relpath}" != "" ]; then \