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 built-in 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 Rene' Seindal, from Denmark.
This release is considered stable.

If GNU `m4' is meant to serve GNU `autoconf', beware that `m4'
should be fully installed *prior to* configuring `autoconf' itself.
Likewise, if you intend on hacking GNU `m4' from git, the bootstrap
process requires that you first install a released copy of GNU `m4'.

If you are just trying to build `m4' from a released tarball, you
should not normally need to run `./bootstrap' or `autoreconf'; just go
ahead and start with `./configure'.  If you are trying to build `m4'
from git or CVS, more information can be found in the file HACKING,
only found in a version control checkout.

In the subdirectory `examples' you will find various m4 files, ranging
from trivial test files to rather advanced macros.  If you intend to
use m4 seriously, you might find useful material down there.

See file `BACKLOG' for a summary of pending mail and articles.
See file `COPYING' for copying conditions.  Note that M4 is distributed
under the GNU Public License version 3 or later.  Some files in the
distribution are copied from the gnulib project, and hence bear the
designation version 2 or later because they are unmodified from gnulib;
however, if you modify these files using M4 rather than gnulib as the
source, you must update the license to be GPLv3 or later.
See file `INSTALL' for compilation and installation instructions.
See file `NEWS' for a list of major changes in the current release.
See file `THANKS' for a list of contributors.

By using `./configure --enable-changeword', you get an experimental
feature which allows for changing the syntax of what is a "word" in
`m4'.  This feature will not be present in m4 2.0, but will be
replaced by other new features which provide similar capability, so
do not count on it.

Send bug reports to `bug-m4@gnu.org'.  A bug report is an adequate
description of the problem: your input, what you expected, what you got,
and why this is wrong.  Diffs are welcome, but they only describe a
solution, from which the problem might be uneasy to infer.

========================================================================

Copyright (C) 2000, 2005, 2006 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.2 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.  A copy of the license is included in the ``GNU Free
Documentation License'' file as part of this distribution.
