Next: , Previous: , Up: Programming in M4sugar   [Contents][Index]


8.3.2 Diagnostic messages from M4sugar

When macros statically diagnose abnormal situations, benign or fatal, they should report them using these macros. For issuing dynamic issues, i.e., when configure is run, see Printing Messages.

Macro: m4_assert (expression, [exit-status = ‘1])

Assert that the arithmetic expression evaluates to non-zero. Otherwise, issue a fatal error, and exit autom4te with exit-status.

Macro: m4_errprintn (message)

Similar to the builtin m4_errprint, except that a newline is guaranteed after message.

Macro: m4_fatal (message)

Report a severe error message prefixed with the current location, and have autom4te die.

Macro: m4_location

Useful as a prefix in a message line. Short for:

__file__:__line__
Macro: m4_warn (category, message)

Report message as a warning (or as an error if requested by the user) if warnings of the category are turned on. If the message is emitted, it is prefixed with the current location, and followed by a call trace of all macros defined via AC_DEFUN used to get to the current expansion.

The category must be one of:

cross

Warnings about constructs that may interfere with cross-compilation, such as using AC_RUN_IFELSE without a default.

gnu

Warnings related to the GNU Coding Standards (see The GNU Coding Standards). On by default.

obsolete

Warnings about obsolete features. On by default.

override

Warnings about redefinitions of Autoconf internals.

portability

Warnings about non-portable constructs.

portability-recursive

Warnings about recursive Make variable expansions ($(foo$(x))).

extra-portability

Extra warnings about non-portable constructs, covering rarely-used tools.

syntax

Warnings about questionable syntactic constructs, incorrectly ordered macro calls, typos, etc. On by default.

unsupported

Warnings about unsupported features. On by default.

Hacking Note: The set of categories is defined by code in autom4te, not by M4sugar itself. Additions should be coordinated with Automake, so that both sets of tools accept the same options.


Next: Diversion support, Previous: Redefined M4 Macros, Up: Programming in M4sugar   [Contents][Index]