Node:Macro Definitions, Next:Macro Names, Up:Writing Autoconf Macros
Autoconf macros are defined using the AC_DEFUN
macro, which is
similar to the M4 builtin m4_define
macro. In addition to
defining a macro, AC_DEFUN
adds to it some code that is used to
constrain the order in which macros are called (see Prerequisite Macros).
An Autoconf macro definition looks like this:
AC_DEFUN(macro-name, macro-body)
You can refer to any arguments passed to the macro as $1
,
$2
, etc. See How to define new macros, for more complete information on writing M4 macros.
Be sure to properly quote both the macro-body and the macro-name to avoid any problems if the macro happens to have been previously defined.
Each macro should have a header comment that gives its prototype, and a
brief description. When arguments have default values, display them in
the prototype. For example:
# AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1]) # -------------------------------------- m4_define([AC_MSG_ERROR], [{ _AC_ECHO([configure: error: $1], 2); exit m4_default([$2], 1); }])
Comments about the macro should be left in the header comment. Most
other comments will make their way into configure
, so just keep
using #
to introduce comments.
If you have some very special comments about pure M4 code, comments
that make no sense in configure
and in the header comment, then
use the builtin dnl
: it causes m4
to discard the text
through the next newline.
Keep in mind that dnl
is rarely needed to introduce comments;
dnl
is more useful to get rid of the newlines following macros
that produce no output, such as AC_REQUIRE
.