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.