[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: recursive make variables coming to POSIX
From: |
Ralf Wildenhues |
Subject: |
Re: recursive make variables coming to POSIX |
Date: |
Mon, 6 Dec 2010 04:50:05 +0100 |
User-agent: |
Mutt/1.5.20 (2010-08-04) |
Hi Eric,
* Eric Blake wrote on Thu, Dec 02, 2010 at 08:21:13PM CET:
> On 12/02/2010 12:10 PM, Ralf Wildenhues wrote:
> > I'm not sure if it was mentioned before in the discussion, but
> > portability-wise, there is a difference between one level of recursion
> > and arbitrary many. IIRC then IRIX make only supported one level, i.e.,
> > $(var1$(var2$(var3)))
> >
> > was erroneous, but
> > $(var1$(var2))
> >
> > was not. Also, with a one-character variable X
> > $(var$X)
> >
> > was erroneous with at least one legacy make implementation (but I think
> > it was more than one); but
> > $(var$(X))
> >
> > worked.
> >
> > If you like, I can go back and verify the details.
>
> Yes please, and I will feed that information back to the Austin Group.
Thank you. Here we go. With the following Makefile,
V = v
V1 = v1
V11 = v11
O = 1
ONE = 1
O1 = 11
Vr1 = $(V$(O))
Vr2 = $(V$(ONE))
Vr3 = $(V$(Z))
Vr4 = $(V$O)
Vr5 = $(V$Z)
Vrr1 = $(V$(O$(Z)))
Vrr2 = $(V$(O$(O)))
Vrr3 = $(V$(Z$(Z)))
Vrr4 = $(V$(O$Z))
Vrr5 = $(V$(Z$Z))
R = R
Vrrr = $($($($($($($($($($($($($($(R))))))))))))))
all_FLAGS = bar
all:
@echo $(Vr1), $(Vr2), $(Vr3)
@echo $(Vrr1), $(Vrr2), $(Vrr3)
@echo $(Vrrr)
@echo $(Vr4), $(Vr5)
@echo $(Vrr4), $(Vrr5)
@echo $(address@hidden)
@echo $($(@)_FLAGS)
the make implementations from
AIX 5.2, 5.3, 6.1, 7.1
Darwin 10.4.0 (GNU make 3.81)
FreeBSD 6.4, 7.1
GNU
HP-UX 10.20, 11.00, 11.11, 11.23, 11.31
NetBSD 5.99.39
OpenBSD 4.4
Solaris 2.6, 7, 8, 9, 10
Tru64 OSF 5.1D
all print:
v1, v1, v
v1, v11, v
R
v1, v
v1, v
bar
bar
IRIX 6.5 make fails over each expansion in output lines 5, 6, and 7,
e.g.:
v1, v1, v
v1, v11, v
R
UX:make: ERROR: Unmatched closing curly braces or parenthesis in line
containing:
$(V$O).
The last line containing $($(@)_FLAGS) is wrongly expanded to empty by
this make.
So, in summary, the parenthesization is an issue, and expanding of the
automatic $@ variable recursively. I haven't tried to determine whether
there is an upper limit to recursive expansion (should I?).
See also this old thread:
<http://thread.gmane.org/gmane.comp.sysutils.automake.general/9943/focus=9945>
Cheers,
Ralf
- recursive make variables coming to POSIX, Eric Blake, 2010/12/02
- Re: recursive make variables coming to POSIX, Ralf Wildenhues, 2010/12/02
- Re: recursive make variables coming to POSIX, Eric Blake, 2010/12/02
- Re: recursive make variables coming to POSIX,
Ralf Wildenhues <=
- Re: recursive make variables coming to POSIX, Ralf Wildenhues, 2010/12/05
- Re: recursive make variables coming to POSIX, Eric Blake, 2010/12/06
- Re: recursive make variables coming to POSIX, Larry Dwyer, 2010/12/06
- RE: recursive make variables coming to POSIX, Schwarz, Konrad, 2010/12/07
- Re: recursive make variables coming to POSIX, Bruce Korb, 2010/12/07
- Re: recursive make variables coming to POSIX, Ralf Wildenhues, 2010/12/07