Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 07 Feb 2014 11:07:50 -0800
From:      Alfred Perlstein <bright@mu.org>
To:        lev@FreeBSD.org
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Is it possible to get make variable without recursive expansion?
Message-ID:  <52F52F06.8080605@mu.org>
In-Reply-To: <201495029.20140207225205@serebryakov.spb.ru>
References:  <12310461351.20140207203417@serebryakov.spb.ru> <52F5251A.8020401@mu.org> <201495029.20140207225205@serebryakov.spb.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2/7/14 10:52 AM, Lev Serebryakov wrote:
> Hello, Alfred.
> You wrote 7 февраля 2014 г., 22:25:30:
>
> AP> On 2/7/14 8:34 AM, Lev Serebryakov wrote:
>>> Hello, Freebsd-hackers.
>>>
>>>
>>>    Suppose, I have in my Makefile such construction:
>>>
>>> A=xxx
>>> B=yyy
>>> ANB=${A} and ${B}
>>>
>>>    Is it possible to get value of ANB without recursive expansion, i.e. string
>>> "${A} and ${B} and" in this case? I know, that all expansions are done at
>>> last moment (If I don't use ":=" operator), but is it possible to block
>>> second- and more-level expansion?
>>>
>>>    I need to output "ANB=${ANB}" construction to external file without further
>>> expansion...
>>>
> AP> a:
> AP>          echo "AMB=\$${AMB}"
>   It will echo "AMB=${AMB}" as-is, as far as I understand, it is simple. And I need to get
> "ANB=${A} and ${B}" output.
>
>
>
I do not think it's possible.  You're basically asking "is there a way 
to ask Make for the text on the lhs of the variable assignment WITHOUT 
expansion?


Your only option would be to "cheat" and not use the expanded form I think:

A=aaa
B=bbb
AMB=\$${A} and \$${B}

a:
         echo "AMB=${AMB}"

Results in:
.(19:07:30)(alfred@freefall.freebsd.org)
~ % make
echo "AMB=\${A} and \${B}"
AMB=${A} and ${B}
.(19:07:30)(alfred@freefall.freebsd.org)
~ %





There is no way to query make(1) (that I can see) for the exact value at 
the time of assignment and before expansion.

-- 
Alfred Perlstein




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52F52F06.8080605>