> > The problem is that the bash echo does not interpred _any_ \-sequences > without -e. So the nicely escaped \\ stays a \\ and we get spurious > rebuilds with bash instead. It previously worked with bash, because the > backslash escaping was completely broken. You not only moved it up in > the chain, but also fixed it by removing one superflous level of > escaping. > > I'm now testing this, i.e. dropping the backslash escaping completely > and doing a printf '%s\n' instead. Can you try if it works for you? > > > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include > index 122f95c..8a9a4e1 100644 > --- a/scripts/Kbuild.include > +++ b/scripts/Kbuild.include > @@ -215,11 +215,13 @@ else > arg-check = $(if $(strip $(cmd_$@)),,1) > endif > > -# >'< substitution is for echo to work, > -# >$< substitution to preserve $ when reloading .cmd file > -# note: when using inline perl scripts [perl -e '...$$t=1;...'] > -# in $(cmd_xxx) double $$ your perl vars > -make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))) > +# Replace >$< with >$$< to preserve $ when reloading the .cmd file > +# (needed for make) > +# Replace >#< with >\#< to avoid starting a comment in the .cmd file > +# (needed for make) > +# Replace >'< with >'\''< to be able to enclose the whole string in '...' > +# (needed for the shell) > +make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1))))) This is simpler and remotely readble - nice! As a bonus you added more descriptive comments Looks good. You may add my: Reviewed-by: Sam Ravnborg <sam@xxxxxxxxxxxx> Sam -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html