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 Rene' Seindal, from Denmark. GNU `m4' has a web site at http://www.gnu.org/software/m4/. 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, more information can be found in the version-control-only file HACKING. In the subdirectories `tests' and `doc/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 `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 `ABOUT-NLS' for how to customize this program to your language. See file `NEWS' for a list of major changes in the current release. See file `AUTHORS' for the names of maintainers. See file `THANKS' for a list of contributors. By using `./configure --with-gmp, you get multiple precision integral and rational arithmetic using mpeval. The implementation depends on the GNU gmp v2 library. By using `./configure --with-modules=`foo bar baz', you get an m4 with only the named modules preloaded. The default modules (preloaded if you do not use this option) are sufficient to do the job of GNU m4-1.4. Additional modules may be desirable, or necessary if libltdl does not support your host architecture. The implementation uses libltdl interface, details of which are in the libtool manual. See file `modules/README' for a more detailed description. By default, the `syscmd' and `esyscmd' macros try to use the first instance of `sh' found by `command -p getconf PATH' at configure time, with a default of `/bin/sh'. If that default is inappropriate, you can use `./configure --with-syscmd-shell=location' to specify the shell to use. By using `./configure --with-dmalloc', GNU m4 is linked with Gray Watson's dmalloc package. It is a debugging option for finding memory management problems. Gray Watson's dmalloc package is available at ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz. GNU M4 uses GNU Libtool in order to build shared libraries on a variety of systems. While this is very nice for making usable binaries, it can be a pain when trying to debug a program. For that reason, compilation of shared libraries can be turned off by specifying the `--disable-shared' option to `configure'. However, without shared libraries, modules that are not preloaded will not be available for use. Send bug reports, comments or ideas 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. Don't forget all relevant information about your operating system, compiler, libraries, ... The easiest way to remember this information is by using the testsuite. Any test failures are automatically logged, along with lots of useful information about your setup; simply mailing tests/testsuite.log to `bug-m4@gnu.org' is a good start. If you want to dive in and debug a failure, you may find it useful to fine-tune the execution of the testsuite. For example, running test 12 in verbose mode can be done with: make check TESTSUITEFLAGS='-v -d -x 12' The testsuite understands --help to tell you more about the current set of tests. For any copyright year range specified as YYYY-ZZZZ in this package note that the range specifies every single year in that closed interval. ======================================================================== Copyright (C) 2000, 2005-2011, 2013-2014, 2017 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, 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.