VirtualBox

source: kBuild/branches/GNU/src/gmake/doc/make.info-2@ 152

Last change on this file since 152 was 152, checked in by (none), 20 years ago

This commit was manufactured by cvs2svn to create branch 'GNU'.

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