glenda.party
term% ls -F
term% pwd
$home/manuals/unix_v7/1/make
term% cat index.txt
MAKE(1)                     General Commands Manual                    MAKE(1)

NAME
       make - maintain program groups

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

DESCRIPTION
       Make  executes commands in makefile to update one or more target names.
       Name is typically a program.  If no -f option  is  present,  ‘makefile'
       and  ‘Makefile'  are  tried in order.  If makefile is ‘-', the standard
       input is taken.  More than one -f option may appear

       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.

       Makefile contains a sequence of entries that specify dependencies.  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  makefile 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

       Makefile entries of the form

              string1 = string2

       are  macro  definitions.   Subsequent appearances of $(string1) are re‐
       placed by string2.  If string1 is a single character,  the  parentheses
       are optional.

       Make  infers  prerequisites  for files for which makefile gives no con‐
       struction commands.  For example, a ‘.c' file may be inferred  as  pre‐
       requisite  for  a  ‘.o'  file and be compiled to produce the ‘.o' file.
       Thus the preceding example can be done more briefly:



                     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 ‘.SUFFIXES'; multiple lists  accu‐
       mulate;  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 s2 that depends on a similarly
       named file with suffix s1 is specified as an  entry  for  the  ‘target'
       s1s2.   In  such  an  entry, the special macro $* stands for the target
       name with suffix deleted, $@ for the full target name, $< for the  com‐
       plete  list of prerequisites, 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  compilations.   In  particular,
       ‘CFLAGS'  is  used for cc and f77(1) options, ‘LFLAGS' and ‘YFLAGS' for
       lex and yacc(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 makefile, or the first character of the command is ‘@'.

       Commands  returning  nonzero status (see intro(1)) cause make to termi‐
       nate unless the special target ‘.IGNORE' is in makefile or the  command
       begins with <tab><hyphen>.

       Interrupt and quit cause the target to be deleted unless the target de‐
       pends on the special name ‘.PRECIOUS'.

       Other options:

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

       -k     When  a command returns nonzero status, abandon work on the cur‐
              rent 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 up‐
              date the targets.

       -t     Touch, i.e. update the modified date of targets, without execut‐
              ing 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 Make - A Program for Maintaining Computer Programs

BUGS
       Some  commands  return nonzero status inappropriately.  Use -i to over‐
       come the difficulty.
       Commands that are directly executed by the shell,  notably  cd(1),  are
       ineffectual across newlines in make.

                                                                       MAKE(1)