# GNU M4 ¶

This manual (6 February 2026) is for GNU M4 (version 1.4.21), a package containing an implementation of the m4 macro language.

Copyright © 1989–1994, 2004–2014, 2016–2017, 2020–2026 Free Software Foundation, Inc.

> Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License.”

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). `m4` also has builtin functions for including files, running shell commands, doing arithmetic, etc. Autoconf needs GNU `m4` for generating `configure` scripts, but not for running them.

GNU `m4` was originally written by René Seindal, with subsequent changes by François Pinard and other volunteers on the Internet. All names and email addresses can be found in the files `m4-1.4.21/AUTHORS` and `m4-1.4.21/THANKS` from the GNU M4 distribution.

This is release 1.4.21. It is now considered stable: future releases in the 1.4.x series are only meant to fix bugs, increase speed, or improve documentation. However…

An experimental feature, which would improve `m4` usefulness, allows for changing the syntax for what is a word in `m4`. You should use:

    ./configure --enable-changeword

if you want this feature compiled in. The current implementation slows down `m4` considerably and is hardly acceptable. In the future, `m4` 2.0 will come with a different set of new features that provide similar capabilities, but without the inefficiencies, so changeword will go away and you should not count on it.

## Table of Contents