Re: Empty else part in AS_IF

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

 



On 10/09/13 21:31, Eric Blake wrote:
> On 10/09/2013 01:18 PM, Julien ￉LIE wrote:
>> The following piece of code:
>> 
>> AS_IF([test x"$var" != xfalse], [$test=1], [m4_ifdef([AM_CONDITIONAL], 
>> [AM_CONDITIONAL([TEST], [false])])])
>> 
>> gives the following configure code with autoconf 2.69:
>> 
>> if test x"$var" != xfalse; then : $test=1
> 
> That's unusual shell syntax (it does NOT do a variable assignment; did you
> mean 'test=1' instead of trying to execute the program whose name is the
> expansion of $test concatenated with '=1'?)
> 
>> else
>> 
>> fi
>> 
>> which is not a valid syntax.
> 
> Indeed.  The problem is that autoconf cannot tell if a non-empty literal 
> will expand to empty text (m4_ifdef results in no output).  You'll have to
> workaround it yourself:
> 
> AS_IF([test x"$var" != xfalse], [$test=1], [: m4_ifdef(...)])
> 
> 
>> 
>> Is it the expected behaviour of AS_IF when the else part is empty?
> 
> Yes, it's expected that autoconf can't predict which macros expand to 
> nothing.  It's a dark corner case, where it costs far more m4 time to try
> and work around it (and probably get things wrong in the process) than it
> does to just say "don't do that".

The better(TM) approach is to let m4 figure out that the else part is empty by
not quoting the m4_ifdef, thereby deferring its evaluation.

AS_IF([test x"$var" != xfalse],
      [$test=1],
      m4_ifdef([AM_CONDITIONAL],
          [AM_CONDITIONAL([TEST], [false])]))

Should give the expected result.

I haven't investigated if an additional level of quoting around
[AM_CONDITIONAL([TEST], [false])], i.e. using [[AM_CONDITIONAL([TEST],
[false])]] instead would improve matters in case of more complicated content.

Regards, Thomas
-- 
Thomas Jahns
DKRZ GmbH, Department: Application software

Deutsches Klimarechenzentrum
Bundesstra￟e 45a
D-20146 Hamburg

Phone: +49-40-460094-151
Fax: +49-40-460094-270
Email: Thomas Jahns <jahns@xxxxxxx>

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
https://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux