|
|
1.1 root 1: .TH MAKE 1
2: .CT 1 prog_c writing_troff prog_other
3: .SH NAME
4: make \(mi maintain collections of programs
5: .SH SYNOPSIS
6: .B make
7: [
8: .B -f
9: .I makefile
10: ]
11: [
12: .I option ...
13: ]
14: [
15: .I name ...
16: ]
17: .SH DESCRIPTION
18: .I Make
19: executes recipes in
20: .I makefile
21: to update the target
22: .IR names
23: (usually programs).
24: If no target is specified, the targets of the first rule in
25: .I makefile
26: are updated.
27: If no
28: .B -f
29: option is present,
30: .L makefile
31: and
32: .L Makefile
33: are tried in order.
34: If
35: .I makefile
36: is
37: .LR - ,
38: the standard input is taken.
39: More than one
40: .B -f
41: option may appear.
42: .PP
43: .I Make
44: updates a target if it depends on prerequisite files
45: that have been modified since the target was last modified,
46: or if the target does not exist.
47: The prerequisites are updated before the target.
48: .PP
49: The makefile
50: comprises a sequence of rules and macro definitions.
51: The first line of a rule is a
52: blank-separated list of targets, then a single or double colon,
53: then a list of prerequisite files terminated by semicolon or newline.
54: Text following a semicolon, and all following lines
55: that begin with a tab, are shell commands:
56: the recipe for updating the target.
57: .PP
58: If a name appears as target in more than one single-colon rule, it depends
59: on all of the prerequisites of those rules, but only
60: one recipe may be specified among the rules.
61: A target in a double-colon rule is updated by the following
62: recipe only if it is out of date with respect to the
63: prerequisites of that rule.
64: .PP
65: Two special forms of name are recognized.
66: A name like
67: .IR a ( b )
68: means the file named
69: .I b
70: stored in the archive named
71: .I a.
72: A name like
73: .IR a (( b ))
74: means the file stored in archive
75: .I a
76: and containing the entry point
77: .I b.
78: .PP
79: Sharp and newline surround comments.
80: .PP
81: In this makefile
82: .L pgm
83: depends on two
84: files
85: .L a.o
86: and
87: .LR b.o ,
88: and they in turn depend on
89: .L .c
90: files and a common file
91: .L ab.h :
92: .EX
93: pgm: a.o b.o
94: cc a.o b.o -lplot -o pgm
95: .sp
96: a.o: ab.h a.c
97: cc -c a.c
98: .sp
99: b.o: ab.h b.c
100: cc -c b.c
101: .EE
102: .PP
103: Makefile lines of the form
104: .IP
105: .IB "string1 " = " string2"
106: .LP
107: are macro definitions.
108: Subsequent appearances of
109: .BI $( string1 )
110: are replaced by
111: .IR string2 .
112: If
113: .I string1
114: is a single character, the parentheses are optional;
115: .B $$
116: is replaced by
117: .BR $ .
118: Each entry in the environment (see
119: .IR sh (1))
120: of the
121: .I make
122: command is taken as a macro definition,
123: as are command arguments with embedded equal signs.
124: .PP
125: Lines of the form
126: .IB "string1 " := " string2"
127: occurring in a recipe are assignments: macro definitions
128: that are made in the course of executing the recipe.
129: .PP
130: A target containing a single
131: .B %
132: introduces a pattern rule,
133: which controls the making of names that do not occur
134: explicitly as targets.
135: The
136: .B %
137: matches an arbitrary string called the stem:
138: .IB A % B
139: matches any string that begins with
140: .I A
141: and ends with
142: .I B.
143: A
144: .B %
145: in a prerequisite name stands for the stem;
146: and the special macro
147: .B $%
148: stands for the stem in the recipe.
149: A name that has no explicit rule is
150: matched against the target of each pattern rule.
151: The first pattern rule for which the prerequisites exist
152: specifies
153: further dependencies.
154: .PP
155: The following pattern rule maintains an object library where all the C source files
156: share a common include file
157: .LR defs.h .
158: The macro
159: .B CFLAGS
160: sets compiler options.
161: .EX
162: arch.a(%.o) : %.c defs.h
163: cc $(CFLAGS) -c $%.c
164: ar r arch.a $%.o
165: rm $%.o
166: .EE
167: .PP
168: A set of default pattern rules is built in, and effectively
169: follows the user's list of rules.
170: Assuming these rules,
171: which tell, among other things, how to make
172: .B .o
173: files from
174: .B .c
175: files, the first example becomes:
176: .EX
177: pgm: a.o b.o
178: cc a.o b.o -lplot -o pgm
179: .sp
180: a.o b.o: ab.h
181: .EE
182: .PP
183: Here, greatly simplified, is a sample of the built-in rules:
184: .EX
185: CC = cc
186: %.o: %.c
187: $(CC) $(CFLAGS) -c $%.c
188: %.o: %.f
189: f77 $(FFLAGS) -c $%.f
190: % : %.c
191: $(CC) $(CFLAGS) -o $% $%.c
192: .EE
193: .PP
194: The first rule
195: says that a name ending in
196: .B .o
197: could be made
198: if a matching name ending in
199: .B .c
200: were present.
201: The second states a similar rule for files ending in
202: .BR .f .
203: The third says that an arbitrary name can be made
204: by compiling a file with that name suffixed by
205: .BR .c .
206: .PP
207: Macros make the builtin pattern rules flexible:
208: .B CC
209: names the particular C compiler,
210: .B CFLAGS
211: gives
212: .IR cc (1)
213: options,
214: .B FFLAGS
215: for
216: .IR f77 (1),
217: .B LFLAGS
218: for
219: .IR lex (1),
220: .B YFLAGS
221: for
222: .IR yacc (1),
223: and
224: .B PFLAGS
225: for
226: .IR pascal (1).
227: .PP
228: An older, now disparaged, means of specifying default rules
229: is based only on suffixes.
230: Prerequisites are inferred according to selected suffixes
231: listed as the `prerequisites' for the special name
232: .BR .SUFFIXES ;
233: multiple lists accumulate;
234: an empty list clears what came before.
235: .PP
236: The rule to create a file with suffix
237: .I s2
238: that depends on a similarly named file with suffix
239: .I s1
240: is specified as an entry
241: for the `target'
242: .IR s1s2 .
243: Order is significant; the first possible name for which both
244: a file and a rule exist
245: is inferred.
246: An old style rule for making
247: optimized
248: .B .o
249: files from
250: .B .c
251: files is
252: .IP
253: .L
254: \&.c.o: ; cc -c -O -o $@ $*.c
255: .PP
256: The following two macros are defined for use in any rule:
257: .TP
258: .B $($@)
259: full name of target
260: .PD0
261: .TP
262: .B $($/)
263: target name beginning at the last slash, if any
264: .PD
265: .LP
266: A number of other special macros are defined
267: automatically in rules invoked by one of the implicit mechanisms:
268: .TP
269: .B $*
270: target name with suffix deleted
271: .PD0
272: .TP
273: .B $@
274: full target name
275: .TP
276: .B $<
277: list of prerequisites in an implicit rule
278: .TP
279: .B $?
280: list of prerequisites that are out of date
281: .TP
282: .B $^
283: list of all prerequisites
284: .PD
285: .BP
286: The following are included for consistency with System V:
287: .TP
288: .B $(@D)
289: directory part of
290: .B $@
291: (up to last slash)
292: .PD0
293: .TP
294: .B $(@F)
295: file name part of
296: .B $@
297: (after last slash)
298: .TP
299: .B $(*D)
300: directory part of
301: .B $*
302: (up to last slash)
303: .TP
304: .B $(*F)
305: file name part of
306: .B $*
307: (after last slash)
308: .TP
309: .B $(<D)
310: directory part of
311: .B $<
312: (up to last slash)
313: .TP
314: .B $(<F)
315: file name part of
316: .B $<
317: (after last slash)
318: .PD
319: .PP
320: Recipe lines are executed one at a time, each by its
321: own shell.
322: A line is printed when it is executed unless
323: the special target
324: .B .SILENT
325: is in the makefile,
326: or the first character of the command is
327: .BR @ .
328: .PP
329: Commands returning nonzero status (see
330: .IR intro (1))
331: cause
332: .I make
333: to terminate unless
334: the special target
335: .B .IGNORE
336: is in the makefile
337: or the command begins with
338: <tab><hyphen>.
339: .PP
340: Interrupt and quit cause the target to be deleted
341: unless the target depends on the special name
342: .BR .PRECIOUS .
343: .PP
344: .I Make
345: includes a rudimentary parallel processing ability.
346: If the separation string is
347: .B :&
348: or
349: .B ::& ,
350: .I make
351: can run the command sequences to create the prerequisites
352: simultaneously.
353: If two names are separated by an ampersand on the right side
354: of a colon, those two may be created in parallel.
355: .PP
356: Other options:
357: .TP
358: .B -i
359: Equivalent to the special entry
360: .L .IGNORE: .
361: .TP
362: .B -k
363: When a command returns nonzero status,
364: abandon work on the current entry, but
365: continue on branches that do not depend on the current entry.
366: .TP
367: .B -n
368: Trace and print, but do not execute the commands
369: needed to update the targets.
370: .TP
371: .B -t
372: Touch, i.e. update the modified date of targets, without
373: executing any commands.
374: .TP
375: .B -r
376: Equivalent to an initial special entry
377: .B .SUFFIXES:
378: with no list.
379: .TP
380: .B -s
381: Equivalent to the special entry
382: .BR .SILENT: .
383: .TP
384: .B -e
385: Environment definitions override conflicting definitions in arguments
386: or in makefiles.
387: Ordinary precedence is argument over makefile
388: over environment.
389: .TP
390: .B -o
391: Assume old style default suffix list:
392: .L
393: \&.SUFFIXES: .out .o .c .e .r .f .y .l .s .p
394: .TP
395: .BI -P n
396: Permit
397: .I n
398: command sequences to be done in parallel with
399: .BR & .
400: .TP
401: .B -z
402: Run commands by passing them to the shell;
403: normally simple commands are run directly by
404: .IR exec (2).
405: .SH FILES
406: .F makefile
407: .br
408: .F Makefile
409: .SH "SEE ALSO"
410: .IR sh (1),
411: .IR touch (1),
412: .IR ar (1),
413: .IR mk (1)
414: .br
415: S. I. Feldman,
416: `Make \- A Program for Maintaining Computer Programs', in
417: Bell Laboratories,
418: .I Unix Programmer's Manual,
419: Holt, Rinehart and Winston, 1983, Vol. 2
420: .RI ( "Seventh Edition" )
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.