VirtualBox

source: kBuild/trunk/src/gmake/doc/make.info-2@ 200

Last change on this file since 200 was 200, checked in by bird, 20 years ago

Renaming some files.

  • Property svn:eol-style set to native
File size: 158.8 KB
Line 
1This is ../../doc/make.info, produced by makeinfo version 4.6 from
2../../doc/make.texi.
3
4INFO-DIR-SECTION GNU Packages
5START-INFO-DIR-ENTRY
6* Make: (make). Remake files automatically.
7END-INFO-DIR-ENTRY
8
9 This file documents the GNU Make utility, which determines
10automatically which pieces of a large program need to be recompiled,
11and issues the commands to recompile them.
12
13 This is Edition 0.61, last updated 02 May 2003, of `The GNU Make
14Manual', for `make', Version 3.81.
15
16 Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
171998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
18
19 Permission is granted to copy, distribute and/or modify this document
20under the terms of the GNU Free Documentation License, Version 1.1 or
21any later version published by the Free Software Foundation; with no
22Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
23Texts. A copy of the license is included in the section entitled "GNU
24Free Documentation License".
25
26
27File: make.info, Node: Implicit Rule Search, Prev: Suffix Rules, Up: Implicit Rules
28
29Implicit Rule Search Algorithm
30==============================
31
32Here is the procedure `make' uses for searching for an implicit rule
33for a target T. This procedure is followed for each double-colon rule
34with no commands, for each target of ordinary rules none of which have
35commands, and for each prerequisite that is not the target of any rule.
36It is also followed recursively for prerequisites that come from
37implicit rules, in the search for a chain of rules.
38
39 Suffix rules are not mentioned in this algorithm because suffix
40rules are converted to equivalent pattern rules once the makefiles have
41been read in.
42
43 For an archive member target of the form `ARCHIVE(MEMBER)', the
44following algorithm is run twice, first using the entire target name T,
45and second using `(MEMBER)' as the target T if the first run found no
46rule.
47
48 1. Split T into a directory part, called D, and the rest, called N.
49 For example, if T is `src/foo.o', then D is `src/' and N is
50 `foo.o'.
51
52 2. Make a list of all the pattern rules one of whose targets matches
53 T or N. If the target pattern contains a slash, it is matched
54 against T; otherwise, against N.
55
56 3. If any rule in that list is _not_ a match-anything rule, then
57 remove all nonterminal match-anything rules from the list.
58
59 4. Remove from the list all rules with no commands.
60
61 5. For each pattern rule in the list:
62
63 a. Find the stem S, which is the nonempty part of T or N matched
64 by the `%' in the target pattern.
65
66 b. Compute the prerequisite names by substituting S for `%'; if
67 the target pattern does not contain a slash, append D to the
68 front of each prerequisite name.
69
70 c. Test whether all the prerequisites exist or ought to exist.
71 (If a file name is mentioned in the makefile as a target or
72 as an explicit prerequisite, then we say it ought to exist.)
73
74 If all prerequisites exist or ought to exist, or there are no
75 prerequisites, then this rule applies.
76
77 6. If no pattern rule has been found so far, try harder. For each
78 pattern rule in the list:
79
80 a. If the rule is terminal, ignore it and go on to the next rule.
81
82 b. Compute the prerequisite names as before.
83
84 c. Test whether all the prerequisites exist or ought to exist.
85
86 d. For each prerequisite that does not exist, follow this
87 algorithm recursively to see if the prerequisite can be made
88 by an implicit rule.
89
90 e. If all prerequisites exist, ought to exist, or can be made by
91 implicit rules, then this rule applies.
92
93 7. If no implicit rule applies, the rule for `.DEFAULT', if any,
94 applies. In that case, give T the same commands that `.DEFAULT'
95 has. Otherwise, there are no commands for T.
96
97 Once a rule that applies has been found, for each target pattern of
98the rule other than the one that matched T or N, the `%' in the pattern
99is replaced with S and the resultant file name is stored until the
100commands to remake the target file T are executed. After these
101commands are executed, each of these stored file names are entered into
102the data base and marked as having been updated and having the same
103update status as the file T.
104
105 When the commands of a pattern rule are executed for T, the automatic
106variables are set corresponding to the target and prerequisites. *Note
107Automatic Variables::.
108
109
110File: make.info, Node: Archives, Next: Features, Prev: Implicit Rules, Up: Top
111
112Using `make' to Update Archive Files
113************************************
114
115"Archive files" are files containing named subfiles called "members";
116they are maintained with the program `ar' and their main use is as
117subroutine libraries for linking.
118
119* Menu:
120
121* Archive Members:: Archive members as targets.
122* Archive Update:: The implicit rule for archive member targets.
123* Archive Pitfalls:: Dangers to watch out for when using archives.
124* Archive Suffix Rules:: You can write a special kind of suffix rule
125 for updating archives.
126
127
128File: make.info, Node: Archive Members, Next: Archive Update, Prev: Archives, Up: Archives
129
130Archive Members as Targets
131==========================
132
133An individual member of an archive file can be used as a target or
134prerequisite in `make'. You specify the member named MEMBER in archive
135file ARCHIVE as follows:
136
137 ARCHIVE(MEMBER)
138
139This construct is available only in targets and prerequisites, not in
140commands! Most programs that you might use in commands do not support
141this syntax and cannot act directly on archive members. Only `ar' and
142other programs specifically designed to operate on archives can do so.
143Therefore, valid commands to update an archive member target probably
144must use `ar'. For example, this rule says to create a member `hack.o'
145in archive `foolib' by copying the file `hack.o':
146
147 foolib(hack.o) : hack.o
148 ar cr foolib hack.o
149
150 In fact, nearly all archive member targets are updated in just this
151way and there is an implicit rule to do it for you. *Note:* The `c'
152flag to `ar' is required if the archive file does not already exist.
153
154 To specify several members in the same archive, you can write all the
155member names together between the parentheses. For example:
156
157 foolib(hack.o kludge.o)
158
159is equivalent to:
160
161 foolib(hack.o) foolib(kludge.o)
162
163 You can also use shell-style wildcards in an archive member
164reference. *Note Using Wildcard Characters in File Names: Wildcards.
165For example, `foolib(*.o)' expands to all existing members of the
166`foolib' archive whose names end in `.o'; perhaps `foolib(hack.o)
167foolib(kludge.o)'.
168
169
170File: make.info, Node: Archive Update, Next: Archive Pitfalls, Prev: Archive Members, Up: Archives
171
172Implicit Rule for Archive Member Targets
173========================================
174
175Recall that a target that looks like `A(M)' stands for the member named
176M in the archive file A.
177
178 When `make' looks for an implicit rule for such a target, as a
179special feature it considers implicit rules that match `(M)', as well as
180those that match the actual target `A(M)'.
181
182 This causes one special rule whose target is `(%)' to match. This
183rule updates the target `A(M)' by copying the file M into the archive.
184For example, it will update the archive member target `foo.a(bar.o)' by
185copying the _file_ `bar.o' into the archive `foo.a' as a _member_ named
186`bar.o'.
187
188 When this rule is chained with others, the result is very powerful.
189Thus, `make "foo.a(bar.o)"' (the quotes are needed to protect the `('
190and `)' from being interpreted specially by the shell) in the presence
191of a file `bar.c' is enough to cause the following commands to be run,
192even without a makefile:
193
194 cc -c bar.c -o bar.o
195 ar r foo.a bar.o
196 rm -f bar.o
197
198Here `make' has envisioned the file `bar.o' as an intermediate file.
199*Note Chains of Implicit Rules: Chained Rules.
200
201 Implicit rules such as this one are written using the automatic
202variable `$%'. *Note Automatic Variables::.
203
204 An archive member name in an archive cannot contain a directory
205name, but it may be useful in a makefile to pretend that it does. If
206you write an archive member target `foo.a(dir/file.o)', `make' will
207perform automatic updating with this command:
208
209 ar r foo.a dir/file.o
210
211which has the effect of copying the file `dir/file.o' into a member
212named `file.o'. In connection with such usage, the automatic variables
213`%D' and `%F' may be useful.
214
215* Menu:
216
217* Archive Symbols:: How to update archive symbol directories.
218
219
220File: make.info, Node: Archive Symbols, Prev: Archive Update, Up: Archive Update
221
222Updating Archive Symbol Directories
223-----------------------------------
224
225An archive file that is used as a library usually contains a special
226member named `__.SYMDEF' that contains a directory of the external
227symbol names defined by all the other members. After you update any
228other members, you need to update `__.SYMDEF' so that it will summarize
229the other members properly. This is done by running the `ranlib'
230program:
231
232 ranlib ARCHIVEFILE
233
234 Normally you would put this command in the rule for the archive file,
235and make all the members of the archive file prerequisites of that rule.
236For example,
237
238 libfoo.a: libfoo.a(x.o) libfoo.a(y.o) ...
239 ranlib libfoo.a
240
241The effect of this is to update archive members `x.o', `y.o', etc., and
242then update the symbol directory member `__.SYMDEF' by running
243`ranlib'. The rules for updating the members are not shown here; most
244likely you can omit them and use the implicit rule which copies files
245into the archive, as described in the preceding section.
246
247 This is not necessary when using the GNU `ar' program, which updates
248the `__.SYMDEF' member automatically.
249
250
251File: make.info, Node: Archive Pitfalls, Next: Archive Suffix Rules, Prev: Archive Update, Up: Archives
252
253Dangers When Using Archives
254===========================
255
256It is important to be careful when using parallel execution (the `-j'
257switch; *note Parallel Execution: Parallel.) and archives. If multiple
258`ar' commands run at the same time on the same archive file, they will
259not know about each other and can corrupt the file.
260
261 Possibly a future version of `make' will provide a mechanism to
262circumvent this problem by serializing all commands that operate on the
263same archive file. But for the time being, you must either write your
264makefiles to avoid this problem in some other way, or not use `-j'.
265
266
267File: make.info, Node: Archive Suffix Rules, Prev: Archive Pitfalls, Up: Archives
268
269Suffix Rules for Archive Files
270==============================
271
272You can write a special kind of suffix rule for dealing with archive
273files. *Note Suffix Rules::, for a full explanation of suffix rules.
274Archive suffix rules are obsolete in GNU `make', because pattern rules
275for archives are a more general mechanism (*note Archive Update::).
276But they are retained for compatibility with other `make's.
277
278 To write a suffix rule for archives, you simply write a suffix rule
279using the target suffix `.a' (the usual suffix for archive files). For
280example, here is the old-fashioned suffix rule to update a library
281archive from C source files:
282
283 .c.a:
284 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
285 $(AR) r $@ $*.o
286 $(RM) $*.o
287
288This works just as if you had written the pattern rule:
289
290 (%.o): %.c
291 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
292 $(AR) r $@ $*.o
293 $(RM) $*.o
294
295 In fact, this is just what `make' does when it sees a suffix rule
296with `.a' as the target suffix. Any double-suffix rule `.X.a' is
297converted to a pattern rule with the target pattern `(%.o)' and a
298prerequisite pattern of `%.X'.
299
300 Since you might want to use `.a' as the suffix for some other kind
301of file, `make' also converts archive suffix rules to pattern rules in
302the normal way (*note Suffix Rules::). Thus a double-suffix rule
303`.X.a' produces two pattern rules: `(%.o): %.X' and `%.a: %.X'.
304
305
306File: make.info, Node: Features, Next: Missing, Prev: Archives, Up: Top
307
308Features of GNU `make'
309**********************
310
311Here is a summary of the features of GNU `make', for comparison with
312and credit to other versions of `make'. We consider the features of
313`make' in 4.2 BSD systems as a baseline. If you are concerned with
314writing portable makefiles, you should not use the features of `make'
315listed here, nor the ones in *Note Missing::.
316
317 Many features come from the version of `make' in System V.
318
319 * The `VPATH' variable and its special meaning. *Note Searching
320 Directories for Prerequisites: Directory Search. This feature
321 exists in System V `make', but is undocumented. It is documented
322 in 4.3 BSD `make' (which says it mimics System V's `VPATH'
323 feature).
324
325 * Included makefiles. *Note Including Other Makefiles: Include.
326 Allowing multiple files to be included with a single directive is
327 a GNU extension.
328
329 * Variables are read from and communicated via the environment.
330 *Note Variables from the Environment: Environment.
331
332 * Options passed through the variable `MAKEFLAGS' to recursive
333 invocations of `make'. *Note Communicating Options to a
334 Sub-`make': Options/Recursion.
335
336 * The automatic variable `$%' is set to the member name in an
337 archive reference. *Note Automatic Variables::.
338
339 * The automatic variables `$@', `$*', `$<', `$%', and `$?' have
340 corresponding forms like `$(@F)' and `$(@D)'. We have generalized
341 this to `$^' as an obvious extension. *Note Automatic Variables::.
342
343 * Substitution variable references. *Note Basics of Variable
344 References: Reference.
345
346 * The command-line options `-b' and `-m', accepted and ignored. In
347 System V `make', these options actually do something.
348
349 * Execution of recursive commands to run `make' via the variable
350 `MAKE' even if `-n', `-q' or `-t' is specified. *Note Recursive
351 Use of `make': Recursion.
352
353 * Support for suffix `.a' in suffix rules. *Note Archive Suffix
354 Rules::. This feature is obsolete in GNU `make', because the
355 general feature of rule chaining (*note Chains of Implicit Rules:
356 Chained Rules.) allows one pattern rule for installing members in
357 an archive (*note Archive Update::) to be sufficient.
358
359 * The arrangement of lines and backslash-newline combinations in
360 commands is retained when the commands are printed, so they appear
361 as they do in the makefile, except for the stripping of initial
362 whitespace.
363
364 The following features were inspired by various other versions of
365`make'. In some cases it is unclear exactly which versions inspired
366which others.
367
368 * Pattern rules using `%'. This has been implemented in several
369 versions of `make'. We're not sure who invented it first, but
370 it's been spread around a bit. *Note Defining and Redefining
371 Pattern Rules: Pattern Rules.
372
373 * Rule chaining and implicit intermediate files. This was
374 implemented by Stu Feldman in his version of `make' for AT&T
375 Eighth Edition Research Unix, and later by Andrew Hume of AT&T
376 Bell Labs in his `mk' program (where he terms it "transitive
377 closure"). We do not really know if we got this from either of
378 them or thought it up ourselves at the same time. *Note Chains of
379 Implicit Rules: Chained Rules.
380
381 * The automatic variable `$^' containing a list of all prerequisites
382 of the current target. We did not invent this, but we have no
383 idea who did. *Note Automatic Variables::. The automatic variable
384 `$+' is a simple extension of `$^'.
385
386 * The "what if" flag (`-W' in GNU `make') was (as far as we know)
387 invented by Andrew Hume in `mk'. *Note Instead of Executing the
388 Commands: Instead of Execution.
389
390 * The concept of doing several things at once (parallelism) exists in
391 many incarnations of `make' and similar programs, though not in the
392 System V or BSD implementations. *Note Command Execution:
393 Execution.
394
395 * Modified variable references using pattern substitution come from
396 SunOS 4. *Note Basics of Variable References: Reference. This
397 functionality was provided in GNU `make' by the `patsubst'
398 function before the alternate syntax was implemented for
399 compatibility with SunOS 4. It is not altogether clear who
400 inspired whom, since GNU `make' had `patsubst' before SunOS 4 was
401 released.
402
403 * The special significance of `+' characters preceding command lines
404 (*note Instead of Executing the Commands: Instead of Execution.) is
405 mandated by `IEEE Standard 1003.2-1992' (POSIX.2).
406
407 * The `+=' syntax to append to the value of a variable comes from
408 SunOS 4 `make'. *Note Appending More Text to Variables: Appending.
409
410 * The syntax `ARCHIVE(MEM1 MEM2...)' to list multiple members in a
411 single archive file comes from SunOS 4 `make'. *Note Archive
412 Members::.
413
414 * The `-include' directive to include makefiles with no error for a
415 nonexistent file comes from SunOS 4 `make'. (But note that SunOS 4
416 `make' does not allow multiple makefiles to be specified in one
417 `-include' directive.) The same feature appears with the name
418 `sinclude' in SGI `make' and perhaps others.
419
420 The remaining features are inventions new in GNU `make':
421
422 * Use the `-v' or `--version' option to print version and copyright
423 information.
424
425 * Use the `-h' or `--help' option to summarize the options to `make'.
426
427 * Simply-expanded variables. *Note The Two Flavors of Variables:
428 Flavors.
429
430 * Pass command-line variable assignments automatically through the
431 variable `MAKE' to recursive `make' invocations. *Note Recursive
432 Use of `make': Recursion.
433
434 * Use the `-C' or `--directory' command option to change directory.
435 *Note Summary of Options: Options Summary.
436
437 * Make verbatim variable definitions with `define'. *Note Defining
438 Variables Verbatim: Defining.
439
440 * Declare phony targets with the special target `.PHONY'.
441
442 Andrew Hume of AT&T Bell Labs implemented a similar feature with a
443 different syntax in his `mk' program. This seems to be a case of
444 parallel discovery. *Note Phony Targets: Phony Targets.
445
446 * Manipulate text by calling functions. *Note Functions for
447 Transforming Text: Functions.
448
449 * Use the `-o' or `--old-file' option to pretend a file's
450 modification-time is old. *Note Avoiding Recompilation of Some
451 Files: Avoiding Compilation.
452
453 * Conditional execution.
454
455 This feature has been implemented numerous times in various
456 versions of `make'; it seems a natural extension derived from the
457 features of the C preprocessor and similar macro languages and is
458 not a revolutionary concept. *Note Conditional Parts of
459 Makefiles: Conditionals.
460
461 * Specify a search path for included makefiles. *Note Including
462 Other Makefiles: Include.
463
464 * Specify extra makefiles to read with an environment variable.
465 *Note The Variable `MAKEFILES': MAKEFILES Variable.
466
467 * Strip leading sequences of `./' from file names, so that `./FILE'
468 and `FILE' are considered to be the same file.
469
470 * Use a special search method for library prerequisites written in
471 the form `-lNAME'. *Note Directory Search for Link Libraries:
472 Libraries/Search.
473
474 * Allow suffixes for suffix rules (*note Old-Fashioned Suffix Rules:
475 Suffix Rules.) to contain any characters. In other versions of
476 `make', they must begin with `.' and not contain any `/'
477 characters.
478
479 * Keep track of the current level of `make' recursion using the
480 variable `MAKELEVEL'. *Note Recursive Use of `make': Recursion.
481
482 * Provide any goals given on the command line in the variable
483 `MAKECMDGOALS'. *Note Arguments to Specify the Goals: Goals.
484
485 * Specify static pattern rules. *Note Static Pattern Rules: Static
486 Pattern.
487
488 * Provide selective `vpath' search. *Note Searching Directories for
489 Prerequisites: Directory Search.
490
491 * Provide computed variable references. *Note Basics of Variable
492 References: Reference.
493
494 * Update makefiles. *Note How Makefiles Are Remade: Remaking
495 Makefiles. System V `make' has a very, very limited form of this
496 functionality in that it will check out SCCS files for makefiles.
497
498 * Various new built-in implicit rules. *Note Catalogue of Implicit
499 Rules: Catalogue of Rules.
500
501 * The built-in variable `MAKE_VERSION' gives the version number of
502 `make'.
503
504
505File: make.info, Node: Missing, Next: Makefile Conventions, Prev: Features, Up: Top
506
507Incompatibilities and Missing Features
508**************************************
509
510The `make' programs in various other systems support a few features
511that are not implemented in GNU `make'. The POSIX.2 standard (`IEEE
512Standard 1003.2-1992') which specifies `make' does not require any of
513these features.
514
515 * A target of the form `FILE((ENTRY))' stands for a member of
516 archive file FILE. The member is chosen, not by name, but by
517 being an object file which defines the linker symbol ENTRY.
518
519 This feature was not put into GNU `make' because of the
520 nonmodularity of putting knowledge into `make' of the internal
521 format of archive file symbol tables. *Note Updating Archive
522 Symbol Directories: Archive Symbols.
523
524 * Suffixes (used in suffix rules) that end with the character `~'
525 have a special meaning to System V `make'; they refer to the SCCS
526 file that corresponds to the file one would get without the `~'.
527 For example, the suffix rule `.c~.o' would make the file `N.o' from
528 the SCCS file `s.N.c'. For complete coverage, a whole series of
529 such suffix rules is required. *Note Old-Fashioned Suffix Rules:
530 Suffix Rules.
531
532 In GNU `make', this entire series of cases is handled by two
533 pattern rules for extraction from SCCS, in combination with the
534 general feature of rule chaining. *Note Chains of Implicit Rules:
535 Chained Rules.
536
537 * In System V and 4.3 BSD `make', files found by `VPATH' search
538 (*note Searching Directories for Prerequisites: Directory Search.)
539 have their names changed inside command strings. We feel it is
540 much cleaner to always use automatic variables and thus make this
541 feature obsolete.
542
543 * In some Unix `make's, the automatic variable `$*' appearing in the
544 prerequisites of a rule has the amazingly strange "feature" of
545 expanding to the full name of the _target of that rule_. We cannot
546 imagine what went on in the minds of Unix `make' developers to do
547 this; it is utterly inconsistent with the normal definition of
548 `$*'.
549
550 * In some Unix `make's, implicit rule search (*note Using Implicit
551 Rules: Implicit Rules.) is apparently done for _all_ targets, not
552 just those without commands. This means you can do:
553
554 foo.o:
555 cc -c foo.c
556
557 and Unix `make' will intuit that `foo.o' depends on `foo.c'.
558
559 We feel that such usage is broken. The prerequisite properties of
560 `make' are well-defined (for GNU `make', at least), and doing such
561 a thing simply does not fit the model.
562
563 * GNU `make' does not include any built-in implicit rules for
564 compiling or preprocessing EFL programs. If we hear of anyone who
565 is using EFL, we will gladly add them.
566
567 * It appears that in SVR4 `make', a suffix rule can be specified with
568 no commands, and it is treated as if it had empty commands (*note
569 Empty Commands::). For example:
570
571 .c.a:
572
573 will override the built-in `.c.a' suffix rule.
574
575 We feel that it is cleaner for a rule without commands to always
576 simply add to the prerequisite list for the target. The above
577 example can be easily rewritten to get the desired behavior in GNU
578 `make':
579
580 .c.a: ;
581
582 * Some versions of `make' invoke the shell with the `-e' flag,
583 except under `-k' (*note Testing the Compilation of a Program:
584 Testing.). The `-e' flag tells the shell to exit as soon as any
585 program it runs returns a nonzero status. We feel it is cleaner to
586 write each shell command line to stand on its own and not require
587 this special treatment.
588
589
590File: make.info, Node: Makefile Conventions, Next: Quick Reference, Prev: Missing, Up: Top
591
592Makefile Conventions
593********************
594
595This node describes conventions for writing the Makefiles for GNU
596programs. Using Automake will help you write a Makefile that follows
597these conventions.
598
599* Menu:
600
601* Makefile Basics:: General Conventions for Makefiles
602* Utilities in Makefiles:: Utilities in Makefiles
603* Command Variables:: Variables for Specifying Commands
604* Directory Variables:: Variables for Installation Directories
605* Standard Targets:: Standard Targets for Users
606* Install Command Categories:: Three categories of commands in the `install'
607 rule: normal, pre-install and post-install.
608
609
610File: make.info, Node: Makefile Basics, Next: Utilities in Makefiles, Up: Makefile Conventions
611
612General Conventions for Makefiles
613=================================
614
615Every Makefile should contain this line:
616
617 SHELL = /bin/sh
618
619to avoid trouble on systems where the `SHELL' variable might be
620inherited from the environment. (This is never a problem with GNU
621`make'.)
622
623 Different `make' programs have incompatible suffix lists and
624implicit rules, and this sometimes creates confusion or misbehavior. So
625it is a good idea to set the suffix list explicitly using only the
626suffixes you need in the particular Makefile, like this:
627
628 .SUFFIXES:
629 .SUFFIXES: .c .o
630
631The first line clears out the suffix list, the second introduces all
632suffixes which may be subject to implicit rules in this Makefile.
633
634 Don't assume that `.' is in the path for command execution. When
635you need to run programs that are a part of your package during the
636make, please make sure that it uses `./' if the program is built as
637part of the make or `$(srcdir)/' if the file is an unchanging part of
638the source code. Without one of these prefixes, the current search
639path is used.
640
641 The distinction between `./' (the "build directory") and
642`$(srcdir)/' (the "source directory") is important because users can
643build in a separate directory using the `--srcdir' option to
644`configure'. A rule of the form:
645
646 foo.1 : foo.man sedscript
647 sed -e sedscript foo.man > foo.1
648
649will fail when the build directory is not the source directory, because
650`foo.man' and `sedscript' are in the source directory.
651
652 When using GNU `make', relying on `VPATH' to find the source file
653will work in the case where there is a single dependency file, since
654the `make' automatic variable `$<' will represent the source file
655wherever it is. (Many versions of `make' set `$<' only in implicit
656rules.) A Makefile target like
657
658 foo.o : bar.c
659 $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
660
661should instead be written as
662
663 foo.o : bar.c
664 $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@
665
666in order to allow `VPATH' to work correctly. When the target has
667multiple dependencies, using an explicit `$(srcdir)' is the easiest way
668to make the rule work well. For example, the target above for `foo.1'
669is best written as:
670
671 foo.1 : foo.man sedscript
672 sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@
673
674 GNU distributions usually contain some files which are not source
675files--for example, Info files, and the output from Autoconf, Automake,
676Bison or Flex. Since these files normally appear in the source
677directory, they should always appear in the source directory, not in the
678build directory. So Makefile rules to update them should put the
679updated files in the source directory.
680
681 However, if a file does not appear in the distribution, then the
682Makefile should not put it in the source directory, because building a
683program in ordinary circumstances should not modify the source directory
684in any way.
685
686 Try to make the build and installation targets, at least (and all
687their subtargets) work correctly with a parallel `make'.
688
689
690File: make.info, Node: Utilities in Makefiles, Next: Command Variables, Prev: Makefile Basics, Up: Makefile Conventions
691
692Utilities in Makefiles
693======================
694
695Write the Makefile commands (and any shell scripts, such as
696`configure') to run in `sh', not in `csh'. Don't use any special
697features of `ksh' or `bash'.
698
699 The `configure' script and the Makefile rules for building and
700installation should not use any utilities directly except these:
701
702 cat cmp cp diff echo egrep expr false grep install-info
703 ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
704
705 The compression program `gzip' can be used in the `dist' rule.
706
707 Stick to the generally supported options for these programs. For
708example, don't use `mkdir -p', convenient as it may be, because most
709systems don't support it.
710
711 It is a good idea to avoid creating symbolic links in makefiles,
712since a few systems don't support them.
713
714 The Makefile rules for building and installation can also use
715compilers and related programs, but should do so via `make' variables
716so that the user can substitute alternatives. Here are some of the
717programs we mean:
718
719 ar bison cc flex install ld ldconfig lex
720 make makeinfo ranlib texi2dvi yacc
721
722 Use the following `make' variables to run those programs:
723
724 $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
725 $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
726
727 When you use `ranlib' or `ldconfig', you should make sure nothing
728bad happens if the system does not have the program in question.
729Arrange to ignore an error from that command, and print a message before
730the command to tell the user that failure of this command does not mean
731a problem. (The Autoconf `AC_PROG_RANLIB' macro can help with this.)
732
733 If you use symbolic links, you should implement a fallback for
734systems that don't have symbolic links.
735
736 Additional utilities that can be used via Make variables are:
737
738 chgrp chmod chown mknod
739
740 It is ok to use other utilities in Makefile portions (or scripts)
741intended only for particular systems where you know those utilities
742exist.
743
744
745File: make.info, Node: Command Variables, Next: Directory Variables, Prev: Utilities in Makefiles, Up: Makefile Conventions
746
747Variables for Specifying Commands
748=================================
749
750Makefiles should provide variables for overriding certain commands,
751options, and so on.
752
753 In particular, you should run most utility programs via variables.
754Thus, if you use Bison, have a variable named `BISON' whose default
755value is set with `BISON = bison', and refer to it with `$(BISON)'
756whenever you need to use Bison.
757
758 File management utilities such as `ln', `rm', `mv', and so on, need
759not be referred to through variables in this way, since users don't
760need to replace them with other programs.
761
762 Each program-name variable should come with an options variable that
763is used to supply options to the program. Append `FLAGS' to the
764program-name variable name to get the options variable name--for
765example, `BISONFLAGS'. (The names `CFLAGS' for the C compiler,
766`YFLAGS' for yacc, and `LFLAGS' for lex, are exceptions to this rule,
767but we keep them because they are standard.) Use `CPPFLAGS' in any
768compilation command that runs the preprocessor, and use `LDFLAGS' in
769any compilation command that does linking as well as in any direct use
770of `ld'.
771
772 If there are C compiler options that _must_ be used for proper
773compilation of certain files, do not include them in `CFLAGS'. Users
774expect to be able to specify `CFLAGS' freely themselves. Instead,
775arrange to pass the necessary options to the C compiler independently
776of `CFLAGS', by writing them explicitly in the compilation commands or
777by defining an implicit rule, like this:
778
779 CFLAGS = -g
780 ALL_CFLAGS = -I. $(CFLAGS)
781 .c.o:
782 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
783
784 Do include the `-g' option in `CFLAGS', because that is not
785_required_ for proper compilation. You can consider it a default that
786is only recommended. If the package is set up so that it is compiled
787with GCC by default, then you might as well include `-O' in the default
788value of `CFLAGS' as well.
789
790 Put `CFLAGS' last in the compilation command, after other variables
791containing compiler options, so the user can use `CFLAGS' to override
792the others.
793
794 `CFLAGS' should be used in every invocation of the C compiler, both
795those which do compilation and those which do linking.
796
797 Every Makefile should define the variable `INSTALL', which is the
798basic command for installing a file into the system.
799
800 Every Makefile should also define the variables `INSTALL_PROGRAM'
801and `INSTALL_DATA'. (The default for `INSTALL_PROGRAM' should be
802`$(INSTALL)'; the default for `INSTALL_DATA' should be `${INSTALL} -m
803644'.) Then it should use those variables as the commands for actual
804installation, for executables and nonexecutables respectively. Use
805these variables as follows:
806
807 $(INSTALL_PROGRAM) foo $(bindir)/foo
808 $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
809
810 Optionally, you may prepend the value of `DESTDIR' to the target
811filename. Doing this allows the installer to create a snapshot of the
812installation to be copied onto the real target filesystem later. Do not
813set the value of `DESTDIR' in your Makefile, and do not include it in
814any installed files. With support for `DESTDIR', the above examples
815become:
816
817 $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
818 $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
819
820Always use a file name, not a directory name, as the second argument of
821the installation commands. Use a separate command for each file to be
822installed.
823
824
825File: make.info, Node: Directory Variables, Next: Standard Targets, Prev: Command Variables, Up: Makefile Conventions
826
827Variables for Installation Directories
828======================================
829
830Installation directories should always be named by variables, so it is
831easy to install in a nonstandard place. The standard names for these
832variables are described below. They are based on a standard filesystem
833layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
834and other modern operating systems.
835
836 These two variables set the root for the installation. All the other
837installation directories should be subdirectories of one of these two,
838and nothing should be directly installed into these two directories.
839
840`prefix'
841 A prefix used in constructing the default values of the variables
842 listed below. The default value of `prefix' should be
843 `/usr/local'. When building the complete GNU system, the prefix
844 will be empty and `/usr' will be a symbolic link to `/'. (If you
845 are using Autoconf, write it as `@prefix@'.)
846
847 Running `make install' with a different value of `prefix' from the
848 one used to build the program should _not_ recompile the program.
849
850`exec_prefix'
851 A prefix used in constructing the default values of some of the
852 variables listed below. The default value of `exec_prefix' should
853 be `$(prefix)'. (If you are using Autoconf, write it as
854 `@exec_prefix@'.)
855
856 Generally, `$(exec_prefix)' is used for directories that contain
857 machine-specific files (such as executables and subroutine
858 libraries), while `$(prefix)' is used directly for other
859 directories.
860
861 Running `make install' with a different value of `exec_prefix'
862 from the one used to build the program should _not_ recompile the
863 program.
864
865 Executable programs are installed in one of the following
866directories.
867
868`bindir'
869 The directory for installing executable programs that users can
870 run. This should normally be `/usr/local/bin', but write it as
871 `$(exec_prefix)/bin'. (If you are using Autoconf, write it as
872 `@bindir@'.)
873
874`sbindir'
875 The directory for installing executable programs that can be run
876 from the shell, but are only generally useful to system
877 administrators. This should normally be `/usr/local/sbin', but
878 write it as `$(exec_prefix)/sbin'. (If you are using Autoconf,
879 write it as `@sbindir@'.)
880
881`libexecdir'
882 The directory for installing executable programs to be run by other
883 programs rather than by users. This directory should normally be
884 `/usr/local/libexec', but write it as `$(exec_prefix)/libexec'.
885 (If you are using Autoconf, write it as `@libexecdir@'.)
886
887 Data files used by the program during its execution are divided into
888categories in two ways.
889
890 * Some files are normally modified by programs; others are never
891 normally modified (though users may edit some of these).
892
893 * Some files are architecture-independent and can be shared by all
894 machines at a site; some are architecture-dependent and can be
895 shared only by machines of the same kind and operating system;
896 others may never be shared between two machines.
897
898 This makes for six different possibilities. However, we want to
899discourage the use of architecture-dependent files, aside from object
900files and libraries. It is much cleaner to make other data files
901architecture-independent, and it is generally not hard.
902
903 Therefore, here are the variables Makefiles should use to specify
904directories:
905
906`datadir'
907 The directory for installing read-only architecture independent
908 data files. This should normally be `/usr/local/share', but write
909 it as `$(prefix)/share'. (If you are using Autoconf, write it as
910 `@datadir@'.) As a special exception, see `$(infodir)' and
911 `$(includedir)' below.
912
913`sysconfdir'
914 The directory for installing read-only data files that pertain to a
915 single machine-that is to say, files for configuring a host.
916 Mailer and network configuration files, `/etc/passwd', and so
917 forth belong here. All the files in this directory should be
918 ordinary ASCII text files. This directory should normally be
919 `/usr/local/etc', but write it as `$(prefix)/etc'. (If you are
920 using Autoconf, write it as `@sysconfdir@'.)
921
922 Do not install executables here in this directory (they probably
923 belong in `$(libexecdir)' or `$(sbindir)'). Also do not install
924 files that are modified in the normal course of their use (programs
925 whose purpose is to change the configuration of the system
926 excluded). Those probably belong in `$(localstatedir)'.
927
928`sharedstatedir'
929 The directory for installing architecture-independent data files
930 which the programs modify while they run. This should normally be
931 `/usr/local/com', but write it as `$(prefix)/com'. (If you are
932 using Autoconf, write it as `@sharedstatedir@'.)
933
934`localstatedir'
935 The directory for installing data files which the programs modify
936 while they run, and that pertain to one specific machine. Users
937 should never need to modify files in this directory to configure
938 the package's operation; put such configuration information in
939 separate files that go in `$(datadir)' or `$(sysconfdir)'.
940 `$(localstatedir)' should normally be `/usr/local/var', but write
941 it as `$(prefix)/var'. (If you are using Autoconf, write it as
942 `@localstatedir@'.)
943
944`libdir'
945 The directory for object files and libraries of object code. Do
946 not install executables here, they probably ought to go in
947 `$(libexecdir)' instead. The value of `libdir' should normally be
948 `/usr/local/lib', but write it as `$(exec_prefix)/lib'. (If you
949 are using Autoconf, write it as `@libdir@'.)
950
951`infodir'
952 The directory for installing the Info files for this package. By
953 default, it should be `/usr/local/info', but it should be written
954 as `$(prefix)/info'. (If you are using Autoconf, write it as
955 `@infodir@'.)
956
957`lispdir'
958 The directory for installing any Emacs Lisp files in this package.
959 By default, it should be `/usr/local/share/emacs/site-lisp', but
960 it should be written as `$(prefix)/share/emacs/site-lisp'.
961
962 If you are using Autoconf, write the default as `@lispdir@'. In
963 order to make `@lispdir@' work, you need the following lines in
964 your `configure.in' file:
965
966 lispdir='${datadir}/emacs/site-lisp'
967 AC_SUBST(lispdir)
968
969`includedir'
970 The directory for installing header files to be included by user
971 programs with the C `#include' preprocessor directive. This
972 should normally be `/usr/local/include', but write it as
973 `$(prefix)/include'. (If you are using Autoconf, write it as
974 `@includedir@'.)
975
976 Most compilers other than GCC do not look for header files in
977 directory `/usr/local/include'. So installing the header files
978 this way is only useful with GCC. Sometimes this is not a problem
979 because some libraries are only really intended to work with GCC.
980 But some libraries are intended to work with other compilers.
981 They should install their header files in two places, one
982 specified by `includedir' and one specified by `oldincludedir'.
983
984`oldincludedir'
985 The directory for installing `#include' header files for use with
986 compilers other than GCC. This should normally be `/usr/include'.
987 (If you are using Autoconf, you can write it as `@oldincludedir@'.)
988
989 The Makefile commands should check whether the value of
990 `oldincludedir' is empty. If it is, they should not try to use
991 it; they should cancel the second installation of the header files.
992
993 A package should not replace an existing header in this directory
994 unless the header came from the same package. Thus, if your Foo
995 package provides a header file `foo.h', then it should install the
996 header file in the `oldincludedir' directory if either (1) there
997 is no `foo.h' there or (2) the `foo.h' that exists came from the
998 Foo package.
999
1000 To tell whether `foo.h' came from the Foo package, put a magic
1001 string in the file--part of a comment--and `grep' for that string.
1002
1003 Unix-style man pages are installed in one of the following:
1004
1005`mandir'
1006 The top-level directory for installing the man pages (if any) for
1007 this package. It will normally be `/usr/local/man', but you should
1008 write it as `$(prefix)/man'. (If you are using Autoconf, write it
1009 as `@mandir@'.)
1010
1011`man1dir'
1012 The directory for installing section 1 man pages. Write it as
1013 `$(mandir)/man1'.
1014
1015`man2dir'
1016 The directory for installing section 2 man pages. Write it as
1017 `$(mandir)/man2'
1018
1019`...'
1020 *Don't make the primary documentation for any GNU software be a
1021 man page. Write a manual in Texinfo instead. Man pages are just
1022 for the sake of people running GNU software on Unix, which is a
1023 secondary application only.*
1024
1025`manext'
1026 The file name extension for the installed man page. This should
1027 contain a period followed by the appropriate digit; it should
1028 normally be `.1'.
1029
1030`man1ext'
1031 The file name extension for installed section 1 man pages.
1032
1033`man2ext'
1034 The file name extension for installed section 2 man pages.
1035
1036`...'
1037 Use these names instead of `manext' if the package needs to
1038 install man pages in more than one section of the manual.
1039
1040 And finally, you should set the following variable:
1041
1042`srcdir'
1043 The directory for the sources being compiled. The value of this
1044 variable is normally inserted by the `configure' shell script.
1045 (If you are using Autconf, use `srcdir = @srcdir@'.)
1046
1047 For example:
1048
1049 # Common prefix for installation directories.
1050 # NOTE: This directory must exist when you start the install.
1051 prefix = /usr/local
1052 exec_prefix = $(prefix)
1053 # Where to put the executable for the command `gcc'.
1054 bindir = $(exec_prefix)/bin
1055 # Where to put the directories used by the compiler.
1056 libexecdir = $(exec_prefix)/libexec
1057 # Where to put the Info files.
1058 infodir = $(prefix)/info
1059
1060 If your program installs a large number of files into one of the
1061standard user-specified directories, it might be useful to group them
1062into a subdirectory particular to that program. If you do this, you
1063should write the `install' rule to create these subdirectories.
1064
1065 Do not expect the user to include the subdirectory name in the value
1066of any of the variables listed above. The idea of having a uniform set
1067of variable names for installation directories is to enable the user to
1068specify the exact same values for several different GNU packages. In
1069order for this to be useful, all the packages must be designed so that
1070they will work sensibly when the user does so.
1071
1072
1073File: make.info, Node: Standard Targets, Next: Install Command Categories, Prev: Directory Variables, Up: Makefile Conventions
1074
1075Standard Targets for Users
1076==========================
1077
1078All GNU programs should have the following targets in their Makefiles:
1079
1080`all'
1081 Compile the entire program. This should be the default target.
1082 This target need not rebuild any documentation files; Info files
1083 should normally be included in the distribution, and DVI files
1084 should be made only when explicitly asked for.
1085
1086 By default, the Make rules should compile and link with `-g', so
1087 that executable programs have debugging symbols. Users who don't
1088 mind being helpless can strip the executables later if they wish.
1089
1090`install'
1091 Compile the program and copy the executables, libraries, and so on
1092 to the file names where they should reside for actual use. If
1093 there is a simple test to verify that a program is properly
1094 installed, this target should run that test.
1095
1096 Do not strip executables when installing them. Devil-may-care
1097 users can use the `install-strip' target to do that.
1098
1099 If possible, write the `install' target rule so that it does not
1100 modify anything in the directory where the program was built,
1101 provided `make all' has just been done. This is convenient for
1102 building the program under one user name and installing it under
1103 another.
1104
1105 The commands should create all the directories in which files are
1106 to be installed, if they don't already exist. This includes the
1107 directories specified as the values of the variables `prefix' and
1108 `exec_prefix', as well as all subdirectories that are needed. One
1109 way to do this is by means of an `installdirs' target as described
1110 below.
1111
1112 Use `-' before any command for installing a man page, so that
1113 `make' will ignore any errors. This is in case there are systems
1114 that don't have the Unix man page documentation system installed.
1115
1116 The way to install Info files is to copy them into `$(infodir)'
1117 with `$(INSTALL_DATA)' (*note Command Variables::), and then run
1118 the `install-info' program if it is present. `install-info' is a
1119 program that edits the Info `dir' file to add or update the menu
1120 entry for the given Info file; it is part of the Texinfo package.
1121 Here is a sample rule to install an Info file:
1122
1123 $(DESTDIR)$(infodir)/foo.info: foo.info
1124 $(POST_INSTALL)
1125 # There may be a newer info file in . than in srcdir.
1126 -if test -f foo.info; then d=.; \
1127 else d=$(srcdir); fi; \
1128 $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@; \
1129 # Run install-info only if it exists.
1130 # Use `if' instead of just prepending `-' to the
1131 # line so we notice real errors from install-info.
1132 # We use `$(SHELL) -c' because some shells do not
1133 # fail gracefully when there is an unknown command.
1134 if $(SHELL) -c 'install-info --version' \
1135 >/dev/null 2>&1; then \
1136 install-info --dir-file=$(DESTDIR)$(infodir)/dir \
1137 $(DESTDIR)$(infodir)/foo.info; \
1138 else true; fi
1139
1140 When writing the `install' target, you must classify all the
1141 commands into three categories: normal ones, "pre-installation"
1142 commands and "post-installation" commands. *Note Install Command
1143 Categories::.
1144
1145`uninstall'
1146 Delete all the installed files--the copies that the `install'
1147 target creates.
1148
1149 This rule should not modify the directories where compilation is
1150 done, only the directories where files are installed.
1151
1152 The uninstallation commands are divided into three categories,
1153 just like the installation commands. *Note Install Command
1154 Categories::.
1155
1156`install-strip'
1157 Like `install', but strip the executable files while installing
1158 them. In simple cases, this target can use the `install' target in
1159 a simple way:
1160
1161 install-strip:
1162 $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
1163 install
1164
1165 But if the package installs scripts as well as real executables,
1166 the `install-strip' target can't just refer to the `install'
1167 target; it has to strip the executables but not the scripts.
1168
1169 `install-strip' should not strip the executables in the build
1170 directory which are being copied for installation. It should only
1171 strip the copies that are installed.
1172
1173 Normally we do not recommend stripping an executable unless you
1174 are sure the program has no bugs. However, it can be reasonable
1175 to install a stripped executable for actual execution while saving
1176 the unstripped executable elsewhere in case there is a bug.
1177
1178`clean'
1179 Delete all files from the current directory that are normally
1180 created by building the program. Don't delete the files that
1181 record the configuration. Also preserve files that could be made
1182 by building, but normally aren't because the distribution comes
1183 with them.
1184
1185 Delete `.dvi' files here if they are not part of the distribution.
1186
1187`distclean'
1188 Delete all files from the current directory that are created by
1189 configuring or building the program. If you have unpacked the
1190 source and built the program without creating any other files,
1191 `make distclean' should leave only the files that were in the
1192 distribution.
1193
1194`mostlyclean'
1195 Like `clean', but may refrain from deleting a few files that people
1196 normally don't want to recompile. For example, the `mostlyclean'
1197 target for GCC does not delete `libgcc.a', because recompiling it
1198 is rarely necessary and takes a lot of time.
1199
1200`maintainer-clean'
1201 Delete almost everything from the current directory that can be
1202 reconstructed with this Makefile. This typically includes
1203 everything deleted by `distclean', plus more: C source files
1204 produced by Bison, tags tables, Info files, and so on.
1205
1206 The reason we say "almost everything" is that running the command
1207 `make maintainer-clean' should not delete `configure' even if
1208 `configure' can be remade using a rule in the Makefile. More
1209 generally, `make maintainer-clean' should not delete anything that
1210 needs to exist in order to run `configure' and then begin to build
1211 the program. This is the only exception; `maintainer-clean' should
1212 delete everything else that can be rebuilt.
1213
1214 The `maintainer-clean' target is intended to be used by a
1215 maintainer of the package, not by ordinary users. You may need
1216 special tools to reconstruct some of the files that `make
1217 maintainer-clean' deletes. Since these files are normally
1218 included in the distribution, we don't take care to make them easy
1219 to reconstruct. If you find you need to unpack the full
1220 distribution again, don't blame us.
1221
1222 To help make users aware of this, the commands for the special
1223 `maintainer-clean' target should start with these two:
1224
1225 @echo 'This command is intended for maintainers to use; it'
1226 @echo 'deletes files that may need special tools to rebuild.'
1227
1228`TAGS'
1229 Update a tags table for this program.
1230
1231`info'
1232 Generate any Info files needed. The best way to write the rules
1233 is as follows:
1234
1235 info: foo.info
1236
1237 foo.info: foo.texi chap1.texi chap2.texi
1238 $(MAKEINFO) $(srcdir)/foo.texi
1239
1240 You must define the variable `MAKEINFO' in the Makefile. It should
1241 run the `makeinfo' program, which is part of the Texinfo
1242 distribution.
1243
1244 Normally a GNU distribution comes with Info files, and that means
1245 the Info files are present in the source directory. Therefore,
1246 the Make rule for an info file should update it in the source
1247 directory. When users build the package, ordinarily Make will not
1248 update the Info files because they will already be up to date.
1249
1250`dvi'
1251 Generate DVI files for all Texinfo documentation. For example:
1252
1253 dvi: foo.dvi
1254
1255 foo.dvi: foo.texi chap1.texi chap2.texi
1256 $(TEXI2DVI) $(srcdir)/foo.texi
1257
1258 You must define the variable `TEXI2DVI' in the Makefile. It should
1259 run the program `texi2dvi', which is part of the Texinfo
1260 distribution.(1) Alternatively, write just the dependencies, and
1261 allow GNU `make' to provide the command.
1262
1263`dist'
1264 Create a distribution tar file for this program. The tar file
1265 should be set up so that the file names in the tar file start with
1266 a subdirectory name which is the name of the package it is a
1267 distribution for. This name can include the version number.
1268
1269 For example, the distribution tar file of GCC version 1.40 unpacks
1270 into a subdirectory named `gcc-1.40'.
1271
1272 The easiest way to do this is to create a subdirectory
1273 appropriately named, use `ln' or `cp' to install the proper files
1274 in it, and then `tar' that subdirectory.
1275
1276 Compress the tar file with `gzip'. For example, the actual
1277 distribution file for GCC version 1.40 is called `gcc-1.40.tar.gz'.
1278
1279 The `dist' target should explicitly depend on all non-source files
1280 that are in the distribution, to make sure they are up to date in
1281 the distribution. *Note Making Releases: (standards)Releases.
1282
1283`check'
1284 Perform self-tests (if any). The user must build the program
1285 before running the tests, but need not install the program; you
1286 should write the self-tests so that they work when the program is
1287 built but not installed.
1288
1289 The following targets are suggested as conventional names, for
1290programs in which they are useful.
1291
1292`installcheck'
1293 Perform installation tests (if any). The user must build and
1294 install the program before running the tests. You should not
1295 assume that `$(bindir)' is in the search path.
1296
1297`installdirs'
1298 It's useful to add a target named `installdirs' to create the
1299 directories where files are installed, and their parent
1300 directories. There is a script called `mkinstalldirs' which is
1301 convenient for this; you can find it in the Texinfo package. You
1302 can use a rule like this:
1303
1304 # Make sure all installation directories (e.g. $(bindir))
1305 # actually exist by making them if necessary.
1306 installdirs: mkinstalldirs
1307 $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
1308 $(libdir) $(infodir) \
1309 $(mandir)
1310
1311 or, if you wish to support `DESTDIR',
1312
1313 # Make sure all installation directories (e.g. $(bindir))
1314 # actually exist by making them if necessary.
1315 installdirs: mkinstalldirs
1316 $(srcdir)/mkinstalldirs \
1317 $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
1318 $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
1319 $(DESTDIR)$(mandir)
1320
1321 This rule should not modify the directories where compilation is
1322 done. It should do nothing but create installation directories.
1323
1324 ---------- Footnotes ----------
1325
1326 (1) `texi2dvi' uses TeX to do the real work of formatting. TeX is
1327not distributed with Texinfo.
1328
1329
1330File: make.info, Node: Install Command Categories, Prev: Standard Targets, Up: Makefile Conventions
1331
1332Install Command Categories
1333==========================
1334
1335When writing the `install' target, you must classify all the commands
1336into three categories: normal ones, "pre-installation" commands and
1337"post-installation" commands.
1338
1339 Normal commands move files into their proper places, and set their
1340modes. They may not alter any files except the ones that come entirely
1341from the package they belong to.
1342
1343 Pre-installation and post-installation commands may alter other
1344files; in particular, they can edit global configuration files or data
1345bases.
1346
1347 Pre-installation commands are typically executed before the normal
1348commands, and post-installation commands are typically run after the
1349normal commands.
1350
1351 The most common use for a post-installation command is to run
1352`install-info'. This cannot be done with a normal command, since it
1353alters a file (the Info directory) which does not come entirely and
1354solely from the package being installed. It is a post-installation
1355command because it needs to be done after the normal command which
1356installs the package's Info files.
1357
1358 Most programs don't need any pre-installation commands, but we have
1359the feature just in case it is needed.
1360
1361 To classify the commands in the `install' rule into these three
1362categories, insert "category lines" among them. A category line
1363specifies the category for the commands that follow.
1364
1365 A category line consists of a tab and a reference to a special Make
1366variable, plus an optional comment at the end. There are three
1367variables you can use, one for each category; the variable name
1368specifies the category. Category lines are no-ops in ordinary execution
1369because these three Make variables are normally undefined (and you
1370_should not_ define them in the makefile).
1371
1372 Here are the three possible category lines, each with a comment that
1373explains what it means:
1374
1375 $(PRE_INSTALL) # Pre-install commands follow.
1376 $(POST_INSTALL) # Post-install commands follow.
1377 $(NORMAL_INSTALL) # Normal commands follow.
1378
1379 If you don't use a category line at the beginning of the `install'
1380rule, all the commands are classified as normal until the first category
1381line. If you don't use any category lines, all the commands are
1382classified as normal.
1383
1384 These are the category lines for `uninstall':
1385
1386 $(PRE_UNINSTALL) # Pre-uninstall commands follow.
1387 $(POST_UNINSTALL) # Post-uninstall commands follow.
1388 $(NORMAL_UNINSTALL) # Normal commands follow.
1389
1390 Typically, a pre-uninstall command would be used for deleting entries
1391from the Info directory.
1392
1393 If the `install' or `uninstall' target has any dependencies which
1394act as subroutines of installation, then you should start _each_
1395dependency's commands with a category line, and start the main target's
1396commands with a category line also. This way, you can ensure that each
1397command is placed in the right category regardless of which of the
1398dependencies actually run.
1399
1400 Pre-installation and post-installation commands should not run any
1401programs except for these:
1402
1403 [ basename bash cat chgrp chmod chown cmp cp dd diff echo
1404 egrep expand expr false fgrep find getopt grep gunzip gzip
1405 hostname install install-info kill ldconfig ln ls md5sum
1406 mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
1407 test touch true uname xargs yes
1408
1409 The reason for distinguishing the commands in this way is for the
1410sake of making binary packages. Typically a binary package contains
1411all the executables and other files that need to be installed, and has
1412its own method of installing them--so it does not need to run the normal
1413installation commands. But installing the binary package does need to
1414execute the pre-installation and post-installation commands.
1415
1416 Programs to build binary packages work by extracting the
1417pre-installation and post-installation commands. Here is one way of
1418extracting the pre-installation commands:
1419
1420 make -n install -o all \
1421 PRE_INSTALL=pre-install \
1422 POST_INSTALL=post-install \
1423 NORMAL_INSTALL=normal-install \
1424 | gawk -f pre-install.awk
1425
1426where the file `pre-install.awk' could contain this:
1427
1428 $0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ {on = 0}
1429 on {print $0}
1430 $0 ~ /^\t[ \t]*pre_install[ \t]*$/ {on = 1}
1431
1432 The resulting file of pre-installation commands is executed as a
1433shell script as part of installing the binary package.
1434
1435
1436File: make.info, Node: Quick Reference, Next: Error Messages, Prev: Makefile Conventions, Up: Top
1437
1438Quick Reference
1439***************
1440
1441This appendix summarizes the directives, text manipulation functions,
1442and special variables which GNU `make' understands. *Note Special
1443Targets::, *Note Catalogue of Implicit Rules: Catalogue of Rules, and
1444*Note Summary of Options: Options Summary, for other summaries.
1445
1446 Here is a summary of the directives GNU `make' recognizes:
1447
1448`define VARIABLE'
1449`endef'
1450 Define a multi-line, recursively-expanded variable.
1451 *Note Sequences::.
1452
1453`ifdef VARIABLE'
1454`ifndef VARIABLE'
1455`ifeq (A,B)'
1456`ifeq "A" "B"'
1457`ifeq 'A' 'B''
1458`ifneq (A,B)'
1459`ifneq "A" "B"'
1460`ifneq 'A' 'B''
1461`else'
1462`endif'
1463 Conditionally evaluate part of the makefile.
1464 *Note Conditionals::.
1465
1466`include FILE'
1467`-include FILE'
1468`sinclude FILE'
1469 Include another makefile.
1470 *Note Including Other Makefiles: Include.
1471
1472`override VARIABLE = VALUE'
1473`override VARIABLE := VALUE'
1474`override VARIABLE += VALUE'
1475`override VARIABLE ?= VALUE'
1476`override define VARIABLE'
1477`endef'
1478 Define a variable, overriding any previous definition, even one
1479 from the command line.
1480 *Note The `override' Directive: Override Directive.
1481
1482`export'
1483 Tell `make' to export all variables to child processes by default.
1484 *Note Communicating Variables to a Sub-`make': Variables/Recursion.
1485
1486`export VARIABLE'
1487`export VARIABLE = VALUE'
1488`export VARIABLE := VALUE'
1489`export VARIABLE += VALUE'
1490`export VARIABLE ?= VALUE'
1491`unexport VARIABLE'
1492 Tell `make' whether or not to export a particular variable to child
1493 processes.
1494 *Note Communicating Variables to a Sub-`make': Variables/Recursion.
1495
1496`vpath PATTERN PATH'
1497 Specify a search path for files matching a `%' pattern.
1498 *Note The `vpath' Directive: Selective Search.
1499
1500`vpath PATTERN'
1501 Remove all search paths previously specified for PATTERN.
1502
1503`vpath'
1504 Remove all search paths previously specified in any `vpath'
1505 directive.
1506
1507 Here is a summary of the text manipulation functions (*note
1508Functions::):
1509
1510`$(subst FROM,TO,TEXT)'
1511 Replace FROM with TO in TEXT.
1512 *Note Functions for String Substitution and Analysis: Text
1513 Functions.
1514
1515`$(patsubst PATTERN,REPLACEMENT,TEXT)'
1516 Replace words matching PATTERN with REPLACEMENT in TEXT.
1517 *Note Functions for String Substitution and Analysis: Text
1518 Functions.
1519
1520`$(strip STRING)'
1521 Remove excess whitespace characters from STRING.
1522 *Note Functions for String Substitution and Analysis: Text
1523 Functions.
1524
1525`$(findstring FIND,TEXT)'
1526 Locate FIND in TEXT.
1527 *Note Functions for String Substitution and Analysis: Text
1528 Functions.
1529
1530`$(filter PATTERN...,TEXT)'
1531 Select words in TEXT that match one of the PATTERN words.
1532 *Note Functions for String Substitution and Analysis: Text
1533 Functions.
1534
1535`$(filter-out PATTERN...,TEXT)'
1536 Select words in TEXT that _do not_ match any of the PATTERN words.
1537 *Note Functions for String Substitution and Analysis: Text
1538 Functions.
1539
1540`$(sort LIST)'
1541 Sort the words in LIST lexicographically, removing duplicates.
1542 *Note Functions for String Substitution and Analysis: Text
1543 Functions.
1544
1545`$(dir NAMES...)'
1546 Extract the directory part of each file name.
1547 *Note Functions for File Names: File Name Functions.
1548
1549`$(notdir NAMES...)'
1550 Extract the non-directory part of each file name.
1551 *Note Functions for File Names: File Name Functions.
1552
1553`$(suffix NAMES...)'
1554 Extract the suffix (the last `.' and following characters) of each
1555 file name.
1556 *Note Functions for File Names: File Name Functions.
1557
1558`$(basename NAMES...)'
1559 Extract the base name (name without suffix) of each file name.
1560 *Note Functions for File Names: File Name Functions.
1561
1562`$(addsuffix SUFFIX,NAMES...)'
1563 Append SUFFIX to each word in NAMES.
1564 *Note Functions for File Names: File Name Functions.
1565
1566`$(addprefix PREFIX,NAMES...)'
1567 Prepend PREFIX to each word in NAMES.
1568 *Note Functions for File Names: File Name Functions.
1569
1570`$(join LIST1,LIST2)'
1571 Join two parallel lists of words.
1572 *Note Functions for File Names: File Name Functions.
1573
1574`$(word N,TEXT)'
1575 Extract the Nth word (one-origin) of TEXT.
1576 *Note Functions for File Names: File Name Functions.
1577
1578`$(words TEXT)'
1579 Count the number of words in TEXT.
1580 *Note Functions for File Names: File Name Functions.
1581
1582`$(wordlist S,E,TEXT)'
1583 Returns the list of words in TEXT from S to E.
1584 *Note Functions for File Names: File Name Functions.
1585
1586`$(firstword NAMES...)'
1587 Extract the first word of NAMES.
1588 *Note Functions for File Names: File Name Functions.
1589
1590`$(wildcard PATTERN...)'
1591 Find file names matching a shell file name pattern (_not_ a `%'
1592 pattern).
1593 *Note The Function `wildcard': Wildcard Function.
1594
1595`$(error TEXT...)'
1596 When this function is evaluated, `make' generates a fatal error
1597 with the message TEXT.
1598 *Note Functions That Control Make: Make Control Functions.
1599
1600`$(warning TEXT...)'
1601 When this function is evaluated, `make' generates a warning with
1602 the message TEXT.
1603 *Note Functions That Control Make: Make Control Functions.
1604
1605`$(shell COMMAND)'
1606 Execute a shell command and return its output.
1607 *Note The `shell' Function: Shell Function.
1608
1609`$(origin VARIABLE)'
1610 Return a string describing how the `make' variable VARIABLE was
1611 defined.
1612 *Note The `origin' Function: Origin Function.
1613
1614`$(foreach VAR,WORDS,TEXT)'
1615 Evaluate TEXT with VAR bound to each word in WORDS, and
1616 concatenate the results.
1617 *Note The `foreach' Function: Foreach Function.
1618
1619`$(call VAR,PARAM,...)'
1620 Evaluate the variable VAR replacing any references to `$(1)',
1621 `$(2)' with the first, second, etc. PARAM values.
1622 *Note The `call' Function: Call Function.
1623
1624`$(eval TEXT)'
1625 Evaluate TEXT then read the results as makefile commands. Expands
1626 to the empty string.
1627 *Note The `eval' Function: Eval Function.
1628
1629`$(value VAR)'
1630 Evaluates to the contents of the variable VAR, with no expansion
1631 performed on it.
1632 *Note The `value' Function: Value Function.
1633
1634 Here is a summary of the automatic variables. *Note Automatic
1635Variables::, for full information.
1636
1637`$@'
1638 The file name of the target.
1639
1640`$%'
1641 The target member name, when the target is an archive member.
1642
1643`$<'
1644 The name of the first prerequisite.
1645
1646`$?'
1647 The names of all the prerequisites that are newer than the target,
1648 with spaces between them. For prerequisites which are archive
1649 members, only the member named is used (*note Archives::).
1650
1651`$^'
1652`$+'
1653 The names of all the prerequisites, with spaces between them. For
1654 prerequisites which are archive members, only the member named is
1655 used (*note Archives::). The value of `$^' omits duplicate
1656 prerequisites, while `$+' retains them and preserves their order.
1657
1658`$*'
1659 The stem with which an implicit rule matches (*note How Patterns
1660 Match: Pattern Match.).
1661
1662`$(@D)'
1663`$(@F)'
1664 The directory part and the file-within-directory part of `$@'.
1665
1666`$(*D)'
1667`$(*F)'
1668 The directory part and the file-within-directory part of `$*'.
1669
1670`$(%D)'
1671`$(%F)'
1672 The directory part and the file-within-directory part of `$%'.
1673
1674`$(<D)'
1675`$(<F)'
1676 The directory part and the file-within-directory part of `$<'.
1677
1678`$(^D)'
1679`$(^F)'
1680 The directory part and the file-within-directory part of `$^'.
1681
1682`$(+D)'
1683`$(+F)'
1684 The directory part and the file-within-directory part of `$+'.
1685
1686`$(?D)'
1687`$(?F)'
1688 The directory part and the file-within-directory part of `$?'.
1689
1690 These variables are used specially by GNU `make':
1691
1692`MAKEFILES'
1693 Makefiles to be read on every invocation of `make'.
1694 *Note The Variable `MAKEFILES': MAKEFILES Variable.
1695
1696`VPATH'
1697 Directory search path for files not found in the current directory.
1698 *Note `VPATH' Search Path for All Prerequisites: General Search.
1699
1700`SHELL'
1701 The name of the system default command interpreter, usually
1702 `/bin/sh'. You can set `SHELL' in the makefile to change the
1703 shell used to run commands. *Note Command Execution: Execution.
1704
1705`MAKESHELL'
1706 On MS-DOS only, the name of the command interpreter that is to be
1707 used by `make'. This value takes precedence over the value of
1708 `SHELL'. *Note MAKESHELL variable: Execution.
1709
1710`MAKE'
1711 The name with which `make' was invoked. Using this variable in
1712 commands has special meaning. *Note How the `MAKE' Variable
1713 Works: MAKE Variable.
1714
1715`MAKELEVEL'
1716 The number of levels of recursion (sub-`make's).
1717 *Note Variables/Recursion::.
1718
1719`MAKEFLAGS'
1720 The flags given to `make'. You can set this in the environment or
1721 a makefile to set flags.
1722 *Note Communicating Options to a Sub-`make': Options/Recursion.
1723
1724 It is _never_ appropriate to use `MAKEFLAGS' directly on a command
1725 line: its contents may not be quoted correctly for use in the
1726 shell. Always allow recursive `make''s to obtain these values
1727 through the environment from its parent.
1728
1729`MAKECMDGOALS'
1730 The targets given to `make' on the command line. Setting this
1731 variable has no effect on the operation of `make'.
1732 *Note Arguments to Specify the Goals: Goals.
1733
1734`CURDIR'
1735 Set to the pathname of the current working directory (after all
1736 `-C' options are processed, if any). Setting this variable has no
1737 effect on the operation of `make'.
1738 *Note Recursive Use of `make': Recursion.
1739
1740`SUFFIXES'
1741 The default list of suffixes before `make' reads any makefiles.
1742
1743`.LIBPATTERNS'
1744 Defines the naming of the libraries `make' searches for, and their
1745 order.
1746 *Note Directory Search for Link Libraries: Libraries/Search.
1747
1748
1749File: make.info, Node: Error Messages, Next: Complex Makefile, Prev: Quick Reference, Up: Top
1750
1751Errors Generated by Make
1752************************
1753
1754Here is a list of the more common errors you might see generated by
1755`make', and some information about what they mean and how to fix them.
1756
1757 Sometimes `make' errors are not fatal, especially in the presence of
1758a `-' prefix on a command script line, or the `-k' command line option.
1759Errors that are fatal are prefixed with the string `***'.
1760
1761 Error messages are all either prefixed with the name of the program
1762(usually `make'), or, if the error is found in a makefile, the name of
1763the file and linenumber containing the problem.
1764
1765 In the table below, these common prefixes are left off.
1766
1767`[FOO] Error NN'
1768`[FOO] SIGNAL DESCRIPTION'
1769 These errors are not really `make' errors at all. They mean that a
1770 program that `make' invoked as part of a command script returned a
1771 non-0 error code (`Error NN'), which `make' interprets as failure,
1772 or it exited in some other abnormal fashion (with a signal of some
1773 type). *Note Errors in Commands: Errors.
1774
1775 If no `***' is attached to the message, then the subprocess failed
1776 but the rule in the makefile was prefixed with the `-' special
1777 character, so `make' ignored the error.
1778
1779`missing separator. Stop.'
1780`missing separator (did you mean TAB instead of 8 spaces?). Stop.'
1781 This means that `make' could not understand much of anything about
1782 the command line it just read. GNU `make' looks for various kinds
1783 of separators (`:', `=', TAB characters, etc.) to help it decide
1784 what kind of commandline it's seeing. This means it couldn't find
1785 a valid one.
1786
1787 One of the most common reasons for this message is that you (or
1788 perhaps your oh-so-helpful editor, as is the case with many
1789 MS-Windows editors) have attempted to indent your command scripts
1790 with spaces instead of a TAB character. In this case, `make' will
1791 use the second form of the error above. Remember that every line
1792 in the command script must begin with a TAB character. Eight
1793 spaces do not count. *Note Rule Syntax::.
1794
1795`commands commence before first target. Stop.'
1796`missing rule before commands. Stop.'
1797 This means the first thing in the makefile seems to be part of a
1798 command script: it begins with a TAB character and doesn't appear
1799 to be a legal `make' command (such as a variable assignment).
1800 Command scripts must always be associated with a target.
1801
1802 The second form is generated if the line has a semicolon as the
1803 first non-whitespace character; `make' interprets this to mean you
1804 left out the "target: prerequisite" section of a rule. *Note Rule
1805 Syntax::.
1806
1807`No rule to make target `XXX'.'
1808`No rule to make target `XXX', needed by `YYY'.'
1809 This means that `make' decided it needed to build a target, but
1810 then couldn't find any instructions in the makefile on how to do
1811 that, either explicit or implicit (including in the default rules
1812 database).
1813
1814 If you want that file to be built, you will need to add a rule to
1815 your makefile describing how that target can be built. Other
1816 possible sources of this problem are typos in the makefile (if
1817 that filename is wrong) or a corrupted source tree (if that file
1818 is not supposed to be built, but rather only a prerequisite).
1819
1820`No targets specified and no makefile found. Stop.'
1821`No targets. Stop.'
1822 The former means that you didn't provide any targets to be built
1823 on the command line, and `make' couldn't find any makefiles to
1824 read in. The latter means that some makefile was found, but it
1825 didn't contain any default target and none was given on the
1826 command line. GNU `make' has nothing to do in these situations.
1827 *Note Arguments to Specify the Makefile: Makefile Arguments.
1828
1829`Makefile `XXX' was not found.'
1830`Included makefile `XXX' was not found.'
1831 A makefile specified on the command line (first form) or included
1832 (second form) was not found.
1833
1834`warning: overriding commands for target `XXX''
1835`warning: ignoring old commands for target `XXX''
1836 GNU `make' allows commands to be specified only once per target
1837 (except for double-colon rules). If you give commands for a target
1838 which already has been defined to have commands, this warning is
1839 issued and the second set of commands will overwrite the first set.
1840 *Note Multiple Rules for One Target: Multiple Rules.
1841
1842`Circular XXX <- YYY dependency dropped.'
1843 This means that `make' detected a loop in the dependency graph:
1844 after tracing the prerequisite YYY of target XXX, and its
1845 prerequisites, etc., one of them depended on XXX again.
1846
1847`Recursive variable `XXX' references itself (eventually). Stop.'
1848 This means you've defined a normal (recursive) `make' variable XXX
1849 that, when it's expanded, will refer to itself (XXX). This is not
1850 allowed; either use simply-expanded variables (`:=') or use the
1851 append operator (`+='). *Note How to Use Variables: Using
1852 Variables.
1853
1854`Unterminated variable reference. Stop.'
1855 This means you forgot to provide the proper closing parenthesis or
1856 brace in your variable or function reference.
1857
1858`insufficient arguments to function `XXX'. Stop.'
1859 This means you haven't provided the requisite number of arguments
1860 for this function. See the documentation of the function for a
1861 description of its arguments. *Note Functions for Transforming
1862 Text: Functions.
1863
1864`missing target pattern. Stop.'
1865`multiple target patterns. Stop.'
1866`target pattern contains no `%'. Stop.'
1867`mixed implicit and static pattern rules. Stop.'
1868 These are generated for malformed static pattern rules. The first
1869 means there's no pattern in the target section of the rule; the
1870 second means there are multiple patterns in the target section;
1871 the third means the target doesn't contain a pattern character
1872 (`%'); and the fourth means that all three parts of the static
1873 pattern rule contain pattern characters (`%')-only the first two
1874 parts should. *Note Syntax of Static Pattern Rules: Static Usage.
1875
1876`warning: -jN forced in submake: disabling jobserver mode.'
1877 This warning and the next are generated if `make' detects error
1878 conditions related to parallel processing on systems where
1879 sub-`make's can communicate (*note Communicating Options to a
1880 Sub-`make': Options/Recursion.). This warning is generated if a
1881 recursive invocation of a `make' process is forced to have `-jN'
1882 in its argument list (where N is greater than one). This could
1883 happen, for example, if you set the `MAKE' environment variable to
1884 `make -j2'. In this case, the sub-`make' doesn't communicate with
1885 other `make' processes and will simply pretend it has two jobs of
1886 its own.
1887
1888`warning: jobserver unavailable: using -j1. Add `+' to parent make rule.'
1889 In order for `make' processes to communicate, the parent will pass
1890 information to the child. Since this could result in problems if
1891 the child process isn't actually a `make', the parent will only do
1892 this if it thinks the child is a `make'. The parent uses the
1893 normal algorithms to determine this (*note How the `MAKE' Variable
1894 Works: MAKE Variable.). If the makefile is constructed such that
1895 the parent doesn't know the child is a `make' process, then the
1896 child will receive only part of the information necessary. In
1897 this case, the child will generate this warning message and
1898 proceed with its build in a sequential manner.
1899
1900
1901
1902File: make.info, Node: Complex Makefile, Next: GNU Free Documentation License, Prev: Error Messages, Up: Top
1903
1904Complex Makefile Example
1905************************
1906
1907Here is the makefile for the GNU `tar' program. This is a moderately
1908complex makefile.
1909
1910 Because it is the first target, the default goal is `all'. An
1911interesting feature of this makefile is that `testpad.h' is a source
1912file automatically created by the `testpad' program, itself compiled
1913from `testpad.c'.
1914
1915 If you type `make' or `make all', then `make' creates the `tar'
1916executable, the `rmt' daemon that provides remote tape access, and the
1917`tar.info' Info file.
1918
1919 If you type `make install', then `make' not only creates `tar',
1920`rmt', and `tar.info', but also installs them.
1921
1922 If you type `make clean', then `make' removes the `.o' files, and
1923the `tar', `rmt', `testpad', `testpad.h', and `core' files.
1924
1925 If you type `make distclean', then `make' not only removes the same
1926files as does `make clean' but also the `TAGS', `Makefile', and
1927`config.status' files. (Although it is not evident, this makefile (and
1928`config.status') is generated by the user with the `configure' program,
1929which is provided in the `tar' distribution, but is not shown here.)
1930
1931 If you type `make realclean', then `make' removes the same files as
1932does `make distclean' and also removes the Info files generated from
1933`tar.texinfo'.
1934
1935 In addition, there are targets `shar' and `dist' that create
1936distribution kits.
1937
1938 # Generated automatically from Makefile.in by configure.
1939 # Un*x Makefile for GNU tar program.
1940 # Copyright (C) 1991 Free Software Foundation, Inc.
1941
1942 # This program is free software; you can redistribute
1943 # it and/or modify it under the terms of the GNU
1944 # General Public License ...
1945 ...
1946 ...
1947
1948 SHELL = /bin/sh
1949
1950 #### Start of system configuration section. ####
1951
1952 srcdir = .
1953
1954 # If you use gcc, you should either run the
1955 # fixincludes script that comes with it or else use
1956 # gcc with the -traditional option. Otherwise ioctl
1957 # calls will be compiled incorrectly on some systems.
1958 CC = gcc -O
1959 YACC = bison -y
1960 INSTALL = /usr/local/bin/install -c
1961 INSTALLDATA = /usr/local/bin/install -c -m 644
1962
1963 # Things you might add to DEFS:
1964 # -DSTDC_HEADERS If you have ANSI C headers and
1965 # libraries.
1966 # -DPOSIX If you have POSIX.1 headers and
1967 # libraries.
1968 # -DBSD42 If you have sys/dir.h (unless
1969 # you use -DPOSIX), sys/file.h,
1970 # and st_blocks in `struct stat'.
1971 # -DUSG If you have System V/ANSI C
1972 # string and memory functions
1973 # and headers, sys/sysmacros.h,
1974 # fcntl.h, getcwd, no valloc,
1975 # and ndir.h (unless
1976 # you use -DDIRENT).
1977 # -DNO_MEMORY_H If USG or STDC_HEADERS but do not
1978 # include memory.h.
1979 # -DDIRENT If USG and you have dirent.h
1980 # instead of ndir.h.
1981 # -DSIGTYPE=int If your signal handlers
1982 # return int, not void.
1983 # -DNO_MTIO If you lack sys/mtio.h
1984 # (magtape ioctls).
1985 # -DNO_REMOTE If you do not have a remote shell
1986 # or rexec.
1987 # -DUSE_REXEC To use rexec for remote tape
1988 # operations instead of
1989 # forking rsh or remsh.
1990 # -DVPRINTF_MISSING If you lack vprintf function
1991 # (but have _doprnt).
1992 # -DDOPRNT_MISSING If you lack _doprnt function.
1993 # Also need to define
1994 # -DVPRINTF_MISSING.
1995 # -DFTIME_MISSING If you lack ftime system call.
1996 # -DSTRSTR_MISSING If you lack strstr function.
1997 # -DVALLOC_MISSING If you lack valloc function.
1998 # -DMKDIR_MISSING If you lack mkdir and
1999 # rmdir system calls.
2000 # -DRENAME_MISSING If you lack rename system call.
2001 # -DFTRUNCATE_MISSING If you lack ftruncate
2002 # system call.
2003 # -DV7 On Version 7 Unix (not
2004 # tested in a long time).
2005 # -DEMUL_OPEN3 If you lack a 3-argument version
2006 # of open, and want to emulate it
2007 # with system calls you do have.
2008 # -DNO_OPEN3 If you lack the 3-argument open
2009 # and want to disable the tar -k
2010 # option instead of emulating open.
2011 # -DXENIX If you have sys/inode.h
2012 # and need it 94 to be included.
2013
2014 DEFS = -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
2015 -DVPRINTF_MISSING -DBSD42
2016 # Set this to rtapelib.o unless you defined NO_REMOTE,
2017 # in which case make it empty.
2018 RTAPELIB = rtapelib.o
2019 LIBS =
2020 DEF_AR_FILE = /dev/rmt8
2021 DEFBLOCKING = 20
2022
2023 CDEBUG = -g
2024 CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
2025 -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \
2026 -DDEFBLOCKING=$(DEFBLOCKING)
2027 LDFLAGS = -g
2028
2029 prefix = /usr/local
2030 # Prefix for each installed program,
2031 # normally empty or `g'.
2032 binprefix =
2033
2034 # The directory to install tar in.
2035 bindir = $(prefix)/bin
2036
2037 # The directory to install the info files in.
2038 infodir = $(prefix)/info
2039
2040 #### End of system configuration section. ####
2041
2042 SRC1 = tar.c create.c extract.c buffer.c \
2043 getoldopt.c update.c gnu.c mangle.c
2044 SRC2 = version.c list.c names.c diffarch.c \
2045 port.c wildmat.c getopt.c
2046 SRC3 = getopt1.c regex.c getdate.y
2047 SRCS = $(SRC1) $(SRC2) $(SRC3)
2048 OBJ1 = tar.o create.o extract.o buffer.o \
2049 getoldopt.o update.o gnu.o mangle.o
2050 OBJ2 = version.o list.o names.o diffarch.o \
2051 port.o wildmat.o getopt.o
2052 OBJ3 = getopt1.o regex.o getdate.o $(RTAPELIB)
2053 OBJS = $(OBJ1) $(OBJ2) $(OBJ3)
2054 AUX = README COPYING ChangeLog Makefile.in \
2055 makefile.pc configure configure.in \
2056 tar.texinfo tar.info* texinfo.tex \
2057 tar.h port.h open3.h getopt.h regex.h \
2058 rmt.h rmt.c rtapelib.c alloca.c \
2059 msd_dir.h msd_dir.c tcexparg.c \
2060 level-0 level-1 backup-specs testpad.c
2061
2062 all: tar rmt tar.info
2063
2064 tar: $(OBJS)
2065 $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
2066
2067 rmt: rmt.c
2068 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rmt.c
2069
2070 tar.info: tar.texinfo
2071 makeinfo tar.texinfo
2072
2073 install: all
2074 $(INSTALL) tar $(bindir)/$(binprefix)tar
2075 -test ! -f rmt || $(INSTALL) rmt /etc/rmt
2076 $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
2077
2078 $(OBJS): tar.h port.h testpad.h
2079 regex.o buffer.o tar.o: regex.h
2080 # getdate.y has 8 shift/reduce conflicts.
2081
2082 testpad.h: testpad
2083 ./testpad
2084
2085 testpad: testpad.o
2086 $(CC) -o $@ testpad.o
2087
2088 TAGS: $(SRCS)
2089 etags $(SRCS)
2090
2091 clean:
2092 rm -f *.o tar rmt testpad testpad.h core
2093
2094 distclean: clean
2095 rm -f TAGS Makefile config.status
2096
2097 realclean: distclean
2098 rm -f tar.info*
2099
2100 shar: $(SRCS) $(AUX)
2101 shar $(SRCS) $(AUX) | compress \
2102 > tar-`sed -e '/version_string/!d' \
2103 -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
2104 -e q
2105 version.c`.shar.Z
2106
2107 dist: $(SRCS) $(AUX)
2108 echo tar-`sed \
2109 -e '/version_string/!d' \
2110 -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
2111 -e q
2112 version.c` > .fname
2113 -rm -rf `cat .fname`
2114 mkdir `cat .fname`
2115 ln $(SRCS) $(AUX) `cat .fname`
2116 tar chZf `cat .fname`.tar.Z `cat .fname`
2117 -rm -rf `cat .fname` .fname
2118
2119 tar.zoo: $(SRCS) $(AUX)
2120 -rm -rf tmp.dir
2121 -mkdir tmp.dir
2122 -rm tar.zoo
2123 for X in $(SRCS) $(AUX) ; do \
2124 echo $$X ; \
2125 sed 's/$$/^M/' $$X \
2126 > tmp.dir/$$X ; done
2127 cd tmp.dir ; zoo aM ../tar.zoo *
2128 -rm -rf tmp.dir
2129
2130
2131File: make.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Complex Makefile, Up: Top
2132
2133GNU Free Documentation License
2134******************************
2135
2136 Version 1.1, March 2000
2137 Copyright (C) 2000 Free Software Foundation, Inc.
2138 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
2139
2140 Everyone is permitted to copy and distribute verbatim copies
2141 of this license document, but changing it is not allowed.
2142
2143 0. PREAMBLE
2144
2145 The purpose of this License is to make a manual, textbook, or other
2146 written document "free" in the sense of freedom: to assure everyone
2147 the effective freedom to copy and redistribute it, with or without
2148 modifying it, either commercially or noncommercially. Secondarily,
2149 this License preserves for the author and publisher a way to get
2150 credit for their work, while not being considered responsible for
2151 modifications made by others.
2152
2153 This License is a kind of "copyleft", which means that derivative
2154 works of the document must themselves be free in the same sense.
2155 It complements the GNU General Public License, which is a copyleft
2156 license designed for free software.
2157
2158 We have designed this License in order to use it for manuals for
2159 free software, because free software needs free documentation: a
2160 free program should come with manuals providing the same freedoms
2161 that the software does. But this License is not limited to
2162 software manuals; it can be used for any textual work, regardless
2163 of subject matter or whether it is published as a printed book.
2164 We recommend this License principally for works whose purpose is
2165 instruction or reference.
2166
2167 1. APPLICABILITY AND DEFINITIONS
2168
2169 This License applies to any manual or other work that contains a
2170 notice placed by the copyright holder saying it can be distributed
2171 under the terms of this License. The "Document", below, refers to
2172 any such manual or work. Any member of the public is a licensee,
2173 and is addressed as "you".
2174
2175 A "Modified Version" of the Document means any work containing the
2176 Document or a portion of it, either copied verbatim, or with
2177 modifications and/or translated into another language.
2178
2179 A "Secondary Section" is a named appendix or a front-matter
2180 section of the Document that deals exclusively with the
2181 relationship of the publishers or authors of the Document to the
2182 Document's overall subject (or to related matters) and contains
2183 nothing that could fall directly within that overall subject.
2184 (For example, if the Document is in part a textbook of
2185 mathematics, a Secondary Section may not explain any mathematics.)
2186 The relationship could be a matter of historical connection with
2187 the subject or with related matters, or of legal, commercial,
2188 philosophical, ethical or political position regarding them.
2189
2190 The "Invariant Sections" are certain Secondary Sections whose
2191 titles are designated, as being those of Invariant Sections, in
2192 the notice that says that the Document is released under this
2193 License.
2194
2195 The "Cover Texts" are certain short passages of text that are
2196 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
2197 that says that the Document is released under this License.
2198
2199 A "Transparent" copy of the Document means a machine-readable copy,
2200 represented in a format whose specification is available to the
2201 general public, whose contents can be viewed and edited directly
2202 and straightforwardly with generic text editors or (for images
2203 composed of pixels) generic paint programs or (for drawings) some
2204 widely available drawing editor, and that is suitable for input to
2205 text formatters or for automatic translation to a variety of
2206 formats suitable for input to text formatters. A copy made in an
2207 otherwise Transparent file format whose markup has been designed
2208 to thwart or discourage subsequent modification by readers is not
2209 Transparent. A copy that is not "Transparent" is called "Opaque".
2210
2211 Examples of suitable formats for Transparent copies include plain
2212 ASCII without markup, Texinfo input format, LaTeX input format,
2213 SGML or XML using a publicly available DTD, and
2214 standard-conforming simple HTML designed for human modification.
2215 Opaque formats include PostScript, PDF, proprietary formats that
2216 can be read and edited only by proprietary word processors, SGML
2217 or XML for which the DTD and/or processing tools are not generally
2218 available, and the machine-generated HTML produced by some word
2219 processors for output purposes only.
2220
2221 The "Title Page" means, for a printed book, the title page itself,
2222 plus such following pages as are needed to hold, legibly, the
2223 material this License requires to appear in the title page. For
2224 works in formats which do not have any title page as such, "Title
2225 Page" means the text near the most prominent appearance of the
2226 work's title, preceding the beginning of the body of the text.
2227
2228 2. VERBATIM COPYING
2229
2230 You may copy and distribute the Document in any medium, either
2231 commercially or noncommercially, provided that this License, the
2232 copyright notices, and the license notice saying this License
2233 applies to the Document are reproduced in all copies, and that you
2234 add no other conditions whatsoever to those of this License. You
2235 may not use technical measures to obstruct or control the reading
2236 or further copying of the copies you make or distribute. However,
2237 you may accept compensation in exchange for copies. If you
2238 distribute a large enough number of copies you must also follow
2239 the conditions in section 3.
2240
2241 You may also lend copies, under the same conditions stated above,
2242 and you may publicly display copies.
2243
2244 3. COPYING IN QUANTITY
2245
2246 If you publish printed copies of the Document numbering more than
2247 100, and the Document's license notice requires Cover Texts, you
2248 must enclose the copies in covers that carry, clearly and legibly,
2249 all these Cover Texts: Front-Cover Texts on the front cover, and
2250 Back-Cover Texts on the back cover. Both covers must also clearly
2251 and legibly identify you as the publisher of these copies. The
2252 front cover must present the full title with all words of the
2253 title equally prominent and visible. You may add other material
2254 on the covers in addition. Copying with changes limited to the
2255 covers, as long as they preserve the title of the Document and
2256 satisfy these conditions, can be treated as verbatim copying in
2257 other respects.
2258
2259 If the required texts for either cover are too voluminous to fit
2260 legibly, you should put the first ones listed (as many as fit
2261 reasonably) on the actual cover, and continue the rest onto
2262 adjacent pages.
2263
2264 If you publish or distribute Opaque copies of the Document
2265 numbering more than 100, you must either include a
2266 machine-readable Transparent copy along with each Opaque copy, or
2267 state in or with each Opaque copy a publicly-accessible
2268 computer-network location containing a complete Transparent copy
2269 of the Document, free of added material, which the general
2270 network-using public has access to download anonymously at no
2271 charge using public-standard network protocols. If you use the
2272 latter option, you must take reasonably prudent steps, when you
2273 begin distribution of Opaque copies in quantity, to ensure that
2274 this Transparent copy will remain thus accessible at the stated
2275 location until at least one year after the last time you
2276 distribute an Opaque copy (directly or through your agents or
2277 retailers) of that edition to the public.
2278
2279 It is requested, but not required, that you contact the authors of
2280 the Document well before redistributing any large number of
2281 copies, to give them a chance to provide you with an updated
2282 version of the Document.
2283
2284 4. MODIFICATIONS
2285
2286 You may copy and distribute a Modified Version of the Document
2287 under the conditions of sections 2 and 3 above, provided that you
2288 release the Modified Version under precisely this License, with
2289 the Modified Version filling the role of the Document, thus
2290 licensing distribution and modification of the Modified Version to
2291 whoever possesses a copy of it. In addition, you must do these
2292 things in the Modified Version:
2293
2294 A. Use in the Title Page (and on the covers, if any) a title
2295 distinct from that of the Document, and from those of
2296 previous versions (which should, if there were any, be listed
2297 in the History section of the Document). You may use the
2298 same title as a previous version if the original publisher of
2299 that version gives permission.
2300
2301 B. List on the Title Page, as authors, one or more persons or
2302 entities responsible for authorship of the modifications in
2303 the Modified Version, together with at least five of the
2304 principal authors of the Document (all of its principal
2305 authors, if it has less than five).
2306
2307 C. State on the Title page the name of the publisher of the
2308 Modified Version, as the publisher.
2309
2310 D. Preserve all the copyright notices of the Document.
2311
2312 E. Add an appropriate copyright notice for your modifications
2313 adjacent to the other copyright notices.
2314
2315 F. Include, immediately after the copyright notices, a license
2316 notice giving the public permission to use the Modified
2317 Version under the terms of this License, in the form shown in
2318 the Addendum below.
2319
2320 G. Preserve in that license notice the full lists of Invariant
2321 Sections and required Cover Texts given in the Document's
2322 license notice.
2323
2324 H. Include an unaltered copy of this License.
2325
2326 I. Preserve the section entitled "History", and its title, and
2327 add to it an item stating at least the title, year, new
2328 authors, and publisher of the Modified Version as given on
2329 the Title Page. If there is no section entitled "History" in
2330 the Document, create one stating the title, year, authors,
2331 and publisher of the Document as given on its Title Page,
2332 then add an item describing the Modified Version as stated in
2333 the previous sentence.
2334
2335 J. Preserve the network location, if any, given in the Document
2336 for public access to a Transparent copy of the Document, and
2337 likewise the network locations given in the Document for
2338 previous versions it was based on. These may be placed in
2339 the "History" section. You may omit a network location for a
2340 work that was published at least four years before the
2341 Document itself, or if the original publisher of the version
2342 it refers to gives permission.
2343
2344 K. In any section entitled "Acknowledgments" or "Dedications",
2345 preserve the section's title, and preserve in the section all
2346 the substance and tone of each of the contributor
2347 acknowledgments and/or dedications given therein.
2348
2349 L. Preserve all the Invariant Sections of the Document,
2350 unaltered in their text and in their titles. Section numbers
2351 or the equivalent are not considered part of the section
2352 titles.
2353
2354 M. Delete any section entitled "Endorsements". Such a section
2355 may not be included in the Modified Version.
2356
2357 N. Do not retitle any existing section as "Endorsements" or to
2358 conflict in title with any Invariant Section.
2359
2360 If the Modified Version includes new front-matter sections or
2361 appendices that qualify as Secondary Sections and contain no
2362 material copied from the Document, you may at your option
2363 designate some or all of these sections as invariant. To do this,
2364 add their titles to the list of Invariant Sections in the Modified
2365 Version's license notice. These titles must be distinct from any
2366 other section titles.
2367
2368 You may add a section entitled "Endorsements", provided it contains
2369 nothing but endorsements of your Modified Version by various
2370 parties--for example, statements of peer review or that the text
2371 has been approved by an organization as the authoritative
2372 definition of a standard.
2373
2374 You may add a passage of up to five words as a Front-Cover Text,
2375 and a passage of up to 25 words as a Back-Cover Text, to the end
2376 of the list of Cover Texts in the Modified Version. Only one
2377 passage of Front-Cover Text and one of Back-Cover Text may be
2378 added by (or through arrangements made by) any one entity. If the
2379 Document already includes a cover text for the same cover,
2380 previously added by you or by arrangement made by the same entity
2381 you are acting on behalf of, you may not add another; but you may
2382 replace the old one, on explicit permission from the previous
2383 publisher that added the old one.
2384
2385 The author(s) and publisher(s) of the Document do not by this
2386 License give permission to use their names for publicity for or to
2387 assert or imply endorsement of any Modified Version.
2388
2389 5. COMBINING DOCUMENTS
2390
2391 You may combine the Document with other documents released under
2392 this License, under the terms defined in section 4 above for
2393 modified versions, provided that you include in the combination
2394 all of the Invariant Sections of all of the original documents,
2395 unmodified, and list them all as Invariant Sections of your
2396 combined work in its license notice.
2397
2398 The combined work need only contain one copy of this License, and
2399 multiple identical Invariant Sections may be replaced with a single
2400 copy. If there are multiple Invariant Sections with the same name
2401 but different contents, make the title of each such section unique
2402 by adding at the end of it, in parentheses, the name of the
2403 original author or publisher of that section if known, or else a
2404 unique number. Make the same adjustment to the section titles in
2405 the list of Invariant Sections in the license notice of the
2406 combined work.
2407
2408 In the combination, you must combine any sections entitled
2409 "History" in the various original documents, forming one section
2410 entitled "History"; likewise combine any sections entitled
2411 "Acknowledgments", and any sections entitled "Dedications". You
2412 must delete all sections entitled "Endorsements."
2413
2414 6. COLLECTIONS OF DOCUMENTS
2415
2416 You may make a collection consisting of the Document and other
2417 documents released under this License, and replace the individual
2418 copies of this License in the various documents with a single copy
2419 that is included in the collection, provided that you follow the
2420 rules of this License for verbatim copying of each of the
2421 documents in all other respects.
2422
2423 You may extract a single document from such a collection, and
2424 distribute it individually under this License, provided you insert
2425 a copy of this License into the extracted document, and follow
2426 this License in all other respects regarding verbatim copying of
2427 that document.
2428
2429 7. AGGREGATION WITH INDEPENDENT WORKS
2430
2431 A compilation of the Document or its derivatives with other
2432 separate and independent documents or works, in or on a volume of
2433 a storage or distribution medium, does not as a whole count as a
2434 Modified Version of the Document, provided no compilation
2435 copyright is claimed for the compilation. Such a compilation is
2436 called an "aggregate", and this License does not apply to the
2437 other self-contained works thus compiled with the Document, on
2438 account of their being thus compiled, if they are not themselves
2439 derivative works of the Document.
2440
2441 If the Cover Text requirement of section 3 is applicable to these
2442 copies of the Document, then if the Document is less than one
2443 quarter of the entire aggregate, the Document's Cover Texts may be
2444 placed on covers that surround only the Document within the
2445 aggregate. Otherwise they must appear on covers around the whole
2446 aggregate.
2447
2448 8. TRANSLATION
2449
2450 Translation is considered a kind of modification, so you may
2451 distribute translations of the Document under the terms of section
2452 4. Replacing Invariant Sections with translations requires special
2453 permission from their copyright holders, but you may include
2454 translations of some or all Invariant Sections in addition to the
2455 original versions of these Invariant Sections. You may include a
2456 translation of this License provided that you also include the
2457 original English version of this License. In case of a
2458 disagreement between the translation and the original English
2459 version of this License, the original English version will prevail.
2460
2461 9. TERMINATION
2462
2463 You may not copy, modify, sublicense, or distribute the Document
2464 except as expressly provided for under this License. Any other
2465 attempt to copy, modify, sublicense or distribute the Document is
2466 void, and will automatically terminate your rights under this
2467 License. However, parties who have received copies, or rights,
2468 from you under this License will not have their licenses
2469 terminated so long as such parties remain in full compliance.
2470
2471 10. FUTURE REVISIONS OF THIS LICENSE
2472
2473 The Free Software Foundation may publish new, revised versions of
2474 the GNU Free Documentation License from time to time. Such new
2475 versions will be similar in spirit to the present version, but may
2476 differ in detail to address new problems or concerns. See
2477 `http://www.gnu.org/copyleft/'.
2478
2479 Each version of the License is given a distinguishing version
2480 number. If the Document specifies that a particular numbered
2481 version of this License "or any later version" applies to it, you
2482 have the option of following the terms and conditions either of
2483 that specified version or of any later version that has been
2484 published (not as a draft) by the Free Software Foundation. If
2485 the Document does not specify a version number of this License,
2486 you may choose any version ever published (not as a draft) by the
2487 Free Software Foundation.
2488
2489ADDENDUM: How to use this License for your documents
2490====================================================
2491
2492To use this License in a document you have written, include a copy of
2493the License in the document and put the following copyright and license
2494notices just after the title page:
2495
2496 Copyright (C) YEAR YOUR NAME.
2497 Permission is granted to copy, distribute and/or modify this document
2498 under the terms of the GNU Free Documentation License, Version 1.1
2499 or any later version published by the Free Software Foundation;
2500 with the Invariant Sections being LIST THEIR TITLES, with the
2501 Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
2502 A copy of the license is included in the section entitled ``GNU
2503 Free Documentation License''.
2504
2505 If you have no Invariant Sections, write "with no Invariant Sections"
2506instead of saying which ones are invariant. If you have no Front-Cover
2507Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
2508LIST"; likewise for Back-Cover Texts.
2509
2510 If your document contains nontrivial examples of program code, we
2511recommend releasing these examples in parallel under your choice of
2512free software license, such as the GNU General Public License, to
2513permit their use in free software.
2514
2515
2516File: make.info, Node: Concept Index, Next: Name Index, Prev: GNU Free Documentation License, Up: Top
2517
2518Index of Concepts
2519*****************
2520
2521* Menu:
2522
2523* # (comments), in commands: Commands.
2524* # (comments), in makefile: Makefile Contents.
2525* #include: Automatic Prerequisites.
2526* $$@, support for: Automatic Variables.
2527* $, in function call: Syntax of Functions.
2528* $, in rules: Rule Syntax.
2529* $, in variable name: Computed Names.
2530* $, in variable reference: Reference.
2531* %, in pattern rules: Pattern Intro.
2532* %, quoting in patsubst: Text Functions.
2533* %, quoting in static pattern: Static Usage.
2534* %, quoting in vpath: Selective Search.
2535* %, quoting with \ (backslash) <1>: Text Functions.
2536* %, quoting with \ (backslash) <2>: Static Usage.
2537* %, quoting with \ (backslash): Selective Search.
2538* * (wildcard character): Wildcards.
2539* +, and command execution: Instead of Execution.
2540* +, and commands: MAKE Variable.
2541* +, and define: Sequences.
2542* +=: Appending.
2543* +=, expansion: Reading Makefiles.
2544* ,v (RCS file extension): Catalogue of Rules.
2545* - (in commands): Errors.
2546* -, and define: Sequences.
2547* --always-make: Options Summary.
2548* --assume-new <1>: Options Summary.
2549* --assume-new: Instead of Execution.
2550* --assume-new, and recursion: Options/Recursion.
2551* --assume-old <1>: Options Summary.
2552* --assume-old: Avoiding Compilation.
2553* --assume-old, and recursion: Options/Recursion.
2554* --debug: Options Summary.
2555* --directory <1>: Options Summary.
2556* --directory: Recursion.
2557* --directory, and --print-directory: -w Option.
2558* --directory, and recursion: Options/Recursion.
2559* --dry-run <1>: Options Summary.
2560* --dry-run <2>: Instead of Execution.
2561* --dry-run: Echoing.
2562* --environment-overrides: Options Summary.
2563* --file <1>: Options Summary.
2564* --file <2>: Makefile Arguments.
2565* --file: Makefile Names.
2566* --file, and recursion: Options/Recursion.
2567* --help: Options Summary.
2568* --ignore-errors <1>: Options Summary.
2569* --ignore-errors: Errors.
2570* --include-dir <1>: Options Summary.
2571* --include-dir: Include.
2572* --jobs <1>: Options Summary.
2573* --jobs: Parallel.
2574* --jobs, and recursion: Options/Recursion.
2575* --just-print <1>: Options Summary.
2576* --just-print <2>: Instead of Execution.
2577* --just-print: Echoing.
2578* --keep-going <1>: Options Summary.
2579* --keep-going <2>: Testing.
2580* --keep-going: Errors.
2581* --load-average <1>: Options Summary.
2582* --load-average: Parallel.
2583* --makefile <1>: Options Summary.
2584* --makefile <2>: Makefile Arguments.
2585* --makefile: Makefile Names.
2586* --max-load <1>: Options Summary.
2587* --max-load: Parallel.
2588* --new-file <1>: Options Summary.
2589* --new-file: Instead of Execution.
2590* --new-file, and recursion: Options/Recursion.
2591* --no-builtin-rules: Options Summary.
2592* --no-builtin-variables: Options Summary.
2593* --no-keep-going: Options Summary.
2594* --no-print-directory <1>: Options Summary.
2595* --no-print-directory: -w Option.
2596* --old-file <1>: Options Summary.
2597* --old-file: Avoiding Compilation.
2598* --old-file, and recursion: Options/Recursion.
2599* --print-data-base: Options Summary.
2600* --print-directory: Options Summary.
2601* --print-directory, and --directory: -w Option.
2602* --print-directory, and recursion: -w Option.
2603* --print-directory, disabling: -w Option.
2604* --question <1>: Options Summary.
2605* --question: Instead of Execution.
2606* --quiet <1>: Options Summary.
2607* --quiet: Echoing.
2608* --recon <1>: Options Summary.
2609* --recon <2>: Instead of Execution.
2610* --recon: Echoing.
2611* --silent <1>: Options Summary.
2612* --silent: Echoing.
2613* --stop: Options Summary.
2614* --touch <1>: Options Summary.
2615* --touch: Instead of Execution.
2616* --touch, and recursion: MAKE Variable.
2617* --version: Options Summary.
2618* --warn-undefined-variables: Options Summary.
2619* --what-if <1>: Options Summary.
2620* --what-if: Instead of Execution.
2621* -B: Options Summary.
2622* -b: Options Summary.
2623* -C <1>: Options Summary.
2624* -C: Recursion.
2625* -C, and -w: -w Option.
2626* -C, and recursion: Options/Recursion.
2627* -d: Options Summary.
2628* -e: Options Summary.
2629* -e (shell flag): Automatic Prerequisites.
2630* -f <1>: Options Summary.
2631* -f <2>: Makefile Arguments.
2632* -f: Makefile Names.
2633* -f, and recursion: Options/Recursion.
2634* -h: Options Summary.
2635* -I: Options Summary.
2636* -i <1>: Options Summary.
2637* -i: Errors.
2638* -I: Include.
2639* -j <1>: Options Summary.
2640* -j: Parallel.
2641* -j, and archive update: Archive Pitfalls.
2642* -j, and recursion: Options/Recursion.
2643* -k <1>: Options Summary.
2644* -k <2>: Testing.
2645* -k: Errors.
2646* -l: Options Summary.
2647* -l (library search): Libraries/Search.
2648* -l (load average): Parallel.
2649* -m: Options Summary.
2650* -M (to compiler): Automatic Prerequisites.
2651* -MM (to GNU compiler): Automatic Prerequisites.
2652* -n <1>: Options Summary.
2653* -n <2>: Instead of Execution.
2654* -n: Echoing.
2655* -o <1>: Options Summary.
2656* -o: Avoiding Compilation.
2657* -o, and recursion: Options/Recursion.
2658* -p: Options Summary.
2659* -q <1>: Options Summary.
2660* -q: Instead of Execution.
2661* -R: Options Summary.
2662* -r: Options Summary.
2663* -S: Options Summary.
2664* -s <1>: Options Summary.
2665* -s: Echoing.
2666* -t <1>: Options Summary.
2667* -t: Instead of Execution.
2668* -t, and recursion: MAKE Variable.
2669* -v: Options Summary.
2670* -W: Options Summary.
2671* -w: Options Summary.
2672* -W: Instead of Execution.
2673* -w, and -C: -w Option.
2674* -w, and recursion: -w Option.
2675* -W, and recursion: Options/Recursion.
2676* -w, disabling: -w Option.
2677* .a (archives): Archive Suffix Rules.
2678* .C: Catalogue of Rules.
2679* .c: Catalogue of Rules.
2680* .cc: Catalogue of Rules.
2681* .ch: Catalogue of Rules.
2682* .d: Automatic Prerequisites.
2683* .def: Catalogue of Rules.
2684* .dvi: Catalogue of Rules.
2685* .F: Catalogue of Rules.
2686* .f: Catalogue of Rules.
2687* .info: Catalogue of Rules.
2688* .l: Catalogue of Rules.
2689* .LIBPATTERNS, and link libraries: Libraries/Search.
2690* .ln: Catalogue of Rules.
2691* .mod: Catalogue of Rules.
2692* .o: Catalogue of Rules.
2693* .p: Catalogue of Rules.
2694* .PRECIOUS intermediate files: Chained Rules.
2695* .r: Catalogue of Rules.
2696* .S: Catalogue of Rules.
2697* .s: Catalogue of Rules.
2698* .sh: Catalogue of Rules.
2699* .sym: Catalogue of Rules.
2700* .tex: Catalogue of Rules.
2701* .texi: Catalogue of Rules.
2702* .texinfo: Catalogue of Rules.
2703* .txinfo: Catalogue of Rules.
2704* .w: Catalogue of Rules.
2705* .web: Catalogue of Rules.
2706* .y: Catalogue of Rules.
2707* :: rules (double-colon): Double-Colon.
2708* := <1>: Setting.
2709* :=: Flavors.
2710* = <1>: Setting.
2711* =: Flavors.
2712* =, expansion: Reading Makefiles.
2713* ? (wildcard character): Wildcards.
2714* ?= <1>: Setting.
2715* ?=: Flavors.
2716* ?=, expansion: Reading Makefiles.
2717* @ (in commands): Echoing.
2718* @, and define: Sequences.
2719* [...] (wildcard characters): Wildcards.
2720* \ (backslash), for continuation lines: Simple Makefile.
2721* \ (backslash), in commands: Execution.
2722* \ (backslash), to quote % <1>: Text Functions.
2723* \ (backslash), to quote % <2>: Static Usage.
2724* \ (backslash), to quote %: Selective Search.
2725* __.SYMDEF: Archive Symbols.
2726* algorithm for directory search: Search Algorithm.
2727* all (standard target): Goals.
2728* appending to variables: Appending.
2729* ar: Implicit Variables.
2730* archive: Archives.
2731* archive member targets: Archive Members.
2732* archive symbol directory updating: Archive Symbols.
2733* archive, and -j: Archive Pitfalls.
2734* archive, and parallel execution: Archive Pitfalls.
2735* archive, suffix rule for: Archive Suffix Rules.
2736* Arg list too long: Options/Recursion.
2737* arguments of functions: Syntax of Functions.
2738* as <1>: Implicit Variables.
2739* as: Catalogue of Rules.
2740* assembly, rule to compile: Catalogue of Rules.
2741* automatic generation of prerequisites <1>: Automatic Prerequisites.
2742* automatic generation of prerequisites: Include.
2743* automatic variables: Automatic Variables.
2744* automatic variables in prerequisites: Automatic Variables.
2745* backquotes: Shell Function.
2746* backslash (\), for continuation lines: Simple Makefile.
2747* backslash (\), in commands: Execution.
2748* backslash (\), to quote % <1>: Text Functions.
2749* backslash (\), to quote % <2>: Static Usage.
2750* backslash (\), to quote %: Selective Search.
2751* backslashes in pathnames and wildcard expansion: Wildcard Pitfall.
2752* basename: File Name Functions.
2753* binary packages: Install Command Categories.
2754* broken pipe: Parallel.
2755* bugs, reporting: Bugs.
2756* built-in special targets: Special Targets.
2757* C++, rule to compile: Catalogue of Rules.
2758* C, rule to compile: Catalogue of Rules.
2759* cc <1>: Implicit Variables.
2760* cc: Catalogue of Rules.
2761* cd (shell command) <1>: MAKE Variable.
2762* cd (shell command): Execution.
2763* chains of rules: Chained Rules.
2764* check (standard target): Goals.
2765* clean (standard target): Goals.
2766* clean target <1>: Cleanup.
2767* clean target: Simple Makefile.
2768* cleaning up: Cleanup.
2769* clobber (standard target): Goals.
2770* co <1>: Implicit Variables.
2771* co: Catalogue of Rules.
2772* combining rules by prerequisite: Combine By Prerequisite.
2773* command line variable definitions, and recursion: Options/Recursion.
2774* command line variables: Overriding.
2775* commands: Rule Syntax.
2776* commands, backslash (\) in: Execution.
2777* commands, comments in: Commands.
2778* commands, echoing: Echoing.
2779* commands, empty: Empty Commands.
2780* commands, errors in: Errors.
2781* commands, execution: Execution.
2782* commands, execution in parallel: Parallel.
2783* commands, expansion: Shell Function.
2784* commands, how to write: Commands.
2785* commands, instead of executing: Instead of Execution.
2786* commands, introduction to: Rule Introduction.
2787* commands, quoting newlines in: Execution.
2788* commands, sequences of: Sequences.
2789* comments, in commands: Commands.
2790* comments, in makefile: Makefile Contents.
2791* compatibility: Features.
2792* compatibility in exporting: Variables/Recursion.
2793* compilation, testing: Testing.
2794* computed variable name: Computed Names.
2795* conditional expansion: If Function.
2796* conditional variable assignment: Flavors.
2797* conditionals: Conditionals.
2798* continuation lines: Simple Makefile.
2799* controlling make: Make Control Functions.
2800* conventions for makefiles: Makefile Conventions.
2801* ctangle <1>: Implicit Variables.
2802* ctangle: Catalogue of Rules.
2803* cweave <1>: Implicit Variables.
2804* cweave: Catalogue of Rules.
2805* data base of make rules: Options Summary.
2806* deducing commands (implicit rules): make Deduces.
2807* default directories for included makefiles: Include.
2808* default goal <1>: Rules.
2809* default goal: How Make Works.
2810* default makefile name: Makefile Names.
2811* default rules, last-resort: Last Resort.
2812* define, expansion: Reading Makefiles.
2813* defining variables verbatim: Defining.
2814* deletion of target files <1>: Interrupts.
2815* deletion of target files: Errors.
2816* directive: Makefile Contents.
2817* directories, printing them: -w Option.
2818* directories, updating archive symbol: Archive Symbols.
2819* directory part: File Name Functions.
2820* directory search (VPATH): Directory Search.
2821* directory search (VPATH), and implicit rules: Implicit/Search.
2822* directory search (VPATH), and link libraries: Libraries/Search.
2823* directory search (VPATH), and shell commands: Commands/Search.
2824* directory search algorithm: Search Algorithm.
2825* directory search, traditional (GPATH): Search Algorithm.
2826* dist (standard target): Goals.
2827* distclean (standard target): Goals.
2828* dollar sign ($), in function call: Syntax of Functions.
2829* dollar sign ($), in rules: Rule Syntax.
2830* dollar sign ($), in variable name: Computed Names.
2831* dollar sign ($), in variable reference: Reference.
2832* double-colon rules: Double-Colon.
2833* duplicate words, removing: Text Functions.
2834* E2BIG: Options/Recursion.
2835* echoing of commands: Echoing.
2836* editor: Introduction.
2837* Emacs (M-x compile): Errors.
2838* empty commands: Empty Commands.
2839* empty targets: Empty Targets.
2840* environment: Environment.
2841* environment, and recursion: Variables/Recursion.
2842* environment, SHELL in: Execution.
2843* error, stopping on: Make Control Functions.
2844* errors (in commands): Errors.
2845* errors with wildcards: Wildcard Pitfall.
2846* evaluating makefile syntax: Eval Function.
2847* execution, in parallel: Parallel.
2848* execution, instead of: Instead of Execution.
2849* execution, of commands: Execution.
2850* exit status (errors): Errors.
2851* explicit rule, definition of: Makefile Contents.
2852* explicit rule, expansion: Reading Makefiles.
2853* exporting variables: Variables/Recursion.
2854* f77 <1>: Implicit Variables.
2855* f77: Catalogue of Rules.
2856* FDL, GNU Free Documentation License: GNU Free Documentation License.
2857* features of GNU make: Features.
2858* features, missing: Missing.
2859* file name functions: File Name Functions.
2860* file name of makefile: Makefile Names.
2861* file name of makefile, how to specify: Makefile Names.
2862* file name prefix, adding: File Name Functions.
2863* file name suffix: File Name Functions.
2864* file name suffix, adding: File Name Functions.
2865* file name with wildcards: Wildcards.
2866* file name, basename of: File Name Functions.
2867* file name, directory part: File Name Functions.
2868* file name, nondirectory part: File Name Functions.
2869* files, assuming new: Instead of Execution.
2870* files, assuming old: Avoiding Compilation.
2871* files, avoiding recompilation of: Avoiding Compilation.
2872* files, intermediate: Chained Rules.
2873* filtering out words: Text Functions.
2874* filtering words: Text Functions.
2875* finding strings: Text Functions.
2876* flags: Options Summary.
2877* flags for compilers: Implicit Variables.
2878* flavors of variables: Flavors.
2879* FORCE: Force Targets.
2880* force targets: Force Targets.
2881* Fortran, rule to compile: Catalogue of Rules.
2882* functions: Functions.
2883* functions, for controlling make: Make Control Functions.
2884* functions, for file names: File Name Functions.
2885* functions, for text: Text Functions.
2886* functions, syntax of: Syntax of Functions.
2887* functions, user defined: Call Function.
2888* g++ <1>: Implicit Variables.
2889* g++: Catalogue of Rules.
2890* gcc: Catalogue of Rules.
2891* generating prerequisites automatically <1>: Automatic Prerequisites.
2892* generating prerequisites automatically: Include.
2893* get <1>: Implicit Variables.
2894* get: Catalogue of Rules.
2895* globbing (wildcards): Wildcards.
2896* goal: How Make Works.
2897* goal, default <1>: Rules.
2898* goal, default: How Make Works.
2899* goal, how to specify: Goals.
2900* home directory: Wildcards.
2901* IEEE Standard 1003.2: Overview.
2902* ifdef, expansion: Reading Makefiles.
2903* ifeq, expansion: Reading Makefiles.
2904* ifndef, expansion: Reading Makefiles.
2905* ifneq, expansion: Reading Makefiles.
2906* implicit rule: Implicit Rules.
2907* implicit rule, and directory search: Implicit/Search.
2908* implicit rule, and VPATH: Implicit/Search.
2909* implicit rule, definition of: Makefile Contents.
2910* implicit rule, expansion: Reading Makefiles.
2911* implicit rule, how to use: Using Implicit.
2912* implicit rule, introduction to: make Deduces.
2913* implicit rule, predefined: Catalogue of Rules.
2914* implicit rule, search algorithm: Implicit Rule Search.
2915* included makefiles, default directories: Include.
2916* including (MAKEFILE_LIST variable): MAKEFILE_LIST Variable.
2917* including (MAKEFILES variable): MAKEFILES Variable.
2918* including other makefiles: Include.
2919* incompatibilities: Missing.
2920* Info, rule to format: Catalogue of Rules.
2921* install (standard target): Goals.
2922* intermediate files: Chained Rules.
2923* intermediate files, preserving: Chained Rules.
2924* intermediate targets, explicit: Special Targets.
2925* interrupt: Interrupts.
2926* job slots: Parallel.
2927* job slots, and recursion: Options/Recursion.
2928* jobs, limiting based on load: Parallel.
2929* joining lists of words: File Name Functions.
2930* killing (interruption): Interrupts.
2931* last-resort default rules: Last Resort.
2932* ld: Catalogue of Rules.
2933* lex <1>: Implicit Variables.
2934* lex: Catalogue of Rules.
2935* Lex, rule to run: Catalogue of Rules.
2936* libraries for linking, directory search: Libraries/Search.
2937* library archive, suffix rule for: Archive Suffix Rules.
2938* limiting jobs based on load: Parallel.
2939* link libraries, and directory search: Libraries/Search.
2940* link libraries, patterns matching: Libraries/Search.
2941* linking, predefined rule for: Catalogue of Rules.
2942* lint: Catalogue of Rules.
2943* lint, rule to run: Catalogue of Rules.
2944* list of all prerequisites: Automatic Variables.
2945* list of changed prerequisites: Automatic Variables.
2946* load average: Parallel.
2947* loops in variable expansion: Flavors.
2948* lpr (shell command) <1>: Empty Targets.
2949* lpr (shell command): Wildcard Examples.
2950* m2c: Catalogue of Rules.
2951* macro: Using Variables.
2952* make depend: Automatic Prerequisites.
2953* MAKECMDGOALS: Goals.
2954* makefile: Introduction.
2955* makefile name: Makefile Names.
2956* makefile name, how to specify: Makefile Names.
2957* makefile rule parts: Rule Introduction.
2958* makefile syntax, evaluating: Eval Function.
2959* makefile, and MAKEFILES variable: MAKEFILES Variable.
2960* makefile, conventions for: Makefile Conventions.
2961* makefile, how make processes: How Make Works.
2962* makefile, how to write: Makefiles.
2963* makefile, including: Include.
2964* makefile, overriding: Overriding Makefiles.
2965* makefile, parsing: Reading Makefiles.
2966* makefile, remaking of: Remaking Makefiles.
2967* makefile, simple: Simple Makefile.
2968* makefiles, and MAKEFILE_LIST variable: MAKEFILE_LIST Variable.
2969* makefiles, and special variables: Special Variables.
2970* makeinfo <1>: Implicit Variables.
2971* makeinfo: Catalogue of Rules.
2972* match-anything rule: Match-Anything Rules.
2973* match-anything rule, used to override: Overriding Makefiles.
2974* missing features: Missing.
2975* mistakes with wildcards: Wildcard Pitfall.
2976* modified variable reference: Substitution Refs.
2977* Modula-2, rule to compile: Catalogue of Rules.
2978* mostlyclean (standard target): Goals.
2979* multiple rules for one target: Multiple Rules.
2980* multiple rules for one target (::): Double-Colon.
2981* multiple targets: Multiple Targets.
2982* multiple targets, in pattern rule: Pattern Intro.
2983* name of makefile: Makefile Names.
2984* name of makefile, how to specify: Makefile Names.
2985* nested variable reference: Computed Names.
2986* newline, quoting, in commands: Execution.
2987* newline, quoting, in makefile: Simple Makefile.
2988* nondirectory part: File Name Functions.
2989* normal prerequisites: Prerequisite Types.
2990* OBJ: Variables Simplify.
2991* obj: Variables Simplify.
2992* OBJECTS: Variables Simplify.
2993* objects: Variables Simplify.
2994* OBJS: Variables Simplify.
2995* objs: Variables Simplify.
2996* old-fashioned suffix rules: Suffix Rules.
2997* options: Options Summary.
2998* options, and recursion: Options/Recursion.
2999* options, setting from environment: Options/Recursion.
3000* options, setting in makefiles: Options/Recursion.
3001* order of pattern rules: Pattern Intro.
3002* order-only prerequisites: Prerequisite Types.
3003* origin of variable: Origin Function.
3004* overriding makefiles: Overriding Makefiles.
3005* overriding variables with arguments: Overriding.
3006* overriding with override: Override Directive.
3007* parallel execution: Parallel.
3008* parallel execution, and archive update: Archive Pitfalls.
3009* parallel execution, overriding: Special Targets.
3010* parts of makefile rule: Rule Introduction.
3011* Pascal, rule to compile: Catalogue of Rules.
3012* pattern rule: Pattern Intro.
3013* pattern rule, expansion: Reading Makefiles.
3014* pattern rules, order of: Pattern Intro.
3015* pattern rules, static (not implicit): Static Pattern.
3016* pattern rules, static, syntax of: Static Usage.
3017* pattern-specific variables: Pattern-specific.
3018* pc <1>: Implicit Variables.
3019* pc: Catalogue of Rules.
3020* phony targets: Phony Targets.
3021* pitfalls of wildcards: Wildcard Pitfall.
3022* portability: Features.
3023* POSIX: Overview.
3024* POSIX.2: Options/Recursion.
3025* post-installation commands: Install Command Categories.
3026* pre-installation commands: Install Command Categories.
3027* precious targets: Special Targets.
3028* predefined rules and variables, printing: Options Summary.
3029* prefix, adding: File Name Functions.
3030* prerequisite: Rules.
3031* prerequisite pattern, implicit: Pattern Intro.
3032* prerequisite pattern, static (not implicit): Static Usage.
3033* prerequisite types: Prerequisite Types.
3034* prerequisite, expansion: Reading Makefiles.
3035* prerequisites: Rule Syntax.
3036* prerequisites, and automatic variables: Automatic Variables.
3037* prerequisites, automatic generation <1>: Automatic Prerequisites.
3038* prerequisites, automatic generation: Include.
3039* prerequisites, introduction to: Rule Introduction.
3040* prerequisites, list of all: Automatic Variables.
3041* prerequisites, list of changed: Automatic Variables.
3042* prerequisites, normal: Prerequisite Types.
3043* prerequisites, order-only: Prerequisite Types.
3044* prerequisites, varying (static pattern): Static Pattern.
3045* preserving intermediate files: Chained Rules.
3046* preserving with .PRECIOUS <1>: Chained Rules.
3047* preserving with .PRECIOUS: Special Targets.
3048* preserving with .SECONDARY: Special Targets.
3049* print (standard target): Goals.
3050* print target <1>: Empty Targets.
3051* print target: Wildcard Examples.
3052* printing directories: -w Option.
3053* printing of commands: Echoing.
3054* printing user warnings: Make Control Functions.
3055* problems and bugs, reporting: Bugs.
3056* problems with wildcards: Wildcard Pitfall.
3057* processing a makefile: How Make Works.
3058* question mode: Instead of Execution.
3059* quoting %, in patsubst: Text Functions.
3060* quoting %, in static pattern: Static Usage.
3061* quoting %, in vpath: Selective Search.
3062* quoting newline, in commands: Execution.
3063* quoting newline, in makefile: Simple Makefile.
3064* Ratfor, rule to compile: Catalogue of Rules.
3065* RCS, rule to extract from: Catalogue of Rules.
3066* reading makefiles: Reading Makefiles.
3067* README: Makefile Names.
3068* realclean (standard target): Goals.
3069* recompilation: Introduction.
3070* recompilation, avoiding: Avoiding Compilation.
3071* recording events with empty targets: Empty Targets.
3072* recursion: Recursion.
3073* recursion, and -C: Options/Recursion.
3074* recursion, and -f: Options/Recursion.
3075* recursion, and -j: Options/Recursion.
3076* recursion, and -o: Options/Recursion.
3077* recursion, and -t: MAKE Variable.
3078* recursion, and -w: -w Option.
3079* recursion, and -W: Options/Recursion.
3080* recursion, and command line variable definitions: Options/Recursion.
3081* recursion, and environment: Variables/Recursion.
3082* recursion, and MAKE variable: MAKE Variable.
3083* recursion, and MAKEFILES variable: MAKEFILES Variable.
3084* recursion, and options: Options/Recursion.
3085* recursion, and printing directories: -w Option.
3086* recursion, and variables: Variables/Recursion.
3087* recursion, level of: Variables/Recursion.
3088* recursive variable expansion <1>: Flavors.
3089* recursive variable expansion: Using Variables.
3090* recursively expanded variables: Flavors.
3091* reference to variables <1>: Advanced.
3092* reference to variables: Reference.
3093* relinking: How Make Works.
3094* remaking makefiles: Remaking Makefiles.
3095* removal of target files <1>: Interrupts.
3096* removal of target files: Errors.
3097* removing duplicate words: Text Functions.
3098* removing targets on failure: Special Targets.
3099* removing, to clean up: Cleanup.
3100* reporting bugs: Bugs.
3101* rm: Implicit Variables.
3102* rm (shell command) <1>: Errors.
3103* rm (shell command) <2>: Phony Targets.
3104* rm (shell command) <3>: Wildcard Examples.
3105* rm (shell command): Simple Makefile.
3106* rule commands: Commands.
3107* rule prerequisites: Rule Syntax.
3108* rule syntax: Rule Syntax.
3109* rule targets: Rule Syntax.
3110* rule, and $: Rule Syntax.
3111* rule, double-colon (::): Double-Colon.
3112* rule, explicit, definition of: Makefile Contents.
3113* rule, how to write: Rules.
3114* rule, implicit: Implicit Rules.
3115* rule, implicit, and directory search: Implicit/Search.
3116* rule, implicit, and VPATH: Implicit/Search.
3117* rule, implicit, chains of: Chained Rules.
3118* rule, implicit, definition of: Makefile Contents.
3119* rule, implicit, how to use: Using Implicit.
3120* rule, implicit, introduction to: make Deduces.
3121* rule, implicit, predefined: Catalogue of Rules.
3122* rule, introduction to: Rule Introduction.
3123* rule, multiple for one target: Multiple Rules.
3124* rule, no commands or prerequisites: Force Targets.
3125* rule, pattern: Pattern Intro.
3126* rule, static pattern: Static Pattern.
3127* rule, static pattern versus implicit: Static versus Implicit.
3128* rule, with multiple targets: Multiple Targets.
3129* s. (SCCS file prefix): Catalogue of Rules.
3130* SCCS, rule to extract from: Catalogue of Rules.
3131* search algorithm, implicit rule: Implicit Rule Search.
3132* search path for prerequisites (VPATH): Directory Search.
3133* search path for prerequisites (VPATH), and implicit rules: Implicit/Search.
3134* search path for prerequisites (VPATH), and link libraries: Libraries/Search.
3135* searching for strings: Text Functions.
3136* secondary files: Chained Rules.
3137* secondary targets: Special Targets.
3138* sed (shell command): Automatic Prerequisites.
3139* selecting a word: Text Functions.
3140* selecting word lists: Text Functions.
3141* sequences of commands: Sequences.
3142* setting options from environment: Options/Recursion.
3143* setting options in makefiles: Options/Recursion.
3144* setting variables: Setting.
3145* several rules for one target: Multiple Rules.
3146* several targets in a rule: Multiple Targets.
3147* shar (standard target): Goals.
3148* shell command: Simple Makefile.
3149* shell command, and directory search: Commands/Search.
3150* shell command, execution: Execution.
3151* shell command, function for: Shell Function.
3152* shell file name pattern (in include): Include.
3153* shell wildcards (in include): Include.
3154* SHELL, MS-DOS specifics: Execution.
3155* signal: Interrupts.
3156* silent operation: Echoing.
3157* simple makefile: Simple Makefile.
3158* simple variable expansion: Using Variables.
3159* simplifying with variables: Variables Simplify.
3160* simply expanded variables: Flavors.
3161* sorting words: Text Functions.
3162* spaces, in variable values: Flavors.
3163* spaces, stripping: Text Functions.
3164* special targets: Special Targets.
3165* special variables: Special Variables.
3166* specifying makefile name: Makefile Names.
3167* standard input: Parallel.
3168* standards conformance: Overview.
3169* standards for makefiles: Makefile Conventions.
3170* static pattern rule: Static Pattern.
3171* static pattern rule, syntax of: Static Usage.
3172* static pattern rule, versus implicit: Static versus Implicit.
3173* stem <1>: Pattern Match.
3174* stem: Static Usage.
3175* stem, variable for: Automatic Variables.
3176* stopping make: Make Control Functions.
3177* strings, searching for: Text Functions.
3178* stripping whitespace: Text Functions.
3179* sub-make: Variables/Recursion.
3180* subdirectories, recursion for: Recursion.
3181* substitution variable reference: Substitution Refs.
3182* suffix rule: Suffix Rules.
3183* suffix rule, for archive: Archive Suffix Rules.
3184* suffix, adding: File Name Functions.
3185* suffix, function to find: File Name Functions.
3186* suffix, substituting in variables: Substitution Refs.
3187* switches: Options Summary.
3188* symbol directories, updating archive: Archive Symbols.
3189* syntax of rules: Rule Syntax.
3190* tab character (in commands): Rule Syntax.
3191* tabs in rules: Rule Introduction.
3192* TAGS (standard target): Goals.
3193* tangle <1>: Implicit Variables.
3194* tangle: Catalogue of Rules.
3195* tar (standard target): Goals.
3196* target: Rules.
3197* target pattern, implicit: Pattern Intro.
3198* target pattern, static (not implicit): Static Usage.
3199* target, deleting on error: Errors.
3200* target, deleting on interrupt: Interrupts.
3201* target, expansion: Reading Makefiles.
3202* target, multiple in pattern rule: Pattern Intro.
3203* target, multiple rules for one: Multiple Rules.
3204* target, touching: Instead of Execution.
3205* target-specific variables: Target-specific.
3206* targets: Rule Syntax.
3207* targets without a file: Phony Targets.
3208* targets, built-in special: Special Targets.
3209* targets, empty: Empty Targets.
3210* targets, force: Force Targets.
3211* targets, introduction to: Rule Introduction.
3212* targets, multiple: Multiple Targets.
3213* targets, phony: Phony Targets.
3214* terminal rule: Match-Anything Rules.
3215* test (standard target): Goals.
3216* testing compilation: Testing.
3217* tex <1>: Implicit Variables.
3218* tex: Catalogue of Rules.
3219* TeX, rule to run: Catalogue of Rules.
3220* texi2dvi <1>: Implicit Variables.
3221* texi2dvi: Catalogue of Rules.
3222* Texinfo, rule to format: Catalogue of Rules.
3223* tilde (~): Wildcards.
3224* touch (shell command) <1>: Empty Targets.
3225* touch (shell command): Wildcard Examples.
3226* touching files: Instead of Execution.
3227* traditional directory search (GPATH): Search Algorithm.
3228* types of prerequisites: Prerequisite Types.
3229* undefined variables, warning message: Options Summary.
3230* updating archive symbol directories: Archive Symbols.
3231* updating makefiles: Remaking Makefiles.
3232* user defined functions: Call Function.
3233* value: Using Variables.
3234* value, how a variable gets it: Values.
3235* variable: Using Variables.
3236* variable definition: Makefile Contents.
3237* variables: Variables Simplify.
3238* variables, $ in name: Computed Names.
3239* variables, and implicit rule: Automatic Variables.
3240* variables, appending to: Appending.
3241* variables, automatic: Automatic Variables.
3242* variables, command line: Overriding.
3243* variables, command line, and recursion: Options/Recursion.
3244* variables, computed names: Computed Names.
3245* variables, conditional assignment: Flavors.
3246* variables, defining verbatim: Defining.
3247* variables, environment <1>: Environment.
3248* variables, environment: Variables/Recursion.
3249* variables, exporting: Variables/Recursion.
3250* variables, flavors: Flavors.
3251* variables, how they get their values: Values.
3252* variables, how to reference: Reference.
3253* variables, loops in expansion: Flavors.
3254* variables, modified reference: Substitution Refs.
3255* variables, nested references: Computed Names.
3256* variables, origin of: Origin Function.
3257* variables, overriding: Override Directive.
3258* variables, overriding with arguments: Overriding.
3259* variables, pattern-specific: Pattern-specific.
3260* variables, recursively expanded: Flavors.
3261* variables, setting: Setting.
3262* variables, simply expanded: Flavors.
3263* variables, spaces in values: Flavors.
3264* variables, substituting suffix in: Substitution Refs.
3265* variables, substitution reference: Substitution Refs.
3266* variables, target-specific: Target-specific.
3267* variables, unexpanded value: Value Function.
3268* variables, warning for undefined: Options Summary.
3269* varying prerequisites: Static Pattern.
3270* verbatim variable definition: Defining.
3271* vpath: Directory Search.
3272* VPATH, and implicit rules: Implicit/Search.
3273* VPATH, and link libraries: Libraries/Search.
3274* warnings, printing: Make Control Functions.
3275* weave <1>: Implicit Variables.
3276* weave: Catalogue of Rules.
3277* Web, rule to run: Catalogue of Rules.
3278* what if: Instead of Execution.
3279* whitespace, in variable values: Flavors.
3280* whitespace, stripping: Text Functions.
3281* wildcard: Wildcards.
3282* wildcard pitfalls: Wildcard Pitfall.
3283* wildcard, function: File Name Functions.
3284* wildcard, in archive member: Archive Members.
3285* wildcard, in include: Include.
3286* wildcards and MS-DOS/MS-Windows backslashes: Wildcard Pitfall.
3287* word, selecting a: Text Functions.
3288* words, extracting first: Text Functions.
3289* words, filtering: Text Functions.
3290* words, filtering out: Text Functions.
3291* words, finding number: Text Functions.
3292* words, iterating over: Foreach Function.
3293* words, joining lists: File Name Functions.
3294* words, removing duplicates: Text Functions.
3295* words, selecting lists of: Text Functions.
3296* writing rule commands: Commands.
3297* writing rules: Rules.
3298* yacc <1>: Implicit Variables.
3299* yacc <2>: Catalogue of Rules.
3300* yacc: Sequences.
3301* Yacc, rule to run: Catalogue of Rules.
3302* ~ (tilde): Wildcards.
3303
3304
3305File: make.info, Node: Name Index, Prev: Concept Index, Up: Top
3306
3307Index of Functions, Variables, & Directives
3308*******************************************
3309
3310* Menu:
3311
3312* $$(@D): Automatic Variables.
3313* $$(@F): Automatic Variables.
3314* $$@: Automatic Variables.
3315* $%: Automatic Variables.
3316* $(%D): Automatic Variables.
3317* $(%F): Automatic Variables.
3318* $(*D): Automatic Variables.
3319* $(*F): Automatic Variables.
3320* $(+D): Automatic Variables.
3321* $(+F): Automatic Variables.
3322* $(.VARIABLES): Special Variables.
3323* $(<D): Automatic Variables.
3324* $(<F): Automatic Variables.
3325* $(?D): Automatic Variables.
3326* $(?F): Automatic Variables.
3327* $(@D): Automatic Variables.
3328* $(@F): Automatic Variables.
3329* $(^D): Automatic Variables.
3330* $(^F): Automatic Variables.
3331* $*: Automatic Variables.
3332* $*, and static pattern: Static Usage.
3333* $+: Automatic Variables.
3334* $<: Automatic Variables.
3335* $?: Automatic Variables.
3336* $@: Automatic Variables.
3337* $^: Automatic Variables.
3338* % (automatic variable): Automatic Variables.
3339* %D (automatic variable): Automatic Variables.
3340* %F (automatic variable): Automatic Variables.
3341* * (automatic variable): Automatic Variables.
3342* * (automatic variable), unsupported bizarre usage: Missing.
3343* *D (automatic variable): Automatic Variables.
3344* *F (automatic variable): Automatic Variables.
3345* + (automatic variable): Automatic Variables.
3346* +D (automatic variable): Automatic Variables.
3347* +F (automatic variable): Automatic Variables.
3348* .DEFAULT <1>: Last Resort.
3349* .DEFAULT: Special Targets.
3350* .DEFAULT, and empty commands: Empty Commands.
3351* .DELETE_ON_ERROR <1>: Errors.
3352* .DELETE_ON_ERROR: Special Targets.
3353* .EXPORT_ALL_VARIABLES <1>: Variables/Recursion.
3354* .EXPORT_ALL_VARIABLES: Special Targets.
3355* .IGNORE <1>: Errors.
3356* .IGNORE: Special Targets.
3357* .INTERMEDIATE: Special Targets.
3358* .LIBPATTERNS: Libraries/Search.
3359* .LOW_RESOLUTION_TIME: Special Targets.
3360* .NOTPARALLEL: Special Targets.
3361* .PHONY <1>: Special Targets.
3362* .PHONY: Phony Targets.
3363* .POSIX: Options/Recursion.
3364* .PRECIOUS <1>: Interrupts.
3365* .PRECIOUS: Special Targets.
3366* .SECONDARY: Special Targets.
3367* .SILENT <1>: Echoing.
3368* .SILENT: Special Targets.
3369* .SUFFIXES <1>: Suffix Rules.
3370* .SUFFIXES: Special Targets.
3371* .VARIABLES (list of variables): Special Variables.
3372* /usr/gnu/include: Include.
3373* /usr/include: Include.
3374* /usr/local/include: Include.
3375* < (automatic variable): Automatic Variables.
3376* <D (automatic variable): Automatic Variables.
3377* <F (automatic variable): Automatic Variables.
3378* ? (automatic variable): Automatic Variables.
3379* ?D (automatic variable): Automatic Variables.
3380* ?F (automatic variable): Automatic Variables.
3381* @ (automatic variable): Automatic Variables.
3382* @D (automatic variable): Automatic Variables.
3383* @F (automatic variable): Automatic Variables.
3384* ^ (automatic variable): Automatic Variables.
3385* ^D (automatic variable): Automatic Variables.
3386* ^F (automatic variable): Automatic Variables.
3387* addprefix: File Name Functions.
3388* addsuffix: File Name Functions.
3389* AR: Implicit Variables.
3390* ARFLAGS: Implicit Variables.
3391* AS: Implicit Variables.
3392* ASFLAGS: Implicit Variables.
3393* basename: File Name Functions.
3394* bindir: Directory Variables.
3395* call: Call Function.
3396* CC: Implicit Variables.
3397* CFLAGS: Implicit Variables.
3398* CO: Implicit Variables.
3399* COFLAGS: Implicit Variables.
3400* COMSPEC: Execution.
3401* CPP: Implicit Variables.
3402* CPPFLAGS: Implicit Variables.
3403* CTANGLE: Implicit Variables.
3404* CURDIR: Recursion.
3405* CWEAVE: Implicit Variables.
3406* CXX: Implicit Variables.
3407* CXXFLAGS: Implicit Variables.
3408* define: Defining.
3409* dir: File Name Functions.
3410* else: Conditional Syntax.
3411* endef: Defining.
3412* endif: Conditional Syntax.
3413* error: Make Control Functions.
3414* eval: Eval Function.
3415* exec_prefix: Directory Variables.
3416* export: Variables/Recursion.
3417* FC: Implicit Variables.
3418* FFLAGS: Implicit Variables.
3419* filter: Text Functions.
3420* filter-out: Text Functions.
3421* findstring: Text Functions.
3422* firstword: Text Functions.
3423* foreach: Foreach Function.
3424* GET: Implicit Variables.
3425* GFLAGS: Implicit Variables.
3426* GNUmakefile: Makefile Names.
3427* GPATH: Search Algorithm.
3428* if: If Function.
3429* ifdef: Conditional Syntax.
3430* ifeq: Conditional Syntax.
3431* ifndef: Conditional Syntax.
3432* ifneq: Conditional Syntax.
3433* include: Include.
3434* join: File Name Functions.
3435* LDFLAGS: Implicit Variables.
3436* LEX: Implicit Variables.
3437* LFLAGS: Implicit Variables.
3438* libexecdir: Directory Variables.
3439* MAKE <1>: Flavors.
3440* MAKE: MAKE Variable.
3441* MAKECMDGOALS: Goals.
3442* makefile: Makefile Names.
3443* Makefile: Makefile Names.
3444* MAKEFILES <1>: Variables/Recursion.
3445* MAKEFILES: MAKEFILES Variable.
3446* MAKEFLAGS: Options/Recursion.
3447* MAKEINFO: Implicit Variables.
3448* MAKELEVEL <1>: Flavors.
3449* MAKELEVEL: Variables/Recursion.
3450* MAKEOVERRIDES: Options/Recursion.
3451* MFLAGS: Options/Recursion.
3452* notdir: File Name Functions.
3453* origin: Origin Function.
3454* OUTPUT_OPTION: Catalogue of Rules.
3455* override: Override Directive.
3456* patsubst <1>: Text Functions.
3457* patsubst: Substitution Refs.
3458* PC: Implicit Variables.
3459* PFLAGS: Implicit Variables.
3460* prefix: Directory Variables.
3461* RFLAGS: Implicit Variables.
3462* RM: Implicit Variables.
3463* sbindir: Directory Variables.
3464* shell: Shell Function.
3465* SHELL: Execution.
3466* SHELL (command execution): Execution.
3467* sort: Text Functions.
3468* strip: Text Functions.
3469* subst <1>: Text Functions.
3470* subst: Multiple Targets.
3471* suffix: File Name Functions.
3472* SUFFIXES: Suffix Rules.
3473* TANGLE: Implicit Variables.
3474* TEX: Implicit Variables.
3475* TEXI2DVI: Implicit Variables.
3476* unexport: Variables/Recursion.
3477* value: Value Function.
3478* vpath: Selective Search.
3479* VPATH: General Search.
3480* vpath: Directory Search.
3481* VPATH: Directory Search.
3482* warning: Make Control Functions.
3483* WEAVE: Implicit Variables.
3484* wildcard <1>: File Name Functions.
3485* wildcard: Wildcard Function.
3486* word: Text Functions.
3487* wordlist: Text Functions.
3488* words: Text Functions.
3489* YACC: Implicit Variables.
3490* YACCR: Implicit Variables.
3491* YFLAGS: Implicit Variables.
3492
3493
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette