AUTOM4TE(1)

✨ autom4te β€” the manual page, bestie edition ✨

okay so real talk: this is the manual page for autom4te, living in the User Commands section of your friendly neighbourhood Unix manual. it's giving "secret engine that makes Autoconf go brrr" and honestly? iconic. let's get into it πŸ’…


🌸 NAME 🌸

autom4te β€” generate files and scripts thanks to M4


πŸ¦‹ SYNOPSIS πŸ¦‹

autom4te [OPTION]... [FILES]

πŸ’– DESCRIPTION πŸ’–

So here's the vibe: autom4te runs GNU M4 on the FILES, but it's smart about it β€” it avoids useless runs. What it spits out depends on what you asked for:

  • if you're tracing, it outputs the traces
  • if you're freezing, it outputs the frozen file
  • otherwise, it outputs the expansion of the FILES

periodt.

Now, if some of the FILES are named 'FILE.m4f', they get treated as M4 frozen files of all the previous files β€” which means those previous files are not loaded. Slay, efficiency. BUT: if 'FILE.m4f' is nowhere to be found, then 'FILE.m4' gets used instead, together with all the previous files. bestie always has a backup plan 🫢

Some files may be optional, i.e., they'll only be processed if they're found in the include path β€” but they must end in '.m4?'. heads up: the question mark is not part of the actual file name, it's just the little "maybe?" signal πŸ™ˆ


πŸŽ€ Operation modes πŸŽ€

  • -h, --help β€” print this help, then exit
  • -V, --version β€” print version number, then exit
  • -v, --verbose β€” verbosely report processing (she's chatty, we love that)
  • -d, --debug β€” don't remove temporary files
  • -o, --output=FILE β€” save output in FILE (defaults to '-', aka stdout)
  • -f, --force β€” don't rely on cached values
  • -W, --warnings=CATEGORY β€” report the warnings falling in CATEGORY (a comma-separated list is accepted, go off)
  • -l, --language=LANG β€” specify the set of M4 macros to use
  • -C, --cache=DIRECTORY β€” preserve results for future runs in DIRECTORY
  • --no-cache β€” disable the cache
  • -m, --mode=OCTAL β€” change the non trace output file mode (0666)
  • -M, --melt β€” don't use M4 frozen files

🌈 Languages include: 🌈

  • 'Autoconf' β€” create Autoconf configure scripts
  • 'Autotest' β€” create Autotest test suites
  • 'M4sh' β€” create M4sh shell scripts
  • 'M4sugar' β€” create M4sugar output

⭐ Warning categories are: ⭐

  • cross β€” cross compilation issues
  • gnu β€” GNU coding standards (default in gnu and gnits modes)
  • obsolete β€” obsolete features or constructions (default)
  • override β€” user redefinitions of Automake rules or variables
  • portability β€” portability issues (default in gnu and gnits modes)
  • portability-recursive β€” nested Make variables (default with -Wportability)
  • extra-portability β€” extra portability issues related to obscure tools
  • syntax β€” dubious syntactic constructs (default)
  • unsupported β€” unsupported or incomplete features (default)

πŸ’œ -W also understands: πŸ’œ

  • all β€” turn on all the warnings
  • none β€” turn off all the warnings
  • no-CATEGORY β€” turn off warnings in CATEGORY
  • error β€” treat all enabled warnings as errors
lowkey important: the environment variables 'M4' and 'WARNINGS' are honored. don't forget they're lurking in the background bestie πŸ‘€

🧚 Library directories: 🧚

  • -B, --prepend-include=DIR β€” prepend directory DIR to search path
  • -I, --include=DIR β€” append directory DIR to search path

πŸ“ Tracing: πŸ“

  • -t, --trace=MACRO[:FORMAT] β€” report the MACRO invocations
  • -p, --preselect=MACRO β€” prepare to trace MACRO in a future run

πŸ‘‘ Freezing: πŸ‘‘

  • -F, --freeze β€” produce an M4 frozen state file for FILES

πŸ”₯ FORMAT defaults to '$f:$l:$n:$%', and can use the following escapes: πŸ”₯

  • $$ β€” literal $
  • $f β€” file where macro was called
  • $l β€” line where macro was called
  • $d β€” nesting depth of macro call
  • $n β€” name of the macro
  • $NUM β€” argument NUM, unquoted and with newlines
  • $SEP@ β€” all arguments, with newlines, quoted, and separated by SEP
  • $SEP* β€” all arguments, with newlines, unquoted, and separated by SEP
  • $SEP% β€” all arguments, without newlines, unquoted, and separated by SEP

And what even is SEP, you ask? 🫢 It can be:

  • empty β€” for the default (comma for @ and *, colon for %)
  • a single character β€” for that character
  • {STRING} β€” to use a string

🌟 AUTHOR 🌟

Written by Akim Demaille.


😭 REPORTING BUGS 😭

Report bugs to bug-autoconf@gnu.org, or via Savannah: https://savannah.gnu.org/support/?group=autoconf.


Copyright Β© 2026 Free Software Foundation, Inc. License GPLv3+/Autoconf: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>, <https://gnu.org/licenses/exceptions.html>

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


πŸŽ€ SEE ALSO πŸŽ€

autoconf(1), automake(1), autoreconf(1), autoupdate(1), autoheader(1), autoscan(1), config.guess(1), config.sub(1), ifnames(1), libtool(1).

The full documentation for Autoconf is maintained as a Texinfo manual. To read the manual locally, use the command

info autoconf

You can also consult the Web version of the manual at https://gnu.org/software/autoconf/manual/.


and that's the whole page, bestie 🫢 this was GNU Autoconf 2.73, dated March 2026 β€” no cap, you're now fully autom4te-pilled πŸ’…βœ¨

πŸ“¦ where this page comes from