make-alpha
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Output quoting (was: Re: Possible solution for special characters in


From: Eli Zaretskii
Subject: Re: Output quoting (was: Re: Possible solution for special characters in makefile paths)
Date: Fri, 11 Apr 2014 11:32:13 +0300

> Date: Thu, 10 Apr 2014 22:55:34 +0200
> Cc: address@hidden, address@hidden
> From: Frank Heckenbach <address@hidden>
> 
> If make would define this by default and apply it automatically when
> substituting a variable in a recipe, the recipe could simply look
> like this, without any explicit quoting:
> 
> %.x: %.y
>       process $< -o $@
> 
> Which make internally would turn into:
> 
>       process $(call SHELL_QUOTE,$<) -o $(call SHELL_QUOTE,$@)
> 
> So when calling make "a b'c<d.x", make would e.g. call:
> 
>       process 'a b'\''c<d'.y -o 'a b'\''c<d'.x
> 
> > > will not continue to work if $</$@ contain special characters (which
> > > I think is not so bad because they already don't work if $</$@
> > > contain a certain special character, i.e. ').
> > 
> > So how would you suggest to handle the built-in rules such that they
> > will still work with file names that have embedded spaces?
> 
> If SHELL_QUOTE is applied automatically, the built-in rules need no
> modification because they don't contain explicit quoting either.
> 
> Now, if you want to use another interpreter with different quoting
> rules, you can do:
> 
> SHELL = /bin/frob
> SHELL_QUOTE = $(subst or whatever ...)

OK, but that will make using SHELL_QUOTE mandatory (i.e. not
optional), and we should require that users of non-default shells must
set SHELL_QUOTE accordingly.

I'm OK with that, I just thought you had some suggestion that didn't
require SHELL_QUOTE.  (I think that coming up with a correct
SHELL_QUOTE definition in Make syntax for a given shell is a
non-trivial job.)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]