Commit | Line | Data |
---|---|---|
28db68b2 C |
1 | .TH MAKE 1 "18 January 1983" |
2 | .UC 4 | |
3 | .SH NAME | |
4 | make \- maintain program groups | |
5 | .SH SYNOPSIS | |
6 | .B make | |
7 | [ | |
8 | .B \-f | |
9 | makefile ] [ option ] ... | |
10 | file ... | |
11 | .SH DESCRIPTION | |
12 | .I Make | |
13 | executes commands in | |
14 | .I makefile | |
15 | to update | |
16 | one or more target | |
17 | .IR names . | |
18 | .I Name | |
19 | is typically a program. | |
20 | If no | |
21 | .B \-f | |
22 | option is present, `makefile' and `Makefile' are | |
23 | tried in order. | |
24 | If | |
25 | .I makefile | |
26 | is `\-', the standard input is taken. | |
27 | More than one | |
28 | .B \-f | |
29 | option may appear | |
30 | .PP | |
31 | .I Make | |
32 | updates a target if it depends on prerequisite files | |
33 | that have been modified since the target was last modified, | |
34 | or if the target does not exist. | |
35 | .PP | |
36 | .I Makefile | |
37 | contains a sequence of entries that specify dependencies. | |
38 | The first line of an entry is a | |
39 | blank-separated list of targets, then a colon, | |
40 | then a list of prerequisite files. | |
41 | Text following a semicolon, and all following lines | |
42 | that begin with a tab, are shell commands | |
43 | to be executed to update the target. | |
44 | If a name appears on the left of more than one `colon' line, then it depends | |
45 | on all of the names on the right of the colon on those lines, but only | |
46 | one command sequence may be specified for it. | |
47 | If a name appears on a line with a double colon | |
48 | .B "::" | |
49 | then the command sequence following that line is performed | |
50 | only if the name is out of date with respect to the names to the right | |
51 | of the double colon, and is not affected by other double colon lines | |
52 | on which that name may appear. | |
53 | .PP | |
54 | Two special forms of a name are recognized. | |
55 | A name like | |
56 | .IR a ( b ) | |
57 | means the file named | |
58 | .I b | |
59 | stored in the archive named | |
60 | .I a. | |
61 | A name like | |
62 | .IR a (( b )) | |
63 | means the file stored in archive | |
64 | .I a | |
65 | containing the entry point | |
66 | .I b. | |
67 | .PP | |
68 | Sharp and newline surround comments. | |
69 | .PP | |
70 | The following makefile says that `pgm' depends on two | |
71 | files `a.o' and `b.o', and that they in turn depend on | |
72 | `.c' files and a common file `incl'. | |
73 | .RS | |
74 | .HP | |
75 | .PD 0 | |
76 | .nf | |
77 | pgm: a.o b.o | |
78 | cc a.o b.o \-lm \-o pgm | |
79 | .HP | |
80 | a.o: incl a.c | |
81 | cc \-c a.c | |
82 | .HP | |
83 | b.o: incl b.c | |
84 | cc \-c b.c | |
85 | .fi | |
86 | .RE | |
87 | .PD | |
88 | .PP | |
89 | .I Makefile | |
90 | entries of the form | |
91 | .PP | |
92 | .IP | |
93 | string1 = string2 | |
94 | .PP | |
95 | are macro definitions. | |
96 | Subsequent appearances of | |
97 | .RI $( string1 ) | |
98 | or | |
99 | .RI ${ string1 } | |
100 | are replaced by | |
101 | .IR string2 . | |
102 | If | |
103 | .I string1 | |
104 | is a single character, the parentheses or braces | |
105 | are optional. | |
106 | .PP | |
107 | .I Make | |
108 | infers prerequisites for files for which | |
109 | .I makefile | |
110 | gives no construction commands. | |
111 | For example, a | |
112 | `.c' file may be inferred as prerequisite for a `.o' file | |
113 | and be compiled to produce the `.o' file. | |
114 | Thus the preceding example can be done more briefly: | |
115 | .RS | |
116 | .HP | |
117 | .PD 0 | |
118 | .nf | |
119 | pgm: a.o b.o | |
120 | cc a.o b.o \-lm \-o pgm | |
121 | .HP | |
122 | a.o b.o: incl | |
123 | .fi | |
124 | .RE | |
125 | .PD | |
126 | .PP | |
127 | Prerequisites are inferred according to selected suffixes | |
128 | listed as the `prerequisites' for the special name `.SUFFIXES'; | |
129 | multiple lists accumulate; | |
130 | an empty list clears what came before. | |
131 | Order is significant; the first possible name for which both | |
132 | a file and a rule as described in the next paragraph exist | |
133 | is inferred. | |
134 | The default list is | |
135 | .IP | |
136 | \&.SUFFIXES: .out .o .c .e .r .f .y .l .s .p | |
137 | .PP | |
138 | The rule to create a file with suffix | |
139 | .I s2 | |
140 | that depends on a similarly named file with suffix | |
141 | .I s1 | |
142 | is specified as an entry | |
143 | for the `target' | |
144 | .IR s1s2 . | |
145 | In such an entry, the special macro $* stands for | |
146 | the target name with suffix deleted, $@ for the full target name, | |
147 | $< for the complete list of prerequisites, | |
148 | and | |
149 | $? for the list of prerequisites that are out of date. | |
150 | For example, a rule for making | |
151 | optimized `.o' files from `.c' files is | |
152 | .IP | |
153 | \&.c.o: ; cc \-c \-O \-o $@ $*.c | |
154 | .PP | |
155 | Certain macros are used by the default inference rules | |
156 | to communicate optional arguments to | |
157 | any resulting compilations. | |
158 | In particular, | |
159 | `CFLAGS' is used for | |
160 | .IR cc (1) | |
161 | options, | |
162 | `FFLAGS' for | |
163 | .IR f77 (1) | |
164 | options, | |
165 | `PFLAGS' for | |
166 | .IR pc (1) | |
167 | options, | |
168 | and `LFLAGS' and `YFLAGS' for | |
169 | .I lex | |
170 | and | |
171 | .IR yacc (1) | |
172 | options. In addition, the macro `MFLAGS' is filled in | |
173 | with the initial command line options supplied to | |
174 | .IR make . | |
175 | This simplifies maintaining a hierarchy of makefiles as | |
176 | one may then invoke | |
177 | .I make | |
178 | on makefiles in subdirectories and pass along useful options | |
179 | such as | |
180 | .BR \-k . | |
181 | .PP | |
182 | Command lines are executed one at a time, each by its | |
183 | own shell. | |
184 | A line is printed when it is executed unless | |
185 | the special target `.SILENT' | |
186 | is in | |
187 | .I makefile, | |
188 | or the first character of the command is `@'. | |
189 | .PP | |
190 | Commands returning nonzero status (see | |
191 | .IR intro (1)) | |
192 | cause | |
193 | .I make | |
194 | to terminate unless | |
195 | the special target `.IGNORE' is in | |
196 | .I makefile | |
197 | or the command begins with | |
198 | <tab><hyphen>. | |
199 | .PP | |
200 | Interrupt and quit cause the target to be deleted | |
201 | unless the target is a directory or | |
202 | depends on the special name `.PRECIOUS'. | |
203 | .PP | |
204 | Other options: | |
205 | .TP | |
206 | .B \-i | |
207 | Equivalent to the special entry `.IGNORE:'. | |
208 | .TP | |
209 | .B \-k | |
210 | When a command returns nonzero status, | |
211 | abandon work on the current entry, but | |
212 | continue on branches that do not depend on the current entry. | |
213 | .TP | |
214 | .B \-n | |
215 | Trace and print, but do not execute the commands | |
216 | needed to update the targets. | |
217 | .TP | |
218 | .B \-t | |
219 | Touch, i.e. update the modified date of targets, without | |
220 | executing any commands. | |
221 | .TP | |
222 | .B \-r | |
223 | Equivalent to an initial special entry `.SUFFIXES:' | |
224 | with no list. | |
225 | .TP | |
226 | .B \-s | |
227 | Equivalent to the special entry | |
228 | `.SILENT:'. | |
229 | .SH FILES | |
230 | makefile, Makefile | |
231 | .br | |
232 | .SH "SEE ALSO" | |
233 | sh(1), touch(1), f77(1), pc(1) | |
234 | .br | |
235 | S. I. Feldman | |
236 | .I | |
237 | Make \- A Program for Maintaining Computer Programs | |
238 | .SH BUGS | |
239 | Some commands return nonzero status inappropriately. | |
240 | Use | |
241 | .B \-i | |
242 | to overcome the difficulty. | |
243 | .br | |
244 | Commands that are directly executed by the shell, | |
245 | notably | |
246 | .IR cd (1), | |
247 | are ineffectual across newlines in | |
248 | .I make. | |
249 |