m4 - macro processor


m4 [OPTION]... [FILE]...


Process macros in FILEs. If no FILE or if FILE is `-', standard input is read.

Mandatory or optional arguments to long options are mandatory or optional for short options too.

3.1. Operation modes:

  • --help
        display this help and exit
  • --version
        output version information and exit
  • -E, --fatal-warnings
        once: warnings become errors, twice: stop execution at first error
  • -i, --interactive
        unbuffer output, ignore interrupts
  • -P, --prefix-builtins
        force a `m4_' prefix to all builtins
  • -Q, --quiet, --silent
        suppress some warnings for builtins
  • --warn-macro-sequence[=REGEXP]
        warn if macro definition matches REGEXP,

default \$\({[^}]*}\|[0-9][0-9]+\)

3.2. Preprocessor features:

  • -D, --define=NAME[=VALUE]
        define NAME as having VALUE, or empty
  • -I, --include=DIRECTORY
        append DIRECTORY to include path
  • -s, --synclines
        generate `#line NUM "FILE"' lines
  • -U, --undefine=NAME
        undefine NAME

3.3. Limits control:

  • -g, --gnu
        override -G to re-enable GNU extensions
  • -G, --traditional
        suppress all GNU extensions
  • -H, --hashsize=PRIME
        set symbol lookup hash table size [509]
  • -L, --nesting-limit=NUMBER
        change nesting limit, 0 for unlimited [0]

3.4. Frozen state files:

  • -F, --freeze-state=FILE
        produce a frozen state on FILE at end
  • -R, --reload-state=FILE
        reload a frozen state from FILE at start

3.5. Debugging:

  • -d, --debug[=FLAGS]
        set debug level (no FLAGS implies `aeq')
  • --debugfile[=FILE]
        redirect debug and trace output to FILE (default stderr, discard if empty string)
  • -l, --arglength=NUM
        restrict macro tracing size
  • -t, --trace=NAME
        trace NAME when it is defined

3.6. FLAGS is any of:

  • a
        show actual arguments
  • c
        show before collect, after collect and after call
  • e
        show expansion
  • f
        say current input file name
  • i
        show changes in input files
  • l
        say current input line number
  • p
        show results of path searches
  • q
        quote values as necessary, with a or e flag
  • t
        trace for all macro calls, not only traceon'ed
  • x
        add a unique macro call id, useful with c flag
  • V
        shorthand for all of the above flags

If defined, the environment variable `M4PATH' is a colon-separated list of directories included after any specified by `-I'.

Exit status is 0 for success, 1 for failure, 63 for frozen file version mismatch, or whatever value was passed to the m4exit macro.


Written by Rene' Seindal.


Report bugs to: GNU M4 home page: <http://www.gnu.org/software/m4/> General help using GNU software: <http://www.gnu.org/gethelp/>


Copyright © 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


The full documentation for

m4 is maintained as a Texinfo manual. If the

info and

m4 programs are properly installed at your site, the command

info m4

should give you access to the complete manual.