|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: m
Length: 35073 (0x8901) Names: »make-info-5«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89 └─⟦8dc31e575⟧ »./make-doc-3.57.tar.Z« └─⟦065d2f818⟧ └─⟦this⟧ »make-info-5«
0x0000…0020 49 6e 66 6f 20 66 69 6c 65 20 6d 61 6b 65 2d 69 6e 66 6f 2c 20 70 72 6f 64 75 63 65 64 20 62 79 ┆Info file make-info, produced by┆ 0x0020…0040 20 4d 61 6b 65 69 6e 66 6f 2c 20 2d 2a 2d 20 54 65 78 74 20 2d 2a 2d 20 66 72 6f 6d 20 69 6e 70 ┆ Makeinfo, -*- Text -*- from inp┆ 0x0040…0060 75 74 0a 66 69 6c 65 20 6d 61 6b 65 2e 74 65 78 69 6e 66 6f 2e 0a 0a 54 68 69 73 20 66 69 6c 65 ┆ut file make.texinfo. This file┆ 0x0060…0080 20 64 6f 63 75 6d 65 6e 74 73 20 74 68 65 20 47 4e 55 20 4d 61 6b 65 20 75 74 69 6c 69 74 79 2e ┆ documents the GNU Make utility.┆ 0x0080…00a0 0a 0a 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 31 39 38 38 2c 20 31 39 38 39 20 46 72 65 65 20 ┆ Copyright (C) 1988, 1989 Free ┆ 0x00a0…00c0 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 0a 0a 50 65 72 6d 69 ┆Software Foundation, Inc. Permi┆ 0x00c0…00e0 73 73 69 6f 6e 20 69 73 20 67 72 61 6e 74 65 64 20 74 6f 20 6d 61 6b 65 20 61 6e 64 20 64 69 73 ┆ssion is granted to make and dis┆ 0x00e0…0100 74 72 69 62 75 74 65 20 76 65 72 62 61 74 69 6d 20 63 6f 70 69 65 73 20 6f 66 20 74 68 69 73 0a ┆tribute verbatim copies of this ┆ 0x0100…0120 6d 61 6e 75 61 6c 20 70 72 6f 76 69 64 65 64 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f ┆manual provided the copyright no┆ 0x0120…0140 74 69 63 65 20 61 6e 64 20 74 68 69 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 6e 6f 74 69 63 65 20 ┆tice and this permission notice ┆ 0x0140…0160 61 72 65 0a 70 72 65 73 65 72 76 65 64 20 6f 6e 20 61 6c 6c 20 63 6f 70 69 65 73 2e 0a 0a 50 65 ┆are preserved on all copies. Pe┆ 0x0160…0180 72 6d 69 73 73 69 6f 6e 20 69 73 20 67 72 61 6e 74 65 64 20 74 6f 20 63 6f 70 79 20 61 6e 64 20 ┆rmission is granted to copy and ┆ 0x0180…01a0 64 69 73 74 72 69 62 75 74 65 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a ┆distribute modified versions of ┆ 0x01a0…01c0 74 68 69 73 20 6d 61 6e 75 61 6c 20 75 6e 64 65 72 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 ┆this manual under the conditions┆ 0x01c0…01e0 20 66 6f 72 20 76 65 72 62 61 74 69 6d 20 63 6f 70 79 69 6e 67 2c 20 70 72 6f 76 69 64 65 64 20 ┆ for verbatim copying, provided ┆ 0x01e0…0200 61 6c 73 6f 0a 74 68 61 74 20 74 68 65 20 73 65 63 74 69 6f 6e 20 65 6e 74 69 74 6c 65 64 20 60 ┆also that the section entitled `┆ 0x0200…0220 60 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 27 27 20 69 73 ┆`GNU General Public License'' is┆ 0x0220…0240 20 69 6e 63 6c 75 64 65 64 0a 65 78 61 63 74 6c 79 20 61 73 20 69 6e 20 74 68 65 20 6f 72 69 67 ┆ included exactly as in the orig┆ 0x0240…0260 69 6e 61 6c 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 74 68 65 20 65 6e 74 69 ┆inal, and provided that the enti┆ 0x0260…0280 72 65 20 72 65 73 75 6c 74 69 6e 67 0a 64 65 72 69 76 65 64 20 77 6f 72 6b 20 69 73 20 64 69 73 ┆re resulting derived work is dis┆ 0x0280…02a0 74 72 69 62 75 74 65 64 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 61 20 70 65 ┆tributed under the terms of a pe┆ 0x02a0…02c0 72 6d 69 73 73 69 6f 6e 20 6e 6f 74 69 63 65 0a 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 74 68 69 ┆rmission notice identical to thi┆ 0x02c0…02e0 73 20 6f 6e 65 2e 0a 0a 50 65 72 6d 69 73 73 69 6f 6e 20 69 73 20 67 72 61 6e 74 65 64 20 74 6f ┆s one. Permission is granted to┆ 0x02e0…0300 20 63 6f 70 79 20 61 6e 64 20 64 69 73 74 72 69 62 75 74 65 20 74 72 61 6e 73 6c 61 74 69 6f 6e ┆ copy and distribute translation┆ 0x0300…0320 73 20 6f 66 20 74 68 69 73 0a 6d 61 6e 75 61 6c 20 69 6e 74 6f 20 61 6e 6f 74 68 65 72 20 6c 61 ┆s of this manual into another la┆ 0x0320…0340 6e 67 75 61 67 65 2c 20 75 6e 64 65 72 20 74 68 65 20 61 62 6f 76 65 20 63 6f 6e 64 69 74 69 6f ┆nguage, under the above conditio┆ 0x0340…0360 6e 73 20 66 6f 72 20 6d 6f 64 69 66 69 65 64 0a 76 65 72 73 69 6f 6e 73 2c 20 65 78 63 65 70 74 ┆ns for modified versions, except┆ 0x0360…0380 20 74 68 61 74 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 20 74 72 61 6e 73 6c 61 74 69 6f ┆ that the text of the translatio┆ 0x0380…03a0 6e 73 20 6f 66 20 74 68 65 20 73 65 63 74 69 6f 6e 0a 65 6e 74 69 74 6c 65 64 20 60 60 47 4e 55 ┆ns of the section entitled ``GNU┆ 0x03a0…03c0 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 27 27 20 6d 75 73 74 20 62 ┆ General Public License'' must b┆ 0x03c0…03e0 65 20 61 70 70 72 6f 76 65 64 20 66 6f 72 20 61 63 63 75 72 61 63 79 0a 62 79 20 74 68 65 20 46 ┆e approved for accuracy by the F┆ 0x03e0…0400 6f 75 6e 64 61 74 69 6f 6e 2e 0a 0a 0a 1f 0a 46 69 6c 65 3a 20 6d 61 6b 65 2d 69 6e 66 6f 2c 20 ┆oundation. File: make-info, ┆ 0x0400…0420 20 4e 6f 64 65 3a 20 4d 61 74 63 68 2d 41 6e 79 74 68 69 6e 67 20 52 75 6c 65 73 2c 20 20 4e 65 ┆ Node: Match-Anything Rules, Ne┆ 0x0420…0440 78 74 3a 20 43 61 6e 63 65 6c 69 6e 67 20 52 75 6c 65 73 2c 20 20 50 72 65 76 3a 20 50 61 74 74 ┆xt: Canceling Rules, Prev: Patt┆ 0x0440…0460 65 72 6e 20 4d 61 74 63 68 2c 20 20 55 70 3a 20 50 61 74 74 65 72 6e 20 52 75 6c 65 73 0a 0a 4d ┆ern Match, Up: Pattern Rules M┆ 0x0460…0480 61 74 63 68 2d 41 6e 79 74 68 69 6e 67 20 50 61 74 74 65 72 6e 20 52 75 6c 65 73 0a 2d 2d 2d 2d ┆atch-Anything Pattern Rules ----┆ 0x0480…04a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 57 68 65 6e 20 61 ┆------------------------ When a┆ 0x04a0…04c0 20 70 61 74 74 65 72 6e 20 72 75 6c 65 27 73 20 74 61 72 67 65 74 20 69 73 20 6a 75 73 74 20 60 ┆ pattern rule's target is just `┆ 0x04c0…04e0 25 27 2c 20 69 74 20 6d 61 74 63 68 65 73 20 61 6e 79 20 66 69 6c 65 6e 61 6d 65 0a 77 68 61 74 ┆%', it matches any filename what┆ 0x04e0…0500 65 76 65 72 2e 20 20 57 65 20 63 61 6c 6c 20 74 68 65 73 65 20 72 75 6c 65 73 20 22 6d 61 74 63 ┆ever. We call these rules "matc┆ 0x0500…0520 68 2d 61 6e 79 74 68 69 6e 67 22 20 72 75 6c 65 73 2e 20 20 54 68 65 79 20 61 72 65 20 76 65 72 ┆h-anything" rules. They are ver┆ 0x0520…0540 79 0a 75 73 65 66 75 6c 2c 20 62 75 74 20 69 74 20 63 61 6e 20 74 61 6b 65 20 61 20 6c 6f 74 20 ┆y useful, but it can take a lot ┆ 0x0540…0560 6f 66 20 74 69 6d 65 20 66 6f 72 20 60 6d 61 6b 65 27 20 74 6f 20 74 68 69 6e 6b 20 61 62 6f 75 ┆of time for `make' to think abou┆ 0x0560…0580 74 20 74 68 65 6d 2c 0a 62 65 63 61 75 73 65 20 69 74 20 6d 75 73 74 20 63 6f 6e 73 69 64 65 72 ┆t them, because it must consider┆ 0x0580…05a0 20 65 76 65 72 79 20 73 75 63 68 20 72 75 6c 65 20 66 6f 72 20 65 61 63 68 20 66 69 6c 65 20 6e ┆ every such rule for each file n┆ 0x05a0…05c0 61 6d 65 20 6c 69 73 74 65 64 0a 65 69 74 68 65 72 20 61 73 20 61 20 74 61 72 67 65 74 20 6f 72 ┆ame listed either as a target or┆ 0x05c0…05e0 20 61 73 20 61 20 64 65 70 65 6e 64 65 6e 63 79 2e 0a 0a 53 75 70 70 6f 73 65 20 74 68 65 20 6d ┆ as a dependency. Suppose the m┆ 0x05e0…0600 61 6b 65 66 69 6c 65 20 6d 65 6e 74 69 6f 6e 73 20 60 66 6f 6f 2e 63 27 2e 20 20 46 6f 72 20 74 ┆akefile mentions `foo.c'. For t┆ 0x0600…0620 68 69 73 20 74 61 72 67 65 74 2c 20 60 6d 61 6b 65 27 20 77 6f 75 6c 64 0a 68 61 76 65 20 74 6f ┆his target, `make' would have to┆ 0x0620…0640 20 63 6f 6e 73 69 64 65 72 20 6d 61 6b 69 6e 67 20 69 74 20 62 79 20 6c 69 6e 6b 69 6e 67 20 61 ┆ consider making it by linking a┆ 0x0640…0660 6e 20 6f 62 6a 65 63 74 20 66 69 6c 65 20 60 66 6f 6f 2e 63 2e 6f 27 2c 20 6f 72 20 62 79 0a 43 ┆n object file `foo.c.o', or by C┆ 0x0660…0680 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 2d 61 6e 64 2d 6c 69 6e 6b 69 6e 67 20 69 6e 20 6f 6e 65 20 ┆ compilation-and-linking in one ┆ 0x0680…06a0 73 74 65 70 20 66 72 6f 6d 20 60 66 6f 6f 2e 63 2e 63 27 2c 20 6f 72 20 62 79 20 50 61 73 63 61 ┆step from `foo.c.c', or by Pasca┆ 0x06a0…06c0 6c 0a 63 6f 6d 70 69 6c 61 74 69 6f 6e 2d 61 6e 64 2d 6c 69 6e 6b 69 6e 67 20 66 72 6f 6d 20 60 ┆l compilation-and-linking from `┆ 0x06c0…06e0 66 6f 6f 2e 63 2e 70 27 2c 20 61 6e 64 20 6d 61 6e 79 20 6f 74 68 65 72 20 70 6f 73 73 69 62 69 ┆foo.c.p', and many other possibi┆ 0x06e0…0700 6c 69 74 69 65 73 2e 0a 0a 57 65 20 6b 6e 6f 77 20 74 68 65 73 65 20 70 6f 73 73 69 62 69 6c 69 ┆lities. We know these possibili┆ 0x0700…0720 74 69 65 73 20 61 72 65 20 72 69 64 69 63 75 6c 6f 75 73 20 73 69 6e 63 65 20 60 66 6f 6f 2e 63 ┆ties are ridiculous since `foo.c┆ 0x0720…0740 27 20 69 73 20 61 20 43 0a 73 6f 75 72 63 65 20 66 69 6c 65 2c 20 6e 6f 74 20 61 6e 20 65 78 65 ┆' is a C source file, not an exe┆ 0x0740…0760 63 75 74 61 62 6c 65 2e 20 20 49 66 20 60 6d 61 6b 65 27 20 64 69 64 20 63 6f 6e 73 69 64 65 72 ┆cutable. If `make' did consider┆ 0x0760…0780 20 74 68 65 73 65 0a 70 6f 73 73 69 62 69 6c 69 74 69 65 73 2c 20 69 74 20 77 6f 75 6c 64 20 75 ┆ these possibilities, it would u┆ 0x0780…07a0 6c 74 69 6d 61 74 65 6c 79 20 72 65 6a 65 63 74 20 74 68 65 6d 2c 20 62 65 63 61 75 73 65 20 66 ┆ltimately reject them, because f┆ 0x07a0…07c0 69 6c 65 73 20 73 75 63 68 20 61 73 0a 60 66 6f 6f 2e 63 2e 6f 27 2c 20 60 66 6f 6f 2e 63 2e 70 ┆iles such as `foo.c.o', `foo.c.p┆ 0x07c0…07e0 27 2c 20 65 74 63 2e 20 77 6f 75 6c 64 20 6e 6f 74 20 65 78 69 73 74 2e 20 20 42 75 74 20 74 68 ┆', etc. would not exist. But th┆ 0x07e0…0800 65 73 65 20 70 6f 73 73 69 62 69 6c 69 74 69 65 73 0a 61 72 65 20 73 6f 20 6e 75 6d 65 72 6f 75 ┆ese possibilities are so numerou┆ 0x0800…0820 73 20 74 68 61 74 20 60 6d 61 6b 65 27 20 77 6f 75 6c 64 20 72 75 6e 20 76 65 72 79 20 73 6c 6f ┆s that `make' would run very slo┆ 0x0820…0840 77 6c 79 20 69 66 20 69 74 20 68 61 64 20 74 6f 0a 63 6f 6e 73 69 64 65 72 20 74 68 65 6d 2e 0a ┆wly if it had to consider them. ┆ 0x0840…0860 0a 54 6f 20 67 61 69 6e 20 73 70 65 65 64 2c 20 77 65 20 68 61 76 65 20 70 75 74 20 76 61 72 69 ┆ To gain speed, we have put vari┆ 0x0860…0880 6f 75 73 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20 74 68 65 20 77 61 79 20 60 6d 61 6b 65 ┆ous constraints on the way `make┆ 0x0880…08a0 27 0a 63 6f 6e 73 69 64 65 72 73 20 6d 61 74 63 68 2d 61 6e 79 74 68 69 6e 67 20 72 75 6c 65 73 ┆' considers match-anything rules┆ 0x08a0…08c0 2e 20 20 54 68 65 72 65 20 61 72 65 20 74 77 6f 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 73 74 ┆. There are two different const┆ 0x08c0…08e0 72 61 69 6e 74 73 0a 74 68 61 74 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 2c 20 61 6e 64 20 ┆raints that can be applied, and ┆ 0x08e0…0900 65 61 63 68 20 74 69 6d 65 20 79 6f 75 20 64 65 66 69 6e 65 20 61 20 6d 61 74 63 68 2d 61 6e 79 ┆each time you define a match-any┆ 0x0900…0920 74 68 69 6e 67 20 72 75 6c 65 0a 79 6f 75 20 6d 75 73 74 20 63 68 6f 6f 73 65 20 6f 6e 65 20 6f ┆thing rule you must choose one o┆ 0x0920…0940 72 20 74 68 65 20 6f 74 68 65 72 20 66 6f 72 20 74 68 61 74 20 72 75 6c 65 2e 0a 0a 4f 6e 65 20 ┆r the other for that rule. One ┆ 0x0940…0960 63 68 6f 69 63 65 20 69 73 20 74 6f 20 6d 61 72 6b 20 74 68 65 20 6d 61 74 63 68 2d 61 6e 79 74 ┆choice is to mark the match-anyt┆ 0x0960…0980 68 69 6e 67 20 72 75 6c 65 20 61 73 20 22 74 65 72 6d 69 6e 61 6c 22 20 62 79 0a 64 65 66 69 6e ┆hing rule as "terminal" by defin┆ 0x0980…09a0 69 6e 67 20 69 74 20 77 69 74 68 20 61 20 64 6f 75 62 6c 65 20 63 6f 6c 6f 6e 2e 20 20 57 68 65 ┆ing it with a double colon. Whe┆ 0x09a0…09c0 6e 20 61 20 72 75 6c 65 20 69 73 20 74 65 72 6d 69 6e 61 6c 2c 20 69 74 20 64 6f 65 73 0a 6e 6f ┆n a rule is terminal, it does no┆ 0x09c0…09e0 74 20 61 70 70 6c 79 20 75 6e 6c 65 73 73 20 69 74 73 20 64 65 70 65 6e 64 65 6e 63 69 65 73 20 ┆t apply unless its dependencies ┆ 0x09e0…0a00 61 63 74 75 61 6c 6c 79 20 65 78 69 73 74 2e 20 20 44 65 70 65 6e 64 65 6e 63 69 65 73 20 74 68 ┆actually exist. Dependencies th┆ 0x0a00…0a20 61 74 0a 63 6f 75 6c 64 20 62 65 20 6d 61 64 65 20 77 69 74 68 20 6f 74 68 65 72 20 69 6d 70 6c ┆at could be made with other impl┆ 0x0a20…0a40 69 63 69 74 20 72 75 6c 65 73 20 61 72 65 20 6e 6f 74 20 67 6f 6f 64 20 65 6e 6f 75 67 68 2e 20 ┆icit rules are not good enough. ┆ 0x0a40…0a60 20 49 6e 0a 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 6e 6f 20 66 75 72 74 68 65 72 20 63 68 61 69 ┆ In other words, no further chai┆ 0x0a60…0a80 6e 69 6e 67 20 69 73 20 61 6c 6c 6f 77 65 64 20 62 65 79 6f 6e 64 20 61 20 74 65 72 6d 69 6e 61 ┆ning is allowed beyond a termina┆ 0x0a80…0aa0 6c 20 72 75 6c 65 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 62 75 69 6c 74 2d ┆l rule. For example, the built-┆ 0x0aa0…0ac0 69 6e 20 69 6d 70 6c 69 63 69 74 20 72 75 6c 65 73 20 66 6f 72 20 65 78 74 72 61 63 74 69 6e 67 ┆in implicit rules for extracting┆ 0x0ac0…0ae0 20 73 6f 75 72 63 65 73 20 66 72 6f 6d 0a 52 43 53 20 61 6e 64 20 53 43 43 53 20 66 69 6c 65 73 ┆ sources from RCS and SCCS files┆ 0x0ae0…0b00 20 61 72 65 20 74 65 72 6d 69 6e 61 6c 3b 20 61 73 20 61 20 72 65 73 75 6c 74 2c 20 69 66 20 74 ┆ are terminal; as a result, if t┆ 0x0b00…0b20 68 65 20 66 69 6c 65 20 60 66 6f 6f 2e 63 2c 76 27 0a 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 ┆he file `foo.c,v' does not exist┆ 0x0b20…0b40 2c 20 60 6d 61 6b 65 27 20 77 69 6c 6c 20 6e 6f 74 20 65 76 65 6e 20 63 6f 6e 73 69 64 65 72 20 ┆, `make' will not even consider ┆ 0x0b40…0b60 74 72 79 69 6e 67 20 74 6f 20 6d 61 6b 65 20 69 74 20 61 73 20 61 6e 0a 69 6e 74 65 72 6d 65 64 ┆trying to make it as an intermed┆ 0x0b60…0b80 69 61 74 65 20 66 69 6c 65 20 66 72 6f 6d 20 60 66 6f 6f 2e 63 2c 76 2e 6f 27 20 6f 72 20 66 72 ┆iate file from `foo.c,v.o' or fr┆ 0x0b80…0ba0 6f 6d 20 60 52 43 53 2f 53 43 43 53 2f 73 2e 66 6f 6f 2e 63 2c 76 27 2e 20 20 52 43 53 0a 61 6e ┆om `RCS/SCCS/s.foo.c,v'. RCS an┆ 0x0ba0…0bc0 64 20 53 43 43 53 20 66 69 6c 65 73 20 61 72 65 20 67 65 6e 65 72 61 6c 6c 79 20 75 6c 74 69 6d ┆d SCCS files are generally ultim┆ 0x0bc0…0be0 61 74 65 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2c 20 77 68 69 63 68 20 73 68 6f 75 6c 64 20 6e ┆ate source files, which should n┆ 0x0be0…0c00 6f 74 0a 62 65 20 72 65 6d 61 64 65 20 66 72 6f 6d 20 61 6e 79 20 6f 74 68 65 72 20 66 69 6c 65 ┆ot be remade from any other file┆ 0x0c00…0c20 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 60 6d 61 6b 65 27 20 63 61 6e 20 73 61 76 65 20 74 69 ┆s; therefore, `make' can save ti┆ 0x0c20…0c40 6d 65 20 62 79 0a 6e 6f 74 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 77 61 79 73 20 74 6f 20 72 65 ┆me by not looking for ways to re┆ 0x0c40…0c60 6d 61 6b 65 20 74 68 65 6d 2e 0a 0a 49 66 20 79 6f 75 20 64 6f 20 6e 6f 74 20 6d 61 72 6b 20 74 ┆make them. If you do not mark t┆ 0x0c60…0c80 68 65 20 6d 61 74 63 68 2d 61 6e 79 74 68 69 6e 67 20 72 75 6c 65 20 61 73 20 74 65 72 6d 69 6e ┆he match-anything rule as termin┆ 0x0c80…0ca0 61 6c 2c 20 74 68 65 6e 20 69 74 20 69 73 0a 6e 6f 6e 74 65 72 6d 69 6e 61 6c 2e 20 20 41 20 6e ┆al, then it is nonterminal. A n┆ 0x0ca0…0cc0 6f 6e 74 65 72 6d 69 6e 61 6c 20 6d 61 74 63 68 2d 61 6e 79 74 68 69 6e 67 20 72 75 6c 65 20 63 ┆onterminal match-anything rule c┆ 0x0cc0…0ce0 61 6e 6e 6f 74 20 61 70 70 6c 79 20 74 6f 20 61 0a 66 69 6c 65 20 6e 61 6d 65 20 74 68 61 74 20 ┆annot apply to a file name that ┆ 0x0ce0…0d00 69 6e 64 69 63 61 74 65 73 20 61 20 73 70 65 63 69 66 69 63 20 74 79 70 65 20 6f 66 20 64 61 74 ┆indicates a specific type of dat┆ 0x0d00…0d20 61 2e 20 20 41 20 66 69 6c 65 20 6e 61 6d 65 0a 69 6e 64 69 63 61 74 65 73 20 61 20 73 70 65 63 ┆a. A file name indicates a spec┆ 0x0d20…0d40 69 66 69 63 20 74 79 70 65 20 6f 66 20 64 61 74 61 20 69 66 20 73 6f 6d 65 20 6e 6f 6e 2d 6d 61 ┆ific type of data if some non-ma┆ 0x0d40…0d60 74 63 68 2d 61 6e 79 74 68 69 6e 67 20 69 6d 70 6c 69 63 69 74 0a 72 75 6c 65 20 74 61 72 67 65 ┆tch-anything implicit rule targe┆ 0x0d60…0d80 74 20 6d 61 74 63 68 65 73 20 69 74 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 ┆t matches it. For example, the ┆ 0x0d80…0da0 66 69 6c 65 20 6e 61 6d 65 20 60 66 6f 6f 2e 63 27 20 6d 61 74 63 68 65 73 20 74 68 65 20 74 61 ┆file name `foo.c' matches the ta┆ 0x0da0…0dc0 72 67 65 74 20 66 6f 72 20 74 68 65 20 70 61 74 74 65 72 6e 0a 72 75 6c 65 20 60 25 2e 63 20 3a ┆rget for the pattern rule `%.c :┆ 0x0dc0…0de0 20 25 2e 79 27 20 28 74 68 65 20 72 75 6c 65 20 74 6f 20 72 75 6e 20 59 61 63 63 29 2e 20 20 52 ┆ %.y' (the rule to run Yacc). R┆ 0x0de0…0e00 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 74 68 69 73 0a 72 75 6c 65 20 69 ┆egardless of whether this rule i┆ 0x0e00…0e20 73 20 61 63 74 75 61 6c 6c 79 20 61 70 70 6c 69 63 61 62 6c 65 20 28 77 68 69 63 68 20 68 61 70 ┆s actually applicable (which hap┆ 0x0e20…0e40 70 65 6e 73 20 6f 6e 6c 79 20 69 66 20 74 68 65 72 65 20 69 73 20 61 20 66 69 6c 65 0a 60 66 6f ┆pens only if there is a file `fo┆ 0x0e40…0e60 6f 2e 79 27 29 2c 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 69 74 73 20 74 61 72 67 65 74 20 ┆o.y'), the fact that its target ┆ 0x0e60…0e80 6d 61 74 63 68 65 73 20 69 73 20 65 6e 6f 75 67 68 20 74 6f 20 70 72 65 76 65 6e 74 0a 63 6f 6e ┆matches is enough to prevent con┆ 0x0e80…0ea0 73 69 64 65 72 61 74 69 6f 6e 20 6f 66 20 61 6e 79 20 6e 6f 6e 74 65 72 6d 69 6e 61 6c 20 6d 61 ┆sideration of any nonterminal ma┆ 0x0ea0…0ec0 74 63 68 2d 61 6e 79 74 68 69 6e 67 20 72 75 6c 65 73 20 66 6f 72 20 74 68 65 20 66 69 6c 65 0a ┆tch-anything rules for the file ┆ 0x0ec0…0ee0 60 66 6f 6f 2e 63 27 2e 20 20 54 68 75 73 2c 20 60 6d 61 6b 65 27 20 77 69 6c 6c 20 6e 6f 74 20 ┆`foo.c'. Thus, `make' will not ┆ 0x0ee0…0f00 65 76 65 6e 20 63 6f 6e 73 69 64 65 72 20 74 72 79 69 6e 67 20 74 6f 20 6d 61 6b 65 20 60 66 6f ┆even consider trying to make `fo┆ 0x0f00…0f20 6f 2e 63 27 0a 61 73 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 20 66 72 6f 6d 20 ┆o.c' as an executable file from ┆ 0x0f20…0f40 60 66 6f 6f 2e 63 2e 6f 27 2c 20 60 66 6f 6f 2e 63 2e 63 27 2c 20 60 66 6f 6f 2e 63 2e 70 27 2c ┆`foo.c.o', `foo.c.c', `foo.c.p',┆ 0x0f40…0f60 20 65 74 63 2e 0a 0a 54 68 65 20 6d 6f 74 69 76 61 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 20 63 ┆ etc. The motivation for this c┆ 0x0f60…0f80 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 74 68 61 74 20 6e 6f 6e 74 65 72 6d 69 6e 61 6c 20 6d 61 ┆onstraint is that nonterminal ma┆ 0x0f80…0fa0 74 63 68 2d 61 6e 79 74 68 69 6e 67 0a 72 75 6c 65 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 ┆tch-anything rules are used for ┆ 0x0fa0…0fc0 6d 61 6b 69 6e 67 20 66 69 6c 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 73 70 65 63 69 66 69 63 ┆making files containing specific┆ 0x0fc0…0fe0 20 74 79 70 65 73 20 6f 66 20 64 61 74 61 0a 28 73 75 63 68 20 61 73 20 65 78 65 63 75 74 61 62 ┆ types of data (such as executab┆ 0x0fe0…1000 6c 65 20 66 69 6c 65 73 29 20 61 6e 64 20 61 20 66 69 6c 65 20 6e 61 6d 65 20 77 69 74 68 20 61 ┆le files) and a file name with a┆ 0x1000…1020 20 72 65 63 6f 67 6e 69 7a 65 64 20 73 75 66 66 69 78 0a 69 6e 64 69 63 61 74 65 73 20 73 6f 6d ┆ recognized suffix indicates som┆ 0x1020…1040 65 20 6f 74 68 65 72 20 73 70 65 63 69 66 69 63 20 74 79 70 65 20 6f 66 20 64 61 74 61 20 28 73 ┆e other specific type of data (s┆ 0x1040…1060 75 63 68 20 61 73 20 61 20 43 20 73 6f 75 72 63 65 20 66 69 6c 65 29 2e 0a 0a 53 70 65 63 69 61 ┆uch as a C source file). Specia┆ 0x1060…1080 6c 20 62 75 69 6c 74 2d 69 6e 20 64 75 6d 6d 79 20 70 61 74 74 65 72 6e 20 72 75 6c 65 73 20 61 ┆l built-in dummy pattern rules a┆ 0x1080…10a0 72 65 20 70 72 6f 76 69 64 65 64 20 73 6f 6c 65 6c 79 20 74 6f 20 72 65 63 6f 67 6e 69 7a 65 0a ┆re provided solely to recognize ┆ 0x10a0…10c0 63 65 72 74 61 69 6e 20 66 69 6c 65 20 6e 61 6d 65 73 20 73 6f 20 74 68 61 74 20 6e 6f 6e 74 65 ┆certain file names so that nonte┆ 0x10c0…10e0 72 6d 69 6e 61 6c 20 6d 61 74 63 68 2d 61 6e 79 74 68 69 6e 67 20 72 75 6c 65 73 20 77 6f 6e 27 ┆rminal match-anything rules won'┆ 0x10e0…1100 74 20 62 65 0a 63 6f 6e 73 69 64 65 72 65 64 2e 20 20 54 68 65 73 65 20 64 75 6d 6d 79 20 72 75 ┆t be considered. These dummy ru┆ 0x1100…1120 6c 65 73 20 68 61 76 65 20 6e 6f 20 64 65 70 65 6e 64 65 6e 63 69 65 73 20 61 6e 64 20 6e 6f 20 ┆les have no dependencies and no ┆ 0x1120…1140 63 6f 6d 6d 61 6e 64 73 2c 0a 61 6e 64 20 74 68 65 79 20 61 72 65 20 69 67 6e 6f 72 65 64 20 66 ┆commands, and they are ignored f┆ 0x1140…1160 6f 72 20 61 6c 6c 20 6f 74 68 65 72 20 70 75 72 70 6f 73 65 73 2e 20 20 46 6f 72 20 65 78 61 6d ┆or all other purposes. For exam┆ 0x1160…1180 70 6c 65 2c 20 74 68 65 0a 62 75 69 6c 74 2d 69 6e 20 69 6d 70 6c 69 63 69 74 20 72 75 6c 65 0a ┆ple, the built-in implicit rule ┆ 0x1180…11a0 0a 20 20 20 20 20 25 2e 70 20 3a 0a 0a 65 78 69 73 74 73 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 ┆ %.p : exists to make sure┆ 0x11a0…11c0 20 74 68 61 74 20 50 61 73 63 61 6c 20 73 6f 75 72 63 65 20 66 69 6c 65 73 20 73 75 63 68 20 61 ┆ that Pascal source files such a┆ 0x11c0…11e0 73 20 60 66 6f 6f 2e 70 27 20 6d 61 74 63 68 20 61 0a 73 70 65 63 69 66 69 63 20 74 61 72 67 65 ┆s `foo.p' match a specific targe┆ 0x11e0…1200 74 20 70 61 74 74 65 72 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 70 72 65 76 65 6e 74 20 74 69 ┆t pattern and thereby prevent ti┆ 0x1200…1220 6d 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 77 61 73 74 65 64 0a 6c 6f 6f 6b 69 6e 67 20 66 6f 72 ┆me from being wasted looking for┆ 0x1220…1240 20 60 66 6f 6f 2e 70 2e 6f 27 20 6f 72 20 60 66 6f 6f 2e 70 2e 63 27 2e 0a 0a 44 75 6d 6d 79 20 ┆ `foo.p.o' or `foo.p.c'. Dummy ┆ 0x1240…1260 70 61 74 74 65 72 6e 20 72 75 6c 65 73 20 73 75 63 68 20 61 73 20 74 68 65 20 6f 6e 65 20 66 6f ┆pattern rules such as the one fo┆ 0x1260…1280 72 20 60 25 2e 70 27 20 61 72 65 20 6d 61 64 65 20 66 6f 72 20 65 76 65 72 79 0a 73 75 66 66 69 ┆r `%.p' are made for every suffi┆ 0x1280…12a0 78 20 6c 69 73 74 65 64 20 61 73 20 76 61 6c 69 64 20 66 6f 72 20 75 73 65 20 69 6e 20 73 75 66 ┆x listed as valid for use in suf┆ 0x12a0…12c0 66 69 78 20 72 75 6c 65 73 2e 20 20 2a 4e 6f 74 65 20 53 75 66 66 69 78 20 52 75 6c 65 73 3a 3a ┆fix rules. *Note Suffix Rules::┆ 0x12c0…12e0 2e 0a 0a 0a 1f 0a 46 69 6c 65 3a 20 6d 61 6b 65 2d 69 6e 66 6f 2c 20 20 4e 6f 64 65 3a 20 43 61 ┆. File: make-info, Node: Ca┆ 0x12e0…1300 6e 63 65 6c 69 6e 67 20 52 75 6c 65 73 2c 20 20 50 72 65 76 3a 20 4d 61 74 63 68 2d 41 6e 79 74 ┆nceling Rules, Prev: Match-Anyt┆ 0x1300…1320 68 69 6e 67 20 52 75 6c 65 73 2c 20 20 55 70 3a 20 50 61 74 74 65 72 6e 20 52 75 6c 65 73 0a 0a ┆hing Rules, Up: Pattern Rules ┆ 0x1320…1340 43 61 6e 63 65 6c 69 6e 67 20 49 6d 70 6c 69 63 69 74 20 52 75 6c 65 73 0a 2d 2d 2d 2d 2d 2d 2d ┆Canceling Implicit Rules -------┆ 0x1340…1360 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 59 6f 75 20 63 61 6e 20 6f 76 65 72 72 ┆----------------- You can overr┆ 0x1360…1380 69 64 65 20 61 20 62 75 69 6c 74 2d 69 6e 20 69 6d 70 6c 69 63 69 74 20 72 75 6c 65 20 62 79 20 ┆ide a built-in implicit rule by ┆ 0x1380…13a0 64 65 66 69 6e 69 6e 67 20 61 20 6e 65 77 20 70 61 74 74 65 72 6e 0a 72 75 6c 65 20 77 69 74 68 ┆defining a new pattern rule with┆ 0x13a0…13c0 20 74 68 65 20 73 61 6d 65 20 74 61 72 67 65 74 20 61 6e 64 20 64 65 70 65 6e 64 65 6e 63 69 65 ┆ the same target and dependencie┆ 0x13c0…13e0 73 2c 20 62 75 74 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6d 6d 61 6e 64 73 2e 20 0a 57 68 65 6e ┆s, but different commands. When┆ 0x13e0…1400 20 74 68 65 20 6e 65 77 20 72 75 6c 65 20 69 73 20 64 65 66 69 6e 65 64 2c 20 74 68 65 20 62 75 ┆ the new rule is defined, the bu┆ 0x1400…1420 69 6c 74 2d 69 6e 20 6f 6e 65 20 69 73 20 72 65 70 6c 61 63 65 64 2e 20 20 54 68 65 20 6e 65 77 ┆ilt-in one is replaced. The new┆ 0x1420…1440 0a 72 75 6c 65 27 73 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 20 73 65 71 75 65 6e 63 65 ┆ rule's position in the sequence┆ 0x1440…1460 20 6f 66 20 69 6d 70 6c 69 63 69 74 20 72 75 6c 65 73 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 ┆ of implicit rules is determined┆ 0x1460…1480 20 62 79 0a 77 68 65 72 65 20 79 6f 75 20 77 72 69 74 65 20 74 68 65 20 6e 65 77 20 72 75 6c 65 ┆ by where you write the new rule┆ 0x1480…14a0 2e 0a 0a 59 6f 75 20 63 61 6e 20 63 61 6e 63 65 6c 20 61 20 62 75 69 6c 74 2d 69 6e 20 69 6d 70 ┆. You can cancel a built-in imp┆ 0x14a0…14c0 6c 69 63 69 74 20 72 75 6c 65 20 62 79 20 64 65 66 69 6e 69 6e 67 20 61 20 70 61 74 74 65 72 6e ┆licit rule by defining a pattern┆ 0x14c0…14e0 20 72 75 6c 65 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 74 61 72 67 65 74 20 61 6e 64 20 64 ┆ rule with the same target and d┆ 0x14e0…1500 65 70 65 6e 64 65 6e 63 69 65 73 2c 20 62 75 74 20 6e 6f 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 46 ┆ependencies, but no commands. F┆ 0x1500…1520 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 77 6f 75 6c 64 20 ┆or example, the following would ┆ 0x1520…1540 63 61 6e 63 65 6c 20 74 68 65 20 72 75 6c 65 20 74 68 61 74 20 72 75 6e 73 20 74 68 65 20 61 73 ┆cancel the rule that runs the as┆ 0x1540…1560 73 65 6d 62 6c 65 72 3a 0a 0a 20 20 20 20 20 25 2e 6f 20 3a 20 25 2e 73 0a 0a 0a 1f 0a 46 69 6c ┆sembler: %.o : %.s Fil┆ 0x1560…1580 65 3a 20 6d 61 6b 65 2d 69 6e 66 6f 2c 20 20 4e 6f 64 65 3a 20 4c 61 73 74 20 52 65 73 6f 72 74 ┆e: make-info, Node: Last Resort┆ 0x1580…15a0 2c 20 20 4e 65 78 74 3a 20 53 75 66 66 69 78 20 52 75 6c 65 73 2c 20 20 50 72 65 76 3a 20 50 61 ┆, Next: Suffix Rules, Prev: Pa┆ 0x15a0…15c0 74 74 65 72 6e 20 52 75 6c 65 73 2c 20 20 55 70 3a 20 49 6d 70 6c 69 63 69 74 0a 0a 44 65 66 69 ┆ttern Rules, Up: Implicit Defi┆ 0x15c0…15e0 6e 69 6e 67 20 4c 61 73 74 2d 52 65 73 6f 72 74 20 44 65 66 61 75 6c 74 20 52 75 6c 65 73 0a 3d ┆ning Last-Resort Default Rules =┆ 0x15e0…1600 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ┆================================┆ 0x1600…1620 3d 0a 0a 59 6f 75 20 63 61 6e 20 64 65 66 69 6e 65 20 61 20 6c 61 73 74 2d 72 65 73 6f 72 74 20 ┆= You can define a last-resort ┆ 0x1620…1640 69 6d 70 6c 69 63 69 74 20 72 75 6c 65 20 62 79 20 77 72 69 74 69 6e 67 20 61 20 72 75 6c 65 20 ┆implicit rule by writing a rule ┆ 0x1640…1660 66 6f 72 20 74 68 65 0a 74 61 72 67 65 74 20 60 2e 44 45 46 41 55 4c 54 27 2e 20 20 53 75 63 68 ┆for the target `.DEFAULT'. Such┆ 0x1660…1680 20 61 20 72 75 6c 65 27 73 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 ┆ a rule's commands are used for ┆ 0x1680…16a0 61 6c 6c 20 74 61 72 67 65 74 73 0a 61 6e 64 20 64 65 70 65 6e 64 65 6e 63 69 65 73 20 74 68 61 ┆all targets and dependencies tha┆ 0x16a0…16c0 74 20 68 61 76 65 20 6e 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 66 20 74 68 65 69 72 20 6f 77 6e 20 ┆t have no commands of their own ┆ 0x16c0…16e0 61 6e 64 20 66 6f 72 20 77 68 69 63 68 20 6e 6f 0a 6f 74 68 65 72 20 69 6d 70 6c 69 63 69 74 20 ┆and for which no other implicit ┆ 0x16e0…1700 72 75 6c 65 20 61 70 70 6c 69 65 73 2e 20 20 4e 61 74 75 72 61 6c 6c 79 2c 20 74 68 65 72 65 20 ┆rule applies. Naturally, there ┆ 0x1700…1720 69 73 20 6e 6f 20 60 2e 44 45 46 41 55 4c 54 27 20 72 75 6c 65 0a 75 6e 6c 65 73 73 20 79 6f 75 ┆is no `.DEFAULT' rule unless you┆ 0x1720…1740 20 77 72 69 74 65 20 6f 6e 65 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 77 68 65 6e 20 74 ┆ write one. For example, when t┆ 0x1740…1760 65 73 74 69 6e 67 20 61 20 6d 61 6b 65 66 69 6c 65 2c 20 79 6f 75 20 6d 69 67 68 74 20 6e 6f 74 ┆esting a makefile, you might not┆ 0x1760…1780 20 63 61 72 65 20 69 66 20 74 68 65 0a 73 6f 75 72 63 65 20 66 69 6c 65 73 20 63 6f 6e 74 61 69 ┆ care if the source files contai┆ 0x1780…17a0 6e 20 72 65 61 6c 20 64 61 74 61 2c 20 6f 6e 6c 79 20 74 68 61 74 20 74 68 65 79 20 65 78 69 73 ┆n real data, only that they exis┆ 0x17a0…17c0 74 2e 20 20 54 68 65 6e 20 79 6f 75 20 6d 69 67 68 74 0a 64 6f 20 74 68 69 73 3a 0a 0a 20 20 20 ┆t. Then you might do this: ┆ 0x17c0…17e0 20 20 2e 44 45 46 41 55 4c 54 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 75 63 68 20 24 ┆ .DEFAULT: touch $┆ 0x17e0…1800 40 0a 0a 74 6f 20 63 61 75 73 65 20 61 6c 6c 20 74 68 65 20 73 6f 75 72 63 65 20 66 69 6c 65 73 ┆@ to cause all the source files┆ 0x1800…1820 20 6e 65 65 64 65 64 20 28 61 73 20 64 65 70 65 6e 64 65 6e 63 69 65 73 29 20 74 6f 20 62 65 20 ┆ needed (as dependencies) to be ┆ 0x1820…1840 63 72 65 61 74 65 64 0a 73 69 6c 65 6e 74 6c 79 2e 0a 0a 49 66 20 79 6f 75 20 67 69 76 65 20 60 ┆created silently. If you give `┆ 0x1840…1860 2e 44 45 46 41 55 4c 54 27 20 77 69 74 68 20 6e 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 72 20 64 65 ┆.DEFAULT' with no commands or de┆ 0x1860…1880 70 65 6e 64 65 6e 63 69 65 73 3a 0a 0a 20 20 20 20 20 2e 44 45 46 41 55 4c 54 3a 0a 0a 74 68 65 ┆pendencies: .DEFAULT: the┆ 0x1880…18a0 20 63 6f 6d 6d 61 6e 64 73 20 70 72 65 76 69 6f 75 73 6c 79 20 73 74 6f 72 65 64 20 66 6f 72 20 ┆ commands previously stored for ┆ 0x18a0…18c0 60 2e 44 45 46 41 55 4c 54 27 20 61 72 65 20 63 6c 65 61 72 65 64 2e 20 20 54 68 65 6e 0a 60 6d ┆`.DEFAULT' are cleared. Then `m┆ 0x18c0…18e0 61 6b 65 27 20 61 63 74 73 20 61 73 20 69 66 20 79 6f 75 20 68 61 64 20 6e 65 76 65 72 20 64 65 ┆ake' acts as if you had never de┆ 0x18e0…1900 66 69 6e 65 64 20 60 2e 44 45 46 41 55 4c 54 27 20 61 74 20 61 6c 6c 2e 0a 0a 49 66 20 79 6f 75 ┆fined `.DEFAULT' at all. If you┆ 0x1900…1920 20 77 61 6e 74 20 61 20 74 61 72 67 65 74 20 6e 6f 74 20 74 6f 20 67 65 74 20 74 68 65 20 63 6f ┆ want a target not to get the co┆ […truncated at 200 lines…]