GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible although it has some extensions (for example, handling more than 9 positional parameters to macros). GNU M4 also has built-in functions for running shell commands, doing arithmetic, including files, etc.
GNU M4 is a macro processor in the sense that it copies its input to the output expanding macros as it goes. Macros are either builtin or user-defined and can take any number of arguments.
Besides just doing macro expansion, m4 has builtin functions for including named files, running UNIX commands, doing integer arithmetic, manipulating text in various ways, recursion etc... m4 can be used either as a front-end to a compiler or as a macro processor in its own right.
What's New in This Release: [ read full changelog ]
· Clean up compiler warnings.
· src/builtin.c (m4_patsubst): Drop dead store.
· src/eval.c (unary_term): Likewise.
· src/input.c (match_input): Likewise. Also drop useless casts to
· void.
· src/symtab.c (symtab_debug): Drop useless casts.
· Test previous commit.
· doc/m4.texinfo (Format): Add a test.
· NEWS: Document the fix.
· THANKS: Update.