# [EMAIL PROTECTED] / 2003-05-16 15:30:01 +0300:
> > > On Sun, Apr 27, 2003 at 02:48:12PM +0200, Roman Neuhauser wrote:
> > > > # [EMAIL PROTECTED] / 2003-04-26 14:53:36 +0300:
> > > > > On Fri, Apr 25, 2003 at 08:44:00PM +0200, Roman Neuhauser wrote:
> > > > > > Try the following makefile: it works if called with -DONE, but does not
> > > > > > if called with -DTWO. Should I treat it as a bug and file a PR?
> > > > > > 
> > > > > > LIST= foo bar baz
> > > > > > 
> > > > > > .if defined(ONE)
> > > > > > .  for v in ${LIST}
> > > > > > .    if !defined(WITHOUT_${v:U})
> > > > > > WITH_${v:U}=yes
> > > > > > .    endif
> > > > > > .  endfor
> > > > > > .endif
> > > > > > 
> > > > > > .if defined(TWO)
> > > > > > .  for v in ${LIST}
> > > > > > V=${v:U}
> > > > > > .    if !defined(WITHOUT_${V})
> > > > > > WITH_${V}=yes
> > > > > > .    endif
> > > > > > .  endfor
> > > > > > .endif
> > > > > > 
> > > > > > a:
> > > > > >     @echo \$${WITH_FOO}: ${WITH_FOO}
> > > > > >     @echo \$${WITH_BAR}: ${WITH_BAR}
> > > > > >     @echo \$${WITH_BAZ}: ${WITH_BAZ}
> > > > > > 
> > > > > > .PHONY: a
> > > > > 
> > > > > I think this is a known bug, and it seems to even be documented
> > > > > in the BUGS section of -STABLE's make(1) manual page.
> > > > 
> > > >     I don't think this is covered. Can you point out the relevant text?

> Yes, BUGS section talks about a different problem (...)

> FWIW, the code snippet above works perfectly under 5.x make(1).
> I recall this problem was fixed (perhaps, it was even me, not
> sure).  Sorry, but I don't have enough time to invest into
> backporting the bugfix into RELENG_4, the latter is becoming
> less priority for me as 5.x evolves.
> 
> If you'll be able to extract it from HEAD (there is a huge
> backlog of non-backported fixes for make(1) there), I will
> happily commit it for you.
> 
> $ uname -r
> 5.1-BETA
> $ make -DONE
> ${WITH_FOO}: yes
> ${WITH_BAR}: yes
> ${WITH_BAZ}: yes
> $ make -DTWO
> ${WITH_FOO}: yes
> ${WITH_BAR}: yes
> ${WITH_BAZ}: yes

    I've spent two hours in cvsweb but haven't noticed a commit message
    that would indicate a relation to this problem, and the source code
    is obviously over my head.

    But it looks like the problem is in the order of processing loops,
    and applying modifiers... or something:

    [EMAIL PROTECTED] ~ 1024:0 > cat tmp/scratch4
    LIST=       foo bar baz

    .for v in ${LIST}
    V=  ${v:U}
    V_${v}=     ${V}
    v_${v}=     ${v}
    .endfor

    all:
    .for v in ${LIST}
        @echo \$${V_${v}}: ${V_${v}}
    .endfor
    .for v in ${LIST}
        @echo \$${v_${v}}: ${v_${v}}
    .endfor

    .PHONY: all 
    [EMAIL PROTECTED] ~ 1025:0 > make -f tmp/scratch4
    ${V_foo}: BAZ
    ${V_bar}: BAZ
    ${V_baz}: BAZ
    ${v_foo}: foo
    ${v_bar}: bar
    ${v_baz}: baz
    [EMAIL PROTECTED] ~ 1026:0 > uname -a
    FreeBSD freepuppy.bellavista.cz 4.8-STABLE FreeBSD 4.8-STABLE #2: Thu Jun  5 
12:57:47 CEST 2003     [EMAIL PROTECTED]:/usr/obj/usr/src/sys/FREEPUPPY2_5  i386

    Does this help identifying the responsible code? I'd really like to
    continue using 4.x for some time, and this bitrot in make is quite
    unfortunate for me.

-- 
If you cc me or remove the list(s) completely I'll most likely ignore
your message.    see http://www.eyrie.org./~eagle/faqs/questions.html
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to