# 2.11BSD#431 - /usr/man/cat1/make.0

    MAKE(1)             UNIX 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 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.  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 com-
         mand sequence may be specified for it.  If a name appears on
         a line with a double colon :: then the command sequence fol-
         lowing 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.

         The special form of the name: a(b) means the file named b
         stored in the archive named a.

         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

    Printed 11/26/99	 August 15, 1987			1

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

         are macro definitions.  Subsequent appearances of $(string1)
         or ${string1} are replaced by string2.  If string1 is a sin-
         gle character, the parentheses or braces are optional.

         All environment variables are assumed to be macro defini-
         tions and processed as such.  The environment variables are
         processed before any makefile macro definitions; thus, macro
         assignments in a makefile override environmental variables.
         The -e option causes the environment to override the macro
         assignments in a makefile.  Finally, command line options of
         the form string1=string2 override both environment and
         makefile macro definitions.

         Make infers prerequisites for files for which makefile 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:

    	  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 .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 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 cc(1) options,
         `FFLAGS' for f77(1) options, `PFLAGS' for pc(1) options, and
         `LFLAGS' and `YFLAGS' for lex and yacc(1) options.  In addi-
         tion, the macro `MFLAGS' is filled in with the initial com-
         mand line options supplied to make.  This simplifies main-
         taining a hierarchy of makefiles as one may then invoke make
         on makefiles in subdirectories and pass along useful options

    Printed 11/26/99	 August 15, 1987			2

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

         such as -k.

         Another special macro is `VPATH'.	The `VPATH' macro should
         be set to a list of directories separated by colons.  When
         make searches for a file as a result of a dependency rela-
         tion, it will first search the current directory and then
         each of the directories on the `VPATH' list.  If the file is
         found, the actual path to the file will be used, rather than
         just the filename.  If `VPATH' is not defined, then only the
         current directory is searched.

         One use for `VPATH' is when one has several programs that
         compile from the same source.  The source can be kept in one
         directory and each set of object files (along with a
         separate makefile) would be in a separate subdirectory.  The
         `VPATH' macro would point to the source directory in this
         case.

         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 char-
         acter of the command is `@'.

         Commands returning nonzero status (see intro(1)) cause make
         to terminate 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 is a directory or depends on the special name `.PRE-
         CIOUS'.

         Other options:

         -e   Environmental variables override assignments within
    	  makefiles.

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

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

    Printed 11/26/99	 August 15, 1987			3

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

    FILES
         makefile, Makefile

    SEE ALSO
         sh(1), touch(1), f77(1), pc(1), getenv(3)
         S. I. Feldman Make - A Program for Maintaining Computer Pro-
         grams

    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.

         `VPATH' is intended to act like the System V `VPATH' sup-
         port, but there is no guarantee that it functions identi-
         cally.

    Printed 11/26/99	 August 15, 1987			4

Generated: 2016-12-26 | Generated by man2html V0.25 page hit count: 333 |