home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
- 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, `makefile' and `Makefile' 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. 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.
-
- 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 contain-
- ing 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
-
- _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)
- or ${_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 sin-
- gle character, the parentheses or braces 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:
-
- 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 _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(1) options,
- `FFLAGS' for _f_7_7(1) options, `PFLAGS' for _p_c(1) options, and
- `LFLAGS' and `YFLAGS' for _l_e_x and _y_a_c_c(1) options. In addi-
- tion, the macro `MFLAGS' is filled in with the initial com-
- mand line options supplied to _m_a_k_e. This simplifies main-
- taining a hierarchy of makefiles as one may then invoke _m_a_k_e
- on makefiles in subdirectories and pass along useful options
- such as -k.
-
- 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
- target is a directory or depends on the special name `.PRE-
- CIOUS'.
-
- 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.
-
- -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), f77(1), pc(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
-
- RESTRICTIONS
- 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.
-
-