# M4 - macro processor - man - [phpMan]

> **TLDR:** Macro processor.
>
- Process macros in a file:
  `m4 {{path/to/file}}`
- Define a macro before processing files:
  `m4 {{-D|--define}} {{macro_name}}={{macro_value}} {{path/to/file}}`

*Source: tldr-pages*

---

[_M4_(1)](https://www.chedong.com/phpMan.php/man/M4/1/markdown)                                       User Commands                                      [_M4_(1)](https://www.chedong.com/phpMan.php/man/M4/1/markdown)

## NAME
       m4 - macro processor

## SYNOPSIS
       **m4 **[_OPTION_]... [_FILE_]...

## DESCRIPTION
       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

### --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]+\)

### -W --word-regexp
              use REGEXP for macro name syntax

### Preprocessor features:
### -D --define=NAME
              define NAME as having VALUE, or empty

### -I --include
              append DIRECTORY to include path

### -s --synclines
              generate `#line NUM "FILE"' lines

### -U --undefine
              undefine NAME

### Limits control:
### -g --gnu
              override **-G **to re-enable GNU extensions

### -G --traditional
              suppress all GNU extensions

### -H --hashsize
              set symbol lookup hash table size [509]

### -L --nesting-limit
              change nesting limit, 0 for unlimited [0]

### Frozen state files:
### -F --freeze-state
              produce a frozen state on FILE at end

### -R --reload-state
              reload a frozen state from FILE at start

### Debugging:
### -d --debug
              set debug level (no FLAGS implies `aeq')

       **--debugfile**[=_FILE_]
              redirect debug and trace output to FILE (default stderr, discard if empty string)

### -l --arglength
              restrict macro tracing size

### -t --trace
              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  in‐
       cluded 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.

## AUTHOR
       Written by Rene' Seindal.

## REPORTING BUGS
       Report bugs to: <bug-m4@gnu.org>
       GNU M4 home page: <<https://www.gnu.org/software/m4/>>
       General help using GNU software: <<https://www.gnu.org/gethelp/>>

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

## SEE ALSO
       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.

GNU M4 1.4.19                                 May 2021                                         [_M4_(1)](https://www.chedong.com/phpMan.php/man/M4/1/markdown)
