\chapentry {Overview of \code {make}}{1}{1}
\chapentry {Problems and Bugs}{2}{3}
\chapentry {Simple Example of \code {make}}{3}{5}
\secentry {How \code {make} Processes This Makefile}{3}{1}{6}
\secentry {Variables Make Makefiles Simpler}{3}{2}{7}
\secentry {Letting \code {make} Deduce the Commands}{3}{3}{7}
\secentry {Another Style of Makefile}{3}{4}{8}
\secentry {Rules for Cleaning the Directory}{3}{5}{9}
\chapentry {Writing Makefiles}{4}{11}
\secentry {What Makefiles Contain}{4}{1}{11}
\secentry {What Name to Give Your Makefile}{4}{2}{11}
\secentry {Including Other Makefiles}{4}{3}{12}
\secentry {The Variable \code {MAKEFILES}}{4}{4}{13}
\secentry {How Makefiles Are Remade}{4}{5}{13}
\secentry {Overriding Part of One Makefile with Another Makefile}{4}{6}{15}
\chapentry {Writing Rules}{5}{17}
\secentry {Rule Syntax}{5}{1}{17}
\secentry {Using Wildcards Characters in File Names}{5}{2}{18}
\subsecentry {Wildcard Examples}{5}{2}{1}{19}
\subsecentry {Pitfalls of Using Wildcards}{5}{2}{2}{19}
\subsecentry {The Function \code {wildcard}}{5}{2}{3}{20}
\secentry {Searching Directories for Dependencies}{5}{3}{21}
\subsecentry {\code {VPATH}: Search Path for All Dependencies}{5}{3}{1}{21}
\subsecentry {The \code {vpath} Directive}{5}{3}{2}{22}
\subsecentry {Writing Shell Commands with Directory Search}{5}{3}{3}{23}
\subsecentry {Directory Search and Implicit Rules}{5}{3}{4}{24}
\subsecentry {Directory Search for Link Libraries}{5}{3}{5}{24}
\secentry {Phony Targets}{5}{4}{25}
\secentry {Rules without Commands or Dependencies}{5}{5}{26}
\secentry {Empty Target Files to Record Events}{5}{6}{27}
\secentry {Special Built-in Target Names}{5}{7}{27}
\secentry {Multiple Targets in a Rule}{5}{8}{28}
\secentry {Static Pattern Rules}{5}{9}{29}
\subsecentry {Syntax of Static Pattern Rules}{5}{9}{1}{29}
\subsecentry {Static Pattern Rules versus Implicit Rules}{5}{9}{2}{30}
\secentry {Multiple Rules for One Target}{5}{10}{31}
\secentry {Double-Colon Rules}{5}{11}{32}
\chapentry {Writing the Commands in Rules}{6}{35}
\secentry {Command Echoing}{6}{1}{35}
\secentry {Command Execution}{6}{2}{36}
\secentry {Parallel Execution}{6}{3}{36}
\secentry {Errors in Commands}{6}{4}{38}
\secentry {Interrupting or Killing \code {make}}{6}{5}{39}
\secentry {Recursive Use of \code {make}}{6}{6}{39}
\subsecentry {How the \code {MAKE} Variable Works}{6}{6}{1}{40}
\subsecentry {Communicating Variables to a Sub-\code {make}}{6}{6}{2}{41}
\subsecentry {Communicating Options to a Sub-\code {make}}{6}{6}{3}{42}
\subsecentry {The \samp {-w} Option}{6}{6}{4}{43}
\secentry {Defining Canned Command Sequences}{6}{7}{43}
\secentry {Defining Empty Commands}{6}{8}{45}
\chapentry {How to Use Variables}{7}{47}
\secentry {Basics of Variable References}{7}{1}{47}
\secentry {The Two Flavors of Variables}{7}{2}{48}
\secentry {Advanced Features for Reference to Variables}{7}{3}{50}
\subsecentry {Substitution References}{7}{3}{1}{50}
\subsecentry {Computed Variable Names}{7}{3}{2}{51}
\secentry {How Variables Get Their Values}{7}{4}{54}
\secentry {Setting Variables}{7}{5}{54}
\secentry {The \code {override} Directive}{7}{6}{55}
\secentry {Defining Variables Verbatim}{7}{7}{55}
\secentry {Variables from the Environment}{7}{8}{56}
\chapentry {Conditional Parts of Makefiles}{8}{59}
\secentry {Example of a Conditional}{8}{1}{59}
\secentry {Syntax of Conditionals}{8}{2}{60}
\secentry {Conditionals that Test Flags}{8}{3}{62}
\chapentry {Functions for Transforming Text}{9}{65}
\secentry {Function Call Syntax}{9}{1}{65}
\secentry {Functions for String Substitution and Analysis}{9}{2}{66}
\secentry {Functions for File Names}{9}{3}{68}
\secentry {The \code {foreach} Function}{9}{4}{71}
\secentry {The \code {origin} Function}{9}{5}{72}
\secentry {The \code {shell} Function}{9}{6}{74}
\chapentry {How to Run \code {make}}{10}{77}
\secentry {Arguments to Specify the Makefile}{10}{1}{77}
\secentry {Arguments to Specify the Goals}{10}{2}{77}
\secentry {Instead of Executing the Commands}{10}{3}{79}
\secentry {Avoiding Recompilation of Some Files}{10}{4}{80}
\secentry {Overriding Variables}{10}{5}{81}
\secentry {Testing the Compilation of a Program}{10}{6}{82}
\secentry {Summary of Options}{10}{7}{82}
\chapentry {Using Implicit Rules}{11}{85}
\secentry {Using Implicit Rules}{11}{1}{85}
\secentry {Catalogue of Implicit Rules}{11}{2}{86}
\secentry {Variables Used by Implicit Rules}{11}{3}{89}
\secentry {Chains of Implicit Rules}{11}{4}{91}
\secentry {Defining and Redefining Pattern Rules}{11}{5}{92}
\subsecentry {Introduction to Pattern Rules}{11}{5}{1}{92}
\subsecentry {Pattern Rule Examples}{11}{5}{2}{94}
\subsecentry {Automatic Variables}{11}{5}{3}{95}
\subsecentry {How Patterns Match}{11}{5}{4}{96}
\subsecentry {Match-Anything Pattern Rules}{11}{5}{5}{97}
\subsecentry {Canceling Implicit Rules}{11}{5}{6}{98}
\secentry {Defining Last-Resort Default Rules}{11}{6}{99}
\secentry {Old-Fashioned Suffix Rules}{11}{7}{100}
\secentry {Implicit Rule Search Algorithm}{11}{8}{101}
\chapentry {Using \code {make} to Update Archive Files}{12}{105}
\secentry {Archive Members as Targets}{12}{1}{105}
\secentry {Implicit Rule for Archive Member Targets}{12}{2}{105}
\subsecentry {Updating Archive Symbol Directories}{12}{2}{1}{106}
\chapentry {Features of GNU \code {make}}{13}{109}
\chapentry {Missing Features in GNU \code {make}}{14}{113}
\unnumbchapentry {Index of Concepts}{115}
\unnumbchapentry {Index of Functions, Variables, and Directives}{117}
