autoconf-patches
[Top][All Lists]
Advanced

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

Re: trailing whitespace in make macros (was: bug#7868: splitting up test


From: Stefano Lattarini
Subject: Re: trailing whitespace in make macros (was: bug#7868: splitting up test suites)
Date: Sat, 22 Jan 2011 12:14:27 +0100
User-agent: KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; )

[dropping automake-patches]

Hi Ralf, and thanks for this very useful documentation enhancement.

Some nits in-line below ...

On Saturday 22 January 2011, Ralf Wildenhues wrote:
> [ moving from automake bug#7868 ]
> 
> * Ralf Wildenhues wrote on Sat, Jan 22, 2011 at 11:06:48AM CET:
> > * Stefano Lattarini wrote on Thu, Jan 20, 2011 at 10:19:24PM CET:
> > > On Thursday 20 January 2011, Ralf Wildenhues wrote:
> > > > That is the reason the check-TESTS rule is so ugly (and recursive) in
> > > > the first place.  I really would like to avoid more instances of this
> > > > wart; so specifying files without extension is Not Good(TM).
> > > >
> > > OK, noted (and these considerations could IMHO end up somewhere in the
> > > manual).
> > 
> > Good suggestion.  They should be mentioned in the portability section of
> > autoconf.texi if they aren't already, and as ## comments in check.am.
> 
> Proposed patches for Autoconf below.
> 
> Thanks,
> Ralf
> 
>
>     docs: new sections about macros and comments, substitutions.
>
Why the comma after "comments"?  Has the sentence got borked somehow?

>     
>     * doc/autoconf.texi (Top, Portable Make): Adjust menus.
>     (Comments in Make Macros, Trailing whitespace in Make Macros):
>     New sections.
>     Suggestion by Stefano Lattarini.
> 
> diff --git a/doc/autoconf.texi b/doc/autoconf.texi
> index eee4ba7..0e8c3cc 100644
> --- a/doc/autoconf.texi
> +++ b/doc/autoconf.texi
> @@ -533,6 +533,8 @@ Portable Make Programming
>  * Parallel Make::               Parallel @command{make} quirks
>  * Comments in Make Rules::      Other problems with Make comments
>  * Newlines in Make Rules::      Using literal newlines in rules
> +* Comments in Make Macros::     Other problems with Make comments in macros
> +* Trailing whitespace in Make Macros::  Macro substitution problems
>  * obj/ and Make::               Don't name a subdirectory @file{obj}
>  * make -k Status::              Exit status of @samp{make -k}
>  * VPATH and Make::              @code{VPATH} woes
> @@ -19135,6 +19137,8 @@ itself.
>  * Parallel Make::               Parallel @command{make} quirks
>  * Comments in Make Rules::      Other problems with Make comments
>  * Newlines in Make Rules::      Using literal newlines in rules
> +* Comments in Make Macros::     Other problems with Make comments in macros
> +* Trailing whitespace in Make Macros::  Macro substitution problems
>  * obj/ and Make::               Don't name a subdirectory @file{obj}
>  * make -k Status::              Exit status of @samp{make -k}
>  * VPATH and Make::              @code{VPATH} woes
> @@ -19575,6 +19579,55 @@ nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
>  sed -e "s/\$$/address@hidden@}/" < input > output
>  @end example
>  
> address@hidden Comments in Make Macros
> address@hidden Comments in Make Macros
> address@hidden Comments in @file{Makefile} macros
> address@hidden @file{Makefile} macros and comments
> +
> +Avoid putting comments in macro values as far as possible.  Posix
> +specifies that the text starting from the @samp{#} sign until the end of
> +the line is to be ignored, which has the unfortunate effect of
> +disallowing them even quoted.  Thus, the following might lead to a
> +syntax error at compile time:
> +
> address@hidden
> +CPPFLAGS = "-DCOMMENT_CHAR='#'"
> address@hidden example
> +
> address@hidden
> +as @samp{CPPFLAGS} may be expanded to @samp{"-DCOMMENT_CHAR='#}.
>
You mean @samp{"-DCOMMENT_CHAR='} here?

> +Luckily, most @command{make} implementations disregard this and treat
> +single and double quotes specially here.
> +
> +Even without quoting involved, comments can have surprising effects,
> +because the whitespace before them is part of the variable value:
> +
> address@hidden
> +foo = bar # trailing comment
> +print: ; @@echo "$(foo)."
> address@hidden example
> +
> address@hidden
> +prints @samp{bar .}, which is usually not intended, and can expose
> address@hidden bugs as described below.
> +
> address@hidden Trailing whitespace in Make Macros
> address@hidden Trailing whitespace in Make Macros
> address@hidden whitespace in @file{Makefile} macros
> address@hidden @file{Makefile} macros and whitespace
> +
> +GNU @command{make} 3.80 mistreats trailing whitespace in macro
> +substitutions and appends another spurious suffix:
> +
> address@hidden
> +empty =
> +foo = bar $(empty)
> +print: ; @@echo $(foo:=.test)
> address@hidden example
> +
> address@hidden
> +prints @samp{bar.test .test}.
> +
>  @node obj/ and Make
>  @section The @file{obj/} Subdirectory and Make
>  @cindex @file{obj/}, subdirectory
> 

Thanks,
  Stefano



reply via email to

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