# make

## NAME



           make - GNU make utility to maintain groups of programs
    


## SYNOPSIS



           **make**[_OPTION_]... [_TARGET_]...
    


## DESCRIPTION



           The _make_ utility will determine automatically which pieces of a
           large program need to be recompiled, and issue the commands to
           recompile them.  The manual describes the GNU implementation of
           **make** , which was written by Richard Stallman and Roland McGrath,
           and is currently maintained by Paul Smith.  Our examples show C
           programs, since they are very common, but you can use **make** with
           any programming language whose compiler can be run with a shell
           command.  In fact, **make** is not limited to programs.  You can use
           it to describe any task where some files must be updated
           automatically from others whenever the others change.
    
           To prepare to use **make** , you must write a file called the _makefile_
           that describes the relationships among files in your program, and
           provides commands for updating each file.  In a program, typically
           the executable file is updated from object files, which are in
           turn made by compiling source files.
    
           Once a suitable makefile exists, each time you change some source
           files, this simple shell command:
    
                  **make**
    
           suffices to perform all necessary recompilations.  The **make**
           program uses the makefile description and the last-modification
           times of the files to decide which of the files need to be
           updated.  For each of those files, it issues the commands recorded
           in the makefile.
    
           **make** executes commands in the _makefile_ to update one or more
           _targets_ , where _target_ is typically a program.  If no **-f** option is
           present, **make** will look for the makefiles _GNUmakefile_ , _makefile_ ,
           and _Makefile_ , in that order.
    
           Normally you should call your makefile either _makefile_ or
           _Makefile_.  (We recommend _Makefile_ because it appears prominently
           near the beginning of a directory listing, right near other
           important files such as _README_.)  The first name checked,
           _GNUmakefile_ , is not recommended for most makefiles.  You should
           use this name if you have a makefile that is specific to GNU **make** ,
           and will not be understood by other versions of **make**.  If _makefile_
           is '-', the standard input is read.
    
           **make** updates a target if it depends on prerequisite files that
           have been modified since the target was last modified, or if the
           target does not exist.
    


## OPTIONS



           **-b** , **-m**
                These options are ignored for compatibility with other
                versions of **make**.
    
           **-B** , **--always-make**
                Unconditionally make all targets.
    
           **-C** _dir_ , **--directory** =_dir_
                Change to directory _dir_ before reading the makefiles or doing
                anything else.  If multiple **-C** options are specified, each is
                interpreted relative to the previous one: **-C** / **-C** etc is
                equivalent to **-C** /etc.  This is typically used with recursive
                invocations of **make**.
    
           **-d** Print debugging information in addition to normal processing.
                The debugging information says which files are being
                considered for remaking, which file-times are being compared
                and with what results, which files actually need to be
                remade, which implicit rules are considered and which are
                applied---everything interesting about how **make** decides what
                to do.
    
           **--debug** _[=FLAGS]_
                Print debugging information in addition to normal processing.
                If the _FLAGS_ are omitted, then the behavior is the same as if
                **-d** was specified.  _FLAGS_ may be any or all of the following
                names, comma- or space-separated.  Only the first character
                is significant: the rest may be omitted: _all_ for all
                debugging output (same as using **-d**), _basic_ for basic
                debugging, _verbose_ for more verbose basic debugging, _implicit_
                for showing implicit rule search operations, _jobs_ for details
                on invocation of commands, _makefile_ for debugging while
                remaking makefiles, _print_ shows all recipes that are run even
                if they are silent, and _why_ shows the reason **make** decided to
                rebuild each target.  Use _none_ to disable all previous
                debugging flags.
    
           **-e** , **--environment-overrides**
                Give variables taken from the environment precedence over
                variables from makefiles.
    
           **-E** _string_ , **--eval** _string_
                Interpret _string_ using the **eval** function, before parsing any
                makefiles.
    
           **-f** _file_ , **--file** =_file_ , **--makefile** =_FILE_
                Use _file_ as a makefile.
    
           **-i** , **--ignore-errors**
                Ignore all errors in commands executed to remake files.
    
           **-I** _dir_ , **--include-dir** =_dir_
                Specifies a directory _dir_ to search for included makefiles.
                If several **-I** options are used to specify several
                directories, the directories are searched in the order
                specified.  Unlike the arguments to other flags of **make** ,
                directories given with **-I** flags may come directly after the
                flag: **-I** _dir_ is allowed, as well as **-I** _dir_.  This syntax is
                allowed for compatibility with the C preprocessor's **-I** flag.
    
           **-j**[_jobs_], **--jobs**[=_jobs_]
                Specifies the number of _jobs_ (commands) to run
                simultaneously.  If there is more than one **-j** option, the
                last one is effective.  If the **-j** option is given without an
                argument, **make** will not limit the number of jobs that can run
                simultaneously.
    
           **--jobserver-style=**_style_
                The style of jobserver to use.  The _style_ may be one of **fifo** ,
                **pipe** , or **sem**(Windows only).
    
           **-k** , **--keep-going**
                Continue as much as possible after an error.  While the
                target that failed, and those that depend on it, cannot be
                remade, the other dependencies of these targets can be
                processed all the same.
    
           **-l**[_load_], **--load-average**[=_load_]
                Specifies that no new jobs (commands) should be started if
                there are others jobs running and the load average is at
                least _load_ (a floating-point number).  With no argument,
                removes a previous load limit.
    
           **-L** , **--check-symlink-times**
                Use the latest mtime between symlinks and target.
    
           **-n** , **--just-print** , **--dry-run** , **--recon**
                Print the commands that would be executed, but do not execute
                them (except in certain circumstances).
    
           **-o** _file_ , **--old-file** =_file_ , **--assume-old** =_file_
                Do not remake the file _file_ even if it is older than its
                dependencies, and do not remake anything on account of
                changes in _file_.  Essentially the file is treated as very old
                and its rules are ignored.
    
           **-O**[_type_], **--output-sync**[=_type_]
                When running multiple jobs in parallel with **-j** , ensure the
                output of each job is collected together rather than
                interspersed with output from other jobs.  If _type_ is not
                specified or is **target** the output from the entire recipe for
                each target is grouped together.  If _type_ is **line** the output
                from each command line within a recipe is grouped together.
                If _type_ is **recurse** output from an entire recursive make is
                grouped together.  If _type_ is **none** output synchronization is
                disabled.
    
           **-p** , **--print-data-base**
                Print the data base (rules and variable values) that results
                from reading the makefiles; then execute as usual or as
                otherwise specified.  This also prints the version
                information given by the **-v** switch (see below).  To print the
                data base without trying to remake any files, use _make -p_
                _-f/dev/null_.
    
           **-q** , **--question**
                ``Question mode''.  Do not run any commands, or print
                anything; just return an exit status that is zero if the
                specified targets are already up to date, nonzero otherwise.
    
           **-r** , **--no-builtin-rules**
                Eliminate use of the built-in implicit rules.  Also clear out
                the default list of suffixes for suffix rules.
    
           **-R** , **--no-builtin-variables**
                Don't define any built-in variables.
    
           **-s** , **--silent** , **--quiet**
                Silent operation; do not print the commands as they are
                executed.
    
           **--no-silent**
                Cancel the effect of the **-s** option.
    
           **-S** , **--no-keep-going** , **--stop**
                Cancel the effect of the **-k** option.
    
           **-t** , **--touch**
                Touch files (mark them up to date without really changing
                them) instead of running their commands.  This is used to
                pretend that the commands were done, in order to fool future
                invocations of **make**.
    
           **--trace**
                Information about the disposition of each target is printed
                (why the target is being rebuilt and what commands are run to
                rebuild it).
    
           **-v** , **--version**
                Print the version of the **make** program plus a copyright, a
                list of authors and a notice that there is no warranty.
    
           **-w** , **--print-directory**
                Print a message containing the working directory before and
                after other processing.  This may be useful for tracking down
                errors from complicated nests of recursive **make** commands.
    
           **--no-print-directory**
                Turn off **-w** , even if it was turned on implicitly.
    
           **--shuffle** _[=MODE]_
                Enable shuffling of goal and prerequisite ordering.  _MODE_ is
                one of _none_ to disable shuffle mode, _random_ to shuffle
                prerequisites in random order, _reverse_ to consider
                prerequisites in reverse order, or an integer _< seed>_ which
                enables _random_ mode with a specific _seed_ value.  If _MODE_ is
                omitted the default is _random_.
    
           **-W** _file_ , **--what-if** =_file_ , **--new-file** =_file_ , **--assume-new** =_file_
                Pretend that the target _file_ has just been modified.  When
                used with the **-n** flag, this shows you what would happen if
                you were to modify that file.  Without **-n** , it is almost the
                same as running a _touch_ command on the given file before
                running **make** , except that the modification time is changed
                only in the imagination of **make**.
    
           **--warn-undefined-variables**
                Warn when an undefined variable is referenced.
    


## EXIT STATUS



           GNU **make** exits with a status of zero if all makefiles were
           successfully parsed and no targets that were built failed.  A
           status of one will be returned if the **-q** flag was used and **make**
           determines that a target needs to be rebuilt.  A status of two
           will be returned if any errors were encountered.
    


## BUGS



           See the chapter ``Problems and Bugs'' in _The GNU Make Manual_.
    


* * *