Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ make(1) — GENIX 4.1A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sh(1)

touch(1)

f77(1)

pc(1)



      MAKE(1)                 GENIX Programmer's 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.  If a name appears  on
           the  left  of  more than one `colon' line, then it depends on all of
           the names on the right of the colon on those  lines,  but  only  one
           command  sequence  may  be specified for it.  If a name appears on a
           line with a double colon :: then the command sequence following that
           line  is  performed  only if the name is out of date with respect to
           the names to the right of the double colon, and is not  affected  by
           other double colon lines on which that name may appear.

           Two special forms of a name are recognized.  A name like a(b)  means
           the  file  named b stored in the archive named a. A name like a((b))
           means the file stored in archive a containing the entry point b.

           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
           replaced  by  string2.   If  string1  is  a  single  character,  the



      Printed 11/16/83                                                        1





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



           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
           prerequisite 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
           accumulate; an empty list clears what came before.  Order is  signi-
           ficant;  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 .p

           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
           complete 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  communi-
           cate  optional arguments to any resulting compilations.  In particu-
           lar, `CFLAGS'  is  used  for  cc(1)  options,  `FFLAGS'  for  f77(1)
           options,  `PFLAGS'  for pc(1) options, and `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  ter-
           minate  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
           depends on the special name `.PRECIOUS'.

           Other options:

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




      Printed 11/16/83                                                        2





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



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

           -t   Touch, i.e. update the modified date of targets,  without  exe-
                cuting 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), f77(1), pc(1)
           S. I. Feldman Make - A Program for Maintaining Computer Programs

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




























      Printed 11/16/83                                                        3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026