2.9BSD/usr/man/cat1/make.1

Compare this file to the similar file:
Show the results in this format:


MAKE(1)             UNIX Programmer's Manual              MAKE(1)

NAME
     make - maintain program groups

SYNTAX
     make [ -f makefile ] [ option ] ...  file ...

DESCRIPTION
     _m_a_k_e executes commands in _m_a_k_e_f_i_l_e to update one or more
     target _n_a_m_e_s.  _n_a_m_e is typically a program.  If no -f option
     is present, _m_a_k_e_f_i_l_e and _M_a_k_e_f_i_l_e are tried in order.  If
     _m_a_k_e_f_i_l_e is `-', the standard input is taken.  More than one
     -f option may appear

     _m_a_k_e 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.

     _M_a_k_e_f_i_l_e contains a sequence of entries that specify depen-
     dencies.  The first line of an entry is a blank-separated
     list of targets, then a colon, then a list of prerequisite
     files.  Text following a semicolon, and all following lines
     that begin with a tab, are shell commands to be executed to
     update the target.

     Sharp and newline surround comments.

     The following _m_a_k_e_f_i_l_e says that `pgm' depends on two files
     `a.o' and `b.o', and that they in turn depend on `.c' files
     and a common file `incl':

          pgm: a.o b.o
               cc a.o b.o -lm -o pgm
          a.o: incl a.c
               cc -c a.c
          b.o: incl b.c
               cc -c b.c

     _M_a_k_e_f_i_l_e entries of the form:

          string1 = string2

     are macro definitions.  Subsequent appearances of $(_s_t_r_i_n_g_1)
     are replaced by _s_t_r_i_n_g_2.  If _s_t_r_i_n_g_1 is a single character,
     the parentheses are optional.

     _m_a_k_e infers prerequisites for files for which _m_a_k_e_f_i_l_e gives
     no construction commands.  For example, a `.c' file may be
     inferred as prerequisite for a `.o' file and be compiled to
     produce the `.o' file.  Thus the preceding example can be
     done more briefly:

Printed 7/25/83                                                 1

MAKE(1)             UNIX Programmer's Manual              MAKE(1)

          pgm: a.o b.o
               cc a.o b.o -lm -o pgm
          a.o b.o: incl

     Prerequisites are inferred according to selected suffixes
     listed as the `prerequisites' for the special name `.SUF-
     FIXES'; multiple lists accumulate; an empty list clears what
     came before.  Order is significant; the first possible name
     for which both a file and a rule as described in the next
     paragraph exist is inferred.  The default list is:

          .SUFFIXES: .out .o .c .e .r .f .y .l .s

     The rule to create a file with suffix _s_2 that depends on a
     similarly named file with suffix _s_1 is specified as an entry
     for the `target' _s_1_s_2.  In such an entry, the special macro
     $* stands for the target name with suffix deleted, $@ for
     the full target name, $< for the complete list of prere-
     quisites, and $? for the list of prerequisites that are out
     of date.  For example, a rule for making optimized `.o'
     files from `.c' files is:

          .c.o: ; cc -c -O -o $@ $*.c

     Certain macros are used by the default inference rules to
     communicate optional arguments to any resulting compila-
     tions.  In particular, `CFLAGS' is used for _c_c and _f_7_7(1)
     options, `LFLAGS' and `YFLAGS' for _l_e_x and _y_a_c_c(1) options.

     Command lines are executed one at a time, each by its own
     shell.  A line is printed when it is executed unless the
     special target `.SILENT' is in _m_a_k_e_f_i_l_e, or the first char-
     acter of the command is `@'.

     Commands returning nonzero status (see _i_n_t_r_o(1)) cause _m_a_k_e
     to terminate unless the special target `.IGNORE' is in
     _m_a_k_e_f_i_l_e or the command begins with <tab><hyphen>.

     Interrupt and quit cause the target to be deleted unless the
     special name `.PRECIOUS' depends on the target.

     Other options:

     -i   Equivalent to the special entry `.IGNORE:'.

     -k   When a command returns nonzero status, abandon work on
          the current entry, but continue on branches that do not
          depend on the current entry.

     -n   Trace and print, but do not execute the commands needed
          to update the targets.

Printed 7/25/83                                                 2

MAKE(1)             UNIX Programmer's Manual              MAKE(1)

     -t   Touch, i.e. update the modified date of targets,
          without executing any commands.

     -r   Equivalent to an initial special entry `.SUFFIXES:'
          with no list.

     -s   Equivalent to the special entry `.SILENT:'.

FILES
     makefile, Makefile

SEE ALSO
     sh(1), touch(1)
     S. I. Feldman, _M_a_k_e - _A _P_r_o_g_r_a_m _f_o_r _M_a_i_n_t_a_i_n_i_n_g _C_o_m_p_u_t_e_r
     _P_r_o_g_r_a_m_s

BUGS
     Some commands return nonzero status inappropriately.  Use -i
     to overcome the difficulty.
     Commands that are directly executed by the shell, notably
     _c_d(1), are ineffectual across newlines in _m_a_k_e.
     _M_a_k_e is not understanding of libraries or compiler define
     flags.
     Macros are not redefinable in _m_a_k_e command lines.

Printed 7/25/83                                                 3