m4-discuss
[Top][All Lists]
Advanced

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

Re: Suggestion to add ifndef builtin macro


From: Eric Blake
Subject: Re: Suggestion to add ifndef builtin macro
Date: Mon, 19 May 2014 08:20:24 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0

On 05/17/2014 01:46 PM, Daniel Goldman wrote:
> Eric,
> 
>> We intentionally want a minimal set of builtins, and leave the
>> bulk of the power in wrappers around the builtins.
> 
> Thanks for responding. Of course it's a good point to limit the number
> of builtins. Related to that, is there a reason why incr and decr are
> builtin macros, when it seems likely they could work as composites, or
> just use eval directly?

Historical practice.  POSIX standardized them because not providing them
would break m4 scripts that are now over 40 years old.

> 
>> Yes, and that's why the autoconf language has an m4_ifndef wrapper
>> alongside the m4_ifdef wrapper.  But that didn't require a new builtin.
>>
> 
> Of course, I never suggested a new builtin was required. As I mentioned,
> I had seen references to ifndef, so I already divined that it existed.
> The problem was my searches found zero documentation. I'm sure it's
> there, but it's at least somewhat hidden. All I found was very
> specialized autoconf macros. Is there a link you (or someone else) could
> send to autoconf ifndef documentation, along with other general (not
> specialized) macros used by autoconf?

Autoconf documentation (note that autoconf uses changequote([,]), rather
than the default `'):
https://www.gnu.org/software/autoconf/manual/autoconf.html#Programming-in-M4sugar

Autoconf implementation (not for the faint of heart - there are some
really convoluted macros in there, such as m4_expand)
http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob;f=lib/m4sugar/m4sugar.m4

> Finally, the m4 manual has some 25 composite macros. Most of them seem
> pretty useful. But it's certainly not a comprehensive list (eg, ifndef
> is not included). Besides the manual, is there any other collection of
> general purpose m4 composite macros?

Autoconf, sendmail, and bison all use m4 for various purposes, and each
has developed their own library of macros they found useful.  But as for
a general-purpose library of m4 composite macros, I don't really know of
anything designed for that purpose.

But we could certainly document an m4_ifndef macro in the M4 manual,
since it would be a useful teaching tool.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]