.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.38.2.
.TH AUTOM4TE "1" "September 2010" "GNU Autoconf 2.68" "User Commands"
.SH NAME
autom4te \- Generate files and scripts thanks to M4
.SH SYNOPSIS
.B autom4te
[\fIOPTION\fR]... [\fIFILES\fR]
.SH DESCRIPTION
Run GNU M4 on the FILES, avoiding useless runs.  Output the traces if tracing,
the frozen file if freezing, otherwise the expansion of the FILES.
.PP
If some of the FILES are named `FILE.m4f' they are considered to be M4
frozen files of all the previous files (which are therefore not loaded).
If `FILE.m4f' is not found, then `FILE.m4' will be used, together with
all the previous files.
.PP
Some files may be optional, i.e., will only be processed if found in the
include path, but then must end in `.m4?';  the question mark is not part of
the actual file name.
.SS "Operation modes:"
.TP
\fB\-h\fR, \fB\-\-help\fR
print this help, then exit
.TP
\fB\-V\fR, \fB\-\-version\fR
print version number, then exit
.TP
\fB\-v\fR, \fB\-\-verbose\fR
verbosely report processing
.TP
\fB\-d\fR, \fB\-\-debug\fR
don't remove temporary files
.TP
\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
save output in FILE (defaults to `\-', stdout)
.TP
\fB\-f\fR, \fB\-\-force\fR
don't rely on cached values
.TP
\fB\-W\fR, \fB\-\-warnings\fR=\fICATEGORY\fR
report the warnings falling in CATEGORY
.TP
\fB\-l\fR, \fB\-\-language\fR=\fILANG\fR
specify the set of M4 macros to use
.TP
\fB\-C\fR, \fB\-\-cache\fR=\fIDIRECTORY\fR
preserve results for future runs in DIRECTORY
.TP
\fB\-\-no\-cache\fR
disable the cache
.TP
\fB\-m\fR, \fB\-\-mode\fR=\fIOCTAL\fR
change the non trace output file mode (0666)
.TP
\fB\-M\fR, \fB\-\-melt\fR
don't use M4 frozen files
.SS "Languages include:"
.TP
`Autoconf'
create Autoconf configure scripts
.TP
`Autotest'
create Autotest test suites
.TP
`M4sh'
create M4sh shell scripts
.TP
`M4sugar'
create M4sugar output
.SS "Warning categories include:"
.TP
`cross'
cross compilation issues
.TP
`gnu'
GNU coding standards (default in gnu and gnits modes)
.TP
`obsolete'
obsolete features or constructions
.TP
`override'
user redefinitions of Automake rules or variables
.TP
`portability'
portability issues (default in gnu and gnits modes)
.TP
`syntax'
dubious syntactic constructs (default)
.TP
`unsupported'
unsupported or incomplete features (default)
.TP
`all'
all the warnings
.TP
`no\-CATEGORY'
turn off warnings in CATEGORY
.TP
`none'
turn off all the warnings
.TP
`error'
treat warnings as errors
.PP
The environment variables `M4' and `WARNINGS' are honored.
.SS "Library directories:"
.TP
\fB\-B\fR, \fB\-\-prepend\-include\fR=\fIDIR\fR
prepend directory DIR to search path
.TP
\fB\-I\fR, \fB\-\-include\fR=\fIDIR\fR
append directory DIR to search path
.SS "Tracing:"
.TP
\fB\-t\fR, \fB\-\-trace\fR=\fIMACRO[\fR:FORMAT]
report the MACRO invocations
.TP
\fB\-p\fR, \fB\-\-preselect\fR=\fIMACRO\fR
prepare to trace MACRO in a future run
.SS "Freezing:"
.TP
\fB\-F\fR, \fB\-\-freeze\fR
produce an M4 frozen state file for FILES
.SS "FORMAT defaults to `$f:$l:$n:$%', and can use the following escapes:"
.TP
$$
literal $
.TP
$f
file where macro was called
.TP
$l
line where macro was called
.TP
$d
nesting depth of macro call
.TP
$n
name of the macro
.TP
$NUM
argument NUM, unquoted and with newlines
.TP
$SEP@
all arguments, with newlines, quoted, and separated by SEP
.TP
$SEP*
all arguments, with newlines, unquoted, and separated by SEP
.TP
$SEP%
all arguments, without newlines, unquoted, and separated by SEP
.PP
SEP can be empty for the default (comma for @ and *, colon for %),
a single character for that character, or {STRING} to use a string.
.SH AUTHOR
Written by Akim Demaille.
.SH "REPORTING BUGS"
Report bugs to <bug\-autoconf@gnu.org>.
.br
GNU Autoconf home page: <http://www.gnu.org/software/autoconf/>.
.br
General help using GNU software: <http://www.gnu.org/gethelp/>.
.SH COPYRIGHT
Copyright \(co 2010 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
.br
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
.SH "SEE ALSO"
.BR autoconf (1),
.BR automake (1),
.BR autoreconf (1),
.BR autoupdate (1),
.BR autoheader (1),
.BR autoscan (1),
.BR config.guess (1),
.BR config.sub (1),
.BR ifnames (1),
.BR libtool (1).
.PP
The full documentation for
.B autom4te
is maintained as a Texinfo manual.  If the
.B info
and
.B autom4te
programs are properly installed at your site, the command
.IP
.B info autom4te
.PP
should give you access to the complete manual.
