On 4/3/2009 5:31 PM, Ralf Wildenhues wrote:
Hi John,
* John Calcote wrote on Fri, Apr 03, 2009 at 09:33:40PM CEST:
On page 158, paragraph 3 of the 2.63 Autoconf manual, it states:
"If a macro doesn’t use AC_REQUIRE, is expected to never be the object
of an AC_REQUIRE directive, and macros required by other macros inside
arguments do not need to be expanded before this macro, then use
m4_define."
...
Is this a bug in aclocal?
I don't think so. Do you think the quote is an encouragement not to use
AC_REQUIRE? For public macros, I'd even venture to say that they should
be written so they can be AC_REQUIREd (if they don't take arguments), or
at least, that other macros which are expanded inside their contents or
their arguments, may themselves AC_REQUIRE yet other macros which are
then expanded outside of all this mess.
Hmmm. No, I don't think it's an encouragement not to use AC_REQUIRE. It
simply states that if you don't use the prerequisite framework, there's
no reason to use AC_DEFUN. I supposed that from a certain point of view
(a rather sarcastic one), it could be saying something like, "if ever
you could conceive of a situation in which you wouldn't need to use
AC_REQUIRE, then go ahead and use m4_define."
I agree completely with your assessment, but I think the manual should
make it clear that the only proper way to write a macro is with
AC_DEFUN, don't you? I mean, if the only way I can write a macro outside
of adding it directly to configure.ac (which is pointless in all but the
strangest cases) is to use AC_DEFUN, then *when* would I ever be able to
successfully use m4_define? I suppose it might work in acsite.m4, as
that's not included by aclocal.m4.
My only point is that the manual is a bit unclear on this point - almost
misleading, in fact.
I'd call it a documentation bug at this point. (Eric - comments?)
Regards,
John