make-alpha
[Top][All Lists]
Advanced

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

Re: Quoting special characters (was: Re: Possible solution for special c


From: Eli Zaretskii
Subject: Re: Quoting special characters (was: Re: Possible solution for special characters in makefile paths)
Date: Tue, 25 Feb 2014 19:13:51 +0200

> From: Paul Smith <address@hidden>
> Cc: address@hidden
> Date: Mon, 24 Feb 2014 17:30:16 -0500
> 
> > > It would be nice if that were true, but IMHO it's not really the case.
> > > In fact these issues are only partially separable, because some methods
> > > of expression in the makefile imply massive problems if we want to have
> > > a particular expansion.
> > 
> > They are not entirely separable, but they can surely be addressed
> > separately, one after the other.  That is what I meant.
> 
> That's what I'm doing: assuming we implement your suggestion of
> backslash-quoted whitespace, which I do agree could work _on the parsing
> side_, let's discuss the problems that will have to be solved on the
> expansion side as a result of this syntax.

Sorry, I didn't understand we were past that first issue.  Until very
recently there was a lot of talk about how the proposed new meaning of
a backslash might break too many Makefiles out there.

Sorry for being so slow.

> As discussed before, our desired result is that this makefile:
> 
>   FOO = foo\ bar
>   $(FOO): ; @echo '$(FOO)' > '$@'
> 
> would run this command:
> 
>   echo 'foo bar' > 'foo bar'
> 
> On the other hand POSIX, and 40 years of history and writing of
> makefiles, requires that this:
> 
>   FOO = foo\ bar
>   all: ; @echo '$(FOO)'
> 
> runs this command:
> 
>   echo 'foo\ bar'
> 
> How can we square this circle?

By accepting Frank's suggestion, I guess, under which the backslash is
kept and output in the expansion.

> > If you are saying that $[string with spaces] is another candidate that
> > we should consider, I agree.  If you are saying something else, I'm
> > afraid I didn't get it yet.
> 
> My original proposal was that we would quote content on the input side
> using a new quoting method.  One possible syntax I proposed was using
> $[...] where everything inside the brackets was quoted.  So:
> 
>   FOO = $[foo bar]
> 
> would be equivalent to this, using your backslash suggestion:
> 
>   FOO = foo\ bar
> 
> That's what (I thought) this sub-thread was talking about: I'm saying
> there's no compatibility problem between the proposal to use "$[...]"
> for quoting strings in a makefile, and the use of "[" (or "[.exe") in a
> make recipe.

OK, but the issue of how to expand $[foo bar] in various contexts
still needs to be discussed, because (unlike with the backslash) we
cannot leave it in the expansion.



reply via email to

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