8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / man / man1 / make.1
blobd0cbd29072c15cfb6fabf7a7083dee56f1813a45
1 '\" te
2 .\" Copyright 1989 AT&T 
3 .\" Portions Copyright (c) 1992, X/Open Company Limited  All Rights Reserved
4 .\" Copyright (c) 2008, Sun Microsystems, Inc.  All Rights Reserved  
5 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at 
6 .\" http://www.opengroup.org/bookstore/.
7 .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.
8 .\"  This notice shall appear on any product containing this material.
9 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
10 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
11 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
12 .TH MAKE 1 "Jun 24, 2015"
13 .SH NAME
14 make \- maintain, update, and regenerate related programs and files
15 .SH SYNOPSIS
16 .LP
17 .nf
18 \fB/usr/bin/make\fR [\fB-d\fR] [\fB-dd\fR] [\fB-D\fR] [\fB-DD\fR] [\fB-e\fR]
19      [\fB-i\fR] [\fB-j\fR \FImaxjobs\fR] [\fB-k\fR] [\fB-m\fR \fI{serial | parallel}\fR]
20      [\fB-n\fR] [\fB-p\fR] [\fB-P\fR] [\fB-q\fR] [\fB-r\fR] [\fB-s\fR] [\fB-S\fR] [\fB-t\fR] [\fB-V\fR] 
21      [\fB-f\fR \fImakefile\fR]... [\fB-K\fR \fIstatefile\fR]... [\fItarget\fR]... 
22      [\fImacro\fR = \fIvalue\fR...]
23 .fi
25 .nf
26 \fB/usr/bin/dmake\fR [\fB-d\fR] [\fB-dd\fR] [\fB-D\fR] [\fB-DD\fR] [\fB-e\fR]
27      [\fB-i\fR] [\fB-j\fR \FImaxjobs\fR] [\fB-k\fR]  [\fB-m\fR \fI{serial | parallel}\fR]
28      [\fB-n\fR] [\fB-p\fR] [\fB-P\fR] [\fB-q\fR] [\fB-r\fR] [\fB-s\fR] [\fB-S\fR] [\fB-t\fR] [\fB-V\fR] 
29      [\fB-f\fR \fImakefile\fR]... [\fB-K\fR \fIstatefile\fR]... [\fItarget\fR]... 
30      [\fImacro\fR = \fIvalue\fR...]
31 .fi
33 .LP
34 .nf
35 \fB/usr/xpg4/bin/make\fR [\fB-d\fR] [\fB-dd\fR] [\fB-D\fR] [\fB-DD\fR]
36      [\fB-e\fR] [\fB-i\fR]  [\fB-j\fR \FImaxjobs\fR] [\fB-k\fR] [\fB-m\fR \fI{serial | parallel}\fR]
37      [\fB-n\fR] [\fB-p\fR] [\fB-P\fR] [\fB-q\fR] [\fB-r\fR] [\fB-s\fR] [\fB-S\fR] [\fB-t\fR] [\fB-V\fR] 
38      [\fB-f\fR \fImakefile\fR]... [\fItarget\fR]... [\fImacro\fR = \fIvalue\fR...]
39 .fi
41 .SH DESCRIPTION
42 .LP
43 The \fBmake\fR utility executes a list of shell commands associated with each
44 \fItarget\fR, typically to create or update a file of the same name.
45 \fImakefile\fR contains entries that describe how to bring a target up to date
46 with respect to those on which it depends, which are called \fIdependencies\fR.
47 Since each dependency is a target, it can have dependencies of its own.
48 Targets, dependencies, and sub-dependencies comprise a tree structure that
49 \fBmake\fR traces when deciding whether or not to rebuild a \fItarget\fR.
50 .sp
51 .LP
52 The \fBmake\fR utility recursively checks each \fItarget\fR against its
53 dependencies, beginning with the first target entry in \fImakefile\fR if no
54 \fItarget\fR argument is supplied on the command line. If, after processing all
55 of its dependencies, a target file is found either to be missing, or to be
56 older than any of its dependencies, \fBmake\fR rebuilds it. Optionally with
57 this version of \fBmake\fR, a target can be treated as out-of-date when the
58 commands used to generate it have changed since the last time the target was
59 built.
60 .sp
61 .LP
62 To build a given target, \fBmake\fR executes the list of commands, called a
63 \fIrule\fR. This rule can be listed explicitly in the target's makefile entry,
64 or it can be supplied implicitly by \fBmake\fR.
65 .sp
66 .LP
67 If no \fItarget\fR is specified on the command line, \fBmake\fR uses the first
68 target defined in \fImakefile\fR.
69 .sp
70 .LP
71 If a \fItarget\fR has no makefile entry, or if its entry has no rule,
72 \fBmake\fR attempts to derive a rule by each of the following methods, in turn,
73 until a suitable rule is found. Each method is described under Usage below.
74 .RS +4
75 .TP
76 .ie t \(bu
77 .el o
78 Pattern matching rules.
79 .RE
80 .RS +4
81 .TP
82 .ie t \(bu
83 .el o
84 Implicit rules, read in from a user-supplied makefile.
85 .RE
86 .RS +4
87 .TP
88 .ie t \(bu
89 .el o
90 Standard implicit rules (also known as suffix rules), typically read in from
91 the file \fB/usr/share/lib/make/make.rules\fR.
92 .RE
93 .RS +4
94 .TP
95 .ie t \(bu
96 .el o
97 \fBSCCS\fR retrieval. \fBmake\fR retrieves the most recent version from the
98 \fBSCCS\fR history file (if any).  See the description of the
99 \fB\&.SCCS_GET:\fR special-function target for details.
101 .RS +4
103 .ie t \(bu
104 .el o
105 The rule from the \fB\&.DEFAULT:\fR target entry, if there is such an entry in
106 the makefile.
110 If there is no makefile entry for a \fItarget\fR, if no rule can be derived for
111 building it, and if no file by that name is present, \fBmake\fR issues an error
112 message and halts.
113 .SH OPTIONS
115 The following options are supported:
117 .ne 2
119 \fB\fB-d\fR\fR
121 .RS 16n
122 Displays the reasons why \fBmake\fR chooses to rebuild a target. \fBmake\fR
123 displays any and all dependencies that are newer. In addition, \fBmake\fR
124 displays options read in from the \fBMAKEFLAGS\fR environment variable.
128 .ne 2
130 \fB\fB-dd\fR\fR
132 .RS 16n
133 Displays the dependency check and processing in vast detail.
137 .ne 2
139 \fB\fB-D\fR\fR
141 .RS 16n
142 Displays the text of the makefiles read in.
146 .ne 2
148 \fB\fB-DD\fR\fR
150 .RS 16n
151 Displays the text of the makefiles, \fBmake.rules\fR file, the state file, and
152 all hidden-dependency reports.
156 .ne 2
158 \fB\fB-e\fR\fR
160 .RS 16n
161 Environment variables override assignments within makefiles.
165 .ne 2
167 \fB\fB-f\fR \fImakefile\fR\fR
169 .RS 16n
170 Uses the description file \fImakefile\fR. A \fB\(mi\fR as the \fImakefile\fR
171 argument denotes the standard input. The contents of \fImakefile\fR, when
172 present, override the standard set of implicit rules and predefined macros.
173 When more than one \fB-f\fR \fImakefile\fR argument pair appears, \fBmake\fR
174 uses the concatenation of those files, in order of appearance.
176 When no \fImakefile\fR is specified, \fB/usr/bin/make\fR tries the following in
177 sequence, except when in POSIX mode (see \fB\&.POSIX\fR in Usage):
178 .RS +4
180 .ie t \(bu
181 .el o
182 If there is a file named \fBmakefile\fR in the working directory, \fBmake\fR
183 uses that file. If, however, there is an \fBSCCS\fR history file
184 (\fBSCCS/s.makefile\fR) which is newer, \fBmake\fR attempts to retrieve and use
185 the most recent version.
187 .RS +4
189 .ie t \(bu
190 .el o
191 In the absence of the above file(s), if a file named \fBMakefile\fR is present
192 in the working directory, \fBmake\fR attempts to use it.  If there is an
193 \fBSCCS\fR history file (\fBSCCS/s.Makefile\fR) that is newer, \fBmake\fR
194 attempts to retrieve and use the most recent version.
196 When no \fImakefile\fR is specified, \fB/usr/bin/make\fR in POSIX mode and
197 \fB/usr/xpg4/bin/make\fR try the following files in sequence:
198 .RS +4
200 .ie t \(bu
201 .el o
202 \fB\&./makefile\fR, \fB\&./Makefile\fR
204 .RS +4
206 .ie t \(bu
207 .el o
208 \fBs.makefile\fR, \fBSCCS/s.makefile\fR
210 .RS +4
212 .ie t \(bu
213 .el o
214 \fBs.Makefile\fR, \fBSCCS/s.Makefile\fR
219 .ne 2
221 \fB\fB-i\fR\fR
223 .RS 16n
224 Ignores error codes returned by commands.  Equivalent to the special-function
225 target \fB\&.IGNORE:\fR.
229 .ne 2
231 \fB-j\fR \fImaxjobs\fR
233 .RS 16n
234 Specify the maximum number of jobs that each instance of \fBmake\fR will invoke.
238 .ne 2
240 \fB\fB-k\fR\fR
242 .RS 16n
243 When a nonzero error status is returned by a rule, or when \fBmake\fR cannot
244 find a rule, abandons work on the current target, but continues with other
245 dependency branches that do not depend on it.
249 .ne 2
251 \fB\fB-K\fR \fIstatefile\fR\fR
253 .RS 16n
254 Uses the state file \fIstatefile\fR. A \fB\(mi\fR as the \fIstatefile\fR
255 argument denotes the standard input. The contents of \fIstatefile\fR, when
256 present, override the standard set of implicit rules and predefined macros.
257 When more than one \fB-K\fR \fIstatefile\fR argument pair appears, \fBmake\fR
258 uses the concatenation of those files, in order of appearance. (See also
259 \fB\&.KEEP_STATE\fR  and \fB\&.KEEP_STATE_FILE\fR in the Special-Function
260 Targets section).
264 .ne 2
266 \fB-m\fR \fI{serial | parallel}\fR
268 .RS 16n
269 Specify whether \fBmake\fR should execute jobs serially or in parallel.  The
270 default for \fBmake\fR is to run serially unless \fB-j\fR is specified.  The
271 default is for \fBdmake\fR is to run in parallel.
275 .ne 2
277 \fB\fB-n\fR\fR
279 .RS 16n
280 No execution mode. Prints commands, but does not execute them. Even lines
281 beginning with an \fB@\fR are printed. However, if a command line contains a
282 reference to the \fB$(MAKE)\fR macro, that line is always executed (see the
283 discussion of \fBMAKEFLAGS\fR in Reading Makefiles and the Environment). When
284 in POSIX mode, lines beginning with a "\fB+\fR" are executed.
288 .ne 2
290 \fB\fB-p\fR\fR
292 .RS 16n
293 Prints out the complete set of macro definitions and target descriptions.
297 .ne 2
299 \fB\fB-P\fR\fR
301 .RS 16n
302 Merely reports dependencies, rather than building them.
306 .ne 2
308 \fB\fB-q\fR\fR
310 .RS 16n
311 Question mode. \fBmake\fR returns a zero or nonzero status code depending on
312 whether or not the target file is up to date. When in POSIX mode, lines
313 beginning with a "\fB+\fR" are executed.
317 .ne 2
319 \fB\fB-r\fR\fR
321 .RS 16n
322 Does not read in the default makefile \fB/usr/share/lib/make/make.rules\fR.
326 .ne 2
328 \fB\fB-s\fR\fR
330 .RS 16n
331 Silent mode. Does not print command lines before executing them. Equivalent to
332 the special-function target \fB\&.SILENT:\fR.
336 .ne 2
338 \fB\fB-S\fR\fR
340 .RS 16n
341 Undoes the effect of the \fB-k\fR option. Stops processing when a non-zero exit
342 status is returned by a command.
346 .ne 2
348 \fB\fB-t\fR\fR
350 .RS 16n
351 Touches the target files (bringing them up to date) rather than performing
352 their rules. \fBWarning:\fR This can be \fBdangerous\fR when files are
353 maintained by more than one person. When the \fB\&.KEEP_STATE:\fR target
354 appears in the makefile, this option updates the state file just as if the
355 rules had been performed. When in POSIX mode, lines beginning with a "\fB+\fR"
356 are executed.
360 .ne 2
362 \fB\fB-V\fR\fR
364 .RS 16n
365 Puts \fBmake\fR into SysV mode. Refer to \fBsysV-make\fR(1) for respective
366 details.
369 .SH OPERANDS
371 The following operands are supported:
373 .ne 2
375 \fB\fItarget\fR\fR
377 .RS 15n
378 Target names, as defined in Usage.
382 .ne 2
384 \fB\fImacro\fR\fB=\fR\fIvalue\fR\fR
386 .RS 15n
387 Macro definition. This definition overrides any regular definition for the
388 specified macro within the makefile itself, or in the environment. However,
389 this definition can still be overridden by conditional macro assignments.
392 .SH USAGE
394 The usage of \fBmake\fR is described below:
395 .SS "Reading Makefiles and the Environment"
397 When \fBmake\fR first starts, it reads the \fBMAKEFLAGS\fR environment variable
398 to obtain any of the following options specified present in its value:
399 \fB-d\fR, \fB-D\fR, \fB-e\fR, \fB-i\fR, \fB-k\fR, \fB-n\fR, \fB-p\fR, \fB-q\fR,
400 \fB-r\fR, \fB-s\fR, \fB-S\fR, or \fB-t\fR. Due to the implementation of POSIX.2
401 (see \fBPOSIX.2\fR(5), the \fBMAKEFLAGS\fR values contains a leading \fB\(mi\fR
402 character. The \fBmake\fR utility then reads the command line for additional
403 options, which also take effect.
406 Next, \fBmake\fR reads in a default makefile that typically contains predefined
407 macro definitions, target entries for implicit rules, and additional rules,
408 such as the rule for retrieving \fBSCCS\fR files. If present, \fBmake\fR uses
409 the file \fBmake.rules\fR in the current directory; otherwise it reads the file
410 \fB/usr/share/lib/make/make.rules\fR, which contains the standard definitions
411 and rules. Use the directive:
413 .in +2
415 \fBinclude /usr/share/lib/make/make.rules\fR
417 .in -2
422 in your local \fBmake.rules\fR file to include them.
425 Next, \fBmake\fR imports variables from the environment (unless the \fB-e\fR
426 option is in effect), and treats them as defined macros. Because \fBmake\fR
427 uses the most recent definition it encounters, a macro definition in the
428 makefile normally overrides an environment variable of the same name. When
429 \fB-e\fR is in effect, however, environment variables are read in \fBafter\fR
430 all makefiles have been read. In that case, the environment variables take
431 precedence over definitions in the makefile.
434 Next, \fBmake\fR reads any makefiles you specify with \fB-f\fR, or one of
435 \fBmakefile\fR or \fBMakefile\fR as described above and then the state file, in
436 the local directory if it exists. If the makefile contains a
437 \fB\&.KEEP_STATE_FILE\fR target, then it reads the state file that follows the
438 target. Refer to special target \fB\&.KEEP_STATE_FILE\fR for details.
441 Next (after reading the environment if \fB-e\fR is in effect), \fBmake\fR reads
442 in any macro definitions supplied as command line arguments. These override
443 macro definitions in the makefile and the environment both, but only for the
444 \fBmake\fR command itself.
447 \fBmake\fR exports environment variables, using the most recently defined
448 value. Macro definitions supplied on the command line are not normally
449 exported, unless the macro is also an environment variable.
452 \fBmake\fR does not export macros defined in the makefile. If an environment
453 variable is set, and a macro with the same name is defined on the command line,
454 \fBmake\fR exports its value as defined on the command line. Unless \fB-e\fR is
455 in effect, macro definitions within the makefile take precedence over those
456 imported from the environment.
459 The macros \fBMAKEFLAGS\fR, \fBMAKE\fR, \fBSHELL\fR, \fBHOST_ARCH\fR,
460 \fBHOST_MACH\fR, and \fBTARGET_MACH\fR are special cases. See Special-Purpose
461 Macros below for details.
462 .SS "Makefile Target Entries"
464 A target entry has the following format:
466 .in +2
468        \fItarget\fR [\fB:\fR|\fB::\fR] [\fIdependency\fR] ... [\fB;\fR \fBcommand\fR] ... 
469                       [\fBcommand\fR] 
470                       ...
472 .in -2
476 The first line contains the name of a target, or a space-separated list of
477 target names, terminated with a colon or double colon. If a list of targets is
478 given, this is equivalent to having a separate entry of the same form for each
479 target. The colon(s) can be followed by a \fIdependency\fR, or a dependency
480 list. \fBmake\fR checks this list before building the target. The dependency
481 list can be terminated with a semicolon (\fB;\fR), which in turn can be
482 followed by a single Bourne shell command. Subsequent lines in the target entry
483 begin with a \fBTAB\fR and contain Bourne shell commands. These commands
484 comprise the rule for building the target.
487 Shell commands can be continued across input lines by escaping the
488 \fBNEWLINE\fR with a backslash (\fB\e\fR). The continuing line must also start
489 with a \fBTAB\fR.
492 To rebuild a target, \fBmake\fR expands macros, strips off initial \fBTAB\fR
493 characters and either executes the command directly (if it contains no shell
494 metacharacters), or passes each command line to a Bourne shell for execution.
497 The first \fInon-empty\fR line that does not begin with a \fBTAB\fR or \fB#\fR
498 begins another target or macro definition.
499 .SS "Special Characters"
501 Special characters are defined below.
502 .SS "\fIGlobal\fR"
503 .ne 2
505 \fB\fB#\fR\fR
507 .RS 20n
508 Start a comment. The comment ends at the next \fBNEWLINE\fR. If the \fB#\fR
509 follows the \fBTAB\fR in a command line, that line is passed to the shell
510 (which also treats \fB#\fR as the start of a comment).
514 .ne 2
516 \fB\fBinclude\fR \fIfilename\fR\fR
518 .RS 20n
519 If the word \fBinclude\fR appears as the first seven letters of a line and is
520 followed by a \fBSPACE\fR or \fBTAB\fR, the string that follows is taken as a
521 filename to interpolate at that line. \fBinclude\fR files can be nested to a
522 depth of no more than 38 nested makefiles . If \fIfilename\fR is a macro
523 reference, it is expanded.
526 .SS "\fITargets and Dependencies\fR"
527 .ne 2
529 \fB\fB:\fR\fR
531 .sp .6
532 .RS 4n
533 Target list terminator. Words following the colon are added to the dependency
534 list for the target or targets. If a target is named in more than one
535 colon-terminated target entry, the dependencies for all its entries are added
536 to form that target's complete dependency list.
540 .ne 2
542 \fB\fB::\fR\fR
544 .sp .6
545 .RS 4n
546 Target terminator for alternate dependencies. When used in place of a \fB:\fR
547 the double-colon allows a target to be checked and updated with respect to
548 alternate dependency lists. When the target is out-of-date with respect to
549 dependencies listed in the first alternate, it is built according to the rule
550 for that entry. When out-of-date with respect to dependencies in another
551 alternate, it is built according the rule in that other entry. Implicit rules
552 do not apply to double-colon targets; you must supply a rule for each entry. If
553 no dependencies are specified, the rule is always performed.
557 .ne 2
559 \fB\fItarget\fR [\fB+\fR \fItarget\fR.\|.\|.\|] \fB:\fR\fR
561 .sp .6
562 .RS 4n
563 Target group. The rule in the target entry builds all the indicated targets as
564 a group. It is normally performed only once per \fBmake\fR run, but is checked
565 for command dependencies every time a target in the group is encountered in the
566 dependency scan.
570 .ne 2
572 \fB\fB%\fR\fR
574 .sp .6
575 .RS 4n
576 Pattern matching wild card metacharacter.  Like the \fB*\fR shell wild card,
577 \fB%\fR matches any string of zero or more characters in a target name or
578 dependency, in the target portion of a conditional macro definition, or within
579 a pattern replacement macro reference. Notice that only one \fB%\fR can appear
580 in a target, dependency-name, or pattern-replacement macro reference.
584 .ne 2
586 \fB\fB\&./\fR\fIpathname\fR\fR
588 .sp .6
589 .RS 4n
590 \fBmake\fR ignores the leading \fB\&./\fR characters from targets with names
591 given as pathnames relative to "dot," the working directory.
594 .SS "\fIMacros\fR"
595 .ne 2
597 \fB\fB=\fR\fR
599 .RS 9n
600 Macro definition. The word to the left of this character is the macro name;
601 words to the right comprise its value. Leading and trailing white space
602 characters are stripped from the value. A word break following the \fB=\fR is
603 implied.
607 .ne 2
609 \fB\fB$\fR\fR
611 .RS 9n
612 Macro reference. The following character, or the parenthesized or bracketed
613 string, is interpreted as a macro reference: \fBmake\fR expands the reference
614 (including the \fB$\fR) by replacing it with the macro's value.
618 .ne 2
620 \fB\fB( )\fR\fR
624 \fB\fB{ }\fR\fR
626 .RS 9n
627 Macro-reference name delimiters. A parenthesized or bracketed word appended to
628 a \fB$\fR is taken as the name of the macro being referred to. Without the
629 delimiters, \fBmake\fR recognizes only the first character as the macro name.
633 .ne 2
635 \fB\fB$$\fR\fR
637 .RS 9n
638 A reference to the dollar-sign macro, the value of which is the character
639 \fB$\fR. Used to pass variable expressions beginning with \fB$\fR to the shell,
640 to refer to environment variables which are expanded by the shell, or to delay
641 processing of dynamic macros within the dependency list of a target, until that
642 target is actually processed.
646 .ne 2
648 \fB\fB\e$\fR\fR
650 .RS 9n
651 Escaped dollar-sign character.  Interpreted as a literal dollar sign within a
652 rule.
656 .ne 2
658 \fB\fB+=\fR\fR
660 .RS 9n
661 When used in place of \fB=\fR, appends a string to a macro definition (must be
662 surrounded by white space, unlike \fB=\fR).
666 .ne 2
668 \fB\fB:=\fR\fR
670 .RS 9n
671 Conditional macro assignment. When preceded by a list of targets with explicit
672 target entries, the macro definition that follows takes effect when processing
673 only those targets, and their dependencies.
677 .ne 2
679 \fB\fB:sh\fR \fB=\fR\fR
681 .RS 9n
682 Define the value of a macro to be the output of a command (see Command
683 Substitutions below).
687 .ne 2
689 \fB\fB:sh\fR\fR
691 .RS 9n
692 In a macro reference, execute the command stored in the macro, and replace the
693 reference with the output of that command (see \fBCommand Substitutions\fR
694 below).
697 .SS "\fIRules\fR"
698 .ne 2
700 \fB\fB+\fR\fR
702 .RS 8n
703 \fBmake\fR always executes the commands preceded by a "\fB+\fR", even when
704 \fB-n\fR is specified.
708 .ne 2
710 \fB\fB\(mi\fR\fR
712 .RS 8n
713 \fBmake\fR ignores any nonzero error code returned by a command line for which
714 the first non-\fBTAB\fR character is a \fB\(mi\fR\&. This character is not
715 passed to the shell as part of the command line. \fBmake\fR normally terminates
716 when a command returns nonzero status, unless the \fB-i\fR or \fB-k\fR options,
717 or the \fB\&.IGNORE:\fR special-function target is in effect.
721 .ne 2
723 \fB\fB@\fR\fR
725 .RS 8n
726 If the first non-\fBTAB\fR character is a \fB@\fR, \fBmake\fR does not print
727 the command line before executing it. This character is not passed to the
728 shell.
732 .ne 2
734 \fB\fB?\fR\fR
736 .RS 8n
737 Escape command-dependency checking. Command lines starting with this character
738 are not subject to command dependency checking.
742 .ne 2
744 \fB\fB!\fR\fR
746 .RS 8n
747 Force command-dependency checking. Command-dependency checking is applied to
748 command lines for which it would otherwise be suppressed. This checking is
749 normally suppressed for lines that contain references to the \fB?\fR dynamic
750 macro (for example, \fB$?\fR).
752 When any combination of \fB+\fR, \fB\(mi\fR, \fB@\fR, \fB?\fR, or \fB!\fR
753 appear as the first characters after the \fBTAB\fR, all that are present apply.
754 None are passed to the shell.
757 .SS "Special-Function Targets"
759 When incorporated in a makefile, the following target names perform
760 special-functions:
762 .ne 2
764 \fB\fB\&.DEFAULT:\fR\fR
766 .RS 23n
767 If it has an entry in the makefile, the rule for this target is used to process
768 a target when there is no other entry for it, no rule for building it, and no
769 \fBSCCS\fR history file from which to retrieve a current version. \fBmake\fR
770 ignores any dependencies for this target.
774 .ne 2
776 \fB\fB\&.DONE:\fR\fR
778 .RS 23n
779 If defined in the makefile, \fBmake\fR processes this target and its
780 dependencies after all other targets are built.  This target is also performed
781 when \fBmake\fR halts with an error, unless the \fB\&.FAILED\fR target is
782 defined.
786 .ne 2
788 \fB\fB\&.FAILED:\fR\fR
790 .RS 23n
791 This target, along with its dependencies, is performed instead of \fB\&.DONE\fR
792 when defined in the makefile and \fBmake\fR halts with an error.
796 .ne 2
798 \fB\fB\&.GET_POSIX:\fR\fR
800 .RS 23n
801 This target contains the rule for retrieving the current version of an
802 \fBSCCS\fR file from its history file in the current working directory.
803 \fBmake\fR uses this rule when it is running in POSIX mode.
807 .ne 2
809 \fB\fB\&.IGNORE:\fR\fR
811 .RS 23n
812 Ignore errors.  When this target appears in the makefile, \fBmake\fR ignores
813 non-zero error codes returned from commands. When used in POSIX mode,
814 \fB\&.IGNORE\fR could be followed by target names only, for which the errors is
815 ignored.
819 .ne 2
821 \fB\fB\&.INIT:\fR\fR
823 .RS 23n
824 If defined in the makefile, this target and its dependencies are built before
825 any other targets are processed.
829 .ne 2
831 \fB\fB\&.KEEP_STATE:\fR\fR
833 .RS 23n
834 If this target is in effect, \fBmake\fR updates the state file,
835 \fB\&.make.state\fR, in the current directory.  This target also activates
836 command dependencies, and hidden dependency checks. If either the
837 \fB\&.KEEP_STATE:\fR target appears in the makefile, or the environment
838 variable \fBKEEP_STATE\fR is set (\fBsetenv KEEP_STATE\fR), \fBmake\fR rebuilds
839 everything in order to collect dependency information, even if all the targets
840 were up to date due to previous \fBmake\fR runs. See also the Environment
841 Variables section.  This target has no effect if used in POSIX mode.
845 .ne 2
847 \fB\fB\&.KEEP_STATE_FILE:\fR\fR
849 .RS 23n
850 This target has no effect if used in POSIX mode. This target implies
851 \fB\&.KEEP_STATE\fR. If the target is followed by a filename, \fBmake\fR uses
852 it as the state file. If the target is followed by a directory name, \fBmake\fR
853 looks for a \fB\&.make.state\fR file in that directory. If the target is not
854 followed by any name, \fBmake\fR looks for \fB\&.make.state\fR file in the
855 current working directory.
859 .ne 2
861 \fB\fB\&.MAKE_VERSION:\fR\fR
863 .RS 23n
864 A target-entry of the form:
866 .in +2
868 \&.MAKE_VERSION:  VERSION\(mi\fInumber\fR
870 .in -2
872 enables version checking. If the version of \fBmake\fR differs from the version
873 indicated by a string like \fBVERSION-1.0\fR, \fBmake\fR issues a warning
874 message.
878 .ne 2
880 \fB\fB\&.NO_PARALLEL:\fR\fR
882 .RS 23n
883 Dependencies of this target will be executed serially.
887 .ne 2
889 \fB\fB\&.PARALLEL:\fR\fR
891 .RS 23n
892 Dependencies of this target will be executed in parallel.
896 .ne 2
898 \fB\fB\&.POSIX:\fR\fR
900 .RS 23n
901 This target enables POSIX mode.
905 .ne 2
907 \fB\fB\&.PRECIOUS:\fR\fR
909 .RS 23n
910 List of files not to delete. \fBmake\fR does not remove any of the files listed
911 as dependencies for this target when interrupted. \fBmake\fR normally removes
912 the current target when it receives an interrupt. When used in POSIX mode, if
913 the target is not followed by a list of files, all the file are assumed
914 precious.
918 .ne 2
920 \fB\fB\&.SCCS_GET:\fR\fR
922 .RS 23n
923 This target contains the rule for retrieving the current version of an
924 \fBSCCS\fR file from its history file. To suppress automatic retrieval, add an
925 entry for this target with an empty rule to your makefile.
929 .ne 2
931 \fB\fB\&.SCCS_GET_POSIX:\fR\fR
933 .RS 23n
934 This target contains the rule for retrieving the current version of an
935 \fBSCCS\fR file from its history file. \fBmake\fR uses this rule when it is
936 running in POSIX mode.
940 .ne 2
942 \fB\fB\&.SILENT:\fR\fR
944 .RS 23n
945 Run silently. When this target appears in the makefile, \fBmake\fR does not
946 echo commands before executing them. When used in POSIX mode, it could be
947 followed by target names, and only those are executed silently.
951 .ne 2
953 \fB\fB\&.SUFFIXES:\fR\fR
955 .RS 23n
956 The suffixes list for selecting implicit rules (see The Suffixes List).
960 .ne 2
962 \fB\fB\&.WAIT:\fR\fR
964 .RS 23n
965 In a dependency list, wait until any dependency preceding this has completed
966 before moving on to any dependency following it.
969 .SS "\fIClearing Special Targets\fR"
971 In this version of \fBmake\fR, you can clear the definition of the following
972 special targets by supplying entries for them with no dependencies and no rule:
975 \fB\&.DEFAULT, .SCCS_GET,  and .SUFFIXES\fR
976 .SS "Command Dependencies"
978 When the \fB\&.KEEP_STATE:\fR target is effective, \fBmake\fR checks the
979 command for building a target against the state file. If the command has
980 changed since the last \fBmake\fR run, \fBmake\fR rebuilds the target.
981 .SS "Hidden Dependencies"
983 When the \fB\&.KEEP_STATE:\fR target is effective, \fBmake\fR reads reports
984 from \fBcpp\fR(1) and other compilation processors for any "hidden" files, such
985 as \fB#include\fR files. If the target is out of date with respect to any of
986 these files, \fBmake\fR rebuilds it.
987 .SS "Macros"
989 Entries of the form
991 .in +2
993 \fImacro\fR\fB=\fR\fIvalue\fR
995 .in -2
999 define macros. \fImacro\fR is the name of the macro, and \fIvalue\fR, which
1000 consists of all characters up to a comment character or unescaped
1001 \fBNEWLINE\fR, is the value. \fBmake\fR strips both leading and trailing white
1002 space in accepting the value.
1005 Subsequent references to the macro, of the forms: \fB$(\fR\fIname\fR\fB)\fR or
1006 \fB${\fR\fIname\fR\fB}\fR are replaced by \fIvalue\fR. The parentheses or
1007 brackets can be omitted in a reference to a macro with a single-character name.
1010 Macro references can contain references to other macros, in which case nested
1011 references are expanded first.
1012 .SS "\fISuffix Replacement Macro References\fR"
1014 Substitutions within macros can be made as follows:
1016 .in +2
1018      \fB$(\fR\fIname\fR\fB:\fR\fIstring1\fR\fB=\fR\fIstring2\fR\fB)\fR
1020 .in -2
1024 where \fIstring1\fR is either a suffix, or a word to be replaced in the macro
1025 definition, and \fIstring2\fR is the replacement suffix or word. Words in a
1026 macro value are separated by \fBSPACE\fR, \fBTAB\fR, and escaped \fBNEWLINE\fR
1027 characters.
1028 .SS "\fIPattern Replacement Macro References\fR"
1030 Pattern matching replacements can also be applied to macros, with a reference
1031 of the form:
1033 .in +2
1035      \fB$(\fR\fIname\fR\fB:\fR \fIop\fR\fB%\fR\fIos\fR\fB=\fR \fInp\fR\fB%\fR\fIns\fR\fB)\fR
1037 .in -2
1041 where \fIop\fR is the existing (old) prefix and \fIos\fR is the existing (old)
1042 suffix, \fInp\fR and \fIns\fR are the new prefix and new suffix, respectively,
1043 and the pattern matched by \fB%\fR (a string of zero or more characters), is
1044 carried forward from the value being replaced. For example:
1046 .in +2
1048 \fBPROGRAM=fabricate 
1049 DEBUG= $(PROGRAM:%=tmp/%\(mig)\fR
1051 .in -2
1056 sets the value of \fBDEBUG\fR to \fBtmp/fabricate\(mig\fR.
1059 Notice that pattern replacement macro references cannot be used in the
1060 dependency list of a pattern matching rule; the \fB%\fR characters are not
1061 evaluated independently. Also, any number of \fB%\fR metacharacters can appear
1062 after the equal-sign.
1063 .SS "\fIAppending to a Macro\fR"
1065 Words can be appended to macro values as follows:
1067 .in +2
1069      \fImacro\fR \fB+=\fR \fIword .\|.\|.\fR
1071 .in -2
1073 .SS "Special-Purpose Macros"
1075 When the \fBMAKEFLAGS\fR variable is present in the environment, \fBmake\fR
1076 takes options from it, in combination with options entered on the command line.
1077 \fBmake\fR retains this combined value as the \fBMAKEFLAGS\fR macro, and
1078 exports it automatically to each command or shell it invokes.
1081 Notice that flags passed by way of \fBMAKEFLAGS\fR are only displayed when the
1082 \fB-d\fR, or \fB-dd\fR options are in effect.
1085 The \fBMAKE\fR macro is another special case. It has the value \fBmake\fR by
1086 default, and temporarily overrides the \fB-n\fR option for any line in which it
1087 is referred to. This allows nested invocations of \fBmake\fR written as:
1089 .in +2
1091      \fB$(MAKE)\fR .\|.\|. 
1093 .in -2
1097 to run recursively, with the \fB-n\fR flag in effect for all commands but
1098 \fBmake\fR. This lets you use \fBmake\fR \fB-n\fR to test an entire hierarchy
1099 of makefiles.
1102 For compatibility with the 4.2 \fBBSD\fR \fBmake\fR, the \fBMFLAGS\fR macro is
1103 set from the \fBMAKEFLAGS\fR variable by prepending a \fB-\fR\&. \fBMFLAGS\fR
1104 is not exported automatically.
1107 The \fBSHELL\fR macro, when set to a single-word value such as
1108 \fB/usr/bin/csh\fR, indicates the name of an alternate shell to use. The
1109 default is \fB/bin/sh\fR. Notice that \fBmake\fR executes commands that contain
1110 no shell metacharacters itself. Built-in commands, such as \fBdirs\fR in the C
1111 shell, are not recognized unless the command line includes a metacharacter (for
1112 instance, a semicolon). This macro is neither imported from, nor exported to
1113 the environment, regardless of \fB-e\fR. To be sure it is set properly, you
1114 must define this macro within every makefile that requires it.
1117 The syntax of the \fBVPATH\fR macro is:
1119 .in +2
1121      \fBVPATH\fR = [ \fIpathname\fR [ : \fIpathname\fR ] ... ]
1123 .in -2
1127 \fBVPATH\fR specifies a list of directories to search for the files, which are
1128 targets or dependencies, when \fBmake\fR is executed.  \fBVPATH\fR is also used
1129 in order to search for the \fBinclude\fR files mentioned in the particular
1130 makefile.
1133 When processing a target or a dependency or an include directive, \fBmake\fR
1134 checks the existence of the file with the same name in the current directory.
1135 If the file is found to be missing, \fBmake\fR searches for this file in the
1136 list of directories presented in \fBVPATH\fR (like the \fBPATH\fR variable in
1137 the shell). Unlike the \fBPATH\fR variable, \fBVPATH\fR is used in order to
1138 search for the files with relative pathnames. When \fBmake\fR attempts to apply
1139 implicit rules to the target, it also searches for the dependency files using
1140 \fBVPATH\fR.
1143 When the file is found using \fBVPATH\fR, internal macros \fB$@\fR, \fB@<\fR,
1144 \fB$?\fR, \fB$*\fR, and their alternative forms (with \fBD\fR or \fBF\fR
1145 appended) are set in accordance with the name derived from \fBVPATH\fR. For
1146 instance, if the target \fBsubdir/foo.o\fR is found in the directory
1147 \fB/aaa/bbb\fR using \fBVPATH\fR, then the value of the internal macro \fB$@\fR
1148 for this target is \fB/aaa/bbb/subdir/foo.o\fR.
1151 If a target or a dependency file is found using \fBVPATH\fR, then any
1152 occurrences of the word that is the same as the target name in the subsequent
1153 rules are replaced with the actual name of the target derived from \fBVPATH\fR.
1156 For example:
1158 .in +2
1160 \fBVPATH=./subdir
1161 file.o : file.c
1162          cc -c file.c -o file.o\fR
1164 .in -2
1169 If \fBfile.c\fR is found in \fB\&./subdir\fR, then the command
1171 .in +2
1173 \fBcc -c ./subdir/file.c -o file.o\fR
1175 .in -2
1180 are executed.
1183 The following macros are provided for use with cross-compilation:
1185 .ne 2
1187 \fB\fBHOST_ARCH\fR\fR
1189 .RS 15n
1190 The processor type of the host system. By default, this is the output of the
1191 \fBmach\fR(1) command, prepended with \fB-\fR\&. Under normal circumstances,
1192 this value should never be altered by the user.
1196 .ne 2
1198 \fB\fBHOST_MACH\fR\fR
1200 .RS 15n
1201 The machine architecture of the host system. By default, this is the output of
1202 the \fBarch\fR(1) command, prepended with \fB\(mi\fR\&. Under normal
1203 circumstances, this value should never be altered by the user.
1207 .ne 2
1209 \fB\fBTARGET_ARCH\fR\fR
1211 .RS 15n
1212 The processor type of the target system. By default, the output of \fBmach\fR,
1213 prepended with \fB\(mi\fR\&.
1216 .SS "Dynamic Macros"
1218 There are several dynamically maintained macros that are useful as
1219 abbreviations within rules. They are shown here as references; if you were to
1220 define them, \fBmake\fR would simply override the definition.
1222 .ne 2
1224 \fB\fB$*\fR\fR
1226 .RS 6n
1227 The basename of the current target, derived as if selected for use with an
1228 implicit rule.
1232 .ne 2
1234 \fB\fB$<\fR\fR
1236 .RS 6n
1237 The name of a dependency file, derived as if selected for use with an implicit
1238 rule.
1242 .ne 2
1244 \fB\fB$@\fR\fR
1246 .RS 6n
1247 The name of the current target. This is the only dynamic macro whose value is
1248 strictly determined when used in a dependency list. (In which case it takes the
1249 form \fB$$@\fR.)
1253 .ne 2
1255 \fB\fB$?\fR\fR
1257 .RS 6n
1258 The list of dependencies that are newer than the target. Command-dependency
1259 checking is automatically suppressed for lines that contain this macro, just as
1260 if the command had been prefixed with a \fB?\fR. See the description of
1261 \fB?\fR, under \fBSpecial Character\fR Rules above. You can force this check
1262 with the \fB!\fR command-line prefix.
1266 .ne 2
1268 \fB\fB$%\fR\fR
1270 .RS 6n
1271 The name of the library member being processed. (See Library Maintenance
1272 below.)
1277 To refer to the \fB$@\fR dynamic macro within a dependency list, precede the
1278 reference with an additional \fB$\fR character (as in, \fB$$@\fR). Because
1279 \fBmake\fR assigns \fB$<\fR and \fB$*\fR as it would for implicit rules
1280 (according to the suffixes list and the directory contents), they can be
1281 unreliable when used within explicit target entries.
1284 These macros can be modified to apply either to the filename part, or the
1285 directory part of the strings they stand for, by adding an upper case \fBF\fR
1286 or \fBD\fR, respectively (and enclosing the resulting name in parentheses or
1287 braces). Thus, \fB$(@D)\fR refers to the directory part of the string \fB$@\fR;
1288 if there is no directory part, \fB\&.\fR is assigned. \fB$(@F)\fR refers to the
1289 filename part.
1290 .SS "Conditional Macro Definitions"
1292 A macro definition of the form:
1294 .in +2
1296 \fItarget-list\fR \fB:=\fR \fImacro\fR \fB=\fR \fIvalue\fR
1298 .in -2
1302 indicates that when processing any of the targets listed \fIand their
1303 dependencies\fR, \fImacro\fR is to be set to the \fIvalue\fR supplied. Notice
1304 that if a conditional macro is referred to in a dependency list, the \fB$\fR
1305 must be delayed (use \fB$$\fR instead). Also, \fItarget-list\fR can contain a
1306 \fB%\fR pattern, in which case the macro is conditionally defined for all
1307 targets encountered that match the pattern. A pattern replacement reference can
1308 be used within the \fIvalue\fR.
1311 You can temporarily append to a macros value with a conditional definition of
1312 the form:
1314 .in +2
1316 \fItarget-list\fR \fB:=\fR \fImacro\fR \fB+=\fR \fIvalue\fR
1318 .in -2
1320 .SS "Predefined Macros"
1322 \fBmake\fR supplies the macros shown in the table that follows for compilers
1323 and their options, host architectures, and other commands. Unless these macros
1324 are read in as environment variables, their values are not exported by
1325 \fBmake\fR. If you run \fBmake\fR with any of these set in the environment, it
1326 is a good idea to add commentary to the makefile to indicate what value each is
1327 expected to take. If \fB-r\fR is in effect, \fBmake\fR does not read the
1328 default makefile (\fB\&./make.rules\fR or \fB/usr/share/lib/make/make.rules\fR)
1329 in which these macro definitions are supplied.
1334 box;
1335 cw(1i) | cw(1.17i) | cw(3.33i)
1336 cw(1i) | cw(1.17i) | cw(3.33i) .
1337 \fITable of Predefined Macros\fR
1339 \fIUse\fR       \fIMacro\fR     \fIDefault Value\fR
1341 Library \fBAR\fR        \fBar\fR
1342 Archives        \fBARFLAGS\fR   \fBrv\fR
1344                 
1345 Assembler       \fBAS\fR        \fBas\fR
1346 Commands        \fBASFLAGS\fR   
1347         \fBCOMPILE.s\fR \fB$(AS) $(ASFLAGS)\fR
1348         \fBCOMPILE.S\fR \fB$(CC) $(ASFLAGS) $(CPPFLAGS)\fR \fB-c\fR
1350                 
1351 C       \fBCC\fR        \fBcc\fR
1352 Compiler        \fBCFLAGS\fR    
1353 Commands        \fBCPPFLAGS\fR  
1354         \fBCOMPILE.c\fR \fB$(CC) $(CFLAGS) $(CPPFLAGS)\fR \fB-c\fR
1355         \fBLINK.c\fR    \fB$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)\fR
1357                 
1358 C++     \fBCCC\fR       \fBCC\fR
1359 Compiler        \fBCCFLAGS\fR   \fBCFLAGS\fR
1360 Commands        \fBCPPFLAGS\fR  
1361         \fBCOMPILE.cc\fR        \fB$(CCC) $(CCFLAGS) $(CPPFLAGS)\fR \fB-c\fR
1362         \fBLINK.cc\fR   \fB$(CCC) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)\fR
1363         \fBCOMPILE.C\fR \fB$(CCC) $(CCFLAGS) $(CPPFLAGS)\fR \fB-c\fR
1364         \fBLINK.C\fR    \fB$(CCC) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)\fR
1366                 
1367 FORTRAN 77      \fBFC\fR        \fBf77\fR
1368 Compiler        \fBFFLAGS\fR    
1369 Commands        \fBCOMPILE.f\fR \fB$(FC) $(FFLAGS)\fR \fB-c\fR
1370         \fBLINK.f\fR    \fB$(FC) $(FFLAGS) $(LDFLAGS)\fR
1371         \fBCOMPILE.F\fR \fB$(FC) $(FFLAGS) $(CPPFLAGS)\fR \fB-c\fR
1372         \fBLINK.F\fR    \fB$(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS)\fR
1374                 
1375 FORTRAN 90      \fBFC\fR        \fBf90\fR
1376 Compiler        \fBF90FLAGS\fR  
1377 Commands        \fBCOMPILE.f90\fR       \fB$(F90C) $(F90FLAGS)\fR \fB-c\fR
1378         \fBLINK.f90\fR  \fB$(F90C) $(F90FLAGS) $(LDFLAGS)\fR
1379         \fBCOMPILE.ftn\fR       \fB$(F90C) $(F90FLAGS) $(CPPFLAGS)\fR \fB-c\fR
1380         \fBLINK.ftn\fR  T{
1381 \fB$(F90C) $(F90FLAGS) $(CPPFLAGS) $(LDFLAGS)\fR
1384                 
1385 Link Editor     \fBLD\fR        \fBld\fR
1386 Command \fBLDFLAGS\fR   
1388                 
1389 lex     \fBLEX\fR       \fBlex\fR
1390 Command \fBLFLAGS\fR    
1391         \fBLEX.l\fR     \fB$(LEX) $(LFLAGS)\fR \fB-t\fR
1393                 
1394 lint    \fBLINT\fR      \fBlint\fR
1395 Command \fBLINTFLAGS\fR 
1396         \fBLINT.c\fR    \fB$(LINT) $(LINTFLAGS) $(CPPFLAGS)\fR
1398                 
1399 Modula 2        \fBM2C\fR       \fBm2c\fR
1400 Commands        \fBM2FLAGS\fR   
1401         \fBMODFLAGS\fR  
1402         \fBDEFFLAGS\fR  
1403         \fBCOMPILE.def\fR       \fB$(M2C) $(M2FLAGS) $(DEFFLAGS)\fR
1404         \fBCOMPILE.mod\fR       \fB$(M2C) $(M2FLAGS) $(MODFLAGS)\fR
1406                 
1407 Pascal  \fBPC\fR        \fBpc\fR
1408 Compiler        \fBPFLAGS\fR    
1409 Commands        \fBCOMPILE.p\fR \fB$(PC) $(PFLAGS) $(CPPFLAGS)\fR \fB-c\fR
1410         \fBLINK.p\fR    \fB$(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS)\fR
1412                 
1413 Ratfor  \fBRFLAGS\fR    
1414 Compilation     \fBCOMPILE.r\fR \fB$(FC) $(FFLAGS) $(RFLAGS)\fR \fB-c\fR
1415 Commands        \fBLINK.r\fR    \fB$(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS)\fR
1417                 
1418 rm Command      \fBRM\fR        \fBrm\fR \fB-f\fR
1420                 
1421 sccs    \fBSCCSFLAGS\fR 
1422 Command \fBSCCSGETFLAGS\fR      \fB-s\fR
1424                 
1425 yacc    \fBYACC\fR      \fByacc\fR
1426 Command \fBYFLAGS\fR    
1427         \fBYACC.y\fR    \fB$(YACC) $(YFLAGS)\fR
1429                 
1430 Suffixes List   \fBSUFFIXES\fR  T{
1431 \fB\&.o .c .c~ .cc .cc~ .y .y~ .l .l~ .s .s~ .sh .sh~ .S .S~ .ln .h .h~ .f .f~ .F .F~  .mod .mod~ .sym .def .def~ .p .p~ .r .r~ .cps .cps~ .C .C~ .Y .Y~ .L .L .f90 .f90~ .ftn .ftn~\fR
1435 .SS "Implicit Rules"
1437 When a target has no entry in the makefile, \fBmake\fR attempts to determine
1438 its class (if any) and apply the rule for that class. An implicit rule
1439 describes how to build any target of a given class, from an associated
1440 dependency file. The class of a target can be determined either by a pattern,
1441 or by a suffix; the corresponding dependency file (with the same basename) from
1442 which such a target might be built. In addition to a predefined set of implicit
1443 rules, \fBmake\fR allows you to define your own, either by pattern, or by
1444 suffix.
1445 .SS "\fIPattern Matching Rules\fR"
1447 A target entry of the form:
1449 .in +2
1451 \fItp\fR\fB%\fR\fIts\fR:\|\fIdp\fR\fB%\fR\fIds\fR
1452      \fIrule\fR
1454 .in -2
1459 is a pattern matching rule, in which \fItp\fR is a target prefix, \fIts\fR is a
1460 target suffix, \fIdp\fR is a dependency prefix, and \fIds\fR is a dependency
1461 suffix (any of which can be null). The \fB%\fR stands for a basename of zero or
1462 more characters that is matched in the target, and is used to construct the
1463 name of a dependency. When \fBmake\fR encounters a match in its search for an
1464 implicit rule, it uses the rule in that target entry to build the target from
1465 the dependency file. Pattern-matching implicit rules typically make use of the
1466 \fB$@\fR and \fB$<\fR dynamic macros as placeholders for the target and
1467 dependency names. Other, regular dependencies can occur in the dependency list;
1468 however, none of the regular dependencies can contain \fB%\fR. An entry of the
1469 form:
1471 .in +2
1473 \fItp\fR%\fIts\fR:\|[\fIdependency .\|.\|.\fR\|] \fIdp\fR%\fIds\fR\|[\fIdependency .\|.\|.\fR\|] 
1474      \fIrule\fR
1476 .in -2
1481 is a valid pattern matching rule.
1482 .SS "\fISuffix Rules\fR"
1484 When no pattern matching rule applies, \fBmake\fR checks the target name to see
1485 if it ends with a suffix in the known suffixes list. If so, \fBmake\fR checks
1486 for any suffix rules, as well as a dependency file with same root and another
1487 recognized suffix, from which to build it.
1490 The target entry for a suffix rule takes the form:
1492 .in +2
1494 \fIDsTs\fR: \fIrule\fR
1496 .in -2
1501 where \fITs\fR is the suffix of the target, \fIDs\fR is the suffix of the
1502 dependency file, and \fIrule\fR is the rule for building a target in the class.
1503 Both \fIDs\fR and \fITs\fR must appear in the suffixes list. (A suffix need not
1504 begin with a \fB\&.\fR to be recognized.)
1507 A suffix rule with only one suffix describes how to build a target having a
1508 null (or no) suffix from a dependency file with the indicated suffix. For
1509 instance, the \fB\&.c\fR rule could be used to build an executable program
1510 named \fBfile\fR from a C source file named \fBfile.c\fR. If a target with a
1511 null suffix has an explicit dependency, \fBmake\fR omits the search for a
1512 suffix rule.
1517 box;
1518 cw(1.57i) |cw(3.93i) 
1519 cw(1.57i) |cw(3.93i) .
1521 \fITable of Standard Implicit (Suffix) Rules for Assembly Files\fR
1524 \fIImplicit Rule Name\fR        \fICommand Line\fR
1526 \fB\&.s.o\fR    \fB$(COMPILE.s)\fR \fB-o\fR \fB$@ $<\fR
1528         
1529 \fB\&.s.a\fR    \fB$(COMPILE.s)\fR \fB-o\fR \fB$% $<\fR
1530         \fB$(AR) $(ARFLAGS) $@ $%\fR
1531         \fB$(RM) $%\fR
1533         
1534 \fB\&.s~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.s\fR
1535         \fB$(COMPILE.s)\fR \fB-o\fR \fB$@ $*.s\fR
1537         
1538 \fB\&.S.o\fR    \fB$(COMPILE.S)\fR \fB-o\fR \fB$@ $<\fR
1540         
1541 \fB\&.S.a\fR    \fB$(COMPILE.S)\fR \fB-o\fR \fB$% $<\fR
1542         \fB$(AR) $(ARFLAGS) $@ $%\fR
1543         \fB$(RM) $%\fR
1545         
1546 \fB\&.S~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.S\fR
1547         \fB$(COMPILE.S)\fR \fB-o\fR \fB$@ $*.S\fR
1549         
1550 \fB\&.S~.a\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.S\fR
1551         \fB$(COMPILE.S)\fR \fB-o\fR \fB$% $*.S\fR
1552         \fB$(AR) $(ARFLAGS) $@ $%\fR
1553         \fB$(RM) $%\fR
1560 box;
1561 cw(1.57i) |cw(3.93i) 
1562 cw(1.57i) |cw(3.93i) .
1564 \fITable of Standard Implicit (Suffix) Rules for C Files\fR
1567 \fIImplicit Rule Name\fR        \fICommand Line\fR
1569 \fB\&.c\fR      \fB$(LINK.c)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1571         
1572 \fB\&.c.ln\fR   \fB$(LINT.c) $(OUTPUT_OPTION)\fR \fB-i\fR \fB$<\fR
1574         
1575 \fB\&.c.o\fR    \fB$(COMPILE.c) $(OUTPUT_OPTION) $<\fR
1577         
1578 \fB\&.c.a\fR    \fB$(COMPILE.c)\fR \fB-o\fR \fB$% $<\fR
1579         \fB$(AR) $(ARFLAGS) $@ $%\fR
1580         \fB$(RM) $%\fR
1582         
1583 \fB\&.c~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.c\fR
1584         \fB$(CC) $(CFLAGS) $(LDFLAGS)\fR \fB-o\fR \fB$@ $*.c\fR
1586         
1587 \fB\&.c~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.c\fR
1588         \fB$(CC) $(CFLAGS)\fR \fB-c\fR \fB$*.c\fR
1590         
1591 \fB\&.c~.ln\fR  \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.c\fR
1592         \fB$(LINT.c) $(OUTPUT_OPTION)\fR \fB-c\fR \fB$*.c\fR
1594         
1595 \fB\&.c~.a\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.c\fR
1596         \fB$(COMPILE.c)\fR \fB-o\fR \fB$% $*.c\fR
1597         \fB$(AR) $(ARFLAGS) $@ $%\fR
1598         \fB$(RM) $%\fR
1605 box;
1606 cw(1.57i) |cw(3.93i) 
1607 cw(1.57i) |cw(3.93i) .
1609 \fITable of Standard Implicit (Suffix) Rules for C++ Files\fR
1612 \fIImplicit Rule Name\fR        \fICommand Line\fR
1614 \fB\&.cc\fR     \fB$(LINK.cc)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1616         
1617 \fB\&.cc.o\fR   \fB$(COMPILE.cc) $(OUTPUT_OPTION) $<\fR
1619         
1620 \fB\&.cc.a\fR   \fB$(COMPILE.cc)\fR \fB-o\fR \fB$% $<\fR
1621         \fB$(AR) $(ARFLAGS) $@ $%\fR
1622         \fB$(RM) $%\fR
1624         
1625 \fB\&.cc~\fR    \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.cc\fR
1626         \fB$(LINK.cc)\fR \fB-o\fR \fB$@ $*.cc $(LDLIBS)\fR
1628         
1629 \fB\&.cc.o\fR   \fB$(COMPILE.cc) $(OUTPUT_OPTION) $<\fR
1631         
1632 \fB\&.cc~.o\fR  \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.cc\fR
1633         \fB$(COMPILE.cc) $(OUTPUT_OPTION) $*.cc\fR
1635         
1636 \fB\&.cc.a\fR   \fB$(COMPILE.cc)\fR \fB-o\fR \fB$% $<\fR
1637         \fB$(AR) $(ARFLAGS) $@ $%\fR
1638         \fB$(RM) $%\fR
1640         
1641 \fB\&.cc~.a\fR  \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.cc\fR
1642         \fB$(COMPILE.cc)\fR \fB-o\fR \fB$% $*.cc\fR
1643         \fB$(AR) $(ARFLAGS) $@ $%\fR
1644         \fB$(RM) $%\fR
1646         
1647 \fB\&.C\fR      \fB$(LINK.C)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1649         
1650 \fB\&.C~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.C\fR
1651         \fB$(LINK.C)\fR \fB-o\fR \fB$@ $*.C $(LDLIBS)\fR
1653         
1654 \fB\&.C.o\fR    \fB$(COMPILE.C) $(OUTPUT_OPTION) $<\fR
1656         
1657 \fB\&.C~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.C\fR
1658         \fB$(COMPILE.C) $(OUTPUT_OPTION) $*.C\fR
1660         
1661 \fB\&.C.a\fR    \fB$(COMPILE.C)\fR \fB-o\fR \fB$% $<\fR
1662         \fB$(AR) $(ARFLAGS) $@ $%\fR
1663         \fB$(RM) $%\fR
1665         
1666 \fB\&.C~.a\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.C\fR
1667         \fB$(COMPILE.C)\fR \fB-o\fR \fB$% $*.C\fR
1668         \fB$(AR) $(ARFLAGS) $@ $%\fR
1669         \fB$(RM) $%\fR
1676 box;
1677 cw(1.57i) |cw(3.93i) 
1678 cw(1.57i) |cw(3.93i) .
1680 \fITable of Standard Implicit (Suffix) Rules for FORTRAN 77 Files\fR
1683 \fIImplicit Rule Name\fR        \fICommand Line\fR
1685 \fB\&.f\fR      \fB$(LINK.f)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1687         
1688 \fB\&.f.o\fR    \fB$(COMPILE.f) $(OUTPUT_OPTION) $<\fR
1690         
1691 \fB\&.f.a\fR    \fB$(COMPILE.f)\fR \fB-o\fR \fB$% $<\fR
1692         \fB$(AR) $(ARFLAGS) $@ $%\fR
1693         \fB$(RM) $%\fR
1695         
1696 \fB\&.f\fR      \fB$(LINK.f)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1698         
1699 \fB\&.f~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.f\fR
1700         \fB$(FC) $(FFLAGS) $(LDFLAGS)\fR \fB-o\fR \fB$@ $*.f\fR
1702         
1703 \fB\&.f~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.f\fR
1704         \fB$(FC) $(FFLAGS)\fR \fB-c\fR \fB$*.f\fR
1706         
1707 \fB\&.f~.a\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.f\fR
1708         \fB$(COMPILE.f)\fR \fB-o\fR \fB$% $*.f\fR
1709         \fB$(AR) $(ARFLAGS) $@ $%\fR
1710         \fB$(RM) $%\fR
1712         
1713 \fB\&.F\fR      \fB$(LINK.F)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1715         
1716 \fB\&.F.o\fR    \fB$(COMPILE.F) $(OUTPUT_OPTION) $<\fR
1718         
1719 \fB\&.F.a\fR    \fB$(COMPILE.F)\fR \fB-o\fR \fB$% $<\fR
1720         \fB$(AR) $(ARFLAGS) $@ $%\fR
1721         \fB$(RM) $%\fR
1723         
1724 \fB\&.F~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.F\fR
1725         \fB$(FC) $(FFLAGS) $(LDFLAGS)\fR \fB-o\fR \fB$@ $*.F\fR
1727         
1728 \fB\&.F~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.F\fR
1729         \fB$(FC) $(FFLAGS)\fR \fB-c\fR \fB$*.F\fR
1731         
1732 \fB\&.F~.a\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.F\fR
1733         \fB$(COMPILE.F)\fR \fB-o\fR \fB$% $*.F\fR
1734         \fB$(AR) $(ARFLAGS) $@ $%\fR
1735         \fB$(RM) $%\fR
1742 box;
1743 cw(1.57i) |cw(3.93i) 
1744 cw(1.57i) |cw(3.93i) .
1746 \fITable of Standard Implicit (Suffix) Rules for FORTRAN 90 Files\fR
1749 \fIImplicit Rule Name\fR        \fICommand Line\fR
1751 \fB\&.f90\fR    \fB$(LINK.f90)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1753         
1754 \fB\&.f90~\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.f90\fR
1755         \fB$(LINK.f90)\fR \fB-o\fR \fB$@ $*.f90 $(LDLIBS)\fR
1757         
1758 \fB\&.f90.o\fR  \fB$(COMPILE.f90) $(OUTPUT_OPTION) $<\fR
1760         
1761 \fB\&.f90~.o\fR \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.f90\fR
1762         \fB$(COMPILE.f90) $(OUTPUT_OPTION) $*.f90\fR
1764         
1765 \fB\&.f90.a\fR  \fB$(COMPILE.f90)\fR \fB-o\fR \fB$% $<\fR
1766         \fB$(AR) $(ARFLAGS) $@ $%\fR
1767         \fB$(RM) $%\fR
1769         
1770 \fB\&.f90~.a\fR \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.f90\fR
1771         \fB$(COMPILE.f90)\fR \fB-o\fR \fB$% $*.f90\fR
1772         \fB$(AR) $(ARFLAGS) $@ $%\fR
1773         \fB$(RM) $%\fR
1775         
1776 \fB\&.ftn\fR    \fB$(LINK.ftn)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1778         
1779 \fB\&.ftn~\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.ftn\fR
1780         \fB$(LINK.ftn)\fR \fB-o\fR \fB$@ $*.ftn $(LDLIBS)\fR
1782         
1783 \fB\&.ftn.o\fR  \fB$(COMPILE.ftn) $(OUTPUT_OPTION) $<\fR
1785         
1786 \fB\&.ftn~.o\fR \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.ftn\fR
1787         \fB$(COMPILE.ftn) $(OUTPUT_OPTION) $*.ftn\fR
1789         
1790 \fB\&.ftn.a\fR  \fB$(COMPILE.ftn)\fR \fB-o\fR \fB$% $<\fR
1791         \fB$(AR) $(ARFLAGS) $@ $%\fR
1792         \fB$(RM) $%\fR
1794         
1795 \fB\&.ftn~.a\fR \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.ftn\fR
1796         \fB$(COMPILE.ftn)\fR \fB-o\fR \fB$% $*.ftn\fR
1797         \fB$(AR) $(ARFLAGS) $@ $%\fR
1798         \fB$(RM) $%\fR
1805 box;
1806 cw(1.57i) |cw(3.93i) 
1807 cw(1.57i) |cw(3.93i) .
1809 \fITable of Standard Implicit (Suffix) Rules for lex Files\fR
1812 \fIImplicit Rule Name\fR        \fICommand Line\fR
1814 \fB\&.l\fR      \fB$(RM) $*.c\fR
1815         \fB$(LEX.l) $< > $*.c\fR
1816         \fB$(LINK.c)\fR \fB-o\fR \fB$@ $*.c $(LDLIBS)\fR
1817         \fB$(RM) $*.c\fR
1819         
1820 \fB\&.l.c\fR    \fB$(RM) $@\fR
1821         \fB$(LEX.l) $< > $@\fR
1823         
1824 \fB\&.l.ln\fR   \fB$(RM) $*.c\fR
1825         \fB$(LEX.l) $< > $*.c\fR
1826         \fB$(LINT.c)\fR \fB-o\fR \fB$@\fR \fB-i\fR \fB$*.c\fR
1827         \fB$(RM) $*.c\fR
1829         
1830 \fB\&.l.o\fR    \fB$(RM) $*.c\fR
1831         \fB$(LEX.l) $< > $*.c\fR
1832         \fB$(COMPILE.c)\fR \fB-o\fR \fB$@ $*.c\fR
1833         \fB$(RM) $*.c\fR
1835         
1836 \fB\&.l~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.l\fR
1837         \fB$(LEX) $(LFLAGS) $*.l\fR
1838         \fB$(CC) $(CFLAGS)\fR \fB-c\fR \fBlex.yy.c\fR
1839         \fBrm\fR \fB-f\fR \fBlex.yy.c\fR
1840         \fBmv lex.yy.c $@\fR
1842         
1843 \fB\&.l~.c\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.l\fR
1844         \fB$(LEX) $(LFLAGS) $*.l\fR
1845         \fBmv lex.yy.c $@\fR
1847         
1848 \fB\&.l~.ln\fR  \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.l\fR
1849         \fB$(RM) $*.c\fR
1850         \fB$(LEX.l) $*.l > $*.c\fR
1851         \fB$(LINT.c)\fR \fB-o\fR \fB$@\fR \fB-i\fR \fB$*.c\fR
1852         \fB$(RM) $*.c\fR
1854         
1855 \fB\&.l~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.l\fR
1856         \fB$(LEX) $(LFLAGS) $*.l\fR
1857         \fB$(CC) $(CFLAGS)\fR \fB-c\fR \fBlex.yy.c\fR
1858         \fBrm\fR \fB-f\fR \fBlex.yy.c\fR
1859         \fBmv lex.yy.c $@\fR
1866 box;
1867 cw(1.57i) |cw(3.93i) 
1868 cw(1.57i) |cw(3.93i)  .
1870 \fITable of Standard Implicit (Suffix) Rules for Modula 2 Files\fR
1873 \fIImplicit Rule Name\fR        \fICommand Line\fR
1875 \fB\&.mod\fR    \fB$(COMPILE.mod)\fR \fB-o\fR \fB$@\fR \fB-e\fR \fB$@ $<\fR
1877         
1878 \fB\&.mod.o\fR  \fB$(COMPILE.mod)\fR \fB-o\fR \fB$@ $<\fR
1880         
1881 \fB\&.def.sym\fR        \fB$(COMPILE.def)\fR \fB-o\fR \fB$@ $<\fR
1883         
1884 \fB\&.def~.sym\fR       \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.def\fR
1885         \fB$(COMPILE.def)\fR \fB-o\fR\fB$@ $*.def\fR
1887         
1888 \fB\&.mod~\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.mod\fR
1889         \fB$(COMPILE.mod)\fR \fB-o\fR \fB$@\fR \fB-e\fR \fB$@ $*.mod\fR
1891         
1892 \fB\&.mod~.o\fR \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.mod\fR
1893         \fB$(COMPILE.mod)\fR \fB-o\fR \fB$@ $*.mod\fR
1895         
1896 \fB\&.mod~.a\fR \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.mod\fR
1897         \fB$(COMPILE.mod)\fR \fB-o\fR \fB$% $*.mod\fR
1898         \fB$(AR) $(ARFLAGS) $@ $%\fR
1899         \fB$(RM) $%\fR
1906 box;
1907 cw(1.57i) |cw(3.93i) 
1908 cw(1.57i) |cw(3.93i) .
1910 \fITable of Standard Implicit (Suffix) Rules for NeWS Files\fR
1913 \fIImplicit Rule Name\fR        \fICommand Line\fR
1915 \fB\&.cps.h\fR  \fBcps $*.cps\fR
1917 \fB\&.cps~.h\fR \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.cps\fR
1918         \fB$(CPS) $(CPSFLAGS) $*.cps\fR
1925 box;
1926 cw(1.57i) |cw(3.93i) 
1927 cw(1.57i) |cw(3.93i) .
1929 \fITable of Standard Implicit (Suffix) Rules for Pascal Files\fR
1932 \fIImplicit Rule Name\fR        \fICommand Line\fR
1934 \fB\&.p\fR      \fB$(LINK.p)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1936         
1937 \fB\&.p.o\fR    \fB$(COMPILE.p) $(OUTPUT_OPTION) $<\fR
1939         
1940 \fB\&.p~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.p\fR
1941         \fB$(LINK.p)\fR \fB-o\fR \fB$@ $*.p $(LDLIBS)\fR
1943         
1944 \fB\&.p~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.p\fR
1945         \fB$(COMPILE.p) $(OUTPUT_OPTION) $*.p\fR
1947         
1948 \fB\&.p~.a\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.p\fR
1949         \fB$(COMPILE.p)\fR \fB-o\fR \fB$% $*.p\fR
1950         \fB$(AR) $(ARFLAGS) $@ $%\fR
1951         \fB$(RM) $%\fR
1958 box;
1959 cw(1.57i) |cw(3.93i) 
1960 cw(1.57i) |cw(3.93i) .
1962 \fITable of Standard Implicit (Suffix) Rules for Ratfor Files\fR
1965 \fIImplicit Rule Name\fR        \fICommand Line\fR
1967 \fB\&.r\fR      \fB$(LINK.r)\fR \fB-o\fR \fB$@ $< $(LDLIBS)\fR
1969         
1970 \fB\&.r.o\fR    \fB$(COMPILE.r) $(OUTPUT_OPTION) $<\fR
1972         
1973 \fB\&.r.a\fR    \fB$(COMPILE.r)\fR \fB-o\fR \fB$% $<\fR
1974         \fB$(AR) $(ARFLAGS) $@ $%\fR
1975         \fB$(RM) $%\fR
1977         
1978 \fB\&.r~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.r\fR
1979         \fB$(LINK.r)\fR \fB-o\fR \fB$@ $*.r $(LDLIBS)\fR
1981         
1982 \fB\&.r~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.r\fR
1983         \fB$(COMPILE.r) $(OUTPUT_OPTION) $*.r\fR
1985         
1986 \fB\&.r~.a\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.r\fR
1987         \fB$(COMPILE.r)\fR \fB-o\fR \fB$% $*.r\fR
1988         \fB$(AR) $(ARFLAGS) $@ $%\fR
1989         \fB$(RM) $%\fR
1996 box;
1997 cw(1.57i) |cw(3.93i) 
1998 cw(1.57i) |cw(3.93i) .
2000 \fITable of Standard Implicit (Suffix) Rules for SCCS Files\fR
2003 \fIImplicit Rule Name\fR        \fICommand Line\fR
2005 \fB\&.SCCS_GET\fR       T{
2006 \fBsccs $(SCCSFLAGS) get $(SCCSGETFLAGS) $@\fR \fB-G\fR\fB$@\fR
2008         
2010         
2011 \fB\&.SCCS_GET_POSIX\fR \fBsccs $(SCCSFLAGS) get $(SCCSGETFLAGS) $@\fR
2013         
2014 \fB\&.GET_POSIX\fR      \fB$(GET) $(GFLAGS) s.$@\fR
2021 box;
2022 cw(1.57i) |cw(3.93i) 
2023 cw(1.57i) |cw(3.93i) .
2025 \fITable of Standard Implicit (Suffix) Rules for Shell Scripts\fR
2028 \fIImplicit Rule Name\fR        \fICommand Line\fR
2030 \fB\&.sh\fR     \fBcat $< >$@\fR
2031         \fBchmod +x $@\fR
2033         
2034 \fB\&.sh~\fR    \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.sh\fR
2035         \fBcp $*.sh $@\fR
2036         \fBchmod a+x $@\fR
2043 box;
2044 cw(1.57i) |cw(3.93i) 
2045 cw(1.57i) |cw(3.93i) .
2047 \fITable of Standard Implicit (Suffix) Rules for yacc Files\fR
2050 \fIImplicit Rule Name\fR        \fICommand Line\fR
2052 \fB\&.y\fR      \fB$(YACC.y) $<\fR
2053         \fB$(LINK.c)\fR \fB-o\fR \fB$@ y.tab.c $(LDLIBS)\fR
2054         \fB$(RM) y.tab.c\fR
2056         
2057 \fB\&.y.c\fR    \fB$(YACC.y) $<\fR
2058         \fBmv y.tab.c $@\fR
2060         
2061 \fB\&.y.ln\fR   \fB$(YACC.y) $<\fR
2062         \fB$(LINT.c)\fR \fB-o\fR \fB$@\fR \fB-i\fR \fBy.tab.c\fR
2063         \fB$(RM) y.tab.c\fR
2065         
2066 \fB\&.y.o\fR    \fB$(YACC.y) $<\fR
2067         \fB$(COMPILE.c)\fR \fB-o\fR \fB$@ y.tab.c\fR
2068         \fB$(RM) y.tab.c\fR
2070         
2071 \fB\&.y~\fR     \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.y\fR
2072         \fB$(YACC) $(YFLAGS) $*.y\fR
2073         \fB$(COMPILE.c)\fR \fB-o\fR \fB$@ y.tab.c\fR
2074         \fB$(RM) y.tab.c\fR
2076         
2077 \fB\&.y~.c\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.y\fR
2078         \fB$(YACC) $(YFLAGS) $*.y\fR
2079         \fBmv y.tab.c $@\fR
2081         
2082 \fB\&.y~.ln\fR  \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.y\fR
2083         \fB$(YACC.y) $*.y\fR
2084         \fB$(LINT.c)\fR \fB-o\fR \fB$@\fR \fB-i\fR \fBy.tab.c\fR
2085         \fB$(RM) y.tab.c\fR
2087         
2088 \fB\&.y~.o\fR   \fB$(GET) $(GFLAGS)\fR \fB-p\fR \fB$< > $*.y\fR
2089         \fB$(YACC) $(YFLAGS) $*.y\fR
2090         \fB$(CC) $(CFLAGS)\fR \fB-c\fR \fBy.tab.c\fR
2091         \fBrm\fR \fB-f\fR \fBy.tab.c\fR
2092         \fBmv y.tab.o $@\fR
2097 \fBmake\fR reads in the standard set of implicit rules from the file
2098 \fB/usr/share/lib/make/make.rules\fR, unless \fB-r\fR is in effect, or there is
2099 a \fBmake.rules\fR file in the local directory that does not \fBinclude\fR that
2100 file.
2101 .SS "The Suffixes List"
2103 The suffixes list is given as the list of dependencies for the
2104 \fB\&.SUFFIXES:\fR special-function target. The default list is contained in
2105 the \fBSUFFIXES\fR macro (See \fITable of Predefined Macros\fR for the standard
2106 list of suffixes). You can define additional \fB\&.SUFFIXES:\fR targets; a
2107 \fB\&.SUFFIXES\fR target with no dependencies clears the list of suffixes.
2108 Order is significant within the list; \fBmake\fR selects a rule that
2109 corresponds to the target's suffix and the first dependency-file suffix found
2110 in the list. To place suffixes at the head of the list, clear the list and
2111 replace it with the new suffixes, followed by the default list:
2113 .in +2
2115    .SUFFIXES:
2116    .SUFFIXES: \fIsuffixes\fR $(SUFFIXES)
2118 .in -2
2122 A tilde (\fB~\fR) indicates that if a dependency file with the indicated suffix
2123 (minus the ~) is under \fBSCCS\fR its most recent version should be retrieved,
2124 if necessary, before the target is processed.
2125 .SS "Library Maintenance"
2127 A target name  of the form:
2129 .in +2
2131    \fIlib\fR(\fImember ...\fR)
2133 .in -2
2137 refers to a member, or a space-separated list of members, in an \fBar\fR(1)
2138 library.
2141 The dependency of the library member on the corresponding file must be given as
2142 an explicit entry in the makefile. This can be handled by a pattern matching
2143 rule of the form:
2145 .in +2
2147    \fIlib\fR(%\fI\&.s\fR): %\fI\&.s\fR
2149 .in -2
2153 where \fI\&.s\fR is the suffix of the member; this suffix is typically
2154 \fB\&.o\fR for object libraries.
2157 A target name of the form:
2159 .in +2
2161    \fIlib\fR((\fIsymbol\fR)) 
2163 .in -2
2167 refers to the member of a randomized object library that defines the entry
2168 point named \fIsymbol\fR.
2169 .SS "Command Execution"
2171 Command lines are executed one at a time, \fIeach by its own process or
2172 shell\fR. Shell commands, notably \fBcd\fR, are ineffectual across an unescaped
2173 \fBNEWLINE\fR in the makefile. A line is printed (after macro expansion) just
2174 before being executed. This is suppressed if it starts with a \fB@\fR, if there
2175 is a \fB\&.SILENT:\fR entry in the makefile, or if \fBmake\fR is run with the
2176 \fB-s\fR option. Although the \fB-n\fR option specifies printing without
2177 execution, lines containing the macro \fB$(MAKE)\fR are executed regardless,
2178 and lines containing the \fB@\fR special character are printed. The \fB-t\fR
2179 (touch) option updates the modification date of a file without executing any
2180 rules. This can be dangerous when sources are maintained by more than one
2181 person.
2184 \fBmake\fR invokes the shell with the \fB-e\fR (exit-on-errors) argument. Thus,
2185 with semicolon-separated command sequences, execution of the later commands
2186 depends on the success of the former. This behavior can be overridden by
2187 starting the command line with a \fB\|-\fR, or by writing a shell script that
2188 returns a non-zero status only as it finds appropriate.
2189 .SS "Bourne Shell Constructs"
2191 To use the Bourne shell \fBif\fR control structure for branching, use a command
2192 line of the form:
2194 .in +2
2196 if \fIexpression\fR ; \e
2197 then \fIcommand\fR ; \e
2198      ... ; \e
2199 else \fIcommand\fR; \e
2200      ... ; \e
2201 fi 
2203 .in -2
2207 Although composed of several input lines, the escaped \fBNEWLINE\fR characters
2208 insure that \fBmake\fR treats them all as one (shell) command line.
2211 To use the Bourne shell \fBfor\fR control structure for loops, use a command
2212 line of the form:
2214 .in +2
2216 for \fIvar\fR in \fIlist\fR ; \e
2217 do \fIcommand\fR; \e
2218      ... \fB; \e\fRdone
2220 .in -2
2224 To refer to a shell variable, use a double-dollar-sign (\fB$$\fR). This
2225 prevents expansion of the dollar-sign by \fBmake\fR.
2226 .SS "Command Substitutions"
2228 To incorporate the standard output of a shell command in a macro, use a
2229 definition of the form:
2231 .in +2
2233    \fIMACRO\|\fR:sh =\fIcommand\fR
2235 .in -2
2239 The command is executed only once, standard error output is discarded, and
2240 \fBNEWLINE\fR characters are replaced with \fBSPACE\fRs. If the command has a
2241 non-zero exit status, \fBmake\fR halts with an error.
2244 To capture the output of a shell command in a macro reference, use a reference
2245 of the form:
2247 .in +2
2249 $(\fIMACRO\|\fR:sh) 
2251 .in -2
2255 where \fIMACRO\fR is the name of a macro containing a valid Bourne shell
2256 command line. In this case, the command is executed whenever the reference is
2257 evaluated. As with shell command substitutions, the reference is replaced with
2258 the standard output of the command. If the command has a non-zero exit status,
2259 \fBmake\fR halts with an error.
2262 In contrast to commands in rules, the command is not subject for macro
2263 substitution; therefore, a dollar sign (\fB$\fR) need not be replaced with a
2264 double dollar sign (\fB$$\fR).
2265 .SS "\fISignals\fR"
2267 \fBINT\fR, \fBSIGTERM\fR, and \fBQUIT\fR signals received from the keyboard
2268 halt \fBmake\fR and remove the target file being processed unless that target
2269 is in the dependency list for \fB\&.PRECIOUS:\fR.
2270 .SH EXAMPLES
2272 \fBExample 1 \fRDefining dependencies
2275 This makefile says that \fBpgm\fR depends on two files \fBa.o\fR and \fBb.o\fR,
2276 and that they in turn depend on their corresponding source files (\fBa.c\fR and
2277 \fBb.c\fR) along with a common file \fBincl.h\fR:
2280 .in +2
2282 pgm:  a.o  b.o
2283      $(LINK.c) -o $@a.o  b.o
2284 a.o:  incl.h  a.c
2285      cc -c a.c
2286 b.o:  incl.h  b.c
2287      cc -c b.c 
2289 .in -2
2292 \fBExample 2 \fRUsing implicit rules
2295 The following makefile uses implicit rules to express the same dependencies:
2298 .in +2
2300 pgm:  a.o  b.o
2301      cc  a.o  b.o -o pgm
2302 a.o  b.o:  incl.h
2304 .in -2
2306 .SH ENVIRONMENT VARIABLES
2308 See \fBenviron\fR(5) for descriptions of the following environment variables
2309 that affect the execution of \fBmake\fR: \fBLANG\fR, \fBLC_ALL\fR,
2310 \fBLC_CTYPE\fR, \fBLC_MESSAGES\fR, and \fBNLSPATH\fR.
2313 .ne 2
2315 \fBDMAKE_MAX_JOBS\fR
2317 .RS 17n
2318 The maximum number of jobs that each instance of \fBmake\fR should run.
2322 .ne 2
2324 \fBDMAKE_ADJUST_MAX_JOBS\fR
2326 .RS 17n
2327 If \fBYES\fR adjust the maximum number of jobs each instance of \fBmake\fR
2328 runs based on system load.  If \fBNO\fR do not
2332 .ne 2
2334 \fBDMAKE_OUTPUT_MODE\fR
2336 .RS 17n
2337 Adjusts the format of output from \fBmake\fR when executing jobs in parallel.
2339 If the value is \fBTEXT1\fR \fBmake\fR will print the hostname and the command
2340 executed once when the job begins, and again preceding any output from that
2341 job.
2343 If the value is \fBTEXT2\fR \fBmake\fR will only print the command and its
2344 output only once, when execution is complete.
2348 .ne 2
2350 \fBDMAKE_MODE\fR
2352 .RS 17n
2353 Specify whether jobs should be executed in serial, or parallel.  Equivalent to
2354 passing the \fB-m\FR option.
2358 .ne 2
2360 \fB\fBKEEP_STATE\fR\fR
2362 .RS 17n
2363 This environment variable has the same effect as the .KEEP_STATE:
2364 special-function target. It enables command dependencies, hidden dependencies
2365 and writing of the state file.
2369 .ne 2
2371 \fB\fBUSE_SVR4_MAKE\fR\fR
2373 .RS 17n
2374 This environment variable causes \fBmake\fR to invoke the generic System V
2375 version of \fBmake\fR (\fB/usr/lib/svr4.make\fR). See \fBsysV-make\fR(1).
2379 .ne 2
2381 \fB\fBMAKEFLAGS\fR\fR
2383 .RS 17n
2384 This variable is interpreted as a character string representing a series of
2385 option characters to be used as the default options. The implementation accepts
2386 both of the following formats (but need not accept them when intermixed):
2387 .RS +4
2390 The characters are option letters without the leading hyphens or blank
2391 character separation used on a command line.
2393 .RS +4
2396 The characters are formatted in a manner similar to a portion of the
2397 \fBmake\fR command line: options are preceded by hyphens and
2398 blank-character-separated. The \fImacro=name\fR macro definition operands can
2399 also be included. The difference between the contents of \fBMAKEFLAGS\fR and
2400 the command line is that the contents of the variable is not subjected to the
2401 word expansions associated with parsing the command line values. See
2402 \fBwordexp\fR(3C).
2404 When the command-line options \fB-f\fR or \fB-p\fR are used, they take effect
2405 regardless of whether they also appear in \fBMAKEFLAGS\fR. If they otherwise
2406 appear in \fBMAKEFLAGS\fR, the result is undefined.
2408 The \fBMAKEFLAGS\fR variable is accessed from the environment before the
2409 makefile is read. At that time, all of the options (except \fB-f\fR and
2410 \fB-p\fR) and command-line macros not already included in \fBMAKEFLAGS\fR are
2411 added to the \fBMAKEFLAGS\fR macro. The \fBMAKEFLAGS\fR macro is passed into
2412 the environment as an environment variable for all child processes. If the
2413 \fBMAKEFLAGS\fR macro is subsequently set by the makefile, it replaces the
2414 \fBMAKEFLAGS\fR variable currently found in the environment.
2418 .ne 2
2420 \fB\fBPROJECTDIR\fR\fR
2422 .RS 17n
2423 Provides a directory to be used to search for SCCS files not found in the
2424 current  directory. In all of the following cases, the search for SCCS files is
2425 made in  the directory SCCS in the identified directory. If the value of
2426 \fBPROJECTDIR\fR begins with a slash, it shall be considered an absolute
2427 pathname. Otherwise, the value of \fBPROJECTDIR\fR is treated as a user name
2428 and that user's initial working directory shall be examined for a subdirectory
2429 \fBsrc\fR or \fBsource\fR. If such a directory is found, it shall be used.
2430 Otherwise, the value is used as a relative pathname.
2432 If \fBPROJECTDIR\fR is not set or has a null value, the search for SCCS files
2433 shall be made in the directory SCCS in the current directory. The setting of
2434 \fBPROJECTDIR\fR affects all files listed in the remainder of this utility
2435 description for files  with a component named SCCS.
2438 .SH EXIT STATUS
2440 When the \fB-q\fR option is specified, the \fBmake\fR utility exits with one of
2441 the following values:
2443 .ne 2
2445 \fB\fB0\fR\fR
2447 .RS 6n
2448 Successful completion.
2452 .ne 2
2454 \fB\fB1\fR\fR
2456 .RS 6n
2457 The target was not up-to-date.
2461 .ne 2
2463 \fB\fB>1\fR\fR
2465 .RS 6n
2466 An error occurred.
2471 When the \fB-q\fR option is not specified, the \fBmake\fR utility exits with
2472 one of the following values:
2474 .ne 2
2476 \fB\fB0\fR\fR
2478 .RS 6n
2479 Successful completion
2483 .ne 2
2485 \fB\fB>0\fR\fR
2487 .RS 6n
2488 An error occurred
2491 .SH FILES
2492 .ne 2
2494 \fB\fBmakefile\fR\fR
2498 \fB\fBMakefile\fR\fR
2500 .sp .6
2501 .RS 4n
2502 current version(s) of \fBmake\fR description file
2506 .ne 2
2508 \fB\fBs.makefile\fR\fR
2512 \fB\fBs.Makefile\fR\fR
2514 .sp .6
2515 .RS 4n
2516 \fBSCCS\fR history files for the above makefile(s) in the current directory
2520 .ne 2
2522 \fB\fBSCCS/s.makefile\fR\fR
2526 \fB\fBSCCS/s.Makefile\fR\fR
2528 .sp .6
2529 .RS 4n
2530 \fBSCCS\fR history files for the above makefile(s)
2534 .ne 2
2536 \fB\fBmake.rules\fR\fR
2538 .sp .6
2539 .RS 4n
2540 default file for user-defined targets, macros, and implicit rules
2544 .ne 2
2546 \fB\fB/usr/share/lib/make/make.rules\fR\fR
2548 .sp .6
2549 .RS 4n
2550 makefile for standard implicit rules and macros (not read if \fBmake.rules\fR
2555 .ne 2
2557 \fB\fB\&.make.state\fR\fR
2559 .sp .6
2560 .RS 4n
2561 state file in the local directory
2564 .SH ATTRIBUTES
2566 See \fBattributes\fR(5) for descriptions of the following attributes:
2567 .SS "/usr/xpg4/bin/make"
2569 box;
2570 cw(2.75i) |cw(2.75i) 
2571 lw(2.75i) |lw(2.75i) .
2572 ATTRIBUTE TYPE  ATTRIBUTE VALUE
2574 Interface Stability     Committed
2576 Standard        See \fBstandards\fR(5).
2579 .SH SEE ALSO
2581 \fBar\fR(1), \fBarch\fR(1), \fBcd\fR(1), \fBcpp\fR(1), \fBlex\fR(1),
2582 \fBmach\fR(1), \fBsccs-get\fR(1), \fBsh\fR(1), \fBsysV-make\fR(1),
2583 \fByacc\fR(1), \fBwordexp\fR(3C), \fBpasswd\fR(4), \fBattributes\fR(5),
2584 \fBenviron\fR(5), \fBPOSIX.2\fR(5), \fBstandards\fR(5)
2587 \fISolaris Advanced User\&'s Guide\fR
2588 .SH DIAGNOSTICS
2589 .ne 2
2591 \fB\fBDon't know how to make target \fItarget\fR\fR\fR
2593 .sp .6
2594 .RS 4n
2595 There is no makefile entry for \fItarget\fR, and none of \fBmake\fR's implicit
2596 rules apply (there is no dependency file with a suffix in the suffixes list, or
2597 the target's suffix is not in the list).
2601 .ne 2
2603 \fB\fB***\fR \fItarget\fR \fBremoved.\fR\fR
2605 .sp .6
2606 .RS 4n
2607 \fBmake\fR was interrupted while building \fItarget\fR. Rather than leaving a
2608 partially-completed version that is newer than its dependencies, \fBmake\fR
2609 removes the file named \fItarget\fR.
2613 .ne 2
2615 \fB\fB***\fR \fItarget\fR \fBnot removed.\fR\fR
2617 .sp .6
2618 .RS 4n
2619 \fBmake\fR was interrupted while building \fItarget\fR and \fItarget\fR was not
2620 present in the directory.
2624 .ne 2
2626 \fB\fB***\fR \fItarget\fR \fBcould not be removed,\fR \fIreason\fR\fR
2628 .sp .6
2629 .RS 4n
2630 \fBmake\fR was interrupted while building \fItarget\fR, which was not removed
2631 for the indicated reason.
2635 .ne 2
2637 \fB\fBRead of include file\fR \fBfile\fR \fBfailed\fR\fR
2639 .sp .6
2640 .RS 4n
2641 The makefile indicated in an \fBinclude\fR directive was not found, or was
2642 inaccessible.
2646 .ne 2
2648 \fB\fBLoop detected when expanding macro value\fR \fImacro\fR\fB\&'\fR\fR
2650 .sp .6
2651 .RS 4n
2652 A reference to the macro being defined was found in the definition.
2656 .ne 2
2658 \fB\fBCould not write state file\fR \fIfile\fR\fB\fR\fR
2660 .sp .6
2661 .RS 4n
2662 You used the \fB\&.KEEP_STATE:\fR target, but do not have write permission on
2663 the state file.
2667 .ne 2
2669 \fB\fB***Error code\fR \fIn\fR\fR
2671 .sp .6
2672 .RS 4n
2673 The previous shell command returned a nonzero error code.
2677 .ne 2
2679 \fB\fB***\fR \fIsignal message\fR\fR
2681 .sp .6
2682 .RS 4n
2683 The previous shell command was aborted due to a signal. If \fB- core dumped\fR
2684 appears after the message, a \fBcore\fR file was created.
2688 .ne 2
2690 \fB\fBConditional macro conflict encountered\fR\fR
2692 .sp .6
2693 .RS 4n
2694 Displayed only when \fB-d\fR is in effect, this message indicates that two or
2695 more parallel targets currently being processed depend on a target which is
2696 built differently for each by virtue of conditional macros. Since the target
2697 cannot simultaneously satisfy both dependency relationships, it is conflicted.
2700 .SH BUGS
2702 Some commands return nonzero status inappropriately; to overcome this
2703 difficulty, prefix the offending command line in the rule with a \fB\(mi\fR\&.
2706 Filenames with the characters \fB=\fR, \fB:\fR, or \fB@\fR, do not work.
2709 You cannot build \fBfile.o\fR from \fBlib(file.o)\fR.
2712 Options supplied by \fBMAKEFLAGS\fR should be reported for nested \fBmake\fR
2713 commands. Use the \fB-d\fR option to find out what options the nested command
2714 picks up from \fBMAKEFLAGS\fR.
2717 This version of \fBmake\fR is incompatible in certain respects with previous
2718 versions:
2719 .RS +4
2721 .ie t \(bu
2722 .el o
2723 The \fB-d\fR option output is much briefer in this version. \fB-dd\fR now
2724 produces the equivalent voluminous output.
2726 .RS +4
2728 .ie t \(bu
2729 .el o
2730 \fBmake\fR attempts to derive values for the dynamic macros \fB$*\fR, \fB$<\fR,
2731 and \fB$?\fR, while processing explicit targets. It uses the same method as for
2732 implicit rules; in some cases this can lead either to unexpected values, or to
2733 an empty value being assigned. (Actually, this was true for earlier versions as
2734 well, even though the documentation stated otherwise.)
2736 .RS +4
2738 .ie t \(bu
2739 .el o
2740 \fBmake\fR no longer searches for \fBSCCS\fR history (\fBs\fR.) files.
2742 .RS +4
2744 .ie t \(bu
2745 .el o
2746 Suffix replacement in macro references are now applied after the macro is
2747 expanded.
2751 There is no guarantee that makefiles created for this version of \fBmake\fR
2752 work with earlier versions.
2755 If there is no \fBmake.rules\fR file in the current directory, and the file
2756 \fB/usr/share/lib/make/make.rules\fR is missing, \fBmake\fR stops before
2757 processing any targets. To force \fBmake\fR to run anyway, create an empty
2758 \fBmake.rules\fR file in the current directory.
2761 Once a dependency is made, \fBmake\fR assumes the dependency file is present
2762 for the remainder of the run. If a rule subsequently removes that file and
2763 future targets depend on its existence, unexpected errors can result.
2766 When hidden dependency checking is in effect, the \fB$?\fR macro's value
2767 includes the names of hidden dependencies.  This can lead to improper filename
2768 arguments to commands when \fB$?\fR is used in a rule.
2771 Pattern replacement macro references cannot be used in the dependency list of a
2772 pattern matching rule.
2775 Unlike previous versions, this version of \fBmake\fR strips a leading
2776 \fB\&./\fR from the value of the \fB$@\fR dynamic macro.
2779 With automatic \fBSCCS\fR retrieval, this version of \fBmake\fR does not
2780 support tilde suffix rules.
2783 The only dynamic macro whose value is strictly determined when used in a
2784 dependency list is \fB$@\fR (takes the form \fB$$@\fR).
2787 \fBmake\fR invokes the shell with the \fB-e\fR argument. This cannot be
2788 inferred from the syntax of the rule alone.