httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@engelschall.com (Ralf S. Engelschall)
Subject Re: [PATCH] for generating modules/Makefile (reprise)
Date Mon, 17 Mar 1997 07:30:36 GMT

In article <Pine.LNX.3.95dg2.970316170513.6729A-100000@twinlark.arctic.org> you wrote:

> On Sat, 15 Mar 1997, Rodent of Unusual Size wrote:
> > +       \$(MAKE) CC=\$(CC) AUX_CFLAGS='$(MOD_CFLAGS)' RANLIB='$(RANLIB)'; \\

> I think you want that to read:

> +         \$(MAKE) CC=\$(CC) AUX_CFLAGS='\$(MOD_CFLAGS)' RANLIB='\$(RANLIB)'; \\


> Otherwise on Linux where /bin/sh is bash it tries to run a subshell when
> it sees $(MOD_CFLAGS).

> Other than that it seems to work as advertised and I'll +1 it with this
> change.

Are you sure? I don't think this is correct. The $(VAR) syntax is a Makefile
syntax for interpolation of _Make_ variables.  When the above statements gets
evaluated by Make (which is done _BEFORE_ it gets send to $(SHELL)=bash in
your case) all $(VAR) are expanded first. So the Shell will not see any $(VAR)
strings. It is correct without the backslashes.

Proof:

    ------------
    A=1

    b:
        echo X'$(A)'Y
    ------------

    | rse@en1:/u/rse
    | :> make
    | echo X1Y
    | X1Y
    | rse@en1:/u/rse
    | :> gmake
    | echo X1Y
    | X1Y
    | rse@en1:/u/rse
    | :> _

    As you can see the command send to the shell is already "echo X1Y" and not
    "echo X'$(A)'Y".

Greetings,
                                       Ralf S. Engelschall
                                       rse@engelschall.com
                                       www.engelschall.com

Mime
View raw message