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.

Operation modes:

--help display this help and exit
 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 if macro definition matches REGEXP,
default \$\({[^}]*}\|[0-9][0-9]+\)

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

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]

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


-d, --debug[=FLAGS]
 set debug level (no FLAGS implies ‘aeq’)
 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

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: <>. General help using GNU software: <>.


Copyright © 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <>. 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.

openSUSE Logo