(Goals): Say that only first target in first rule is default goal.
[make.git] / make.texinfo
blob162df9377b7906cb1e817e6487ada415b4aef13b
1 \input texinfo                @c -*- Texinfo -*-
2 @c %**start of header 
3 @setfilename make.info
4 @settitle GNU @code{make}
5 @setchapternewpage odd
6 @c %**end of header
8 @c FSF publishers: format makebook.texi instead of using this file directly.
10 @set RCSID $Id: make.texinfo,v 2.140 1994/07/05 21:27:09 roland Exp $
11 @set EDITION 0.46
12 @set VERSION 3.72 Beta
13 @set UPDATED 5 July 1994
14 @set UPDATE-MONTH July 1994
16 @c finalout
18 @c ISPELL CHECK: done, 10 June 1993 --roland
20 @c Combine the variable and function indices:
21 @syncodeindex vr fn
22 @c Combine the program and concept indices:
23 @syncodeindex pg cp
25 @ifinfo
26 This file documents the GNU Make utility, which determines
27 automatically which pieces of a large program need to be recompiled,
28 and issues the commands to recompile them.
30 This is Edition @value{EDITION}, last updated @value{UPDATED},
31 of @cite{The GNU Make Manual}, for @code{make}, Version @value{VERSION}.
33 Copyright (C) 1988, '89, '90, '91, '92, '93, '94 Free Software Foundation, Inc.
35 Permission is granted to make and distribute verbatim copies of
36 this manual provided the copyright notice and this permission notice
37 are preserved on all copies.
39 @ignore
40 Permission is granted to process this file through TeX and print the
41 results, provided the printed document carries copying permission
42 notice identical to this one except for the removal of this paragraph
43 (this paragraph not being relevant to the printed manual).
45 @end ignore
46 Permission is granted to copy and distribute modified versions of this
47 manual under the conditions for verbatim copying, provided that the entire
48 resulting derived work is distributed under the terms of a permission
49 notice identical to this one.
51 Permission is granted to copy and distribute translations of this manual
52 into another language, under the above conditions for modified versions,
53 except that this permission notice may be stated in a translation approved
54 by the Free Software Foundation.
55 @end ifinfo
57 @iftex
58 @shorttitlepage GNU Make
59 @end iftex
60 @titlepage
61 @title GNU Make
62 @subtitle A Program for Directing Recompilation
63 @subtitle Edition @value{EDITION}, for @code{make} Version @value{VERSION}.
64 @subtitle @value{UPDATE-MONTH}
65 @author Richard M. Stallman and Roland McGrath
66 @page
67 @vskip 0pt plus 1filll
68 Copyright @copyright{} 1988, '89, '90, '91, '92, '93, '94 Free Software Foundation, Inc.
69 @sp 2
70 Published by the Free Software Foundation @*
71 675 Massachusetts Avenue, @*
72 Cambridge, MA 02139 USA @*
73 Printed copies are available for $20 each. @*
74 ISBN 1-882114-16-7 @*
76 Permission is granted to make and distribute verbatim copies of
77 this manual provided the copyright notice and this permission notice
78 are preserved on all copies.
80 Permission is granted to copy and distribute modified versions of this
81 manual under the conditions for verbatim copying, provided that the entire
82 resulting derived work is distributed under the terms of a permission
83 notice identical to this one.
85 Permission is granted to copy and distribute translations of this manual
86 into another language, under the above conditions for modified versions,
87 except that this permission notice may be stated in a translation approved
88 by the Free Software Foundation.
89 @sp 2
90 Cover art by Etienne Suvasa.
91 @end titlepage
92 @page
94 @ifinfo
95 @node Top, Overview, (dir), (dir)
96 @top Make
98 The GNU @code{make} utility automatically determines which pieces of a
99 large program need to be recompiled, and issues the commands to
100 recompile them.@refill
102 This is Edition @value{EDITION} of the @cite{GNU Make Manual},
103 last updated @value{UPDATED}
104 for @code{make} Version @value{VERSION}.@refill
106 This manual describes @code{make} and contains the following chapters:@refill
107 @end ifinfo
109 @menu
110 * Overview::                    Overview of @code{make}.
111 * Introduction::                An introduction to @code{make}.
112 * Makefiles::                   Makefiles tell @code{make} what to do.
113 * Rules::                       Rules describe when a file must be remade.
114 * Commands::                    Commands say how to remake a file.
115 * Using Variables::             You can use variables to avoid repetition.
116 * Conditionals::                Use or ignore parts of the makefile based
117                                  on the values of variables.
118 * Functions::                   Many powerful ways to manipulate text.
119 * make Invocation: Running.     How to invoke @code{make} on the command line.
120 * Implicit Rules::              Use implicit rules to treat many files alike,
121                                  based on their file names.
122 * Archives::                    How @code{make} can update library archives.
123 * Features::                    Features GNU @code{make} has over other @code{make}s.
124 * Missing::                     What GNU @code{make} lacks from other @code{make}s.
125 * Makefile Conventions::        Conventions for makefiles in GNU programs.
126 * Quick Reference::             A quick reference for experienced users.
127 * Complex Makefile::            A real example of a straightforward,
128                                  but nontrivial, makefile.
129 * Concept Index::               Index of Concepts
130 * Name Index::                  Index of Functions, Variables, & Directives
132  --- The Detailed Node Listing ---
134 Overview of @code{make}
136 * Preparing::                   Preparing and Running Make
137 * Reading::                     On Reading this Text
138 * Bugs::                        Problems and Bugs
140 An Introduction to Makefiles
142 * Rule Introduction::           What a rule looks like.
143 * Simple Makefile::             A Simple Makefile
144 * How Make Works::              How @code{make} Processes This Makefile
145 * Variables Simplify::          Variables Make Makefiles Simpler
146 * make Deduces::                Letting @code{make} Deduce the Commands
147 * Combine By Dependency::       Another Style of Makefile
148 * Cleanup::                     Rules for Cleaning the Directory
150 Writing Makefiles
152 * Makefile Contents::           What makefiles contain.
153 * Makefile Names::              How to name your makefile.
154 * Include::                     How one makefile can use another makefile.
155 * MAKEFILES Variable::          The environment can specify extra makefiles.
156 * Remaking Makefiles::          How makefiles get remade.
157 * Overriding Makefiles::        How to override part of one makefile
158                                  with another makefile.
160 Writing Rules
162 * Rule Example::                An example explained.
163 * Rule Syntax::                 General syntax explained.
164 * Wildcards::                   Using wildcard characters such as `*'.
165 * Directory Search::            Searching other directories for source files.
166 * Phony Targets::               Using a target that is not a real file's name.
167 * Force Targets::               You can use a target without commands
168                                   or dependencies to mark other 
169                                   targets as phony.
170 * Empty Targets::               When only the date matters and the
171                                   files are empty.
172 * Special Targets::             Targets with special built-in meanings.
173 * Multiple Targets::            When to make use of several targets in a rule.
174 * Multiple Rules::              How to use several rules with the same target.
175 * Static Pattern::              Static pattern rules apply to multiple targets
176                                   and can vary the dependencies according to 
177                                   the target name.
178 * Double-Colon::                How to use a special kind of rule to allow
179                                   several independent rules for one target.
180 * Automatic Dependencies::      How to automatically generate rules giving
181                                  dependencies from the source files themselves.
183 Using Wildcard Characters in File Names
185 * Wildcard Examples::           Several examples
186 * Wildcard Pitfall::            Problems to avoid.
187 * Wildcard Function::           How to cause wildcard expansion where
188                                   it does not normally take place.
190 Searching Directories for Dependencies
192 * General Search::              Specifying a search path that applies 
193                                   to every dependency.
194 * Selective Search::            Specifying a search path 
195                                   for a specified class of names.
196 * Commands/Search::             How to write shell commands that work together
197                                   with search paths.
198 * Implicit/Search::             How search paths affect implicit rules.
199 * Libraries/Search::            Directory search for link libraries.
201 Static Pattern Rules
203 * Static Usage::                The syntax of static pattern rules.
204 * Static versus Implicit::      When are they better than implicit rules?
206 Writing the Commands in Rules
208 * Echoing::                     How to control when commands are echoed.
209 * Execution::                   How commands are executed.
210 * Parallel::                    How commands can be executed in parallel.
211 * Errors::                      What happens after a command execution error. 
212 * Interrupts::                  What happens when a command is interrupted.
213 * Recursion::                   Invoking @code{make} from makefiles.
214 * Sequences::                   Defining canned sequences of commands.
215 * Empty Commands::              Defining useful, do-nothing commands.
217 Recursive Use of @code{make}
219 * MAKE Variable::               The special effects of using @samp{$(MAKE)}.
220 * Variables/Recursion::         How to communicate variables to a sub-@code{make}.
221 * Options/Recursion::           How to communicate options to a sub-@code{make}.
222 * -w Option::                   How the @samp{-w} or @samp{--print-directory} option
223                                  helps debug use of recursive @code{make} commands.
225 How to Use Variables
227 * Reference::                   How to use the value of a variable.
228 * Flavors::                     Variables come in two flavors.
229 * Advanced::                    Advanced features for referencing a variable.
230 * Values::                      All the ways variables get their values.
231 * Setting::                     How to set a variable in the makefile.
232 * Appending::                   How to append more text to the old value
233                                   of a variable.
234 * Override Directive::          How to set a variable in the makefile even if
235                                   the user has set it with a command argument.
236 * Defining::                    An alternate way to set a variable 
237                                   to a verbatim string.
238 * Environment::                 Variable values can come from the environment.
240 Advanced Features for Reference to Variables
242 * Substitution Refs::           Referencing a variable with 
243                                   substitutions on the value.
244 * Computed Names::              Computing the name of the variable to refer to.
246 Conditional Parts of Makefiles
248 * Conditional Example::         Example of a conditional
249 * Conditional Syntax::          The syntax of conditionals.
250 * Testing Flags::               Conditionals that test flags.
252 Functions for Transforming Text
254 * Syntax of Functions::         How to write a function call.
255 * Text Functions::              General-purpose text manipulation functions.
256 * Filename Functions::          Functions for manipulating file names.
257 * Foreach Function::            Repeat some text with controlled variation.
258 * Origin Function::             Find where a variable got its value.
259 * Shell Function::              Substitute the output of a shell command.
261 How to Run @code{make}
263 * Makefile Arguments::          How to specify which makefile to use.
264 * Goals::                       How to use goal arguments to specify which 
265                                   parts of the makefile to use.
266 * Instead of Execution::        How to use mode flags to specify what
267                                   kind of thing to do with the commands 
268                                   in the makefile other than simply 
269                                   execute them.
270 * Avoiding Compilation::        How to avoid recompiling certain files.
271 * Overriding::                  How to override a variable to specify 
272                                   an alternate compiler and other things.
273 * Testing::                     How to proceed past some errors, to 
274                                   test compilation.
275 * Options Summary::             Summary of Options
277 Using Implicit Rules
279 * Using Implicit::              How to use an existing implicit rule
280                                   to get the commands for updating a file.
281 * Catalogue of Rules::          A list of built-in implicit rules.
282 * Implicit Variables::          How to change what predefined rules do.
283 * Chained Rules::               How to use a chain of implicit rules.
284 * Pattern Rules::               How to define new implicit rules.
285 * Last Resort::                 How to defining commands for rules 
286                                   which cannot find any.
287 * Suffix Rules::                The old-fashioned style of implicit rule.
288 * Search Algorithm::            The precise algorithm for applying 
289                                   implicit rules.
291 Defining and Redefining Pattern Rules
293 * Pattern Intro::               An introduction to pattern rules.
294 * Pattern Examples::            Examples of pattern rules.
295 * Automatic::                   How to use automatic variables in the
296                                   commands of implicit rules.
297 * Pattern Match::               How patterns match.
298 * Match-Anything Rules::        Precautions you should take prior to
299                                   defining rules that can match any
300                                   target file whatever.
301 * Canceling Rules::             How to override or cancel built-in rules.
303 Using @code{make} to Update Archive Files
305 * Archive Members::             Archive members as targets.
306 * Archive Update::              The implicit rule for archive member targets.
307 * Archive Suffix Rules::        You can write a special kind of suffix rule
308                                   for updating archives.
310 Implicit Rule for Archive Member Targets
312 * Archive Symbols::             How to update archive symbol directories.
313 @end menu
315 @node Overview, Introduction, Top, Top
316 @comment  node-name,  next,  previous,  up
317 @chapter Overview of @code{make}
319 The @code{make} utility automatically determines which pieces of a large
320 program need to be recompiled, and issues commands to recompile them.
321 This manual describes GNU @code{make}, which was implemented by Richard
322 Stallman and Roland McGrath.  GNU @code{make} conforms to section 6.2 of
323 @cite{IEEE Standard 1003.2-1992} (POSIX.2).
324 @cindex POSIX
325 @cindex IEEE Standard 1003.2
326 @cindex standards conformance
328 Our examples show C programs, since they are most common, but you can use
329 @code{make} with any programming language whose compiler can be run with a
330 shell command.  Indeed, @code{make} is not limited to programs.  You can
331 use it to describe any task where some files must be updated automatically
332 from others whenever the others change.
334 @menu
335 * Preparing::                   Preparing and Running Make
336 * Reading::                     On Reading this Text
337 * Bugs::                        Problems and Bugs
338 @end menu
340 @node Preparing, Reading,  , Overview
341 @ifinfo
342 @heading Preparing and Running Make
343 @end ifinfo
345 To prepare to use @code{make}, you must write a file called
346 the @dfn{makefile} that describes the relationships among files
347 in your program and provides commands for updating each file.
348 In a program, typically, the executable file is updated from object
349 files, which are in turn made by compiling source files.@refill
351 Once a suitable makefile exists, each time you change some source files,
352 this simple shell command:
354 @example
355 make
356 @end example
358 @noindent
359 suffices to perform all necessary recompilations.  The @code{make} program
360 uses the makefile data base and the last-modification times of the files to
361 decide which of the files need to be updated.  For each of those files, it
362 issues the commands recorded in the data base.
364 You can provide command line arguments to @code{make} to control which
365 files should be recompiled, or how.  @xref{Running, ,How to Run
366 @code{make}}.
368 @node Reading, Bugs, Preparing, Overview
369 @section How to Read This Manual
371 If you are new to @code{make}, or are looking for a general
372 introduction, read the first few sections of each chapter, skipping the
373 later sections.  In each chapter, the first few sections contain
374 introductory or general information and the later sections contain
375 specialized or technical information.
376 @ifinfo        
377 The exception is the second chapter, @ref{Introduction, ,An
378 Introduction to Makefiles}, all of which is introductory.
379 @end ifinfo
380 @iftex 
381 The exception is @ref{Introduction, ,An Introduction to Makefiles},
382 all of which is introductory.
383 @end iftex
385 If you are familiar with other @code{make} programs, see @ref{Features,
386 ,Features of GNU @code{make}}, which lists the enhancements GNU
387 @code{make} has, and @ref{Missing, ,Incompatibilities and Missing
388 Features}, which explains the few things GNU @code{make} lacks that
389 others have.
391 For a quick summary, see @ref{Options Summary}, @ref{Quick Reference},
392 and @ref{Special Targets}.
394 @node Bugs,  , Reading, Overview
395 @section Problems and Bugs
396 @cindex reporting bugs
397 @cindex bugs, reporting
398 @cindex problems and bugs, reporting
400 If you have problems with GNU @code{make} or think you've found a bug,
401 please report it to the developers; we cannot promise to do anything but
402 we might well want to fix it.
404 Before reporting a bug, make sure you've actually found a real bug.
405 Carefully reread the documentation and see if it really says you can do
406 what you're trying to do.  If it's not clear whether you should be able
407 to do something or not, report that too; it's a bug in the
408 documentation!
410 Before reporting a bug or trying to fix it yourself, try to isolate it
411 to the smallest possible makefile that reproduces the problem.  Then
412 send us the makefile and the exact results @code{make} gave you.  Also
413 say what you expected to occur; this will help us decide whether the
414 problem was really in the documentation.
416 Once you've got a precise problem, please send electronic mail either
417 through the Internet or via UUCP:
419 @example
420 @group
421 @r{Internet address:}
422     bug-gnu-utils@@prep.ai.mit.edu
424 @r{UUCP path:}
425     mit-eddie!prep.ai.mit.edu!bug-gnu-utils
426 @end group
427 @end example
429 @noindent
430 Please include the version number of @code{make} you are using.  You can
431 get this information with the command @samp{make --version}.
432 Be sure also to include the type of machine and operating system you are
433 using.  If possible, include the contents of the file @file{config.h}
434 that is generated by the configuration process.
436 Non-bug suggestions are always welcome as well.  If you have questions
437 about things that are unclear in the documentation or are just obscure
438 features, send a message to the bug reporting address.  We cannot
439 guarantee you'll get help with your problem, but many seasoned
440 @code{make} users read the mailing list and they will probably try to
441 help you out.  The maintainers sometimes answer such questions as well,
442 when time permits.
444 @node Introduction, Makefiles, Overview, Top
445 @comment  node-name,  next,  previous,  up
446 @chapter An Introduction to Makefiles
448 You need a file called a @dfn{makefile} to tell @code{make} what to do.
449 Most often, the makefile tells @code{make} how to compile and link a
450 program.
451 @cindex makefile
453 In this chapter, we will discuss a simple makefile that describes how to
454 compile and link a text editor which consists of eight C source files
455 and three header files.  The makefile can also tell @code{make} how to
456 run miscellaneous commands when explicitly asked (for example, to remove
457 certain files as a clean-up operation).  To see a more complex example
458 of a makefile, see @ref{Complex Makefile}.
460 When @code{make} recompiles the editor, each changed C source file
461 must be recompiled.  If a header file has changed, each C source file
462 that includes the header file must be recompiled to be safe.  Each
463 compilation produces an object file corresponding to the source file.
464 Finally, if any source file has been recompiled, all the object files,
465 whether newly made or saved from previous compilations, must be linked
466 together to produce the new executable editor.
467 @cindex recompilation
468 @cindex editor
470 @menu
471 * Rule Introduction::           What a rule looks like.
472 * Simple Makefile::             A Simple Makefile
473 * How Make Works::              How @code{make} Processes This Makefile
474 * Variables Simplify::          Variables Make Makefiles Simpler
475 * make Deduces::                Letting @code{make} Deduce the Commands
476 * Combine By Dependency::       Another Style of Makefile
477 * Cleanup::                     Rules for Cleaning the Directory
478 @end menu
480 @node Rule Introduction, Simple Makefile,  , Introduction
481 @comment  node-name,  next,  previous,  up
482 @section What a Rule Looks Like
483 @cindex rule, introduction to
484 @cindex makefile rule parts
485 @cindex parts of makefile rule
487 A simple makefile consists of ``rules'' with the following shape:
489 @cindex targets, introduction to
490 @cindex dependencies, introduction to
491 @cindex commands, introduction to
492 @example
493 @group
494 @var{target} @dots{} : @var{dependencies} @dots{}
495         @var{command}
496         @dots{}
497         @dots{}
498 @end group
499 @end example
501 A @dfn{target} is usually the name of a file that is generated by a
502 program; examples of targets are executable or object files.  A target
503 can also be the name of an action to carry out, such as @samp{clean}
504 (@pxref{Phony Targets}).
506 A @dfn{dependency} is a file that is used as input to create the
507 target.  A target often depends on several files.  
509 @cindex tabs in rules
510 A @dfn{command} is an action that @code{make} carries out.
511 A rule may have more than one command, each on its own line.
512 @strong{Please note:} you need to put a tab character at the beginning of
513 every command line!  This is an obscurity that catches the unwary.
515 Usually a command is in a rule with dependencies and serves to create a
516 target file if any of the dependencies change.  However, the rule that
517 specifies commands for the target need not have dependencies.  For
518 example, the rule containing the delete command associated with the
519 target @samp{clean} does not have dependencies.
521 A @dfn{rule}, then, explains how and when to remake certain files
522 which are the targets of the particular rule.  @code{make} carries out
523 the commands on the dependencies to create or update the target.  A
524 rule can also explain how and when to carry out an action.
525 @xref{Rules, , Writing Rules}.
527 A makefile may contain other text besides rules, but a simple makefile
528 need only contain rules.  Rules may look somewhat more complicated
529 than shown in this template, but all fit the pattern more or less.
531 @node Simple Makefile, How Make Works, Rule Introduction, Introduction
532 @section A Simple Makefile
533 @cindex simple makefile
534 @cindex makefile, simple
536 Here is a straightforward makefile that describes the way an
537 executable file called @code{edit} depends on eight object files
538 which, in turn, depend on eight C source and three header files.
540 In this example, all the C files include @file{defs.h}, but only those
541 defining editing commands include @file{command.h}, and only low
542 level files that change the editor buffer include @file{buffer.h}.
544 @example
545 @group
546 edit : main.o kbd.o command.o display.o \
547        insert.o search.o files.o utils.o
548         cc -o edit main.o kbd.o command.o display.o \
549                    insert.o search.o files.o utils.o
551 main.o : main.c defs.h
552         cc -c main.c
553 kbd.o : kbd.c defs.h command.h
554         cc -c kbd.c
555 command.o : command.c defs.h command.h
556         cc -c command.c
557 display.o : display.c defs.h buffer.h
558         cc -c display.c
559 insert.o : insert.c defs.h buffer.h
560         cc -c insert.c
561 search.o : search.c defs.h buffer.h
562         cc -c search.c
563 files.o : files.c defs.h buffer.h command.h
564         cc -c files.c
565 utils.o : utils.c defs.h
566         cc -c utils.c
567 clean :
568         rm edit main.o kbd.o command.o display.o \
569            insert.o search.o files.o utils.o
570 @end group
571 @end example
573 @noindent
574 We split each long line into two lines using backslash-newline; this is
575 like using one long line, but is easier to read.
576 @cindex continuation lines
577 @cindex @code{\} (backslash), for continuation lines
578 @cindex backslash (@code{\}), for continuation lines
579 @cindex quoting newline, in makefile
580 @cindex newline, quoting, in makefile
582 To use this makefile to create the executable file called @file{edit},
583 type:
585 @example
586 make
587 @end example
589 To use this makefile to delete the executable file and all the object
590 files from the directory, type:
592 @example
593 make clean
594 @end example
596 In the example makefile, the targets include the executable file
597 @samp{edit}, and the object files @samp{main.o} and @samp{kbd.o}.  The
598 dependencies are files such as @samp{main.c} and @samp{defs.h}.
599 In fact, each @samp{.o} file is both a target and a dependency.
600 Commands include @w{@samp{cc -c main.c}} and @w{@samp{cc -c kbd.c}}.
602 When a target is a file, it needs to be recompiled or relinked if any
603 of its dependencies change.  In addition, any dependencies that are
604 themselves automatically generated should be updated first.  In this
605 example, @file{edit} depends on each of the eight object files; the
606 object file @file{main.o} depends on the source file @file{main.c} and
607 on the header file @file{defs.h}.  
609 A shell command follows each line that contains a target and
610 dependencies.  These shell commands say how to update the target file.
611 A tab character must come at the beginning of every command line to
612 distinguish commands lines from other lines in the makefile.  (Bear in
613 mind that @code{make} does not know anything about how the commands
614 work.  It is up to you to supply commands that will update the target
615 file properly.  All @code{make} does is execute the commands in the rule
616 you have specified when the target file needs to be updated.)
617 @cindex shell command
619 The target @samp{clean} is not a file, but merely the name of an
620 action.  Since you 
621 normally
622 do not want to carry out the actions in this rule, @samp{clean} is not a dependency of any other rule.
623 Consequently, @code{make} never does anything with it unless you tell
624 it specifically.  Note that this rule not only is not a dependency, it
625 also does not have any dependencies, so the only purpose of the rule
626 is to run the specified commands.  Targets that do not refer to files
627 but are just actions are called @dfn{phony targets}.  @xref{Phony
628 Targets}, for information about this kind of target.  @xref{Errors, ,
629 Errors in Commands}, to see how to cause @code{make} to ignore errors
630 from @code{rm} or any other command.
631 @cindex @code{clean} target
632 @cindex @code{rm} (shell command)
634 @node How Make Works, Variables Simplify, Simple Makefile, Introduction
635 @comment  node-name,  next,  previous,  up
636 @section How @code{make} Processes a Makefile
637 @cindex processing a makefile
638 @cindex makefile, how @code{make} processes
640 By default, @code{make} starts with the first rule (not counting rules
641 whose target names start with @samp{.}).  This is called the
642 @dfn{default goal}.  (@dfn{Goals} are the targets that @code{make}
643 strives ultimately to update.  @xref{Goals, , Arguments to Specify the
644 Goals}.)
645 @cindex default goal
646 @cindex goal, default
647 @cindex goal
649 In the simple example of the previous section, the default goal is to
650 update the executable program @file{edit}; therefore, we put that rule
651 first.
653 Thus, when you give the command:
655 @example
656 make
657 @end example
659 @noindent
660 @code{make} reads the makefile in the current directory and begins by
661 processing the first rule.  In the example, this rule is for relinking
662 @file{edit}; but before @code{make} can fully process this rule, it
663 must process the rules for the files that @file{edit} depends on,
664 which in this case are the object files.  Each of these files is
665 processed according to its own rule.  These rules say to update each
666 @samp{.o} file by compiling its source file.  The recompilation must
667 be done if the source file, or any of the header files named as
668 dependencies, is more recent than the object file, or if the object
669 file does not exist.
671 The other rules are processed because their targets appear as
672 dependencies of the goal.  If some other rule is not depended on by the
673 goal (or anything it depends on, etc.), that rule is not processed,
674 unless you tell @code{make} to do so (with a command such as
675 @w{@code{make clean}}).
677 Before recompiling an object file, @code{make} considers updating its
678 dependencies, the source file and header files.  This makefile does not
679 specify anything to be done for them---the @samp{.c} and @samp{.h} files
680 are not the targets of any rules---so @code{make} does nothing for these
681 files.  But @code{make} would update automatically generated C programs,
682 such as those made by Bison or Yacc, by their own rules at this time.
684 After recompiling whichever object files need it, @code{make} decides
685 whether to relink @file{edit}.  This must be done if the file
686 @file{edit} does not exist, or if any of the object files are newer than
687 it.  If an object file was just recompiled, it is now newer than
688 @file{edit}, so @file{edit} is relinked.
689 @cindex relinking
691 Thus, if we change the file @file{insert.c} and run @code{make},
692 @code{make} will compile that file to update @file{insert.o}, and then
693 link @file{edit}.  If we change the file @file{command.h} and run
694 @code{make}, @code{make} will recompile the object files @file{kbd.o},
695 @file{command.o} and @file{files.o} and then link the file @file{edit}.
697 @node Variables Simplify, make Deduces, How Make Works, Introduction
698 @section Variables Make Makefiles Simpler
699 @cindex variables
700 @cindex simplifying with variables
702 In our example, we had to list all the object files twice in the rule for
703 @file{edit} (repeated here):
705 @example
706 @group
707 edit : main.o kbd.o command.o display.o \
708               insert.o search.o files.o utils.o
709         cc -o edit main.o kbd.o command.o display.o \
710                    insert.o search.o files.o utils.o
711 @end group
712 @end example
714 @cindex @code{objects}
715 Such duplication is error-prone; if a new object file is added to the
716 system, we might add it to one list and forget the other.  We can eliminate
717 the risk and simplify the makefile by using a variable.  @dfn{Variables}
718 allow a text string to be defined once and substituted in multiple places
719 later (@pxref{Using Variables, ,How to Use Variables}).
721 @cindex @code{OBJECTS}
722 @cindex @code{objs}
723 @cindex @code{OBJS}
724 @cindex @code{obj}
725 @cindex @code{OBJ}
726 It is standard practice for every makefile to have a variable named
727 @code{objects}, @code{OBJECTS}, @code{objs}, @code{OBJS}, @code{obj},
728 or @code{OBJ} which is a list of all object file names.  We would
729 define such a variable @code{objects} with a line like this in the
730 makefile:@refill
732 @example
733 @group
734 objects = main.o kbd.o command.o display.o \
735           insert.o search.o files.o utils.o
736 @end group
737 @end example
739 @noindent
740 Then, each place we want to put a list of the object file names, we can
741 substitute the variable's value by writing @samp{$(objects)}
742 (@pxref{Using Variables, ,How to Use Variables}).  
744 Here is how the complete simple makefile looks when you use a variable
745 for the object files:
747 @example
748 @group
749 objects = main.o kbd.o command.o display.o \
750           insert.o search.o files.o utils.o
752 edit : $(objects)
753         cc -o edit $(objects)
754 main.o : main.c defs.h
755         cc -c main.c
756 kbd.o : kbd.c defs.h command.h
757         cc -c kbd.c
758 command.o : command.c defs.h command.h
759         cc -c command.c
760 display.o : display.c defs.h buffer.h
761         cc -c display.c
762 insert.o : insert.c defs.h buffer.h
763         cc -c insert.c
764 search.o : search.c defs.h buffer.h
765         cc -c search.c
766 files.o : files.c defs.h buffer.h command.h
767         cc -c files.c
768 utils.o : utils.c defs.h
769         cc -c utils.c
770 clean :
771         rm edit $(objects)
772 @end group
773 @end example
775 @node make Deduces, Combine By Dependency, Variables Simplify, Introduction
776 @section Letting @code{make} Deduce the Commands
777 @cindex deducing commands (implicit rules)
778 @cindex implicit rule, introduction to
779 @cindex rule, implicit, introduction to
781 It is not necessary to spell out the commands for compiling the individual
782 C source files, because @code{make} can figure them out: it has an
783 @dfn{implicit rule} for updating a @samp{.o} file from a correspondingly
784 named @samp{.c} file using a @samp{cc -c} command.  For example, it will
785 use the command @samp{cc -c main.c -o main.o} to compile @file{main.c} into
786 @file{main.o}.  We can therefore omit the commands from the rules for the
787 object files.  @xref{Implicit Rules, ,Using Implicit Rules}.@refill
789 When a @samp{.c} file is used automatically in this way, it is also
790 automatically added to the list of dependencies.  We can therefore omit
791 the @samp{.c} files from the dependencies, provided we omit the commands.
793 Here is the entire example, with both of these changes, and a variable
794 @code{objects} as suggested above:
796 @example
797 @group
798 objects = main.o kbd.o command.o display.o \
799           insert.o search.o files.o utils.o
801 edit : $(objects)
802         cc -o edit $(objects)
804 main.o : defs.h
805 kbd.o : defs.h command.h
806 command.o : defs.h command.h
807 display.o : defs.h buffer.h
808 insert.o : defs.h buffer.h
809 search.o : defs.h buffer.h
810 files.o : defs.h buffer.h command.h
811 utils.o : defs.h
813 .PHONY : clean
814 clean :
815         -rm edit $(objects)
816 @end group
817 @end example
819 @noindent
820 This is how we would write the makefile in actual practice.  (The
821 complications associated with @samp{clean} are described elsewhere.
822 See @ref{Phony Targets}, and @ref{Errors, ,Errors in Commands}.)
824 Because implicit rules are so convenient, they are important.  You
825 will see them used frequently.@refill
827 @node Combine By Dependency, Cleanup, make Deduces, Introduction
828 @section Another Style of Makefile
829 @cindex combining rules by dependency
831 When the objects of a makefile are created only by implicit rules, an
832 alternative style of makefile is possible.  In this style of makefile,
833 you group entries by their dependencies instead of by their targets.
834 Here is what one looks like:
836 @example
837 @group
838 objects = main.o kbd.o command.o display.o \
839           insert.o search.o files.o utils.o
841 edit : $(objects)
842         cc -o edit $(objects)
844 $(objects) : defs.h
845 kbd.o command.o files.o : command.h
846 display.o insert.o search.o files.o : buffer.h
847 @end group
848 @end example
850 @noindent
851 Here @file{defs.h} is given as a dependency of all the object files;
852 @file{command.h} and @file{buffer.h} are dependencies of the specific
853 object files listed for them.
855 Whether this is better is a matter of taste: it is more compact, but some
856 people dislike it because they find it clearer to put all the information
857 about each target in one place.
859 @node Cleanup,  , Combine By Dependency, Introduction
860 @section Rules for Cleaning the Directory
861 @cindex cleaning up
862 @cindex removing, to clean up
864 Compiling a program is not the only thing you might want to write rules
865 for.  Makefiles commonly tell how to do a few other things besides
866 compiling a program: for example, how to delete all the object files
867 and executables so that the directory is @samp{clean}.
869 @cindex @code{clean} target
870 Here is how we
871 could write a @code{make} rule for cleaning our example editor:
873 @example
874 @group
875 clean:
876         rm edit $(objects)
877 @end group
878 @end example
880 In practice, we might want to write the rule in a somewhat more
881 complicated manner to handle unanticipated situations.  We would do this:
883 @example
884 @group
885 .PHONY : clean
886 clean :
887         -rm edit $(objects)
888 @end group
889 @end example
891 @noindent
892 This prevents @code{make} from getting confused by an actual file
893 called @file{clean} and causes it to continue in spite of errors from
894 @code{rm}.  (See @ref{Phony Targets}, and @ref{Errors, ,Errors in
895 Commands}.)
897 @noindent
898 A rule such as this should not be placed at the beginning of the
899 makefile, because we do not want it to run by default!  Thus, in the
900 example makefile, we want the rule for @code{edit}, which recompiles
901 the editor, to remain the default goal.
903 Since @code{clean} is not a dependency of @code{edit}, this rule will not
904 run at all if we give the command @samp{make} with no arguments.  In
905 order to make the rule run, we have to type @samp{make clean}.
906 @xref{Running, ,How to Run @code{make}}.
908 @node Makefiles, Rules, Introduction, Top
909 @chapter Writing Makefiles
911 @cindex makefile, how to write
912 The information that tells @code{make} how to recompile a system comes from
913 reading a data base called the @dfn{makefile}.
915 @menu
916 * Makefile Contents::           What makefiles contain.
917 * Makefile Names::              How to name your makefile.
918 * Include::                     How one makefile can use another makefile.
919 * MAKEFILES Variable::          The environment can specify extra makefiles.
920 * Remaking Makefiles::          How makefiles get remade.
921 * Overriding Makefiles::        How to override part of one makefile
922                                  with another makefile.
923 @end menu
925 @node Makefile Contents, Makefile Names,  , Makefiles
926 @section What Makefiles Contain
928 Makefiles contain five kinds of things: @dfn{explicit rules},
929 @dfn{implicit rules}, @dfn{variable definitions}, @dfn{directives},
930 and @dfn{comments}.  Rules, variables, and directives are described at
931 length in later chapters.@refill
933 @itemize @bullet
934 @cindex rule, explicit, definition of
935 @cindex explicit rule, definition of
936 @item
937 An @dfn{explicit rule} says when and how to remake one or more files,
938 called the rule's targets.  It lists the other files that the targets
939 @dfn{depend on}, and may also give commands to use to create or update
940 the targets.  @xref{Rules, ,Writing Rules}.
942 @cindex rule, implicit, definition of
943 @cindex implicit rule, definition of
944 @item
945 An @dfn{implicit rule} says when and how to remake a class of files
946 based on their names.  It describes how a target may depend on a file
947 with a name similar to the target and gives commands to create or
948 update such a target.  @xref{Implicit Rules, ,Using Implicit Rules}.
950 @cindex variable definition
951 @item
952 A @dfn{variable definition} is a line that specifies a text string
953 value for a variable that can be substituted into the text later.  The
954 simple makefile example shows a variable definition for @code{objects}
955 as a list of all object files (@pxref{Variables Simplify, , Variables
956 Make Makefiles Simpler}).
958 @cindex directive
959 @item
960 A @dfn{directive} is a command for @code{make} to do something special while
961 reading the makefile.  These include:
963 @itemize @bullet
964 @item
965 Reading another makefile (@pxref{Include, ,Including Other Makefiles}).
967 @item
968 Deciding (based on the values of variables) whether to use or
969 ignore a part of the makefile (@pxref{Conditionals, ,Conditional Parts of Makefiles}).
971 @item
972 Defining a variable from a verbatim string containing multiple lines
973 (@pxref{Defining, ,Defining Variables Verbatim}).
974 @end itemize
976 @cindex comments, in makefile
977 @cindex @code{#} (comments), in makefile
978 @item
979 @samp{#} in a line of a makefile starts a @dfn{comment}.  It and the rest of
980 the line are ignored, except that a trailing backslash not escaped by
981 another backslash will continue the comment across multiple lines.
982 Comments may appear on any of the lines in the makefile, except within a
983 @code{define} directive, and perhaps within commands (where the shell
984 decides what is a comment).  A line containing just a comment (with
985 perhaps spaces before it) is effectively blank, and is ignored.@refill
986 @end itemize
988 @node Makefile Names, Include, Makefile Contents, Makefiles
989 @section What Name to Give Your Makefile
990 @cindex makefile name
991 @cindex name of makefile
992 @cindex default makefile name
993 @cindex file name of makefile
995 @c following paragraph rewritten to avoid overfull hbox
996 By default, when @code{make} looks for the makefile, it tries the
997 following names, in order: @file{GNUmakefile}, @file{makefile}
998 and @file{Makefile}.@refill
999 @findex Makefile
1000 @findex GNUmakefile
1001 @findex makefile
1003 @cindex @code{README}
1004 Normally you should call your makefile either @file{makefile} or
1005 @file{Makefile}.  (We recommend @file{Makefile} because it appears
1006 prominently near the beginning of a directory listing, right near other
1007 important files such as @file{README}.)  The first name checked,
1008 @file{GNUmakefile}, is not recommended for most makefiles.  You should
1009 use this name if you have a makefile that is specific to GNU
1010 @code{make}, and will not be understood by other versions of
1011 @code{make}.  Other @code{make} programs look for @file{makefile} and
1012 @file{Makefile}, but not @file{GNUmakefile}.
1014 If @code{make} finds none of these names, it does not use any makefile.
1015 Then you must specify a goal with a command argument, and @code{make}
1016 will attempt to figure out how to remake it using only its built-in
1017 implicit rules.  @xref{Implicit Rules, ,Using Implicit Rules}.
1019 @cindex @code{-f}
1020 @cindex @code{--file}
1021 @cindex @code{--makefile}
1022 If you want to use a nonstandard name for your makefile, you can specify
1023 the makefile name with the @samp{-f} or @samp{--file} option.  The
1024 arguments @w{@samp{-f @var{name}}} or @w{@samp{--file=@var{name}}} tell
1025 @code{make} to read the file @var{name} as the makefile.  If you use
1026 more than one @samp{-f} or @samp{--file} option, you can specify several
1027 makefiles.  All the makefiles are effectively concatenated in the order
1028 specified.  The default makefile names @file{GNUmakefile},
1029 @file{makefile} and @file{Makefile} are not checked automatically if you
1030 specify @samp{-f} or @samp{--file}.@refill
1031 @cindex specifying makefile name
1032 @cindex makefile name, how to specify
1033 @cindex name of makefile, how to specify
1034 @cindex file name of makefile, how to specify
1036 @node Include, MAKEFILES Variable, Makefile Names, Makefiles
1037 @section Including Other Makefiles
1038 @cindex including other makefiles
1039 @cindex makefile, including
1041 @findex include
1042 The @code{include} directive tells @code{make} to suspend reading the
1043 current makefile and read one or more other makefiles before continuing.
1044 The directive is a line in the makefile that looks like this:
1046 @example
1047 include @var{filenames}@dots{}
1048 @end example
1050 @noindent
1051 @var{filenames} can contain shell file name patterns.
1052 @cindex shell file name pattern (in @code{include})
1053 @cindex shell wildcards (in @code{include})
1054 @cindex wildcard, in @code{include}
1056 Extra spaces are allowed and ignored at the beginning of the line, but
1057 a tab is not allowed.  (If the line begins with a tab, it will be
1058 considered a command line.)  Whitespace is required between
1059 @code{include} and the file names, and between file names; extra
1060 whitespace is ignored there and at the end of the directive.  A
1061 comment starting with @samp{#} is allowed at the end of the line.  If
1062 the file names contain any variable or function references, they are
1063 expanded.  @xref{Using Variables, ,How to Use Variables}.
1065 For example, if you have three @file{.mk} files, @file{a.mk}, 
1066 @file{b.mk}, and @file{c.mk}, and @code{$(bar)} expands to
1067 @code{bish bash}, then the following expression
1069 @example
1070 include foo *.mk $(bar)
1071 @end example
1073 is equivalent to
1075 @example
1076 include foo a.mk b.mk c.mk bish bash
1077 @end example
1079 When @code{make} processes an @code{include} directive, it suspends
1080 reading of the containing makefile and reads from each listed file in
1081 turn.  When that is finished, @code{make} resumes reading the
1082 makefile in which the directive appears.
1084 One occasion for using @code{include} directives is when several programs,
1085 handled by individual makefiles in various directories, need to use a
1086 common set of variable definitions 
1087 (@pxref{Setting, ,Setting Variables}) or pattern rules
1088 (@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}).
1090 Another such occasion is when you want to generate dependencies from
1091 source files automatically; the dependencies can be put in a file that
1092 is included by the main makefile.  This practice is generally cleaner
1093 than that of somehow appending the dependencies to the end of the main
1094 makefile as has been traditionally done with other versions of
1095 @code{make}.  @xref{Automatic Dependencies}.
1096 @cindex dependencies, automatic generation
1097 @cindex automatic generation of dependencies
1098 @cindex generating dependencies automatically
1100 @cindex @code{-I}
1101 @cindex @code{--include-dir}
1102 @findex /usr/gnu/include
1103 @findex /usr/local/include
1104 @findex /usr/include
1105 If the specified name does not start with a slash, and the file is not
1106 found in the current directory, several other directories are searched.
1107 First, any directories you have specified with the @samp{-I} or
1108 @samp{--include-dir} option are searched
1109 (@pxref{Options Summary, ,Summary of Options}).
1110 Then the following directories (if they exist)
1111 are searched, in this order: 
1112 @file{@var{prefix}/include} (normally @file{/usr/local/include})
1113 @file{/usr/gnu/include},
1114 @file{/usr/local/include}, @file{/usr/include}.  
1116 If an included makefile cannot be found in any of these directories, a
1117 warning message is generated, but it is not an immediately fatal error;
1118 processing of the makefile containing the @code{include} continues.
1119 Once it has finished reading makefiles, @code{make} will try to remake
1120 any that are out of date or don't exist.
1121 @xref{Remaking Makefiles, ,How Makefiles Are Remade}.
1122 Only after it has tried to find a way to remake a makefile and failed,
1123 will @code{make} diagnose the missing makefile as a fatal error.
1125 If you want @code{make} to simply ignore a makefile which does not exist
1126 and cannot be remade, with no error message, use the @w{@code{-include}}
1127 directive instead of @code{include}, like this:
1129 @example
1130 -include @var{filenames}@dots{}
1131 @end example
1133 This is acts like @code{include} in every way except that there is no
1134 error (not even a warning) if any of the @var{filenames} do not exist.
1136 @node MAKEFILES Variable, Remaking Makefiles, Include, Makefiles
1137 @section The Variable @code{MAKEFILES}
1138 @cindex makefile, and @code{MAKEFILES} variable
1139 @cindex including (@code{MAKEFILES} variable)
1141 @vindex MAKEFILES
1142 If the environment variable @code{MAKEFILES} is defined, @code{make}
1143 considers its value as a list of names (separated by whitespace) of
1144 additional makefiles to be read before the others.  This works much like
1145 the @code{include} directive: various directories are searched for those
1146 files (@pxref{Include, ,Including Other Makefiles}).  In addition, the
1147 default goal is never taken from one of these makefiles and it is not an
1148 error if the files listed in @code{MAKEFILES} are not found.@refill
1150 @cindex recursion, and @code{MAKEFILES} variable
1151 The main use of @code{MAKEFILES} is in communication between recursive
1152 invocations of @code{make} (@pxref{Recursion, ,Recursive Use of
1153 @code{make}}).  It usually is not desirable to set the environment
1154 variable before a top-level invocation of @code{make}, because it is
1155 usually better not to mess with a makefile from outside.  However, if
1156 you are running @code{make} without a specific makefile, a makefile in
1157 @code{MAKEFILES} can do useful things to help the built-in implicit
1158 rules work better, such as defining search paths (@pxref{Directory Search}).
1160 Some users are tempted to set @code{MAKEFILES} in the environment
1161 automatically on login, and program makefiles to expect this to be done.
1162 This is a very bad idea, because such makefiles will fail to work if run by
1163 anyone else.  It is much better to write explicit @code{include} directives
1164 in the makefiles.  @xref{Include, , Including Other Makefiles}.
1166 @node Remaking Makefiles, Overriding Makefiles, MAKEFILES Variable, Makefiles
1167 @section How Makefiles Are Remade
1169 @cindex updating makefiles
1170 @cindex remaking makefiles
1171 @cindex makefile, remaking of
1172 Sometimes makefiles can be remade from other files, such as RCS or SCCS
1173 files.  If a makefile can be remade from other files, you probably want
1174 @code{make} to get an up-to-date version of the makefile to read in.
1176 To this end, after reading in all makefiles, @code{make} will consider
1177 each as a goal target and attempt to update it.  If a makefile has a
1178 rule which says how to update it (found either in that very makefile or
1179 in another one) or if an implicit rule applies to it (@pxref{Implicit
1180 Rules, ,Using Implicit Rules}), it will be updated if necessary.  After
1181 all makefiles have been checked, if any have actually been changed,
1182 @code{make} starts with a clean slate and reads all the makefiles over
1183 again.  (It will also attempt to update each of them over again, but
1184 normally this will not change them again, since they are already up to
1185 date.)@refill
1187 If the makefiles specify a double-colon rule to remake a file with
1188 commands but no dependencies, that file will always be remade
1189 (@pxref{Double-Colon}).  In the case of makefiles, a makefile that has a
1190 double-colon rule with commands but no dependencies will be remade every
1191 time @code{make} is run, and then again after @code{make} starts over
1192 and reads the makefiles in again.  This would cause an infinite loop:
1193 @code{make} would constantly remake the makefile, and never do anything
1194 else.  So, to avoid this, @code{make} will @strong{not} attempt to
1195 remake makefiles which are specified as double-colon targets but have no
1196 dependencies.@refill
1198 If you do not specify any makefiles to be read with @samp{-f} or
1199 @samp{--file} options, @code{make} will try the default makefile names;
1200 @pxref{Makefile Names, ,What Name to Give Your Makefile}.  Unlike
1201 makefiles explicitly requested with @samp{-f} or @samp{--file} options,
1202 @code{make} is not certain that these makefiles should exist.  However,
1203 if a default makefile does not exist but can be created by running
1204 @code{make} rules, you probably want the rules to be run so that the
1205 makefile can be used.
1207 Therefore, if none of the default makefiles exists, @code{make} will try
1208 to make each of them in the same order in which they are searched for
1209 (@pxref{Makefile Names, ,What Name to Give Your Makefile})
1210 until it succeeds in making one, or it runs out of names to try.  Note
1211 that it is not an error if @code{make} cannot find or make any makefile;
1212 a makefile is not always necessary.@refill
1214 When you use the @samp{-t} or @samp{--touch} option
1215 (@pxref{Instead of Execution, ,Instead of Executing the Commands}),
1216 you would not want to use an out-of-date makefile to decide which
1217 targets to touch.  So the @samp{-t} option has no effect on updating
1218 makefiles; they are really updated even if @samp{-t} is specified.
1219 Likewise, @samp{-q} (or @samp{--question}) and @samp{-n} (or
1220 @samp{--just-print}) do not prevent updating of makefiles, because an
1221 out-of-date makefile would result in the wrong output for other targets.
1222 Thus, @samp{make -f mfile -n foo} will update @file{mfile}, read it in,
1223 and then print the commands to update @file{foo} and its dependencies
1224 without running them.  The commands printed for @file{foo} will be those
1225 specified in the updated contents of @file{mfile}.
1227 However, on occasion you might actually wish to prevent updating of even
1228 the makefiles.  You can do this by specifying the makefiles as goals in
1229 the command line as well as specifying them as makefiles.  When the
1230 makefile name is specified explicitly as a goal, the options @samp{-t}
1231 and so on do apply to them.
1233 Thus, @samp{make -f mfile -n mfile foo} would read the makefile
1234 @file{mfile}, print the commands needed to update it without actually
1235 running them, and then print the commands needed to update @file{foo}
1236 without running them.  The commands for @file{foo} will be those
1237 specified by the existing contents of @file{mfile}.
1239 @node Overriding Makefiles,  , Remaking Makefiles, Makefiles
1240 @section Overriding Part of Another Makefile
1242 @cindex overriding makefiles
1243 @cindex makefile, overriding
1244 Sometimes it is useful to have a makefile that is mostly just like
1245 another makefile.  You can often use the @samp{include} directive to
1246 include one in the other, and add more targets or variable definitions.
1247 However, if the two makefiles give different commands for the same
1248 target, @code{make} will not let you just do this.  But there is another way.
1250 @cindex match-anything rule, used to override
1251 In the containing makefile (the one that wants to include the other),
1252 you can use a match-anything pattern rule to say that to remake any
1253 target that cannot be made from the information in the containing
1254 makefile, @code{make} should look in another makefile.
1255 @xref{Pattern Rules}, for more information on pattern rules.
1257 For example, if you have a makefile called @file{Makefile} that says how
1258 to make the target @samp{foo} (and other targets), you can write a
1259 makefile called @file{GNUmakefile} that contains:
1261 @example
1262 foo:
1263         frobnicate > foo
1265 %: force
1266         @@$(MAKE) -f Makefile $@@
1267 force: ;
1268 @end example
1270 If you say @samp{make foo}, @code{make} will find @file{GNUmakefile},
1271 read it, and see that to make @file{foo}, it needs to run the command
1272 @samp{frobnicate > foo}.  If you say @samp{make bar}, @code{make} will
1273 find no way to make @file{bar} in @file{GNUmakefile}, so it will use the
1274 commands from the pattern rule: @samp{make -f Makefile bar}.  If
1275 @file{Makefile} provides a rule for updating @file{bar}, @code{make}
1276 will apply the rule.  And likewise for any other target that
1277 @file{GNUmakefile} does not say how to make.
1279 The way this works is that the pattern rule has a pattern of just
1280 @samp{%}, so it matches any target whatever.  The rule specifies a
1281 dependency @file{force}, to guarantee that the commands will be run even
1282 if the target file already exists.  We give @file{force} target empty
1283 commands to prevent @code{make} from searching for an implicit rule to
1284 build it---otherwise it would apply the same match-anything rule to
1285 @file{force} itself and create a dependency loop!
1287 @node Rules, Commands, Makefiles, Top
1288 @chapter Writing Rules
1289 @cindex writing rules
1290 @cindex rule, how to write
1291 @cindex target
1292 @cindex dependency
1294 A @dfn{rule} appears in the makefile and says when and how to remake
1295 certain files, called the rule's @dfn{targets} (most often only one per rule).
1296 It lists the other files that are the @dfn{dependencies} of the target, and
1297 @dfn{commands} to use to create or update the target.
1299 @cindex default goal
1300 @cindex goal, default
1301 The order of rules is not significant, except for determining the
1302 @dfn{default goal}: the target for @code{make} to consider, if you do
1303 not otherwise specify one.  The default goal is the target of the first
1304 rule in the first makefile.  If the first rule has multiple targets,
1305 only the first target is taken as the default.  There are two
1306 exceptions: a target starting with a period is not a default unless it
1307 contains one or more slashes, @samp{/}, as well; and, a target that
1308 defines a pattern rule has no effect on the default goal.
1309 (@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.)
1311 Therefore, we usually write the makefile so that the first rule is the
1312 one for compiling the entire program or all the programs described by
1313 the makefile (often with a target called @samp{all}).
1314 @xref{Goals, ,Arguments to Specify the Goals}.
1316 @menu
1317 * Rule Example::                An example explained.
1318 * Rule Syntax::                 General syntax explained.
1319 * Wildcards::                   Using wildcard characters such as `*'.
1320 * Directory Search::            Searching other directories for source files.
1321 * Phony Targets::               Using a target that is not a real file's name.
1322 * Force Targets::               You can use a target without commands
1323                                   or dependencies to mark other 
1324                                   targets as phony.
1325 * Empty Targets::               When only the date matters and the
1326                                   files are empty.
1327 * Special Targets::             Targets with special built-in meanings.
1328 * Multiple Targets::            When to make use of several targets in a rule.
1329 * Multiple Rules::              How to use several rules with the same target.
1330 * Static Pattern::              Static pattern rules apply to multiple targets
1331                                   and can vary the dependencies according to 
1332                                   the target name.
1333 * Double-Colon::                How to use a special kind of rule to allow
1334                                   several independent rules for one target.
1335 * Automatic Dependencies::      How to automatically generate rules giving
1336                                  dependencies from the source files themselves.
1337 @end menu
1339 @ifinfo
1340 @node Rule Example, Rule Syntax,  , Rules
1341 @section Rule Example
1343 Here is an example of a rule:
1345 @example
1346 foo.o : foo.c defs.h       # module for twiddling the frobs
1347         cc -c -g foo.c
1348 @end example
1350 Its target is @file{foo.o} and its dependencies are @file{foo.c} and
1351 @file{defs.h}.  It has one command, which is @samp{cc -c -g foo.c}.
1352 The command line starts with a tab to identify it as a command.
1354 This rule says two things:
1356 @itemize @bullet
1357 @item
1358 How to decide whether @file{foo.o} is out of date: it is out of date
1359 if it does not exist, or if either @file{foo.c} or @file{defs.h} is
1360 more recent than it.
1362 @item
1363 How to update the file @file{foo.o}: by running @code{cc} as stated.
1364 The command does not explicitly mention @file{defs.h}, but we presume
1365 that @file{foo.c} includes it, and that that is why @file{defs.h} was
1366 added to the dependencies.
1367 @end itemize
1368 @end ifinfo
1370 @node Rule Syntax, Wildcards, Rule Example, Rules
1371 @section Rule Syntax
1373 @cindex rule syntax
1374 @cindex syntax of rules
1375 In general, a rule looks like this:
1377 @example
1378 @var{targets} : @var{dependencies}
1379         @var{command}
1380         @dots{}
1381 @end example
1383 @noindent
1384 or like this:
1386 @example
1387 @var{targets} : @var{dependencies} ; @var{command}
1388         @var{command}
1389         @dots{}
1390 @end example
1392 @cindex targets
1393 @cindex rule targets
1394 The @var{targets} are file names, separated by spaces.  Wildcard
1395 characters may be used (@pxref{Wildcards, ,Using Wildcard Characters
1396 in File Names}) and a name of the form @file{@var{a}(@var{m})}
1397 represents member @var{m} in archive file @var{a} 
1398 (@pxref{Archive Members, ,Archive Members as Targets}).  
1399 Usually there is only one
1400 target per rule, but occasionally there is a reason to have more
1401 (@pxref{Multiple Targets, , Multiple Targets in a Rule}).@refill
1403 @cindex commands
1404 @cindex tab character (in commands)
1405 The @var{command} lines start with a tab character.  The first command may
1406 appear on the line after the dependencies, with a tab character, or may
1407 appear on the same line, with a semicolon.  Either way, the effect is the
1408 same.  @xref{Commands, ,Writing the Commands in Rules}.
1410 @cindex dollar sign (@code{$}), in rules
1411 @cindex @code{$}, in rules
1412 @cindex rule, and @code{$}
1413 Because dollar signs are used to start variable references, if you really
1414 want a dollar sign in a rule you must write two of them, @samp{$$}
1415 (@pxref{Using Variables, ,How to Use Variables}).  
1416 You may split a long line by inserting a backslash
1417 followed by a newline, but this is not required, as @code{make} places no
1418 limit on the length of a line in a makefile.
1420 A rule tells @code{make} two things: when the targets are out of date,
1421 and how to update them when necessary.
1423 @cindex dependencies
1424 @cindex rule dependencies
1425 The criterion for being out of date is specified in terms of the
1426 @var{dependencies}, which consist of file names separated by spaces.
1427 (Wildcards and archive members (@pxref{Archives}) are allowed here too.)
1428 A target is out of date if it does not exist or if it is older than any
1429 of the dependencies (by comparison of last-modification times).  The
1430 idea is that the contents of the target file are computed based on
1431 information in the dependencies, so if any of the dependencies changes,
1432 the contents of the existing target file are no longer necessarily
1433 valid.
1435 How to update is specified by @var{commands}.  These are lines to be
1436 executed by the shell (normally @samp{sh}), but with some extra features
1437 (@pxref{Commands, ,Writing the Commands in Rules}).
1439 @node Wildcards, Directory Search, Rule Syntax, Rules
1440 @section Using Wildcard Characters in File Names
1441 @cindex wildcard
1442 @cindex file name with wildcards
1443 @cindex globbing (wildcards)
1445 @cindex @code{*} (wildcard character)
1446 @cindex @code{?} (wildcard character)
1447 @cindex @code{[@dots{}]} (wildcard characters)
1448 A single file name can specify many files using @dfn{wildcard characters}.
1449 The wildcard characters in @code{make} are @samp{*}, @samp{?} and
1450 @samp{[@dots{}]}, the same as in the Bourne shell.  For example, @file{*.c}
1451 specifies a list of all the files (in the working directory) whose names
1452 end in @samp{.c}.@refill
1454 @cindex @code{~} (tilde)
1455 @cindex tilde (@code{~})
1456 @cindex home directory
1457 The character @samp{~} at the beginning of a file name also has special
1458 significance.  If alone, or followed by a slash, it represents your home
1459 directory.  For example @file{~/bin} expands to @file{/home/you/bin}.
1460 If the @samp{~} is followed by a word, the string represents the home
1461 directory of the user named by that word.  For example @file{~john/bin}
1462 expands to @file{/home/john/bin}.@refill
1464 Wildcard expansion happens automatically in targets, in dependencies,
1465 and in commands (where the shell does the expansion).  In other
1466 contexts, wildcard expansion happens only if you request it explicitly
1467 with the @code{wildcard} function.
1469 The special significance of a wildcard character can be turned off by
1470 preceding it with a backslash.  Thus, @file{foo\*bar} would refer to a
1471 specific file whose name consists of @samp{foo}, an asterisk, and
1472 @samp{bar}.@refill
1474 @menu
1475 * Wildcard Examples::           Several examples
1476 * Wildcard Pitfall::            Problems to avoid.
1477 * Wildcard Function::           How to cause wildcard expansion where
1478                                   it does not normally take place.
1479 @end menu
1481 @node Wildcard Examples, Wildcard Pitfall,  , Wildcards
1482 @subsection Wildcard Examples
1484 Wildcards can be used in the commands of a rule, where they are expanded
1485 by the shell.  For example, here is a rule to delete all the object files:
1487 @example
1488 @group
1489 clean:
1490         rm -f *.o
1491 @end group
1492 @end example
1493 @cindex @code{rm} (shell command)
1495 Wildcards are also useful in the dependencies of a rule.  With the
1496 following rule in the makefile, @samp{make print} will print all the
1497 @samp{.c} files that have changed since the last time you printed them:
1499 @example
1500 print: *.c
1501         lpr -p $?
1502         touch print
1503 @end example
1505 @cindex @code{print} target
1506 @cindex @code{lpr} (shell command)
1507 @cindex @code{touch} (shell command)
1508 @noindent
1509 This rule uses @file{print} as an empty target file; see @ref{Empty
1510 Targets, ,Empty Target Files to Record Events}.  (The automatic variable
1511 @samp{$?} is used to print only those files that have changed; see
1512 @ref{Automatic, ,Automatic Variables}.)@refill
1514 Wildcard expansion does not happen when you define a variable.  Thus, if
1515 you write this:
1517 @example
1518 objects = *.o
1519 @end example
1521 @noindent
1522 then the value of the variable @code{objects} is the actual string
1523 @samp{*.o}.  However, if you use the value of @code{objects} in a target,
1524 dependency or command, wildcard expansion will take place at that time.
1525 To set @code{objects} to the expansion, instead use:
1527 @example
1528 objects := $(wildcard *.o)
1529 @end example
1531 @noindent
1532 @xref{Wildcard Function}.
1534 @node Wildcard Pitfall, Wildcard Function, Wildcard Examples, Wildcards
1535 @subsection Pitfalls of Using Wildcards
1536 @cindex wildcard pitfalls
1537 @cindex pitfalls of wildcards
1538 @cindex mistakes with wildcards
1539 @cindex errors with wildcards
1540 @cindex problems with wildcards
1542 Now here is an example of a naive way of using wildcard expansion, that
1543 does not do what you would intend.  Suppose you would like to say that the
1544 executable file @file{foo} is made from all the object files in the
1545 directory, and you write this:
1547 @example
1548 objects = *.o
1550 foo : $(objects)
1551         cc -o foo $(CFLAGS) $(objects)
1552 @end example
1554 @noindent
1555 The value of @code{objects} is the actual string @samp{*.o}.  Wildcard
1556 expansion happens in the rule for @file{foo}, so that each @emph{existing}
1557 @samp{.o} file becomes a dependency of @file{foo} and will be recompiled if
1558 necessary.
1560 But what if you delete all the @samp{.o} files?  When a wildcard matches
1561 no files, it is left as it is, so then @file{foo} will depend on the
1562 oddly-named file @file{*.o}.  Since no such file is likely to exist,
1563 @code{make} will give you an error saying it cannot figure out how to
1564 make @file{*.o}.  This is not what you want!
1566 Actually it is possible to obtain the desired result with wildcard
1567 expansion, but you need more sophisticated techniques, including the
1568 @code{wildcard} function and string substitution.
1569 @ifinfo
1570 @xref{Wildcard Function, ,The Function @code{wildcard}}.
1571 @end ifinfo
1572 @iftex
1573 These are described in the following section.
1574 @end iftex
1576 @node Wildcard Function,  , Wildcard Pitfall, Wildcards
1577 @subsection The Function @code{wildcard}
1578 @findex wildcard
1580 Wildcard expansion happens automatically in rules.  But wildcard expansion
1581 does not normally take place when a variable is set, or inside the
1582 arguments of a function.  If you want to do wildcard expansion in such
1583 places, you need to use the @code{wildcard} function, like this:
1585 @example
1586 $(wildcard @var{pattern}@dots{})
1587 @end example
1589 @noindent
1590 This string, used anywhere in a makefile, is replaced by a
1591 space-separated list of names of existing files that match one of the
1592 given file name patterns.  If no existing file name matches a pattern,
1593 then that pattern is omitted from the output of the @code{wildcard}
1594 function.  Note that this is different from how unmatched wildcards
1595 behave in rules, where they are used verbatim rather than ignored
1596 (@pxref{Wildcard Pitfall}).
1598 One use of the @code{wildcard} function is to get a list of all the C source
1599 files in a directory, like this:
1601 @example
1602 $(wildcard *.c)
1603 @end example
1605 We can change the list of C source files into a list of object files by
1606 replacing the @samp{.o} suffix with @samp{.c} in the result, like this:
1608 @example
1609 $(patsubst %.c,%.o,$(wildcard *.c))
1610 @end example
1612 @noindent
1613 (Here we have used another function, @code{patsubst}.
1614 @xref{Text Functions, ,Functions for String Substitution and Analysis}.)@refill
1616 Thus, a makefile to compile all C source files in the directory and then
1617 link them together could be written as follows:
1619 @example
1620 objects := $(patsubst %.c,%.o,$(wildcard *.c))
1622 foo : $(objects)
1623         cc -o foo $(objects)
1624 @end example
1626 @noindent
1627 (This takes advantage of the implicit rule for compiling C programs, so
1628 there is no need to write explicit rules for compiling the files.
1629 @xref{Flavors, ,The Two Flavors of Variables}, for an explanation of
1630 @samp{:=}, which is a variant of @samp{=}.)
1632 @node Directory Search, Phony Targets, Wildcards, Rules
1633 @section Searching Directories for Dependencies
1634 @vindex VPATH
1635 @findex vpath
1636 @cindex vpath 
1637 @cindex search path for dependencies (@code{VPATH})
1638 @cindex directory search (@code{VPATH})
1640 For large systems, it is often desirable to put sources in a separate
1641 directory from the binaries.  The @dfn{directory search} features of
1642 @code{make} facilitate this by searching several directories
1643 automatically to find a dependency.  When you redistribute the files
1644 among directories, you do not need to change the individual rules,
1645 just the search paths.
1647 @menu
1648 * General Search::              Specifying a search path that applies 
1649                                   to every dependency.
1650 * Selective Search::            Specifying a search path 
1651                                   for a specified class of names.
1652 * Commands/Search::             How to write shell commands that work together
1653                                   with search paths.
1654 * Implicit/Search::             How search paths affect implicit rules.
1655 * Libraries/Search::            Directory search for link libraries.
1656 @end menu
1658 @node General Search, Selective Search,  , Directory Search
1659 @subsection @code{VPATH}: Search Path for All Dependencies
1660 @vindex VPATH
1662 The value of the @code{make} variable @code{VPATH} specifies a list of
1663 directories that @code{make} should search.  Most often, the
1664 directories are expected to contain dependency files that are not in the
1665 current directory; however, @code{VPATH} specifies a search list that
1666 @code{make} applies for all files, including files which are targets of
1667 rules.
1669 Thus, if a file that is listed as a target or dependency does not exist
1670 in the current directory, @code{make} searches the directories listed in
1671 @code{VPATH} for a file with that name.  If a file is found in one of
1672 them, that file becomes the dependency.  Rules may then specify the
1673 names of source files in the dependencies as if they all existed in the
1674 current directory.  @xref{Commands/Search, ,Writing Shell Commands with
1675 Directory Search}.
1677 In the @code{VPATH} variable, directory names are separated by colons or
1678 blanks.  The order in which directories are listed is the order followed
1679 by @code{make} in its search.
1681 For example,
1683 @example
1684 VPATH = src:../headers
1685 @end example
1687 @noindent
1688 specifies a path containing two directories, @file{src} and
1689 @file{../headers}, which @code{make} searches in that order.
1691 With this value of @code{VPATH}, the following rule,
1693 @example
1694 foo.o : foo.c
1695 @end example
1697 @noindent
1698 is interpreted as if it were written like this:
1700 @example
1701 foo.o : src/foo.c
1702 @end example
1704 @noindent
1705 assuming the file @file{foo.c} does not exist in the current directory but
1706 is found in the directory @file{src}.
1708 @node Selective Search, Commands/Search, General Search, Directory Search
1709 @subsection The @code{vpath} Directive
1710 @findex vpath
1712 Similar to the @code{VPATH} variable but more selective is the @code{vpath}
1713 directive (note lower case), which allows you to specify a search path for a particular class
1714 of file names, those that match a particular pattern.  Thus you can supply
1715 certain search directories for one class of file names and other directories
1716 (or none) for other file names.
1718 There are three forms of the @code{vpath} directive:
1720 @table @code
1721 @item vpath @var{pattern} @var{directories}
1722 Specify the search path @var{directories} for file names that match
1723 @var{pattern}.  
1725 The search path, @var{directories}, is a list of directories to be
1726 searched, separated by colons or blanks, just like the search path used
1727 in the @code{VPATH} variable.
1729 @item vpath @var{pattern}
1730 Clear out the search path associated with @var{pattern}.
1732 @c Extra blank line makes sure this gets two lines.
1733 @item vpath
1735 Clear all search paths previously specified with @code{vpath} directives.
1736 @end table
1738 A @code{vpath} pattern is a string containing a @samp{%} character.  The
1739 string must match the file name of a dependency that is being searched
1740 for, the @samp{%} character matching any sequence of zero or more
1741 characters (as in pattern rules; @pxref{Pattern Rules, ,Defining and
1742 Redefining Pattern Rules}).  For example, @code{%.h} matches files that
1743 end in @code{.h}.  (If there is no @samp{%}, the pattern must match the
1744 dependency exactly, which is not useful very often.)
1746 @cindex @code{%}, quoting in @code{vpath}
1747 @cindex @code{%}, quoting with @code{\} (backslash)
1748 @cindex @code{\} (backslash), to quote @code{%}
1749 @cindex backslash (@code{\}), to quote @code{%}
1750 @cindex quoting @code{%}, in @code{vpath}
1751 @samp{%} characters in a @code{vpath} directive's pattern can be quoted
1752 with preceding backslashes (@samp{\}).  Backslashes that would otherwise
1753 quote @samp{%} characters can be quoted with more backslashes.
1754 Backslashes that quote @samp{%} characters or other backslashes are
1755 removed from the pattern before it is compared to file names.  Backslashes
1756 that are not in danger of quoting @samp{%} characters go unmolested.@refill
1758 When a dependency fails to exist in the current directory, if the
1759 @var{pattern} in a @code{vpath} directive matches the name of the
1760 dependency file, then the @var{directories} in that directive are searched
1761 just like (and before) the directories in the @code{VPATH} variable.  
1763 For example,
1765 @example
1766 vpath %.h ../headers
1767 @end example
1769 @noindent
1770 tells @code{make} to look for any dependency whose name ends in @file{.h}
1771 in the directory @file{../headers} if the file is not found in the current
1772 directory.
1774 If several @code{vpath} patterns match the dependency file's name, then
1775 @code{make} processes each matching @code{vpath} directive one by one,
1776 searching all the directories mentioned in each directive.  @code{make}
1777 handles multiple @code{vpath} directives in the order in which they
1778 appear in the makefile; multiple directives with the same pattern are
1779 independent of each other.
1781 @need 750
1782 Thus, 
1784 @example
1785 @group
1786 vpath %.c foo
1787 vpath %   blish
1788 vpath %.c bar
1789 @end group
1790 @end example
1792 @noindent
1793 will look for a file ending in @samp{.c} in @file{foo}, then
1794 @file{blish}, then @file{bar}, while
1796 @example
1797 @group
1798 vpath %.c foo:bar
1799 vpath %   blish
1800 @end group
1801 @end example
1803 @noindent
1804 will look for a file ending in @samp{.c} in @file{foo}, then
1805 @file{bar}, then @file{blish}.
1807 @node Commands/Search, Implicit/Search, Selective Search, Directory Search
1808 @subsection Writing Shell Commands with Directory Search
1809 @cindex shell command, and directory search
1810 @cindex directory search (@code{VPATH}), and shell commands
1812 When a dependency is found in another directory through directory search,
1813 this cannot change the commands of the rule; they will execute as written.
1814 Therefore, you must write the commands with care so that they will look for
1815 the dependency in the directory where @code{make} finds it.
1817 This is done with the @dfn{automatic variables} such as @samp{$^}
1818 (@pxref{Automatic, ,Automatic Variables}).  
1819 For instance, the value of @samp{$^} is a
1820 list of all the dependencies of the rule, including the names of
1821 the directories in which they were found, and the value of
1822 @samp{$@@} is the target.  Thus:@refill
1824 @example
1825 foo.o : foo.c
1826         cc -c $(CFLAGS) $^ -o $@@
1827 @end example
1829 @noindent
1830 (The variable @code{CFLAGS} exists so you can specify flags for C
1831 compilation by implicit rules; we use it here for consistency so it will
1832 affect all C compilations uniformly;
1833 @pxref{Implicit Variables, ,Variables Used by Implicit Rules}.)
1835 Often the dependencies include header files as well, which you do not
1836 want to mention in the commands.  The automatic variable @samp{$<} is
1837 just the first dependency:
1839 @example
1840 VPATH = src:../headers
1841 foo.o : foo.c defs.h hack.h
1842         cc -c $(CFLAGS) $< -o $@@
1843 @end example
1845 @node Implicit/Search, Libraries/Search, Commands/Search, Directory Search
1846 @subsection Directory Search and Implicit Rules
1847 @cindex @code{VPATH}, and implicit rules
1848 @cindex directory search (@code{VPATH}), and implicit rules
1849 @cindex search path for dependencies (@code{VPATH}), and implicit rules
1850 @cindex implicit rule, and directory search
1851 @cindex implicit rule, and @code{VPATH}
1852 @cindex rule, implicit, and directory search
1853 @cindex rule, implicit, and @code{VPATH}
1855 The search through the directories specified in @code{VPATH} or with
1856 @code{vpath} also happens during consideration of implicit rules
1857 (@pxref{Implicit Rules, ,Using Implicit Rules}).
1859 For example, when a file @file{foo.o} has no explicit rule, @code{make}
1860 considers implicit rules, such as the built-in rule to compile
1861 @file{foo.c} if that file exists.  If such a file is lacking in the
1862 current directory, the appropriate directories are searched for it.  If
1863 @file{foo.c} exists (or is mentioned in the makefile) in any of the
1864 directories, the implicit rule for C compilation is applied.
1866 The commands of implicit rules normally use automatic variables as a
1867 matter of necessity; consequently they will use the file names found by
1868 directory search with no extra effort.
1870 @node Libraries/Search,  , Implicit/Search, Directory Search
1871 @subsection Directory Search for Link Libraries
1872 @cindex link libraries, and directory search
1873 @cindex libraries for linking, directory search
1874 @cindex directory search (@code{VPATH}), and link libraries 
1875 @cindex @code{VPATH}, and link libraries 
1876 @cindex search path for dependencies (@code{VPATH}), and link libraries 
1877 @cindex @code{-l} (library search)
1879 Directory search applies in a special way to libraries used with the
1880 linker.  This special feature comes into play when you write a dependency
1881 whose name is of the form @samp{-l@var{name}}.  (You can tell something
1882 strange is going on here because the dependency is normally the name of a
1883 file, and the @emph{file name} of the library looks like
1884 @file{lib@var{name}.a}, not like @samp{-l@var{name}}.)@refill
1886 When a dependency's name has the form @samp{-l@var{name}}, @code{make}
1887 handles it specially by searching for the file @file{lib@var{name}.a} in
1888 the current directory, in directories specified by matching @code{vpath}
1889 search paths and the @code{VPATH} search path, and then in the
1890 directories @file{/lib}, @file{/usr/lib}, and @file{@var{prefix}/lib}
1891 (normally @file{/usr/local/lib}).
1893 For example,
1895 @example
1896 @group
1897 foo : foo.c -lcurses
1898         cc $^ -o $@@
1899 @end group
1900 @end example
1902 @noindent
1903 would cause the command @samp{cc foo.c /usr/lib/libcurses.a -o foo} to
1904 be executed when @file{foo} is older than @file{foo.c} or than
1905 @file{/usr/lib/libcurses.a}.@refill
1907 @node Phony Targets, Force Targets, Directory Search, Rules
1908 @section Phony Targets
1909 @cindex phony targets
1910 @cindex targets, phony
1911 @cindex targets without a file
1913 A phony target is one that is not really the name of a file.  It is just a
1914 name for some commands to be executed when you make an explicit request.
1915 There are two reasons to use a phony target: to avoid a conflict with
1916 a file of the same name, and to improve performance.
1918 If you write a rule whose commands will not create the target file, the
1919 commands will be executed every time the target comes up for remaking.
1920 Here is an example:
1922 @example
1923 @group
1924 clean:
1925         rm *.o temp
1926 @end group
1927 @end example
1929 @noindent
1930 Because the @code{rm} command does not create a file named @file{clean},
1931 probably no such file will ever exist.  Therefore, the @code{rm} command
1932 will be executed every time you say @samp{make clean}.
1933 @cindex @code{rm} (shell command)
1935 @findex .PHONY
1936 The phony target will cease to work if anything ever does create a file
1937 named @file{clean} in this directory.  Since it has no dependencies, the
1938 file @file{clean} would inevitably be considered up to date, and its
1939 commands would not be executed.  To avoid this problem, you can explicitly
1940 declare the target to be phony, using the special target @code{.PHONY}
1941 (@pxref{Special Targets, ,Special Built-in Target Names}) as follows:
1943 @example
1944 .PHONY : clean
1945 @end example
1947 @noindent
1948 Once this is done, @samp{make clean} will run the commands regardless of
1949 whether there is a file named @file{clean}.
1951 Since it knows that phony targets do not name actual files that could be
1952 remade from other files, @code{make} skips the implicit rule search for
1953 phony targets (@pxref{Implicit Rules}).  This is why declaring a target
1954 phony is good for performance, even if you are not worried about the
1955 actual file existing.
1957 Thus, you first write the line that states that @code{clean} is a
1958 phony target, then you write the rule, like this:
1960 @example
1961 @group
1962 .PHONY: clean
1963 clean:
1964         rm *.o temp
1965 @end group
1966 @end example
1968 A phony target should not be a dependency of a real target file; if it
1969 is, its commands are run every time @code{make} goes to update that
1970 file.  As long as a phony target is never a dependency of a real
1971 target, the phony target commands will be executed only when the phony
1972 target is a specified goal (@pxref{Goals, ,Arguments to Specify the
1973 Goals}).
1975 Phony targets can have dependencies.  When one directory contains multiple
1976 programs, it is most convenient to describe all of the programs in one
1977 makefile @file{./Makefile}.  Since the target remade by default will be the
1978 first one in the makefile, it is common to make this a phony target named
1979 @samp{all} and give it, as dependencies, all the individual programs.  For
1980 example:
1982 @example
1983 all : prog1 prog2 prog3
1984 .PHONY : all
1986 prog1 : prog1.o utils.o
1987         cc -o prog1 prog1.o utils.o
1989 prog2 : prog2.o
1990         cc -o prog2 prog2.o
1992 prog3 : prog3.o sort.o utils.o
1993         cc -o prog3 prog3.o sort.o utils.o
1994 @end example
1996 @noindent
1997 Now you can say just @samp{make} to remake all three programs, or specify
1998 as arguments the ones to remake (as in @samp{make prog1 prog3}).
2000 When one phony target is a dependency of another, it serves as a subroutine
2001 of the other.  For example, here @samp{make cleanall} will delete the
2002 object files, the difference files, and the file @file{program}:
2004 @example
2005 .PHONY: cleanall cleanobj cleandiff
2007 cleanall : cleanobj cleandiff
2008         rm program
2010 cleanobj :
2011         rm *.o
2013 cleandiff :
2014         rm *.diff
2015 @end example
2017 @node Force Targets, Empty Targets, Phony Targets, Rules
2018 @section Rules without Commands or Dependencies
2019 @cindex force targets
2020 @cindex targets, force
2021 @cindex @code{FORCE}
2022 @cindex rule, no commands or dependencies
2024 If a rule has no dependencies or commands, and the target of the rule
2025 is a nonexistent file, then @code{make} imagines this target to have
2026 been updated whenever its rule is run.  This implies that all targets
2027 depending on this one will always have their commands run.
2029 An example will illustrate this:
2031 @example
2032 @group
2033 clean: FORCE
2034         rm $(objects)
2035 FORCE:
2036 @end group
2037 @end example
2039 Here the target @samp{FORCE} satisfies the special conditions, so the
2040 target @file{clean} that depends on it is forced to run its commands.
2041 There is nothing special about the name @samp{FORCE}, but that is one name
2042 commonly used this way.
2044 As you can see, using @samp{FORCE} this way has the same results as using
2045 @samp{.PHONY: clean}.  
2047 Using @samp{.PHONY} is more explicit and more efficient.  However,
2048 other versions of @code{make} do not support @samp{.PHONY}; thus
2049 @samp{FORCE} appears in many makefiles.  @xref{Phony Targets}.
2051 @node Empty Targets, Special Targets, Force Targets, Rules
2052 @section Empty Target Files to Record Events
2053 @cindex empty targets
2054 @cindex targets, empty
2055 @cindex recording events with empty targets
2057 The @dfn{empty target} is a variant of the phony target; it is used to hold
2058 commands for an action that you request explicitly from time to time.
2059 Unlike a phony target, this target file can really exist; but the file's
2060 contents do not matter, and usually are empty.
2062 The purpose of the empty target file is to record, with its
2063 last-modification time, when the rule's commands were last executed.  It
2064 does so because one of the commands is a @code{touch} command to update the
2065 target file.
2067 The empty target file must have some dependencies.  When you ask to remake
2068 the empty target, the commands are executed if any dependency is more
2069 recent than the target; in other words, if a dependency has changed since
2070 the last time you remade the target.  Here is an example:
2072 @example
2073 print: foo.c bar.c
2074         lpr -p $?
2075         touch print
2076 @end example
2077 @cindex @code{print} target
2078 @cindex @code{lpr} (shell command)
2079 @cindex @code{touch} (shell command)
2081 @noindent
2082 With this rule, @samp{make print} will execute the @code{lpr} command if
2083 either source file has changed since the last @samp{make print}.  The
2084 automatic variable @samp{$?} is used to print only those files that have
2085 changed (@pxref{Automatic, ,Automatic Variables}).
2087 @node Special Targets, Multiple Targets, Empty Targets, Rules
2088 @section Special Built-in Target Names
2089 @cindex special targets
2090 @cindex built-in special targets
2091 @cindex targets, built-in special
2093 Certain names have special meanings if they appear as targets.
2095 @table @code
2096 @findex .PHONY
2097 @item .PHONY
2099 The dependencies of the special target @code{.PHONY} are considered to
2100 be phony targets.  When it is time to consider such a target,
2101 @code{make} will run its commands unconditionally, regardless of
2102 whether a file with that name exists or what its last-modification
2103 time is.  @xref{Phony Targets, ,Phony Targets}.
2105 @findex .SUFFIXES
2106 @item .SUFFIXES
2108 The dependencies of the special target @code{.SUFFIXES} are the list
2109 of suffixes to be used in checking for suffix rules.  
2110 @xref{Suffix Rules, , Old-Fashioned Suffix Rules}.
2112 @findex .DEFAULT
2113 @item .DEFAULT
2115 The commands specified for @code{.DEFAULT} are used for any target for
2116 which no rules are found (either explicit rules or implicit rules).
2117 @xref{Last Resort}.  If @code{.DEFAULT} commands are specified, every
2118 file mentioned as a dependency, but not as a target in a rule, will have
2119 these commands executed on its behalf.  @xref{Search Algorithm,
2120 ,Implicit Rule Search Algorithm}.
2122 @findex .PRECIOUS
2123 @item .PRECIOUS
2124 @cindex precious targets
2125 @cindex preserving with @code{.PRECIOUS}
2127 The targets which @code{.PRECIOUS} depends on are given the following
2128 special treatment: if @code{make} is killed or interrupted during the
2129 execution of their commands, the target is not deleted.
2130 @xref{Interrupts, ,Interrupting or Killing @code{make}}.
2131 Also, if the target is an intermediate file, it will not be deleted
2132 after it is no longer needed, as is normally done.
2133 @xref{Chained Rules, ,Chains of Implicit Rules}.
2135 You can also list the target pattern of an implicit rule (such as
2136 @samp{%.o}) as a dependency file of the special target @code{.PRECIOUS}
2137 to preserve intermediate files created by rules whose target patterns
2138 match that file's name.
2140 @findex .IGNORE
2141 @item .IGNORE
2143 Simply by being mentioned as a target, @code{.IGNORE} says to ignore
2144 errors in execution of commands.  The dependencies and commands for
2145 @code{.IGNORE} are not meaningful.
2147 @samp{.IGNORE} exists for historical compatibility.  Since
2148 @code{.IGNORE} affects every command in the makefile, it is not very
2149 useful; we recommend you use the more selective ways to ignore errors
2150 in specific commands.  @xref{Errors, ,Errors in Commands}.
2152 @findex .SILENT
2153 @item .SILENT
2155 Simply by being mentioned as a target, @code{.SILENT} says not to
2156 print commands before executing them.  The dependencies and commands
2157 for @code{.SILENT} are not meaningful.
2159 @samp{.SILENT} exists for historical compatibility.  We recommend you
2160 use the more selective ways to silence specific commands.
2161 @xref{Echoing, ,Command Echoing}.  If you want to silence all commands
2162 for a particular run of @code{make}, use the @samp{-s} or
2163 @w{@samp{--silent}} option (@pxref{Options Summary}).
2165 @findex .EXPORT_ALL_VARIABLES
2166 @item .EXPORT_ALL_VARIABLES
2168 Simply by being mentioned as a target, this tells @code{make} to
2169 export all variables to child processes by default.
2170 @xref{Variables/Recursion, ,Communicating Variables to a
2171 Sub-@code{make}}.
2172 @end table
2174 Any defined implicit rule suffix also counts as a special target if it
2175 appears as a target, and so does the concatenation of two suffixes, such
2176 as @samp{.c.o}.  These targets are suffix rules, an obsolete way of
2177 defining implicit rules (but a way still widely used).  In principle, any
2178 target name could be special in this way if you break it in two and add
2179 both pieces to the suffix list.  In practice, suffixes normally begin with
2180 @samp{.}, so these special target names also begin with @samp{.}.
2181 @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
2183 @node Multiple Targets, Multiple Rules, Special Targets, Rules
2184 @section Multiple Targets in a Rule
2185 @cindex multiple targets
2186 @cindex several targets in a rule
2187 @cindex targets, multiple
2188 @cindex rule, with multiple targets
2190 A rule with multiple targets is equivalent to writing many rules, each with
2191 one target, and all identical aside from that.  The same commands apply to
2192 all the targets, but their effects may vary because you can substitute the
2193 actual target name into the command using @samp{$@@}.  The rule contributes
2194 the same dependencies to all the targets also.
2196 This is useful in two cases.
2198 @itemize @bullet
2199 @item
2200 You want just dependencies, no commands.  For example:
2202 @example
2203 kbd.o command.o files.o: command.h
2204 @end example
2206 @noindent
2207 gives an additional dependency to each of the three object files
2208 mentioned.
2210 @item
2211 Similar commands work for all the targets.  The commands do not need
2212 to be absolutely identical, since the automatic variable @samp{$@@}
2213 can be used to substitute the particular target to be remade into the
2214 commands (@pxref{Automatic, ,Automatic Variables}).  For example:
2216 @example
2217 @group
2218 bigoutput littleoutput : text.g
2219         generate text.g -$(subst output,,$@@) > $@@
2220 @end group
2221 @end example
2222 @findex subst
2224 @noindent
2225 is equivalent to
2227 @example
2228 bigoutput : text.g
2229         generate text.g -big > bigoutput
2230 littleoutput : text.g
2231         generate text.g -little > littleoutput
2232 @end example
2234 @noindent
2235 Here we assume the hypothetical program @code{generate} makes two
2236 types of output, one if given @samp{-big} and one if given
2237 @samp{-little}.
2238 @xref{Text Functions, ,Functions for String Substitution and Analysis},
2239 for an explanation of the @code{subst} function.
2240 @end itemize
2242 Suppose you would like to vary the dependencies according to the target,
2243 much as the variable @samp{$@@} allows you to vary the commands.
2244 You cannot do this with multiple targets in an ordinary rule, but you can
2245 do it with a @dfn{static pattern rule}.
2246 @xref{Static Pattern, ,Static Pattern Rules}.
2248 @node Multiple Rules, Static Pattern, Multiple Targets, Rules
2249 @section Multiple Rules for One Target
2250 @cindex multiple rules for one target
2251 @cindex several rules for one target
2252 @cindex rule, multiple for one target
2253 @cindex target, multiple rules for one
2255 One file can be the target of several rules.  All the dependencies
2256 mentioned in all the rules are merged into one list of dependencies for
2257 the target.  If the target is older than any dependency from any rule,
2258 the commands are executed.
2260 There can only be one set of commands to be executed for a file.
2261 If more than one rule gives commands for the same file, 
2262 @code{make} uses the last set given and prints an error message.
2263 (As a special case, if the file's name begins with a dot, no
2264 error message is printed.  This odd behavior is only for
2265 compatibility with other implementations of @code{make}.)  
2266 There is no reason to
2267 write your makefiles this way; that is why @code{make} gives you
2268 an error message.@refill
2270 An extra rule with just dependencies can be used to give a few extra
2271 dependencies to many files at once.  For example, one usually has a
2272 variable named @code{objects} containing a list of all the compiler output
2273 files in the system being made.  An easy way to say that all of them must
2274 be recompiled if @file{config.h} changes is to write the following:
2276 @example
2277 objects = foo.o bar.o
2278 foo.o : defs.h
2279 bar.o : defs.h test.h
2280 $(objects) : config.h
2281 @end example
2283 This could be inserted or taken out without changing the rules that really
2284 specify how to make the object files, making it a convenient form to use if
2285 you wish to add the additional dependency intermittently.
2287 Another wrinkle is that the additional dependencies could be specified with
2288 a variable that you set with a command argument to @code{make}
2289 (@pxref{Overriding, ,Overriding Variables}).  For example,
2291 @example
2292 @group
2293 extradeps=
2294 $(objects) : $(extradeps)
2295 @end group
2296 @end example
2298 @noindent
2299 means that the command @samp{make extradeps=foo.h} will consider
2300 @file{foo.h} as a dependency of each object file, but plain @samp{make}
2301 will not.
2303 If none of the explicit rules for a target has commands, then @code{make}
2304 searches for an applicable implicit rule to find some commands
2305 @pxref{Implicit Rules, ,Using Implicit Rules}).
2307 @node Static Pattern, Double-Colon, Multiple Rules, Rules
2308 @section Static Pattern Rules
2309 @cindex static pattern rule
2310 @cindex rule, static pattern
2311 @cindex pattern rules, static (not implicit)
2312 @cindex varying dependencies
2313 @cindex dependencies, varying (static pattern)
2315 @dfn{Static pattern rules} are rules which specify multiple targets and
2316 construct the dependency names for each target based on the target name.
2317 They are more general than ordinary rules with multiple targets because the
2318 targets do not have to have identical dependencies.  Their dependencies must
2319 be @emph{analogous}, but not necessarily @emph{identical}.
2321 @menu
2322 * Static Usage::                The syntax of static pattern rules.
2323 * Static versus Implicit::      When are they better than implicit rules?
2324 @end menu
2326 @node Static Usage, Static versus Implicit,  , Static Pattern
2327 @subsection Syntax of Static Pattern Rules
2328 @cindex static pattern rule, syntax of
2329 @cindex pattern rules, static, syntax of
2331 Here is the syntax of a static pattern rule:
2333 @example
2334 @var{targets} @dots{}: @var{target-pattern}: @var{dep-patterns} @dots{}
2335         @var{commands}
2336         @dots{}
2337 @end example
2339 @noindent
2340 The @var{targets} list specifies the targets that the rule applies to.
2341 The targets can contain wildcard characters, just like the targets of
2342 ordinary rules (@pxref{Wildcards, ,Using Wildcard Characters in File
2343 Names}).
2345 @cindex target pattern, static (not implicit)
2346 @cindex stem
2347 The @var{target-pattern} and @var{dep-patterns} say how to compute the
2348 dependencies of each target.  Each target is matched against the
2349 @var{target-pattern} to extract a part of the target name, called the
2350 @dfn{stem}.  This stem is substituted into each of the @var{dep-patterns}
2351 to make the dependency names (one from each @var{dep-pattern}).
2353 Each pattern normally contains the character @samp{%} just once.  When the
2354 @var{target-pattern} matches a target, the @samp{%} can match any part of
2355 the target name; this part is called the @dfn{stem}.  The rest of the
2356 pattern must match exactly.  For example, the target @file{foo.o} matches
2357 the pattern @samp{%.o}, with @samp{foo} as the stem.  The targets
2358 @file{foo.c} and @file{foo.out} do not match that pattern.@refill
2360 @cindex dependency pattern, static (not implicit)
2361 The dependency names for each target are made by substituting the stem
2362 for the @samp{%} in each dependency pattern.  For example, if one
2363 dependency pattern is @file{%.c}, then substitution of the stem
2364 @samp{foo} gives the dependency name @file{foo.c}.  It is legitimate
2365 to write a dependency pattern that does not contain @samp{%}; then this
2366 dependency is the same for all targets.
2368 @cindex @code{%}, quoting in static pattern
2369 @cindex @code{%}, quoting with @code{\} (backslash)
2370 @cindex @code{\} (backslash), to quote @code{%}
2371 @cindex backslash (@code{\}), to quote @code{%}
2372 @cindex quoting @code{%}, in static pattern
2373 @samp{%} characters in pattern rules can be quoted with preceding
2374 backslashes (@samp{\}).  Backslashes that would otherwise quote @samp{%}
2375 characters can be quoted with more backslashes.  Backslashes that quote
2376 @samp{%} characters or other backslashes are removed from the pattern
2377 before it is compared to file names or has a stem substituted into it.
2378 Backslashes that are not in danger of quoting @samp{%} characters go
2379 unmolested.  For example, the pattern @file{the\%weird\\%pattern\\} has
2380 @samp{the%weird\} preceding the operative @samp{%} character, and
2381 @samp{pattern\\} following it.  The final two backslashes are left alone
2382 because they cannot affect any @samp{%} character.@refill
2384 Here is an example, which compiles each of @file{foo.o} and @file{bar.o}
2385 from the corresponding @file{.c} file:
2387 @example
2388 @group
2389 objects = foo.o bar.o
2391 $(objects): %.o: %.c
2392         $(CC) -c $(CFLAGS) $< -o $@@
2393 @end group
2394 @end example
2396 @noindent
2397 Here @samp{$<} is the automatic variable that holds the name of the
2398 dependency and @samp{$@@} is the automatic variable that holds the name
2399 of the target; see @ref{Automatic, , Automatic Variables}.
2401 Each target specified must match the target pattern; a warning is issued
2402 for each target that does not.  If you have a list of files, only some of
2403 which will match the pattern, you can use the @code{filter} function to
2404 remove nonmatching file names (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
2406 @example
2407 files = foo.elc bar.o lose.o
2409 $(filter %.o,$(files)): %.o: %.c
2410         $(CC) -c $(CFLAGS) $< -o $@@
2411 $(filter %.elc,$(files)): %.elc: %.el
2412         emacs -f batch-byte-compile $<
2413 @end example
2415 @noindent
2416 In this example the result of @samp{$(filter %.o,$(files))} is
2417 @file{bar.o lose.o}, and the first static pattern rule causes each of
2418 these object files to be updated by compiling the corresponding C source
2419 file.  The result of @w{@samp{$(filter %.elc,$(files))}} is
2420 @file{foo.elc}, so that file is made from @file{foo.el}.@refill
2422 Another example shows how to use @code{$*} in static pattern rules:
2423 @vindex $*@r{, and static pattern}
2425 @example
2426 @group
2427 bigoutput littleoutput : %output : text.g
2428         generate text.g -$* > $@@
2429 @end group
2430 @end example
2432 @noindent
2433 When the @code{generate} command is run, @code{$*} will expand to the
2434 stem, either @samp{big} or @samp{little}.
2436 @node Static versus Implicit,  , Static Usage, Static Pattern
2437 @subsection Static Pattern Rules versus Implicit Rules
2438 @cindex rule, static pattern versus implicit
2439 @cindex static pattern rule, versus implicit
2441 A static pattern rule has much in common with an implicit rule defined as a
2442 pattern rule (@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}).
2443 Both have a pattern for the target and patterns for constructing the
2444 names of dependencies.  The difference is in how @code{make} decides
2445 @emph{when} the rule applies.
2447 An implicit rule @emph{can} apply to any target that matches its pattern,
2448 but it @emph{does} apply only when the target has no commands otherwise
2449 specified, and only when the dependencies can be found.  If more than one
2450 implicit rule appears applicable, only one applies; the choice depends on
2451 the order of rules.
2453 By contrast, a static pattern rule applies to the precise list of targets
2454 that you specify in the rule.  It cannot apply to any other target and it
2455 invariably does apply to each of the targets specified.  If two conflicting
2456 rules apply, and both have commands, that's an error.
2458 The static pattern rule can be better than an implicit rule for these
2459 reasons:
2461 @itemize @bullet
2462 @item
2463 You may wish to override the usual implicit rule for a few
2464 files whose names cannot be categorized syntactically but
2465 can be given in an explicit list.
2467 @item
2468 If you cannot be sure of the precise contents of the directories
2469 you are using, you may not be sure which other irrelevant files
2470 might lead @code{make} to use the wrong implicit rule.  The choice
2471 might depend on the order in which the implicit rule search is done.
2472 With static pattern rules, there is no uncertainty: each rule applies
2473 to precisely the targets specified.
2474 @end itemize
2476 @node Double-Colon, Automatic Dependencies, Static Pattern, Rules
2477 @section Double-Colon Rules
2478 @cindex double-colon rules
2479 @cindex rule, double-colon (@code{::})
2480 @cindex multiple rules for one target (@code{::})
2481 @cindex @code{::} rules (double-colon)
2483 @dfn{Double-colon} rules are rules written with @samp{::} instead of
2484 @samp{:} after the target names.  They are handled differently from
2485 ordinary rules when the same target appears in more than one rule.
2487 When a target appears in multiple rules, all the rules must be the same
2488 type: all ordinary, or all double-colon.  If they are double-colon, each of
2489 them is independent of the others.  Each double-colon rule's commands are
2490 executed if the target is older than any dependencies of that rule.  This
2491 can result in executing none, any, or all of the double-colon rules.
2493 Double-colon rules with the same target are in fact completely separate
2494 from one another.  Each double-colon rule is processed individually, just
2495 as rules with different targets are processed.
2497 The double-colon rules for a target are executed in the order they appear
2498 in the makefile.  However, the cases where double-colon rules really make
2499 sense are those where the order of executing the commands would not matter.
2501 Double-colon rules are somewhat obscure and not often very useful; they
2502 provide a mechanism for cases in which the method used to update a target
2503 differs depending on which dependency files caused the update, and such
2504 cases are rare.
2506 Each double-colon rule should specify commands; if it does not, an
2507 implicit rule will be used if one applies.  
2508 @xref{Implicit Rules, ,Using Implicit Rules}.
2510 @node Automatic Dependencies,  , Double-Colon, Rules
2511 @section Generating Dependencies Automatically
2512 @cindex dependencies, automatic generation
2513 @cindex automatic generation of dependencies
2514 @cindex generating dependencies automatically
2516 In the makefile for a program, many of the rules you need to write often
2517 say only that some object file depends on some header
2518 file.  For example, if @file{main.c} uses @file{defs.h} via an
2519 @code{#include}, you would write:
2521 @example
2522 main.o: defs.h
2523 @end example
2525 @noindent
2526 You need this rule so that @code{make} knows that it must remake
2527 @file{main.o} whenever @file{defs.h} changes.  You can see that for a
2528 large program you would have to write dozens of such rules in your
2529 makefile.  And, you must always be very careful to update the makefile
2530 every time you add or remove an @code{#include}.
2531 @cindex @code{#include}
2533 @cindex @code{-M} (to compiler)
2534 To avoid this hassle, most modern C compilers can write these rules for
2535 you, by looking at the @code{#include} lines in the source files.
2536 Usually this is done with the @samp{-M} option to the compiler.
2537 For example, the command:
2539 @example
2540 cc -M main.c
2541 @end example
2543 @noindent
2544 generates the output:
2546 @example
2547 main.o : main.c defs.h
2548 @end example
2550 @noindent
2551 Thus you no longer have to write all those rules yourself.
2552 The compiler will do it for you.
2554 Note that such a dependency constitutes mentioning @file{main.o} in a
2555 makefile, so it can never be considered an intermediate file by implicit
2556 rule search.  This means that @code{make} won't ever remove the file
2557 after using it; @pxref{Chained Rules, ,Chains of Implicit Rules}.
2559 @cindex @code{make depend}
2560 With old @code{make} programs, it was traditional practice to use this
2561 compiler feature to generate dependencies on demand with a command like
2562 @samp{make depend}.  That command would create a file @file{depend}
2563 containing all the automatically-generated dependencies; then the
2564 makefile could use @code{include} to read them in (@pxref{Include}).
2566 In GNU @code{make}, the feature of remaking makefiles makes this
2567 practice obsolete---you need never tell @code{make} explicitly to
2568 regenerate the dependencies, because it always regenerates any makefile
2569 that is out of date.  @xref{Remaking Makefiles}.
2571 The practice we recommend for automatic dependency generation is to have
2572 one makefile corresponding to each source file.  For each source file
2573 @file{@var{name}.c} there is a makefile @file{@var{name}.d} which lists
2574 what files the object file @file{@var{name}.o} depends on.  That way
2575 only the source files that have changed need to be rescanned to produce
2576 the new dependencies.
2578 Here is the pattern rule to generate a file of dependencies (i.e., a makefile)
2579 called @file{@var{name}.d} from a C source file called @file{@var{name}.c}:
2581 @example
2582 @group
2583 %.d: %.c
2584         $(SHELL) -ec '$(CC) -M $(CPPFLAGS) $< | sed '\''s/$*.o/& $@@/g'\'' > $@@'
2585 @end group
2586 @end example
2588 @noindent
2589 @xref{Pattern Rules}, for information on defining pattern rules.  The
2590 @samp{-e} flag to the shell makes it exit immediately if the
2591 @code{$(CC)} command fails (exits with a nonzero status).  Normally the
2592 shell exits with the status of the last command in the pipeline
2593 (@code{sed} in this case), so @code{make} would not notice a nonzero
2594 status from the compiler.
2595 @cindex @code{-e} (shell flag)
2597 @cindex @code{sed} (shell command)
2598 The purpose of the @code{sed} command is to translate (for example):
2600 @example
2601 main.o : main.c defs.h
2602 @end example
2604 @noindent
2605 into:
2607 @example
2608 main.o main.d : main.c defs.h
2609 @end example
2611 @noindent
2612 @cindex @code{.d}
2613 This makes each @samp{.d} file depend on all the source and header files
2614 that the corresponding @samp{.o} file depends on.  @code{make} then
2615 knows it must regenerate the dependencies whenever any of the source or
2616 header files changes.
2618 Once you've defined the rule to remake the @samp{.d} files,
2619 you then use the @code{include} directive to read them all in.
2620 @xref{Include}.  For example:
2622 @example
2623 @group
2624 sources = foo.c bar.c
2626 include $(sources:.c=.d)
2627 @end group
2628 @end example
2630 @noindent
2631 (This example uses a substitution variable reference to translate the
2632 list of source files @samp{foo.c bar.c} into a list of dependency
2633 makefiles, @samp{foo.d bar.d}.  @xref{Substitution Refs}, for full
2634 information on substitution references.)  Since the @samp{.d} files are
2635 makefiles like any others, @code{make} will remake them as necessary
2636 with no further work from you.  @xref{Remaking Makefiles}.
2638 @node Commands, Using Variables, Rules, Top
2639 @chapter Writing the Commands in Rules
2640 @cindex commands, how to write
2641 @cindex rule commands
2642 @cindex writing rule commands
2644 The commands of a rule consist of shell command lines to be executed one by
2645 one.  Each command line must start with a tab, except that the first
2646 command line may be attached to the target-and-dependencies line with a
2647 semicolon in between.  Blank lines and lines of just comments may appear
2648 among the command lines; they are ignored.
2650 Users use many different shell programs, but commands in makefiles are
2651 always interpreted by @file{/bin/sh} unless the makefile specifies
2652 otherwise.  @xref{Execution, ,Command Execution}.
2654 @cindex comments, in commands
2655 @cindex commands, comments in
2656 @cindex @code{#} (comments), in commands
2657 The shell that is in use determines whether comments can be written on
2658 command lines, and what syntax they use.  When the shell is
2659 @file{/bin/sh}, a @samp{#} starts a comment that extends to the end of
2660 the line.  The @samp{#} does not have to be at the beginning of a line.
2661 Text on a line before a @samp{#} is not part of the comment.
2663 @menu
2664 * Echoing::                     How to control when commands are echoed.
2665 * Execution::                   How commands are executed.
2666 * Parallel::                    How commands can be executed in parallel.
2667 * Errors::                      What happens after a command execution error. 
2668 * Interrupts::                  What happens when a command is interrupted.
2669 * Recursion::                   Invoking @code{make} from makefiles.
2670 * Sequences::                   Defining canned sequences of commands.
2671 * Empty Commands::              Defining useful, do-nothing commands.
2672 @end menu
2674 @node Echoing, Execution,  , Commands
2675 @section Command Echoing
2676 @cindex echoing of commands
2677 @cindex silent operation
2678 @cindex @code{@@} (in commands)
2679 @cindex commands, echoing
2680 @cindex printing of commands
2682 Normally @code{make} prints each command line before it is executed.
2683 We call this @dfn{echoing} because it gives the appearance that you
2684 are typing the commands yourself.
2686 When a line starts with @samp{@@}, the echoing of that line is suppressed.
2687 The @samp{@@} is discarded before the command is passed to the shell.
2688 Typically you would use this for a command whose only effect is to print
2689 something, such as an @code{echo} command to indicate progress through
2690 the makefile:
2692 @example
2693 @@echo About to make distribution files
2694 @end example
2696 @cindex @code{-n}
2697 @cindex @code{--just-print}
2698 @cindex @code{--dry-run}
2699 @cindex @code{--recon}
2700 When @code{make} is given the flag @samp{-n} or @samp{--just-print},
2701 echoing is all that happens, no execution.  @xref{Options Summary,
2702 ,Summary of Options}.  In this case and only this case, even the
2703 commands starting with @samp{@@} are printed.  This flag is useful for
2704 finding out which commands @code{make} thinks are necessary without
2705 actually doing them.
2707 @cindex @code{-s}
2708 @cindex @code{--silent}
2709 @cindex @code{--quiet}
2710 @findex .SILENT
2711 The @samp{-s} or @samp{--silent}
2712 flag to @code{make} prevents all echoing, as if all commands
2713 started with @samp{@@}.  A rule in the makefile for the special target
2714 @code{.SILENT} has the same effect 
2715 (@pxref{Special Targets, ,Special Built-in Target Names}).
2716 @code{.SILENT} is essentially obsolete since @samp{@@} is more flexible.@refill
2718 @node Execution, Parallel, Echoing, Commands
2719 @section Command Execution
2720 @cindex commands, execution
2721 @cindex execution, of commands
2722 @cindex shell command, execution
2723 @vindex SHELL @r{(command execution)}
2725 When it is time to execute commands to update a target, they are executed
2726 by making a new subshell for each line.  (In practice, @code{make} may
2727 take shortcuts that do not affect the results.)
2729 @cindex @code{cd} (shell command)
2730 @strong{Please note:} this implies that shell commands such as
2731 @code{cd} that set variables local to each process will not affect the
2732 following command lines.  If you want to use @code{cd} to affect the
2733 next command, put the two on a single line with a semicolon between
2734 them.  Then @code{make} will consider them a single command and pass
2735 them, together, to a shell which will execute them in sequence.  For
2736 example:
2738 @example
2739 foo : bar/lose
2740         cd bar; gobble lose > ../foo
2741 @end example
2743 @cindex commands, backslash (@code{\}) in
2744 @cindex commands, quoting newlines in
2745 @cindex backslash (@code{\}), in commands
2746 @cindex @code{\} (backslash), in commands
2747 @cindex quoting newline, in commands
2748 @cindex newline, quoting, in commands
2749 If you would like to split a single shell command into multiple lines of
2750 text, you must use a backslash at the end of all but the last subline.
2751 Such a sequence of lines is combined into a single line, by deleting the
2752 backslash-newline sequences, before passing it to the shell.  Thus, the
2753 following is equivalent to the preceding example:
2755 @example
2756 @group
2757 foo : bar/lose
2758         cd bar;  \
2759         gobble lose > ../foo
2760 @end group
2761 @end example
2763 @vindex SHELL
2764 The program used as the shell is taken from the variable @code{SHELL}.
2765 By default, the program @file{/bin/sh} is used.
2767 @cindex environment, @code{SHELL} in
2768 Unlike most variables, the variable @code{SHELL} is never set from the
2769 environment.  This is because the @code{SHELL} environment variable is
2770 used to specify your personal choice of shell program for interactive
2771 use.  It would be very bad for personal choices like this to affect
2772 the functioning of makefiles.  @xref{Environment, ,Variables from the
2773 Environment}.
2775 @node Parallel, Errors, Execution, Commands
2776 @section Parallel Execution
2777 @cindex commands, execution in parallel
2778 @cindex parallel execution
2779 @cindex execution, in parallel
2780 @cindex job slots
2781 @cindex @code{-j}
2782 @cindex @code{--jobs}
2784 GNU @code{make} knows how to execute several commands at once.
2785 Normally, @code{make} will execute only one command at a time, waiting
2786 for it to finish before executing the next.  However, the @samp{-j} or
2787 @samp{--jobs} option tells @code{make} to execute many commands
2788 simultaneously.@refill
2790 If the @samp{-j} option is followed by an integer, this is the number of
2791 commands to execute at once; this is called the number of @dfn{job slots}.
2792 If there is nothing looking like an integer after the @samp{-j} option,
2793 there is no limit on the number of job slots.  The default number of job
2794 slots is one, which means serial execution (one thing at a time).
2796 One unpleasant consequence of running several commands simultaneously is
2797 that output from all of the commands comes when the commands send it, so
2798 messages from different commands may be interspersed.
2800 Another problem is that two processes cannot both take input from the
2801 same device; so to make sure that only one command tries to take input
2802 from the terminal at once, @code{make} will invalidate the standard
2803 input streams of all but one running command.  This means that
2804 attempting to read from standard input will usually be a fatal error (a
2805 @samp{Broken pipe} signal) for most child processes if there are
2806 several.
2807 @cindex broken pipe
2808 @cindex standard input
2810 It is unpredictable which command will have a valid standard input stream
2811 (which will come from the terminal, or wherever you redirect the standard
2812 input of @code{make}).  The first command run will always get it first, and
2813 the first command started after that one finishes will get it next, and so
2816 We will change how this aspect of @code{make} works if we find a better
2817 alternative.  In the mean time, you should not rely on any command using
2818 standard input at all if you are using the parallel execution feature; but
2819 if you are not using this feature, then standard input works normally in
2820 all commands.
2822 If a command fails (is killed by a signal or exits with a nonzero
2823 status), and errors are not ignored for that command
2824 (@pxref{Errors, ,Errors in Commands}),
2825 the remaining command lines to remake the same target will not be run.
2826 If a command fails and the @samp{-k} or @samp{--keep-going}
2827 option was not given
2828 (@pxref{Options Summary, ,Summary of Options}), 
2829 @code{make} aborts execution.  If make
2830 terminates for any reason (including a signal) with child processes
2831 running, it waits for them to finish before actually exiting.@refill
2833 @cindex load average
2834 @cindex limiting jobs based on load
2835 @cindex jobs, limiting based on load
2836 @cindex @code{-l} (load average)
2837 @cindex @code{--max-load}
2838 @cindex @code{--load-average}
2839 When the system is heavily loaded, you will probably want to run fewer jobs
2840 than when it is lightly loaded.  You can use the @samp{-l} option to tell
2841 @code{make} to limit the number of jobs to run at once, based on the load
2842 average.  The @samp{-l} or @samp{--max-load}
2843 option is followed by a floating-point number.  For
2844 example,
2846 @example
2847 -l 2.5
2848 @end example
2850 @noindent
2851 will not let @code{make} start more than one job if the load average is
2852 above 2.5.  The @samp{-l} option with no following number removes the
2853 load limit, if one was given with a previous @samp{-l} option.@refill
2855 More precisely, when @code{make} goes to start up a job, and it already has
2856 at least one job running, it checks the current load average; if it is not
2857 lower than the limit given with @samp{-l}, @code{make} waits until the load
2858 average goes below that limit, or until all the other jobs finish.
2860 By default, there is no load limit.
2862 @node Errors, Interrupts, Parallel, Commands
2863 @section Errors in Commands
2864 @cindex errors (in commands)
2865 @cindex commands, errors in
2866 @cindex exit status (errors)
2868 After each shell command returns, @code{make} looks at its exit status.
2869 If the command completed successfully, the next command line is executed
2870 in a new shell; after the last command line is finished, the rule is
2871 finished. 
2873 If there is an error (the exit status is nonzero), @code{make} gives up on
2874 the current rule, and perhaps on all rules.
2876 Sometimes the failure of a certain command does not indicate a problem.
2877 For example, you may use the @code{mkdir} command to ensure that a
2878 directory exists.  If the directory already exists, @code{mkdir} will
2879 report an error, but you probably want @code{make} to continue regardless.
2881 @cindex @code{-} (in commands)
2882 To ignore errors in a command line, write a @samp{-} at the beginning of
2883 the line's text (after the initial tab).  The @samp{-} is discarded before
2884 the command is passed to the shell for execution.  
2886 For example,
2888 @example
2889 @group
2890 clean:
2891         -rm -f *.o
2892 @end group
2893 @end example
2894 @cindex @code{rm} (shell command)
2896 @noindent
2897 This causes @code{rm} to continue even if it is unable to remove a file.
2899 @cindex @code{-i}
2900 @cindex @code{--ignore-errors}
2901 @findex .IGNORE
2902 When you run @code{make} with the @samp{-i} or @samp{--ignore-errors}
2903 flag, errors are ignored in
2904 all commands of all rules.  A rule in the makefile for the special target
2905 @code{.IGNORE} has the same effect.  These ways of ignoring errors are
2906 obsolete because @samp{-} is more flexible.
2908 When errors are to be ignored, because of either a @samp{-} or the
2909 @samp{-i} flag, @code{make} treats an error return just like success,
2910 except that it prints out a message that tells you the status code
2911 the command exited with, and says that the error has been ignored.
2913 When an error happens that @code{make} has not been told to ignore,
2914 it implies that the current target cannot be correctly remade, and neither
2915 can any other that depends on it either directly or indirectly.  No further
2916 commands will be executed for these targets, since their preconditions
2917 have not been achieved.
2919 @cindex @code{-k}
2920 @cindex @code{--keep-going}
2921 Normally @code{make} gives up immediately in this circumstance, returning a
2922 nonzero status.  However, if the @samp{-k} or @samp{--keep-going}
2923 flag is specified, @code{make}
2924 continues to consider the other dependencies of the pending targets,
2925 remaking them if necessary, before it gives up and returns nonzero status.
2926 For example, after an error in compiling one object file, @samp{make -k}
2927 will continue compiling other object files even though it already knows
2928 that linking them will be impossible.  @xref{Options Summary, ,Summary of Options}.
2930 The usual behavior assumes that your purpose is to get the specified
2931 targets up to date; once @code{make} learns that this is impossible, it
2932 might as well report the failure immediately.  The @samp{-k} option says
2933 that the real purpose is to test as many of the changes made in the
2934 program as possible, perhaps to find several independent problems so
2935 that you can correct them all before the next attempt to compile.  This
2936 is why Emacs' @code{compile} command passes the @samp{-k} flag by
2937 default.
2938 @cindex Emacs (@code{M-x compile})
2940 @node Interrupts, Recursion, Errors, Commands
2941 @section Interrupting or Killing @code{make}
2942 @cindex interrupt
2943 @cindex signal
2944 @cindex deletion of target files
2945 @cindex target, deleting on interrupt
2946 @cindex killing (interruption)
2948 If @code{make} gets a fatal signal while a command is executing, it may
2949 delete the target file that the command was supposed to update.  This is
2950 done if the target file's last-modification time has changed since
2951 @code{make} first checked it.
2953 The purpose of deleting the target is to make sure that it is remade from
2954 scratch when @code{make} is next run.  Why is this?  Suppose you type
2955 @kbd{Ctrl-c} while a compiler is running, and it has begun to write an
2956 object file @file{foo.o}.  The @kbd{Ctrl-c} kills the compiler, resulting
2957 in an incomplete file whose last-modification time is newer than the source
2958 file @file{foo.c}.  But @code{make} also receives the @kbd{Ctrl-c} signal
2959 and deletes this incomplete file.  If @code{make} did not do this, the next
2960 invocation of @code{make} would think that @file{foo.o} did not require
2961 updating---resulting in a strange error message from the linker when it
2962 tries to link an object file half of which is missing.
2964 @findex .PRECIOUS
2965 You can prevent the deletion of a target file in this way by making the
2966 special target @code{.PRECIOUS} depend on it.  Before remaking a target,
2967 @code{make} checks to see whether it appears on the dependencies of
2968 @code{.PRECIOUS}, and thereby decides whether the target should be deleted
2969 if a signal happens.  Some reasons why you might do this are that the
2970 target is updated in some atomic fashion, or exists only to record a
2971 modification-time (its contents do not matter), or must exist at all
2972 times to prevent other sorts of trouble.
2974 @node Recursion, Sequences, Interrupts, Commands
2975 @section Recursive Use of @code{make}
2976 @cindex recursion
2977 @cindex subdirectories, recursion for
2979 Recursive use of @code{make} means using @code{make} as a command in a
2980 makefile.  This technique is useful when you want separate makefiles for
2981 various subsystems that compose a larger system.  For example, suppose you
2982 have a subdirectory @file{subdir} which has its own makefile, and you would
2983 like the containing directory's makefile to run @code{make} on the
2984 subdirectory.  You can do it by writing this:
2986 @example
2987 subsystem:
2988         cd subdir; $(MAKE)
2989 @end example
2991 @noindent
2992 or, equivalently, this (@pxref{Options Summary, ,Summary of Options}):
2994 @example
2995 subsystem:
2996         $(MAKE) -C subdir
2997 @end example
2998 @cindex @code{-C}
2999 @cindex @code{--directory}
3001 You can write recursive @code{make} commands just by copying this example,
3002 but there are many things to know about how they work and why, and about
3003 how the sub-@code{make} relates to the top-level @code{make}.
3005 @menu
3006 * MAKE Variable::               The special effects of using @samp{$(MAKE)}.
3007 * Variables/Recursion::         How to communicate variables to a sub-@code{make}.
3008 * Options/Recursion::           How to communicate options to a sub-@code{make}.
3009 * -w Option::                   How the @samp{-w} or @samp{--print-directory} option
3010                                  helps debug use of recursive @code{make} commands.
3011 @end menu
3013 @node MAKE Variable, Variables/Recursion,  , Recursion
3014 @subsection How the @code{MAKE} Variable Works
3015 @vindex MAKE
3016 @cindex recursion, and @code{MAKE} variable
3018 Recursive @code{make} commands should always use the variable @code{MAKE},
3019 not the explicit command name @samp{make}, as shown here:
3021 @example
3022 @group
3023 subsystem:
3024         cd subdir; $(MAKE)
3025 @end group
3026 @end example
3028 The value of this variable is the file name with which @code{make} was
3029 invoked.  If this file name was @file{/bin/make}, then the command executed
3030 is @samp{cd subdir; /bin/make}.  If you use a special version of
3031 @code{make} to run the top-level makefile, the same special version will be
3032 executed for recursive invocations.
3033 @cindex @code{cd} (shell command)
3035 Also, any arguments that define variable values are added to @code{MAKE},
3036 so the sub-@code{make} gets them too.  Thus, if you do @samp{make
3037 CFLAGS=-O}, so that all C compilations will be optimized, the
3038 sub-@code{make} is run with @samp{cd subdir; /bin/make CFLAGS=-O}.@refill
3040 @vindex MAKE_COMMAND
3041 @vindex MAKEOVERRIDES
3042 The @code{MAKE} variable actually just refers to two other variables
3043 which contain these special values.  In fact, @code{MAKE} is always
3044 defined as @samp{$(MAKE_COMMAND) $(MAKEOVERRIDES)}.  The variable
3045 @code{MAKE_COMMAND} is the file name with which @code{make} was invoked
3046 (such as @file{/bin/make}, above).  The variable @code{MAKEOVERRIDES}
3047 contains definitions for the variables defined on the command line; in
3048 the above example, its value is @samp{CFLAGS=-O}.  If you @emph{do not}
3049 want these variable definitions done in all recursive @code{make}
3050 invocations, you can redefine the @code{MAKEOVERRIDES} variable to
3051 remove them.  You do this in any of the normal ways for defining
3052 variables: in a makefile (@pxref{Setting, ,Setting Variables}); on the command
3053 line with an argument like @samp{MAKEOVERRIDES=} 
3054 (@pxref{Overriding, ,Overriding Variables}); or with an environment variable
3055 (@pxref{Environment, ,Variables from the Environment}).
3057 As a special feature, using the variable @code{MAKE} in the commands of
3058 a rule alters the effects of the @samp{-t} (@samp{--touch}), @samp{-n}
3059 (@samp{--just-print}), or @samp{-q} (@w{@samp{--question}}) option.
3060 Using the @code{MAKE} variable has the same effect as using a @samp{+}
3061 character at the beginning of the command line.  @xref{Instead of
3062 Execution, ,Instead of Executing the Commands}.@refill
3064 Consider the command @samp{make -t} in the above example.  (The
3065 @samp{-t} option marks targets as up to date without actually running
3066 any commands; see @ref{Instead of Execution}.)  Following the usual
3067 definition of @samp{-t}, a @samp{make -t} command in the example would
3068 create a file named @file{subsystem} and do nothing else.  What you
3069 really want it to do is run @samp{@w{cd subdir;} @w{make -t}}; but that would
3070 require executing the command, and @samp{-t} says not to execute
3071 commands.@refill
3072 @cindex @code{-t}, and recursion
3073 @cindex recursion, and @code{-t}
3074 @cindex @code{--touch}, and recursion
3076 The special feature makes this do what you want: whenever a command
3077 line of a rule contains the variable @code{MAKE}, the flags @samp{-t},
3078 @samp{-n} and @samp{-q} do not apply to that line.  Command lines
3079 containing @code{MAKE} are executed normally despite the presence of a
3080 flag that causes most commands not to be run.  The usual
3081 @code{MAKEFLAGS} mechanism passes the flags to the sub-@code{make}
3082 (@pxref{Options/Recursion, ,Communicating Options to a
3083 Sub-@code{make}}), so your request to touch the files, or print the
3084 commands, is propagated to the subsystem.@refill
3086 @node Variables/Recursion, Options/Recursion, MAKE Variable, Recursion
3087 @subsection Communicating Variables to a Sub-@code{make}
3088 @cindex sub-@code{make}
3089 @cindex environment, and recursion
3090 @cindex exporting variables
3091 @cindex variables, environment
3092 @cindex variables, exporting
3093 @cindex recursion, and environment
3094 @cindex recursion, and variables
3096 Variable values of the top-level @code{make} can be passed to the
3097 sub-@code{make} through the environment by explicit request.  These
3098 variables are defined in the sub-@code{make} as defaults, but do not
3099 override what is specified in the sub-@code{make}'s makefile unless
3100 you use the @samp{-e} switch
3101 (@pxref{Options Summary, ,Summary of Options}).@refill
3103 To pass down, or @dfn{export}, a variable, @code{make} adds the variable
3104 and its value to the environment for running each command.  The
3105 sub-@code{make}, in turn, uses the environment to initialize its table
3106 of variable values.  @xref{Environment, ,Variables from the
3107 Environment}.
3109 Except by explicit request, @code{make} exports a variable only if it
3110 is either defined in the environment initially or set on the command
3111 line, and if its name consists only of letters, numbers, and underscores.
3112 Some shells cannot cope with environment variable names consisting of
3113 characters other than letters, numbers, and underscores.
3115 The special variables @code{SHELL} and @code{MAKEFLAGS} are always
3116 exported (unless you unexport them).
3117 @code{MAKEFILES} is exported if you set it to anything.
3119 Variables are @emph{not} normally passed down if they were created by
3120 default by @code{make} (@pxref{Implicit Variables, ,Variables Used by
3121 Implicit Rules}).  The sub-@code{make} will define these for
3122 itself.@refill
3124 @findex export
3125 If you want to export specific variables to a sub-@code{make}, use the
3126 @code{export} directive, like this:
3128 @example
3129 export @var{variable} @dots{}
3130 @end example
3132 @noindent
3133 @findex unexport
3134 If you want to @emph{prevent} a variable from being exported, use the
3135 @code{unexport} directive, like this:
3137 @example
3138 unexport @var{variable} @dots{}
3139 @end example
3141 @noindent
3142 As a convenience, you can define a variable and export it at the same
3143 time by doing:
3145 @example
3146 export @var{variable} = value
3147 @end example
3149 @noindent
3150 has the same result as:
3152 @example
3153 @var{variable} = value
3154 export @var{variable}
3155 @end example
3157 @noindent
3160 @example
3161 export @var{variable} := value
3162 @end example
3164 @noindent
3165 has the same result as:
3167 @example
3168 @var{variable} := value
3169 export @var{variable}
3170 @end example
3172 Likewise,
3174 @example
3175 export @var{variable} += value
3176 @end example
3178 @noindent
3179 is just like:
3181 @example
3182 @var{variable} += value
3183 export @var{variable}
3184 @end example
3186 @noindent
3187 @xref{Appending, ,Appending More Text to Variables}.
3189 You may notice that the @code{export} and @code{unexport} directives
3190 work in @code{make} in the same way they work in the shell, @code{sh}.
3192 If you want all variables to be exported by default, you can use
3193 @code{export} by itself:
3195 @example
3196 export
3197 @end example
3199 @noindent
3200 This tells @code{make} that variables which are not explicitly mentioned
3201 in an @code{export} or @code{unexport} directive should be exported.
3202 Any variable given in an @code{unexport} directive will still @emph{not}
3203 be exported.  If you use @code{export} by itself to export variables by
3204 default, variables whose names contain characters other than
3205 alphanumerics and underscores will not be exported unless specifically
3206 mentioned in an @code{export} directive.@refill
3208 @findex .EXPORT_ALL_VARIABLES
3209 The behavior elicited by an @code{export} directive by itself was the
3210 default in older versions of GNU @code{make}.  If your makefiles depend
3211 on this behavior and you want to be compatible with old versions of
3212 @code{make}, you can write a rule for the special target
3213 @code{.EXPORT_ALL_VARIABLES} instead of using the @code{export} directive.
3214 This will be ignored by old @code{make}s, while the @code{export}
3215 directive will cause a syntax error.@refill
3216 @cindex compatibility in exporting
3218 Likewise, you can use @code{unexport} by itself to tell @code{make}
3219 @emph{not} to export variables by default.  Since this is the default
3220 behavior, you would only need to do this if @code{export} had been used
3221 by itself earlier (in an included makefile, perhaps).  You
3222 @strong{cannot} use @code{export} and @code{unexport} by themselves to
3223 have variables exported for some commands and not for others.  The last
3224 @code{export} or @code{unexport} directive that appears by itself
3225 determines the behavior for the entire run of @code{make}.@refill
3227 @vindex MAKELEVEL
3228 @cindex recursion, level of
3229 As a special feature, the variable @code{MAKELEVEL} is changed when it
3230 is passed down from level to level.  This variable's value is a string
3231 which is the depth of the level as a decimal number.  The value is
3232 @samp{0} for the top-level @code{make}; @samp{1} for a sub-@code{make},
3233 @samp{2} for a sub-sub-@code{make}, and so on.  The incrementation
3234 happens when @code{make} sets up the environment for a command.@refill
3236 The main use of @code{MAKELEVEL} is to test it in a conditional
3237 directive (@pxref{Conditionals, ,Conditional Parts of Makefiles}); this
3238 way you can write a makefile that behaves one way if run recursively and
3239 another way if run directly by you.@refill
3241 @vindex MAKEFILES
3242 You can use the variable @code{MAKEFILES} to cause all sub-@code{make}
3243 commands to use additional makefiles.  The value of @code{MAKEFILES} is
3244 a whitespace-separated list of file names.  This variable, if defined in
3245 the outer-level makefile, is passed down through the environment; then
3246 it serves as a list of extra makefiles for the sub-@code{make} to read
3247 before the usual or specified ones.  @xref{MAKEFILES Variable, ,The
3248 Variable @code{MAKEFILES}}.@refill
3250 @node Options/Recursion, -w Option, Variables/Recursion, Recursion
3251 @subsection Communicating Options to a Sub-@code{make}
3252 @cindex options, and recursion
3253 @cindex recursion, and options
3255 @vindex MAKEFLAGS
3256 Flags such as @samp{-s} and @samp{-k} are passed automatically to the
3257 sub-@code{make} through the variable @code{MAKEFLAGS}.  This variable is
3258 set up automatically by @code{make} to contain the flag letters that
3259 @code{make} received.  Thus, if you do @w{@samp{make -ks}} then
3260 @code{MAKEFLAGS} gets the value @samp{ks}.@refill
3262 As a consequence, every sub-@code{make} gets a value for @code{MAKEFLAGS}
3263 in its environment.  In response, it takes the flags from that value and
3264 processes them as if they had been given as arguments.
3265 @xref{Options Summary, ,Summary of Options}.
3267 @cindex @code{-C}, and recursion
3268 @cindex @code{-f}, and recursion
3269 @cindex @code{-I}, and recursion
3270 @cindex @code{-o}, and recursion
3271 @cindex @code{-W}, and recursion
3272 @cindex @code{--directory}, and recursion
3273 @cindex @code{--file}, and recursion
3274 @cindex @code{--include-dir}, and recursion
3275 @cindex @code{--old-file}, and recursion
3276 @cindex @code{--assume-old}, and recursion
3277 @cindex @code{--assume-new}, and recursion
3278 @cindex @code{--new-file}, and recursion
3279 @cindex recursion, and @code{-C}
3280 @cindex recursion, and @code{-f}
3281 @cindex recursion, and @code{-I}
3282 @cindex recursion, and @code{-o}
3283 @cindex recursion, and @code{-W}
3284 The options @samp{-C}, @samp{-f}, @samp{-I}, @samp{-o}, and @samp{-W}
3285 are not put into @code{MAKEFLAGS}; these options are not passed down.@refill
3287 @cindex @code{-j}, and recursion
3288 @cindex @code{--jobs}, and recursion
3289 @cindex recursion, and @code{-j}
3290 @cindex job slots, and recursion
3291 The @samp{-j} option is a special case (@pxref{Parallel, ,Parallel Execution}).
3292 If you set it to some numeric value, @samp{-j 1} is always put into
3293 @code{MAKEFLAGS} instead of the value you specified.  This is because if
3294 the @w{@samp{-j}} option were passed down to sub-@code{make}s, you would
3295 get many more jobs running in parallel than you asked for.  If you give
3296 @samp{-j} with no numeric argument, meaning to run as many jobs as
3297 possible in parallel, this is passed down, since multiple infinities are
3298 no more than one.@refill
3300 If you do not want to pass the other flags down, you must change the
3301 value of @code{MAKEFLAGS}, like this:
3303 @example
3304 MAKEFLAGS=
3305 subsystem:
3306         cd subdir; $(MAKE)
3307 @end example
3309 or like this:
3311 @example
3312 subsystem:
3313         cd subdir; $(MAKE) MAKEFLAGS=
3314 @end example
3316 @vindex MFLAGS
3317 A similar variable @code{MFLAGS} exists also, for historical compatibility.
3318 It has the same value as @code{MAKEFLAGS} except that it always begins with
3319 a hyphen unless it is empty (@code{MAKEFLAGS} begins with a hyphen only when
3320 it begins with an option that has no single-letter version, such as
3321 @samp{--warn-undefined-variables}).  @code{MFLAGS} was traditionally used
3322 explicitly in the recursive @code{make} command, like this:
3324 @example
3325 subsystem:
3326         cd subdir; $(MAKE) $(MFLAGS)
3327 @end example
3329 @noindent
3330 but now @code{MAKEFLAGS} makes this usage redundant.  If you want your
3331 makefiles to be compatible with old @code{make} programs, use this
3332 technique; it will work fine with more modern @code{make} versions too.
3334 @cindex setting options from environment
3335 @cindex options, setting from environment
3336 @cindex setting options in makefiles
3337 @cindex options, setting in makefiles
3338 The @code{MAKEFLAGS} variable can also be useful if you want to have
3339 certain options, such as @samp{-k} (@pxref{Options Summary, ,Summary of
3340 Options}), set each time you run @code{make}.  You simply put a value for
3341 @code{MAKEFLAGS} in your environment.  You can also set @code{MAKEFLAGS} in
3342 a makefile, to specify additional flags that should also be in effect for
3343 that makefile.  (Note that you cannot use @code{MFLAGS} this way.  That
3344 variable is set only for compatibility; @code{make} does not interpret a
3345 value you set for it in any way.)
3347 When @code{make} interprets the value of @code{MAKEFLAGS} (either from the
3348 environment or from a makefile), it first prepends a hyphen if the value
3349 does not already begin with one.  Then it chops the value into words
3350 separated by blanks, and parses these words as if they were options given
3351 on the command line (except that @samp{-C}, @samp{-f}, @samp{-h},
3352 @samp{-o}, @samp{-W}, and their long-named versions are ignored; and there
3353 is no error for an invalid option).
3355 If you do put @code{MAKEFLAGS} in your environment, you should be sure not
3356 to include any options that will drastically affect the actions of
3357 @code{make} and undermine the purpose of makefiles and of @code{make}
3358 itself.  For instance, the @samp{-t}, @samp{-n}, and @samp{-q} options, if
3359 put in one of these variables, could have disastrous consequences and would
3360 certainly have at least surprising and probably annoying effects.@refill
3362 @node -w Option,  , Options/Recursion, Recursion
3363 @subsection The @samp{--print-directory} Option
3364 @cindex directories, printing them
3365 @cindex printing directories
3366 @cindex recursion, and printing directories
3368 If you use several levels of recursive @code{make} invocations, the
3369 @samp{-w} or @w{@samp{--print-directory}} option can make the output a
3370 lot easier to understand by showing each directory as @code{make}
3371 starts processing it and as @code{make} finishes processing it.  For
3372 example, if @samp{make -w} is run in the directory @file{/u/gnu/make},
3373 @code{make} will print a line of the form:@refill
3375 @example
3376 make: Entering directory `/u/gnu/make'.
3377 @end example
3379 @noindent
3380 before doing anything else, and a line of the form:
3382 @example
3383 make: Leaving directory `/u/gnu/make'.
3384 @end example
3386 @noindent
3387 when processing is completed.
3389 @cindex @code{-C}, and @code{-w}
3390 @cindex @code{--directory}, and @code{--print-directory}
3391 @cindex recursion, and @code{-w}
3392 @cindex @code{-w}, and @code{-C}
3393 @cindex @code{-w}, and recursion
3394 @cindex @code{--print-directory}, and @code{--directory}
3395 @cindex @code{--print-directory}, and recursion
3396 @cindex @code{--no-print-directory}
3397 @cindex @code{--print-directory}, disabling
3398 @cindex @code{-w}, disabling
3399 Normally, you do not need to specify this option because @samp{make}
3400 does it for you: @samp{-w} is turned on automatically when you use the
3401 @samp{-C} option, and in sub-@code{make}s.  @code{make} will not
3402 automatically turn on @samp{-w} if you also use @samp{-s}, which says to
3403 be silent, or if you use @samp{--no-print-directory} to explicitly
3404 disable it.
3406 @node Sequences, Empty Commands, Recursion, Commands
3407 @section Defining Canned Command Sequences
3408 @cindex sequences of commands
3409 @cindex commands, sequences of
3411 When the same sequence of commands is useful in making various targets, you
3412 can define it as a canned sequence with the @code{define} directive, and
3413 refer to the canned sequence from the rules for those targets.  The canned
3414 sequence is actually a variable, so the name must not conflict with other
3415 variable names.
3417 Here is an example of defining a canned sequence of commands:
3419 @example
3420 define run-yacc
3421 yacc $(firstword $^)
3422 mv y.tab.c $@@
3423 endef
3424 @end example
3425 @cindex @code{yacc}
3427 @noindent
3428 Here @code{run-yacc} is the name of the variable being defined;
3429 @code{endef} marks the end of the definition; the lines in between are the
3430 commands.  The @code{define} directive does not expand variable references
3431 and function calls in the canned sequence; the @samp{$} characters,
3432 parentheses, variable names, and so on, all become part of the value of the
3433 variable you are defining.
3434 @xref{Defining, ,Defining Variables Verbatim},
3435 for a complete explanation of @code{define}.
3437 The first command in this example runs Yacc on the first dependency of
3438 whichever rule uses the canned sequence.  The output file from Yacc is
3439 always named @file{y.tab.c}.  The second command moves the output to the
3440 rule's target file name.
3442 To use the canned sequence, substitute the variable into the commands of a
3443 rule.  You can substitute it like any other variable 
3444 (@pxref{Reference, ,Basics of Variable References}).
3445 Because variables defined by @code{define} are recursively expanded
3446 variables, all the variable references you wrote inside the @code{define}
3447 are expanded now.  For example:
3449 @example
3450 foo.c : foo.y
3451         $(run-yacc)
3452 @end example
3454 @noindent
3455 @samp{foo.y} will be substituted for the variable @samp{$^} when it occurs in
3456 @code{run-yacc}'s value, and @samp{foo.c} for @samp{$@@}.@refill
3458 This is a realistic example, but this particular one is not needed in
3459 practice because @code{make} has an implicit rule to figure out these
3460 commands based on the file names involved 
3461 (@pxref{Implicit Rules, ,Using Implicit Rules}).
3463 @cindex @@, and @code{define}
3464 @cindex -, and @code{define}
3465 @cindex +, and @code{define}
3466 In command execution, each line of a canned sequence is treated just as
3467 if the line appeared on its own in the rule, preceded by a tab.  In
3468 particular, @code{make} invokes a separate subshell for each line.  You
3469 can use the special prefix characters that affect command lines
3470 (@samp{@@}, @samp{-}, and @samp{+}) on each line of a canned sequence.
3471 @xref{Commands, ,Writing the Commands in Rules}.
3472 For example, using this canned sequence:
3474 @example
3475 define frobnicate
3476 @@echo "frobnicating target $@@"
3477 frob-step-1 $< -o $@@-step-1
3478 frob-step-2 $@@-step-1 -o $@@
3479 endef
3480 @end example
3482 @noindent
3483 @code{make} will not echo the first line, the @code{echo} command.
3484 But it @emph{will} echo the following two command lines.
3486 On the other hand, prefix characters on the command line that refers to
3487 a canned sequence apply to every line in the sequence.  So the rule:
3489 @example
3490 frob.out: frob.in
3491         @@$(frobnicate)
3492 @end example
3494 @noindent
3495 does not echo @emph{any} commands.
3496 (@xref{Echoing, ,Command Echoing}, for a full explanation of @samp{@@}.)
3498 @node Empty Commands,  , Sequences, Commands
3499 @section Using Empty Commands
3500 @cindex empty commands
3501 @cindex commands, empty
3503 It is sometimes useful to define commands which do nothing.  This is done
3504 simply by giving a command that consists of nothing but whitespace.  For
3505 example:
3507 @example
3508 target: ;
3509 @end example
3511 @noindent
3512 defines an empty command string for @file{target}.  You could also use a
3513 line beginning with a tab character to define an empty command string,
3514 but this would be confusing because such a line looks empty.
3516 @findex .DEFAULT@r{, and empty commands}
3517 You may be wondering why you would want to define a command string that
3518 does nothing.  The only reason this is useful is to prevent a target
3519 from getting implicit commands (from implicit rules or the
3520 @code{.DEFAULT} special target; @pxref{Implicit Rules} and 
3521 @pxref{Last Resort, ,Defining Last-Resort Default Rules}).@refill
3523 You may be inclined to define empty command strings for targets that are
3524 not actual files, but only exist so that their dependencies can be
3525 remade.  However, this is not the best way to do that, because the
3526 dependencies may not be remade properly if the target file actually does exist.
3527 @xref{Phony Targets, ,Phony Targets}, for a better way to do this.
3529 @node Using Variables, Conditionals, Commands, Top
3530 @chapter How to Use Variables
3531 @cindex variable
3532 @cindex value
3533 @cindex recursive variable expansion
3534 @cindex simple variable expansion
3536 A @dfn{variable} is a name defined in a makefile to represent a string
3537 of text, called the variable's @dfn{value}.  These values are
3538 substituted by explicit request into targets, dependencies, commands,
3539 and other parts of the makefile.  (In some other versions of @code{make},
3540 variables are called @dfn{macros}.)
3541 @cindex macro
3543 Variables and functions in all parts of a makefile are expanded when
3544 read, except for the shell commands in rules, the right-hand sides of
3545 variable definitions using @samp{=}, and the bodies of variable
3546 definitions using the @code{define} directive.@refill
3548 Variables can represent lists of file names, options to pass to compilers,
3549 programs to run, directories to look in for source files, directories to
3550 write output in, or anything else you can imagine.
3552 A variable name may be any sequence of characters not containing @samp{:},
3553 @samp{#}, @samp{=}, or leading or trailing whitespace.  However,
3554 variable names containing characters other than letters, numbers, and
3555 underscores should be avoided, as they may be given special meanings in the
3556 future, and with some shells they cannot be passed through the environment to a
3557 sub-@code{make} 
3558 (@pxref{Variables/Recursion, ,Communicating Variables to a Sub-@code{make}}).
3560 Variable names are case-sensitive.  The names @samp{foo}, @samp{FOO},
3561 and @samp{Foo} all refer to different variables.
3563 It is traditional to use upper case letters in variable names, but we
3564 recommend using lower case letters for variable names that serve internal
3565 purposes in the makefile, and reserving upper case for parameters that
3566 control implicit rules or for parameters that the user should override with
3567 command options (@pxref{Overriding, ,Overriding Variables}).
3569 A few variables have names that are a single punctuation character or
3570 just a few characters.  These are the @dfn{automatic variables}, and
3571 they have particular specialized uses.  @xref{Automatic, ,Automatic Variables}.
3573 @menu
3574 * Reference::                   How to use the value of a variable.
3575 * Flavors::                     Variables come in two flavors.
3576 * Advanced::                    Advanced features for referencing a variable.
3577 * Values::                      All the ways variables get their values.
3578 * Setting::                     How to set a variable in the makefile.
3579 * Appending::                   How to append more text to the old value
3580                                   of a variable.
3581 * Override Directive::          How to set a variable in the makefile even if
3582                                   the user has set it with a command argument.
3583 * Defining::                    An alternate way to set a variable 
3584                                   to a verbatim string.
3585 * Environment::                 Variable values can come from the environment.
3586 * Automatic::                   Some special variables have predefined
3587                                   meanings for use with implicit rules.
3588 @end menu
3590 @node Reference, Flavors,  , Using Variables
3591 @section Basics of Variable References
3592 @cindex variables, how to reference
3593 @cindex reference to variables
3594 @cindex @code{$}, in variable reference
3595 @cindex dollar sign (@code{$}), in variable reference
3597 To substitute a variable's value, write a dollar sign followed by the name
3598 of the variable in parentheses or braces: either @samp{$(foo)} or
3599 @samp{$@{foo@}} is a valid reference to the variable @code{foo}.  This
3600 special significance of @samp{$} is why you must write @samp{$$} to have
3601 the effect of a single dollar sign in a file name or command.
3603 Variable references can be used in any context: targets, dependencies,
3604 commands, most directives, and new variable values.  Here is an
3605 example of a common case, where a variable holds the names of all the
3606 object files in a program:
3608 @example
3609 @group
3610 objects = program.o foo.o utils.o
3611 program : $(objects)
3612         cc -o program $(objects)
3614 $(objects) : defs.h
3615 @end group
3616 @end example
3618 Variable references work by strict textual substitution.  Thus, the rule
3620 @example
3621 @group
3622 foo = c
3623 prog.o : prog.$(foo)
3624         $(foo)$(foo) -$(foo) prog.$(foo)
3625 @end group
3626 @end example
3628 @noindent
3629 could be used to compile a C program @file{prog.c}.  Since spaces before
3630 the variable value are ignored in variable assignments, the value of
3631 @code{foo} is precisely @samp{c}.  (Don't actually write your makefiles
3632 this way!)
3634 A dollar sign followed by a character other than a dollar sign,
3635 open-parenthesis or open-brace treats that single character as the
3636 variable name.  Thus, you could reference the variable @code{x} with
3637 @samp{$x}.  However, this practice is strongly discouraged, except in
3638 the case of the automatic variables (@pxref{Automatic, ,Automatic Variables}).
3640 @node Flavors, Advanced, Reference, Using Variables
3641 @section The Two Flavors of Variables
3642 @cindex flavors of variables
3643 @cindex recursive variable expansion
3644 @cindex variables, flavors
3645 @cindex recursively expanded variables
3646 @cindex variables, recursively expanded
3648 There are two ways that a variable in GNU @code{make} can have a value;
3649 we call them the two @dfn{flavors} of variables.  The two flavors are
3650 distinguished in how they are defined and in what they do when expanded.
3652 @cindex =
3653 The first flavor of variable is a @dfn{recursively expanded} variable.
3654 Variables of this sort are defined by lines using @samp{=}
3655 (@pxref{Setting, ,Setting Variables}) or by the @code{define} directive
3656 (@pxref{Defining, ,Defining Variables Verbatim}).  The value you specify
3657 is installed verbatim; if it contains references to other variables,
3658 these references are expanded whenever this variable is substituted (in
3659 the course of expanding some other string).  When this happens, it is
3660 called @dfn{recursive expansion}.@refill
3662 For example,
3664 @example
3665 foo = $(bar)
3666 bar = $(ugh)
3667 ugh = Huh?
3669 all:;echo $(foo)
3670 @end example
3672 @noindent
3673 will echo @samp{Huh?}: @samp{$(foo)} expands to @samp{$(bar)} which
3674 expands to @samp{$(ugh)} which finally expands to @samp{Huh?}.@refill
3676 This flavor of variable is the only sort supported by other versions of
3677 @code{make}.  It has its advantages and its disadvantages.  An advantage
3678 (most would say) is that:
3680 @example
3681 CFLAGS = $(include_dirs) -O
3682 include_dirs = -Ifoo -Ibar
3683 @end example
3685 @noindent
3686 will do what was intended: when @samp{CFLAGS} is expanded in a command,
3687 it will expand to @samp{-Ifoo -Ibar -O}.  A major disadvantage is that you
3688 cannot append something on the end of a variable, as in
3690 @example
3691 CFLAGS = $(CFLAGS) -O
3692 @end example
3694 @noindent
3695 because it will cause an infinite loop in the variable expansion.
3696 (Actually @code{make} detects the infinite loop and reports an error.)
3697 @cindex loops in variable expansion
3698 @cindex variables, loops in expansion
3700 Another disadvantage is that any functions 
3701 (@pxref{Functions, ,Functions for Transforming Text})
3702 referenced in the definition will be executed every time the variable is
3703 expanded.  This makes @code{make} run slower; worse, it causes the
3704 @code{wildcard} and @code{shell} functions to give unpredictable results
3705 because you cannot easily control when they are called, or even how many
3706 times.
3708 To avoid all the problems and inconveniences of recursively expanded
3709 variables, there is another flavor: simply expanded variables.
3711 @cindex simply expanded variables
3712 @cindex variables, simply expanded
3713 @cindex :=
3714 @dfn{Simply expanded variables} are defined by lines using @samp{:=}
3715 (@pxref{Setting, ,Setting Variables}).  
3716 The value of a simply expanded variable is scanned
3717 once and for all, expanding any references to other variables and
3718 functions, when the variable is defined.  The actual value of the simply
3719 expanded variable is the result of expanding the text that you write.
3720 It does not contain any references to other variables; it contains their
3721 values @emph{as of the time this variable was defined}.  Therefore,
3723 @example
3724 x := foo
3725 y := $(x) bar
3726 x := later
3727 @end example
3729 @noindent
3730 is equivalent to
3732 @example
3733 y := foo bar
3734 x := later
3735 @end example
3737 When a simply expanded variable is referenced, its value is substituted
3738 verbatim.
3740 Here is a somewhat more complicated example, illustrating the use of
3741 @samp{:=} in conjunction with the @code{shell} function.
3742 (@xref{Shell Function, , The @code{shell} Function}.)  This example
3743 also shows use of the variable @code{MAKELEVEL}, which is changed
3744 when it is passed down from level to level.
3745 (@xref{Variables/Recursion, , Communicating Variables to a
3746 Sub-@code{make}}, for information about @code{MAKELEVEL}.)
3748 @vindex MAKELEVEL
3749 @vindex MAKE
3750 @example
3751 @group
3752 ifeq (0,$@{MAKELEVEL@})
3753 cur-dir   := $(shell pwd)
3754 whoami    := $(shell whoami)
3755 host-type := $(shell arch)
3756 MAKE := $@{MAKE@} host-type=$@{host-type@} whoami=$@{whoami@}
3757 endif
3758 @end group
3759 @end example
3761 @noindent 
3762 An advantage of this use of @samp{:=} is that a typical
3763 `descend into a directory' command then looks like this:
3765 @example
3766 @group
3767 $@{subdirs@}:
3768       $@{MAKE@} cur-dir=$@{cur-dir@}/$@@ -C $@@ all
3769 @end group
3770 @end example
3772 Simply expanded variables generally make complicated makefile programming
3773 more predictable because they work like variables in most programming
3774 languages.  They allow you to redefine a variable using its own value (or
3775 its value processed in some way by one of the expansion functions) and to
3776 use the expansion functions much more efficiently 
3777 (@pxref{Functions, ,Functions for Transforming Text}).
3779 @cindex spaces, in variable values
3780 @cindex whitespace, in variable values
3781 @cindex variables, spaces in values
3782 You can also use them to introduce controlled leading whitespace into
3783 variable values.  Leading whitespace characters are discarded from your
3784 input before substitution of variable references and function calls;
3785 this means you can include leading spaces in a variable value by
3786 protecting them with variable references, like this:
3788 @example
3789 nullstring :=
3790 space := $(nullstring) # end of the line
3791 @end example
3793 @noindent
3794 Here the value of the variable @code{space} is precisely one space.  The
3795 comment @w{@samp{# end of the line}} is included here just for clarity.
3796 Since trailing space characters are @emph{not} stripped from variable
3797 values, just a space at the end of the line would have the same effect
3798 (but be rather hard to read).  If you put whitespace at the end of a
3799 variable value, it is a good idea to put a comment like that at the end
3800 of the line to make your intent clear.  Conversely, if you do @emph{not}
3801 want any whitespace characters at the end of your variable value, you
3802 must remember not to put a random comment on the end of the line after
3803 some whitespace, such as this:
3805 @example
3806 dir := /foo/bar    # directory to put the frobs in
3807 @end example
3809 @noindent
3810 Here the value of the variable @code{dir} is @w{@samp{/foo/bar    }}
3811 (with four trailing spaces), which was probably not the intention.
3812 (Imagine something like @w{@samp{$(dir)/file}} with this definition!)
3814 @node Advanced, Values, Flavors, Using Variables
3815 @section Advanced Features for Reference to Variables
3816 @cindex reference to variables
3818 This section describes some advanced features you can use to reference
3819 variables in more flexible ways.
3821 @menu
3822 * Substitution Refs::           Referencing a variable with 
3823                                   substitutions on the value.
3824 * Computed Names::              Computing the name of the variable to refer to.
3825 @end menu
3827 @node Substitution Refs, Computed Names,  , Advanced
3828 @subsection Substitution References
3829 @cindex modified variable reference
3830 @cindex substitution variable reference
3831 @cindex variables, modified reference
3832 @cindex variables, substitution reference
3834 @cindex variables, substituting suffix in
3835 @cindex suffix, substituting in variables
3836 A @dfn{substitution reference} substitutes the value of a variable with
3837 alterations that you specify.  It has the form
3838 @samp{$(@var{var}:@var{a}=@var{b})} (or
3839 @samp{$@{@var{var}:@var{a}=@var{b}@}}) and its meaning is to take the value
3840 of the variable @var{var}, replace every @var{a} at the end of a word with
3841 @var{b} in that value, and substitute the resulting string.
3843 When we say ``at the end of a word'', we mean that @var{a} must appear
3844 either followed by whitespace or at the end of the value in order to be
3845 replaced; other occurrences of @var{a} in the value are unaltered.  For
3846 example:@refill
3848 @example
3849 foo := a.o b.o c.o
3850 bar := $(foo:.o=.c)
3851 @end example
3853 @noindent
3854 sets @samp{bar} to @samp{a.c b.c c.c}.  @xref{Setting, ,Setting Variables}.
3856 A substitution reference is actually an abbreviation for use of the
3857 @code{patsubst} expansion function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}).  We provide
3858 substitution references as well as @code{patsubst} for compatibility with
3859 other implementations of @code{make}.
3861 @findex patsubst
3862 Another type of substitution reference lets you use the full power of
3863 the @code{patsubst} function.  It has the same form
3864 @samp{$(@var{var}:@var{a}=@var{b})} described above, except that now
3865 @var{a} must contain a single @samp{%} character.  This case is
3866 equivalent to @samp{$(patsubst @var{a},@var{b},$(@var{var}))}.
3867 @xref{Text Functions, ,Functions for String Substitution and Analysis},
3868 for a description of the @code{patsubst} function.@refill
3870 @example
3871 @group
3872 @exdent For example:
3874 foo := a.o b.o c.o
3875 bar := $(foo:%.o=%.c)
3876 @end group
3877 @end example
3879 @noindent
3880 sets @samp{bar} to @samp{a.c b.c c.c}.
3882 @node Computed Names,  , Substitution Refs, Advanced
3883 @subsection Computed Variable Names
3884 @cindex nested variable reference
3885 @cindex computed variable name
3886 @cindex variables, computed names
3887 @cindex variables, nested references
3888 @cindex variables, @samp{$} in name
3889 @cindex @code{$}, in variable name
3890 @cindex dollar sign (@code{$}), in variable name
3892 Computed variable names are a complicated concept needed only for
3893 sophisticated makefile programming.  For most purposes you need not
3894 consider them, except to know that making a variable with a dollar sign
3895 in its name might have strange results.  However, if you are the type
3896 that wants to understand everything, or you are actually interested in
3897 what they do, read on.
3899 Variables may be referenced inside the name of a variable.  This is
3900 called a @dfn{computed variable name} or a @dfn{nested variable
3901 reference}.  For example,
3903 @example
3904 x = y
3905 y = z
3906 a := $($(x))
3907 @end example
3909 @noindent
3910 defines @code{a} as @samp{z}: the @samp{$(x)} inside @samp{$($(x))} expands
3911 to @samp{y}, so @samp{$($(x))} expands to @samp{$(y)} which in turn expands
3912 to @samp{z}.  Here the name of the variable to reference is not stated
3913 explicitly; it is computed by expansion of @samp{$(x)}.  The reference
3914 @samp{$(x)} here is nested within the outer variable reference.
3916 The previous example shows two levels of nesting, but any number of levels
3917 is possible.  For example, here are three levels:
3919 @example
3920 x = y
3921 y = z
3922 z = u
3923 a := $($($(x)))
3924 @end example
3926 @noindent
3927 Here the innermost @samp{$(x)} expands to @samp{y}, so @samp{$($(x))}
3928 expands to @samp{$(y)} which in turn expands to @samp{z}; now we have
3929 @samp{$(z)}, which becomes @samp{u}.
3931 References to recursively-expanded variables within a variable name are
3932 reexpanded in the usual fashion.  For example:
3934 @example
3935 x = $(y)
3936 y = z
3937 z = Hello
3938 a := $($(x))
3939 @end example
3941 @noindent
3942 defines @code{a} as @samp{Hello}: @samp{$($(x))} becomes @samp{$($(y))}
3943 which becomes @samp{$(z)} which becomes @samp{Hello}.
3945 Nested variable references can also contain modified references and
3946 function invocations (@pxref{Functions, ,Functions for Transforming Text}),
3947 just like any other reference.
3948 For example, using the @code{subst} function 
3949 (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
3951 @example
3952 @group
3953 x = variable1
3954 variable2 := Hello
3955 y = $(subst 1,2,$(x))
3956 z = y
3957 a := $($($(z)))
3958 @end group
3959 @end example
3961 @noindent
3962 eventually defines @code{a} as @samp{Hello}.  It is doubtful that anyone
3963 would ever want to write a nested reference as convoluted as this one, but
3964 it works: @samp{$($($(z)))} expands to @samp{$($(y))} which becomes
3965 @samp{$($(subst 1,2,$(x)))}.  This gets the value @samp{variable1} from
3966 @code{x} and changes it by substitution to @samp{variable2}, so that the
3967 entire string becomes @samp{$(variable2)}, a simple variable reference
3968 whose value is @samp{Hello}.@refill
3970 A computed variable name need not consist entirely of a single variable
3971 reference.  It can contain several variable references, as well as some
3972 invariant text.  For example,
3974 @example
3975 @group
3976 a_dirs := dira dirb
3977 1_dirs := dir1 dir2
3978 @end group
3980 @group
3981 a_files := filea fileb
3982 1_files := file1 file2
3983 @end group
3985 @group
3986 ifeq "$(use_a)" "yes"
3987 a1 := a
3988 else
3989 a1 := 1
3990 endif
3991 @end group
3993 @group
3994 ifeq "$(use_dirs)" "yes"
3995 df := dirs
3996 else
3997 df := files
3998 endif
4000 dirs := $($(a1)_$(df))
4001 @end group
4002 @end example
4004 @noindent
4005 will give @code{dirs} the same value as @code{a_dirs}, @code{1_dirs},
4006 @code{a_files} or @code{1_files} depending on the settings of @code{use_a}
4007 and @code{use_dirs}.@refill
4009 Computed variable names can also be used in substitution references:
4011 @example
4012 @group
4013 a_objects := a.o b.o c.o
4014 1_objects := 1.o 2.o 3.o
4016 sources := $($(a1)_objects:.o=.c)
4017 @end group
4018 @end example
4020 @noindent
4021 defines @code{sources} as either @samp{a.c b.c c.c} or @samp{1.c 2.c 3.c},
4022 depending on the value of @code{a1}.
4024 The only restriction on this sort of use of nested variable references
4025 is that they cannot specify part of the name of a function to be called.
4026 This is because the test for a recognized function name is done before
4027 the expansion of nested references.  For example,
4029 @example
4030 @group
4031 ifdef do_sort
4032 func := sort
4033 else
4034 func := strip
4035 endif
4036 @end group
4038 @group
4039 bar := a d b g q c
4040 @end group
4042 @group
4043 foo := $($(func) $(bar))
4044 @end group
4045 @end example
4047 @noindent
4048 attempts to give @samp{foo} the value of the variable @samp{sort a d b g
4049 q c} or @samp{strip a d b g q c}, rather than giving @samp{a d b g q c}
4050 as the argument to either the @code{sort} or the @code{strip} function.
4051 This restriction could be removed in the future if that change is shown
4052 to be a good idea.
4054 You can also use computed variable names in the left-hand side of a
4055 variable assignment, or in a @code{define} directive, as in:
4057 @example
4058 dir = foo
4059 $(dir)_sources := $(wildcard $(dir)/*.c)
4060 define $(dir)_print
4061 lpr $($(dir)_sources)
4062 endef
4063 @end example
4065 @noindent
4066 This example defines the variables @samp{dir}, @samp{foo_sources}, and
4067 @samp{foo_print}.
4069 Note that @dfn{nested variable references} are quite different from
4070 @dfn{recursively expanded variables}
4071 (@pxref{Flavors, ,The Two Flavors of Variables}), though both are
4072 used together in complex ways when doing makefile programming.@refill
4074 @node Values, Setting, Advanced, Using Variables
4075 @section How Variables Get Their Values
4076 @cindex variables, how they get their values
4077 @cindex value, how a variable gets it
4079 Variables can get values in several different ways:
4081 @itemize @bullet
4082 @item
4083 You can specify an overriding value when you run @code{make}.
4084 @xref{Overriding, ,Overriding Variables}.
4086 @item
4087 You can specify a value in the makefile, either
4088 with an assignment (@pxref{Setting, ,Setting Variables}) or with a
4089 verbatim definition (@pxref{Defining, ,Defining Variables Verbatim}).@refill
4091 @item
4092 Variables in the environment become @code{make} variables.
4093 @xref{Environment, ,Variables from the Environment}.
4095 @item
4096 Several @dfn{automatic} variables are given new values for each rule.
4097 Each of these has a single conventional use.
4098 @xref{Automatic, ,Automatic Variables}.
4100 @item
4101 Several variables have constant initial values.
4102 @xref{Implicit Variables, ,Variables Used by Implicit Rules}.
4103 @end itemize
4105 @node Setting, Appending, Values, Using Variables
4106 @section Setting Variables
4107 @cindex setting variables
4108 @cindex variables, setting
4109 @cindex =
4110 @cindex :=
4112 To set a variable from the makefile, write a line starting with the
4113 variable name followed by @samp{=} or @samp{:=}.  Whatever follows the
4114 @samp{=} or @samp{:=} on the line becomes the value.  For example,
4116 @example
4117 objects = main.o foo.o bar.o utils.o
4118 @end example
4120 @noindent
4121 defines a variable named @code{objects}.  Whitespace around the variable
4122 name and immediately after the @samp{=} is ignored.
4124 Variables defined with @samp{=} are @dfn{recursively expanded} variables.
4125 Variables defined with @samp{:=} are @dfn{simply expanded} variables; these
4126 definitions can contain variable references which will be expanded before
4127 the definition is made.  @xref{Flavors, ,The Two Flavors of Variables}.
4129 The variable name may contain function and variable references, which
4130 are expanded when the line is read to find the actual variable name to use.
4132 There is no limit on the length of the value of a variable except the
4133 amount of swapping space on the computer.  When a variable definition is
4134 long, it is a good idea to break it into several lines by inserting
4135 backslash-newline at convenient places in the definition.  This will not
4136 affect the functioning of @code{make}, but it will make the makefile easier
4137 to read.
4139 Most variable names are considered to have the empty string as a value if
4140 you have never set them.  Several variables have built-in initial values
4141 that are not empty, but you can set them in the usual ways
4142 (@pxref{Implicit Variables, ,Variables Used by Implicit Rules}).  
4143 Several special variables are set
4144 automatically to a new value for each rule; these are called the
4145 @dfn{automatic} variables (@pxref{Automatic, ,Automatic Variables}).
4147 @node Appending, Override Directive, Setting, Using Variables
4148 @section Appending More Text to Variables
4149 @cindex +=
4150 @cindex appending to variables
4151 @cindex variables, appending to
4153 Often it is useful to add more text to the value of a variable already defined.
4154 You do this with a line containing @samp{+=}, like this:
4156 @example
4157 objects += another.o
4158 @end example
4160 @noindent
4161 This takes the value of the variable @code{objects}, and adds the text
4162 @samp{another.o} to it (preceded by a single space).  Thus:
4164 @example
4165 objects = main.o foo.o bar.o utils.o
4166 objects += another.o
4167 @end example
4169 @noindent
4170 sets @code{objects} to @samp{main.o foo.o bar.o utils.o another.o}.
4172 Using @samp{+=} is similar to:
4174 @example
4175 objects = main.o foo.o bar.o utils.o
4176 objects := $(objects) another.o
4177 @end example
4179 @noindent
4180 but differs in ways that become important when you use more complex values.
4182 When the variable in question has not been defined before, @samp{+=}
4183 acts just like normal @samp{=}: it defines a recursively-expanded
4184 variable.  However, when there @emph{is} a previous definition, exactly
4185 what @samp{+=} does depends on what flavor of variable you defined
4186 originally.  @xref{Flavors, ,The Two Flavors of Variables}, for an
4187 explanation of the two flavors of variables.
4189 When you add to a variable's value with @samp{+=}, @code{make} acts
4190 essentially as if you had included the extra text in the initial
4191 definition of the variable.  If you defined it first with @samp{:=},
4192 making it a simply-expanded variable, @samp{+=} adds to that
4193 simply-expanded definition, and expands the new text before appending it
4194 to the old value just as @samp{:=} does
4195 (@pxref{Setting, ,Setting Variables}, for a full explanation of @samp{:=}).
4196 In fact,
4198 @example
4199 variable := value
4200 variable += more
4201 @end example
4203 @noindent
4204 is exactly equivalent to:
4206 @noindent
4207 @example
4208 variable := value
4209 variable := $(variable) more
4210 @end example
4212 On the other hand, when you use @samp{+=} with a variable that you defined
4213 first to be recursively-expanded using plain @samp{=}, @code{make} does
4214 something a bit different.  Recall that when you define a
4215 recursively-expanded variable, @code{make} does not expand the value you set
4216 for variable and function references immediately.  Instead it stores the text
4217 verbatim, and saves these variable and function references to be expanded
4218 later, when you refer to the new variable (@pxref{Flavors, ,The Two Flavors
4219 of Variables}).  When you use @samp{+=} on a recursively-expanded variable,
4220 it is this unexpanded text to which @code{make} appends the new text you
4221 specify.
4223 @example
4224 @group
4225 variable = value
4226 variable += more
4227 @end group
4228 @end example
4230 @noindent
4231 is roughly equivalent to:
4233 @example
4234 @group
4235 temp = value
4236 variable = $(temp) more
4237 @end group
4238 @end example
4240 @noindent
4241 except that of course it never defines a variable called @code{temp}.
4242 The importance of this comes when the variable's old value contains
4243 variable references.  Take this common example:
4245 @example
4246 CFLAGS = $(includes) -O
4247 @dots{}
4248 CFLAGS += -pg # enable profiling
4249 @end example
4251 @noindent
4252 The first line defines the @code{CFLAGS} variable with a reference to another
4253 variable, @code{includes}.  (@code{CFLAGS} is used by the rules for C
4254 compilation; @pxref{Catalogue of Rules, ,Catalogue of Implicit Rules}.)
4255 Using @samp{=} for the definition makes @code{CFLAGS} a recursively-expanded
4256 variable, meaning @w{@samp{$(includes) -O}} is @emph{not} expanded when
4257 @code{make} processes the definition of @code{CFLAGS}.  Thus, @code{includes}
4258 need not be defined yet for its value to take effect.  It only has to be
4259 defined before any reference to @code{CFLAGS}.  If we tried to append to the
4260 value of @code{CFLAGS} without using @samp{+=}, we might do it like this:
4262 @example
4263 CFLAGS := $(CFLAGS) -pg # enable profiling
4264 @end example
4266 @noindent
4267 This is pretty close, but not quite what we want.  Using @samp{:=}
4268 redefines @code{CFLAGS} as a simply-expanded variable; this means
4269 @code{make} expands the text @w{@samp{$(CFLAGS) -pg}} before setting the
4270 variable.  If @code{includes} is not yet defined, we get @w{@samp{ -O
4271 -pg}}, and a later definition of @code{includes} will have no effect.
4272 Conversely, by using @samp{+=} we set @code{CFLAGS} to the
4273 @emph{unexpanded} value @w{@samp{$(includes) -O -pg}}.  Thus we preserve
4274 the reference to @code{includes}, so if that variable gets defined at
4275 any later point, a reference like @samp{$(CFLAGS)} still uses its
4276 value.
4278 @node Override Directive, Defining, Appending, Using Variables
4279 @section The @code{override} Directive
4280 @findex override
4281 @cindex overriding with @code{override}
4282 @cindex variables, overriding
4284 If a variable has been set with a command argument 
4285 (@pxref{Overriding, ,Overriding Variables}),
4286 then ordinary assignments in the makefile are ignored.  If you want to set
4287 the variable in the makefile even though it was set with a command
4288 argument, you can use an @code{override} directive, which is a line that
4289 looks like this:@refill
4291 @example
4292 override @var{variable} = @var{value}
4293 @end example
4295 @noindent
4298 @example
4299 override @var{variable} := @var{value}
4300 @end example
4302 To append more text to a variable defined on the command line, use:
4304 @example
4305 override @var{variable} += @var{more text}
4306 @end example
4308 @noindent
4309 @xref{Appending, ,Appending More Text to Variables}.
4311 The @code{override} directive was not invented for escalation in the war
4312 between makefiles and command arguments.  It was invented so you can alter
4313 and add to values that the user specifies with command arguments.
4315 For example, suppose you always want the @samp{-g} switch when you run the
4316 C compiler, but you would like to allow the user to specify the other
4317 switches with a command argument just as usual.  You could use this
4318 @code{override} directive:
4320 @example
4321 override CFLAGS += -g
4322 @end example
4324 You can also use @code{override} directives with @code{define} directives.
4325 This is done as you might expect:
4327 @example
4328 override define foo
4330 endef
4331 @end example
4333 @noindent
4334 @iftex
4335 See the next section for information about @code{define}.
4336 @end iftex
4337 @ifinfo
4338 @xref{Defining, ,Defining Variables Verbatim}.
4339 @end ifinfo
4341 @node Defining, Environment, Override Directive, Using Variables
4342 @section Defining Variables Verbatim
4343 @findex define
4344 @findex endef
4345 @cindex verbatim variable definition
4346 @cindex defining variables verbatim
4347 @cindex variables, defining verbatim
4349 Another way to set the value of a variable is to use the @code{define}
4350 directive.  This directive has an unusual syntax which allows newline
4351 characters to be included in the value, which is convenient for defining
4352 canned sequences of commands 
4353 (@pxref{Sequences, ,Defining Canned Command Sequences}).
4355 The @code{define} directive is followed on the same line by the name of the
4356 variable and nothing more.  The value to give the variable appears on the
4357 following lines.  The end of the value is marked by a line containing just
4358 the word @code{endef}.  Aside from this difference in syntax, @code{define}
4359 works just like @samp{=}: it creates a recursively-expanded variable
4360 (@pxref{Flavors, ,The Two Flavors of Variables}).
4361 The variable name may contain function and variable references, which
4362 are expanded when the directive is read to find the actual variable name
4363 to use.
4365 @example
4366 define two-lines
4367 echo foo
4368 echo $(bar)
4369 endef
4370 @end example
4372 The value in an ordinary assignment cannot contain a newline; but the
4373 newlines that separate the lines of the value in a @code{define} become
4374 part of the variable's value (except for the final newline which precedes
4375 the @code{endef} and is not considered part of the value).@refill
4377 @need 800
4378 The previous example is functionally equivalent to this:
4380 @example
4381 two-lines = echo foo; echo $(bar)
4382 @end example
4384 @noindent
4385 since two commands separated by semicolon behave much like two separate
4386 shell commands.  However, note that using two separate lines means
4387 @code{make} will invoke the shell twice, running an independent subshell
4388 for each line.  @xref{Execution, ,Command Execution}.
4390 If you want variable definitions made with @code{define} to take
4391 precedence over command-line variable definitions, you can use the
4392 @code{override} directive together with @code{define}:
4394 @example
4395 override define two-lines
4397 $(bar)
4398 endef
4399 @end example
4401 @noindent
4402 @xref{Override Directive, ,The @code{override} Directive}.
4404 @node Environment,  , Defining, Using Variables
4405 @section Variables from the Environment
4407 @cindex variables, environment
4408 @cindex environment
4409 Variables in @code{make} can come from the environment in which
4410 @code{make} is run.  Every environment variable that @code{make} sees when
4411 it starts up is transformed into a @code{make} variable with the same name
4412 and value.  But an explicit assignment in the makefile, or with a command
4413 argument, overrides the environment.  (If the @samp{-e} flag is specified,
4414 then values from the environment override assignments in the makefile.
4415 @xref{Options Summary, ,Summary of Options}.
4416 But this is not recommended practice.)
4418 Thus, by setting the variable @code{CFLAGS} in your environment, you can
4419 cause all C compilations in most makefiles to use the compiler switches you
4420 prefer.  This is safe for variables with standard or conventional meanings
4421 because you know that no makefile will use them for other things.  (But
4422 this is not totally reliable; some makefiles set @code{CFLAGS} explicitly
4423 and therefore are not affected by the value in the environment.)
4425 When @code{make} is invoked recursively, variables defined in the
4426 outer invocation can be passed to inner invocations through the
4427 environment (@pxref{Recursion, ,Recursive Use of @code{make}}).  By
4428 default, only variables that came from the environment or the command
4429 line are passed to recursive invocations.  You can use the
4430 @code{export} directive to pass other variables.
4431 @xref{Variables/Recursion, , Communicating Variables to a
4432 Sub-@code{make}}, for full details.
4434 Other use of variables from the environment is not recommended.  It is not
4435 wise for makefiles to depend for their functioning on environment variables
4436 set up outside their control, since this would cause different users to get
4437 different results from the same makefile.  This is against the whole
4438 purpose of most makefiles.
4440 Such problems would be especially likely with the variable @code{SHELL},
4441 which is normally present in the environment to specify the user's choice
4442 of interactive shell.  It would be very undesirable for this choice to
4443 affect @code{make}.  So @code{make} ignores the environment value of
4444 @code{SHELL}.@refill
4446 @node Conditionals, Functions, Using Variables, Top
4447 @chapter Conditional Parts of Makefiles
4449 @cindex conditionals
4450 A @dfn{conditional} causes part of a makefile to be obeyed or ignored
4451 depending on the values of variables.  Conditionals can compare the
4452 value of one variable to another, or the value of a variable to
4453 a constant string.  Conditionals control what @code{make} actually
4454 ``sees'' in the makefile, so they @emph{cannot} be used to control shell
4455 commands at the time of execution.@refill
4457 @menu
4458 * Conditional Example::         Example of a conditional
4459 * Conditional Syntax::          The syntax of conditionals.
4460 * Testing Flags::               Conditionals that test flags.
4461 @end menu
4463 @node Conditional Example, Conditional Syntax,  , Conditionals
4464 @section Example of a Conditional
4466 The following example of a conditional tells @code{make} to use one set
4467 of libraries if the @code{CC} variable is @samp{gcc}, and a different
4468 set of libraries otherwise.  It works by controlling which of two
4469 command lines will be used as the command for a rule.  The result is
4470 that @samp{CC=gcc} as an argument to @code{make} changes not only which
4471 compiler is used but also which libraries are linked.
4473 @example
4474 libs_for_gcc = -lgnu
4475 normal_libs =
4477 foo: $(objects)
4478 ifeq ($(CC),gcc)
4479         $(CC) -o foo $(objects) $(libs_for_gcc)
4480 else
4481         $(CC) -o foo $(objects) $(normal_libs)
4482 endif
4483 @end example
4485 This conditional uses three directives: one @code{ifeq}, one @code{else}
4486 and one @code{endif}.
4488 The @code{ifeq} directive begins the conditional, and specifies the
4489 condition.  It contains two arguments, separated by a comma and surrounded
4490 by parentheses.  Variable substitution is performed on both arguments and
4491 then they are compared.  The lines of the makefile following the
4492 @code{ifeq} are obeyed if the two arguments match; otherwise they are
4493 ignored.
4495 The @code{else} directive causes the following lines to be obeyed if the
4496 previous conditional failed.  In the example above, this means that the
4497 second alternative linking command is used whenever the first alternative
4498 is not used.  It is optional to have an @code{else} in a conditional.
4500 The @code{endif} directive ends the conditional.  Every conditional must
4501 end with an @code{endif}.  Unconditional makefile text follows.
4503 As this example illustrates, conditionals work at the textual level:
4504 the lines of the conditional are treated as part of the makefile, or
4505 ignored, according to the condition.  This is why the larger syntactic
4506 units of the makefile, such as rules, may cross the beginning or the
4507 end of the conditional.
4509 When the variable @code{CC} has the value @samp{gcc}, the above example has
4510 this effect:
4512 @example
4513 foo: $(objects)
4514         $(CC) -o foo $(objects) $(libs_for_gcc)
4515 @end example
4517 @noindent
4518 When the variable @code{CC} has any other value, the effect is this:
4520 @example
4521 foo: $(objects)
4522         $(CC) -o foo $(objects) $(normal_libs)
4523 @end example
4525 Equivalent results can be obtained in another way by conditionalizing a
4526 variable assignment and then using the variable unconditionally:
4528 @example
4529 libs_for_gcc = -lgnu
4530 normal_libs =
4532 ifeq ($(CC),gcc)
4533   libs=$(libs_for_gcc)
4534 else
4535   libs=$(normal_libs)
4536 endif
4538 foo: $(objects)
4539         $(CC) -o foo $(objects) $(libs)
4540 @end example
4542 @node Conditional Syntax, Testing Flags, Conditional Example, Conditionals
4543 @section Syntax of Conditionals
4544 @findex ifdef
4545 @findex ifeq
4546 @findex ifndef
4547 @findex ifneq
4548 @findex else
4549 @findex endif
4551 The syntax of a simple conditional with no @code{else} is as follows:
4553 @example
4554 @var{conditional-directive}
4555 @var{text-if-true}
4556 endif
4557 @end example
4559 @noindent
4560 The @var{text-if-true} may be any lines of text, to be considered as part
4561 of the makefile if the condition is true.  If the condition is false, no
4562 text is used instead.
4564 The syntax of a complex conditional is as follows:
4566 @example
4567 @var{conditional-directive}
4568 @var{text-if-true}
4569 else
4570 @var{text-if-false}
4571 endif
4572 @end example
4574 @noindent
4575 If the condition is true, @var{text-if-true} is used; otherwise,
4576 @var{text-if-false} is used instead.  The @var{text-if-false} can be any
4577 number of lines of text.
4579 The syntax of the @var{conditional-directive} is the same whether the
4580 conditional is simple or complex.  There are four different directives that
4581 test different conditions.  Here is a table of them:
4583 @table @code
4584 @item ifeq (@var{arg1}, @var{arg2})
4585 @itemx ifeq '@var{arg1}' '@var{arg2}'
4586 @itemx ifeq "@var{arg1}" "@var{arg2}"
4587 @itemx ifeq "@var{arg1}" '@var{arg2}'
4588 @itemx ifeq '@var{arg1}' "@var{arg2}"
4589 Expand all variable references in @var{arg1} and @var{arg2} and
4590 compare them.  If they are identical, the @var{text-if-true} is
4591 effective; otherwise, the @var{text-if-false}, if any, is effective.
4593 Often you want to test if a variable has a non-empty value.  When the
4594 value results from complex expansions of variables and functions,
4595 expansions you would consider empty may actually contain whitespace
4596 characters and thus are not seen as empty.  However, you can use the
4597 @code{strip} function (@pxref{Text Functions}) to avoid interpreting
4598 whitespace as a non-empty value.  For example:
4600 @example
4601 @group
4602 ifeq ($(strip $(foo)),)
4603 @var{text-if-empty}
4604 endif
4605 @end group
4606 @end example
4608 @noindent
4609 will evaluate @var{text-if-empty} even if the expansion of
4610 @code{$(foo)} contains whitespace characters.
4612 @item ifneq (@var{arg1}, @var{arg2})
4613 @itemx ifneq '@var{arg1}' '@var{arg2}'
4614 @itemx ifneq "@var{arg1}" "@var{arg2}"
4615 @itemx ifneq "@var{arg1}" '@var{arg2}'
4616 @itemx ifneq '@var{arg1}' "@var{arg2}"
4617 Expand all variable references in @var{arg1} and @var{arg2} and
4618 compare them.  If they are different, the @var{text-if-true} is
4619 effective; otherwise, the @var{text-if-false}, if any, is effective.
4621 @item ifdef @var{variable-name}
4622 If the variable @var{variable-name} has a non-empty value, the
4623 @var{text-if-true} is effective; otherwise, the @var{text-if-false},
4624 if any, is effective.  Variables that have never been defined have an
4625 empty value.
4627 Note that @code{ifdef} only tests whether a variable has a value.  It
4628 does not expand the variable to see if that value is nonempty.
4629 Consequently, tests using @code{ifdef} return true for all definitions
4630 except those like @code{foo =}.  To test for an empty value, use
4631 @w{@code{ifeq ($(foo),)}}.  For example,
4633 @example
4634 bar =
4635 foo = $(bar)
4636 ifdef foo
4637 frobozz = yes
4638 else
4639 frobozz = no
4640 endif
4641 @end example
4643 @noindent
4644 sets @samp{frobozz} to @samp{yes}, while:
4646 @example
4647 foo =
4648 ifdef foo
4649 frobozz = yes
4650 else
4651 frobozz = no
4652 endif
4653 @end example
4655 @noindent
4656 sets @samp{frobozz} to @samp{no}.
4658 @item ifndef @var{variable-name}
4659 If the variable @var{variable-name} has an empty value, the
4660 @var{text-if-true} is effective; otherwise, the @var{text-if-false},
4661 if any, is effective.
4662 @end table
4664 Extra spaces are allowed and ignored at the beginning of the conditional
4665 directive line, but a tab is not allowed.  (If the line begins with a tab,
4666 it will be considered a command for a rule.)  Aside from this, extra spaces
4667 or tabs may be inserted with no effect anywhere except within the directive
4668 name or within an argument.  A comment starting with @samp{#} may appear at
4669 the end of the line.
4671 The other two directives that play a part in a conditional are @code{else}
4672 and @code{endif}.  Each of these directives is written as one word, with no
4673 arguments.  Extra spaces are allowed and ignored at the beginning of the
4674 line, and spaces or tabs at the end.  A comment starting with @samp{#} may
4675 appear at the end of the line.
4677 Conditionals affect which lines of the makefile @code{make} uses.  If
4678 the condition is true, @code{make} reads the lines of the
4679 @var{text-if-true} as part of the makefile; if the condition is false,
4680 @code{make} ignores those lines completely.  It follows that syntactic
4681 units of the makefile, such as rules, may safely be split across the
4682 beginning or the end of the conditional.@refill
4684 @code{make} evaluates conditionals when it reads a makefile.
4685 Consequently, you cannot use automatic variables in the tests of
4686 conditionals because they are not defined until commands are run
4687 (@pxref{Automatic, , Automatic Variables}).
4689 To prevent intolerable confusion, it is not permitted to start a
4690 conditional in one makefile and end it in another.  However, you may
4691 write an @code{include} directive within a conditional, provided you do
4692 not attempt to terminate the conditional inside the included file.
4694 @node Testing Flags,  , Conditional Syntax, Conditionals
4695 @section Conditionals that Test Flags
4697 You can write a conditional that tests @code{make} command flags such as
4698 @samp{-t} by using the variable @code{MAKEFLAGS} together with the
4699 @code{findstring} function 
4700 (@pxref{Text Functions, , Functions for String Substitution and Analysis}).
4701 This is useful when @code{touch} is not enough to make a file appear up
4702 to date.
4704 The @code{findstring} function determines whether one string appears as a
4705 substring of another.  If you want to test for the @samp{-t} flag,
4706 use @samp{t} as the first string and the value of @code{MAKEFLAGS} as
4707 the other.
4709 For example, here is how to arrange to use @samp{ranlib -t} to finish
4710 marking an archive file up to date:
4712 @example
4713 archive.a: @dots{}
4714 ifneq (,$(findstring t,$(MAKEFLAGS)))
4715         +touch archive.a
4716         +ranlib -t archive.a
4717 else
4718         ranlib archive.a
4719 endif
4720 @end example
4722 @noindent
4723 The @samp{+} prefix marks those command lines as ``recursive'' so
4724 that they will be executed despite use of the @samp{-t} flag.
4725 @xref{Recursion, ,Recursive Use of @code{make}}.
4727 @node Functions, Running, Conditionals, Top
4728 @chapter Functions for Transforming Text
4729 @cindex functions
4731 @dfn{Functions} allow you to do text processing in the makefile to compute
4732 the files to operate on or the commands to use.  You use a function in a
4733 @dfn{function call}, where you give the name of the function and some text
4734 (the @dfn{arguments}) for the function to operate on.  The result of the
4735 function's processing is substituted into the makefile at the point of the
4736 call, just as a variable might be substituted.
4738 @menu
4739 * Syntax of Functions::         How to write a function call.
4740 * Text Functions::              General-purpose text manipulation functions.
4741 * Filename Functions::          Functions for manipulating file names.
4742 * Foreach Function::            Repeat some text with controlled variation.
4743 * Origin Function::             Find where a variable got its value.
4744 * Shell Function::              Substitute the output of a shell command.
4745 @end menu
4747 @node Syntax of Functions, Text Functions,  , Functions
4748 @section Function Call Syntax
4749 @cindex @code{$}, in function call
4750 @cindex dollar sign (@code{$}), in function call
4751 @cindex arguments of functions
4752 @cindex functions, syntax of
4754 A function call resembles a variable reference.  It looks like this:
4756 @example
4757 $(@var{function} @var{arguments})
4758 @end example
4760 @noindent
4761 or like this:
4763 @example
4764 $@{@var{function} @var{arguments}@}
4765 @end example
4767 Here @var{function} is a function name; one of a short list of names that
4768 are part of @code{make}.  There is no provision for defining new functions.
4770 The @var{arguments} are the arguments of the function.  They are
4771 separated from the function name by one or more spaces or tabs, and if
4772 there is more than one argument, then they are separated by commas.
4773 Such whitespace and commas are not part of an argument's value.  The
4774 delimiters which you use to surround the function call, whether
4775 parentheses or braces, can appear in an argument only in matching pairs;
4776 the other kind of delimiters may appear singly.  If the arguments
4777 themselves contain other function calls or variable references, it is
4778 wisest to use the same kind of delimiters for all the references; write
4779 @w{@samp{$(subst a,b,$(x))}}, not @w{@samp{$(subst a,b,$@{x@})}}.  This
4780 is because it is clearer, and because only one type of delimiter is
4781 matched to find the end of the reference.
4783 The text written for each argument is processed by substitution of
4784 variables and function calls to produce the argument value, which
4785 is the text on which the function acts.  The substitution is done in the
4786 order in which the arguments appear.
4788 Commas and unmatched parentheses or braces cannot appear in the text of an
4789 argument as written; leading spaces cannot appear in the text of the first
4790 argument as written.  These characters can be put into the argument value
4791 by variable substitution.  First define variables @code{comma} and
4792 @code{space} whose values are isolated comma and space characters, then
4793 substitute these variables where such characters are wanted, like this:
4795 @example
4796 @group
4797 comma:= ,
4798 empty:=
4799 space:= $(empty) $(empty)
4800 foo:= a b c
4801 bar:= $(subst $(space),$(comma),$(foo))
4802 # @r{bar is now `a,b,c'.}
4803 @end group
4804 @end example
4806 @noindent
4807 Here the @code{subst} function replaces each space with a comma, through
4808 the value of @code{foo}, and substitutes the result.
4810 @node Text Functions, Filename Functions, Syntax of Functions, Functions
4811 @section Functions for String Substitution and Analysis
4812 @cindex functions, for text
4814 Here are some functions that operate on strings:
4816 @table @code
4817 @item $(subst @var{from},@var{to},@var{text})
4818 @findex subst
4819 Performs a textual replacement on the text @var{text}: each occurrence
4820 of @var{from} is replaced by @var{to}.  The result is substituted for
4821 the function call.  For example,
4823 @example
4824 $(subst ee,EE,feet on the street)
4825 @end example
4827 substitutes the string @samp{fEEt on the strEEt}.
4829 @item $(patsubst @var{pattern},@var{replacement},@var{text})
4830 @findex patsubst
4831 Finds whitespace-separated words in @var{text} that match
4832 @var{pattern} and replaces them with @var{replacement}.  Here
4833 @var{pattern} may contain a @samp{%} which acts as a wildcard,
4834 matching any number of any characters within a word.  If
4835 @var{replacement} also contains a @samp{%}, the @samp{%} is replaced
4836 by the text that matched the @samp{%} in @var{pattern}.@refill
4838 @cindex @code{%}, quoting in @code{patsubst}
4839 @cindex @code{%}, quoting with @code{\} (backslash)
4840 @cindex @code{\} (backslash), to quote @code{%}
4841 @cindex backslash (@code{\}), to quote @code{%}
4842 @cindex quoting @code{%}, in @code{patsubst}
4843 @samp{%} characters in @code{patsubst} function invocations can be
4844 quoted with preceding backslashes (@samp{\}).  Backslashes that would
4845 otherwise quote @samp{%} characters can be quoted with more backslashes.
4846 Backslashes that quote @samp{%} characters or other backslashes are
4847 removed from the pattern before it is compared file names or has a stem
4848 substituted into it.  Backslashes that are not in danger of quoting
4849 @samp{%} characters go unmolested.  For example, the pattern
4850 @file{the\%weird\\%pattern\\} has @samp{the%weird\} preceding the
4851 operative @samp{%} character, and @samp{pattern\\} following it.  The
4852 final two backslashes are left alone because they cannot affect any
4853 @samp{%} character.@refill
4855 Whitespace between words is folded into single space characters;
4856 leading and trailing whitespace is discarded.
4858 For example,
4860 @example
4861 $(patsubst %.c,%.o,x.c.c bar.c)
4862 @end example
4864 @noindent
4865 produces the value @samp{x.c.o bar.o}.
4867 Substitution references (@pxref{Substitution Refs, ,Substitution
4868 References}) are a simpler way to get the effect of the @code{patsubst}
4869 function:
4871 @example
4872 $(@var{var}:@var{pattern}=@var{replacement})  
4873 @end example
4875 @noindent
4876 is equivalent to 
4878 @example
4879 $(patsubst @var{pattern},@var{replacement},$(@var{var}))
4880 @end example
4882 The second shorthand simplifies one of the most common uses of
4883 @code{patsubst}: replacing the suffix at the end of file names.
4885 @example
4886 $(@var{var}:@var{suffix}=@var{replacement}) 
4887 @end example
4889 @noindent
4890 is equivalent to 
4892 @example
4893 $(patsubst %@var{suffix},%@var{replacement},$(@var{var}))
4894 @end example
4896 @noindent
4897 For example, you might have a list of object files:
4899 @example
4900 objects = foo.o bar.o baz.o
4901 @end example
4903 @noindent
4904 To get the list of corresponding source files, you could simply write:
4906 @example
4907 $(objects:.o=.c)
4908 @end example
4910 @noindent
4911 instead of using the general form:
4913 @example
4914 $(patsubst %.o,%.c,$(objects))
4915 @end example
4917 @item $(strip @var{string})
4918 @cindex stripping whitespace
4919 @cindex whitespace, stripping
4920 @cindex spaces, stripping
4921 @findex strip
4922 Removes leading and trailing whitespace from @var{string} and replaces
4923 each internal sequence of one or more whitespace characters with a
4924 single space.  Thus, @samp{$(strip a b  c )} results in @w{@samp{a b c}}.
4926 The function @code{strip} can be very useful when used in conjunction
4927 with conditionals.  When comparing something with the empty string
4928 @samp{} using @code{ifeq} or @code{ifneq}, you usually want a string of
4929 just whitespace to match the empty string (@pxref{Conditionals}).
4931 Thus, the following may fail to have the desired results:
4933 @example
4934 .PHONY: all
4935 ifneq   "$(needs_made)" ""
4936 all: $(needs_made)
4937 else
4938 all:;@@echo 'Nothing to make!'
4939 endif
4940 @end example
4942 @noindent
4943 Replacing the variable reference @w{@samp{$(needs_made)}} with the
4944 function call @w{@samp{$(strip $(needs_made))}} in the @code{ifneq}
4945 directive would make it more robust.@refill
4947 @item $(findstring @var{find},@var{in})
4948 @findex findstring
4949 @cindex searching for strings
4950 @cindex finding strings
4951 @cindex strings, searching for
4952 Searches @var{in} for an occurrence of @var{find}.  If it occurs, the
4953 value is @var{find}; otherwise, the value is empty.  You can use this
4954 function in a conditional to test for the presence of a specific
4955 substring in a given string.  Thus, the two examples,
4957 @example
4958 $(findstring a,a b c)
4959 $(findstring a,b c)
4960 @end example
4962 @noindent
4963 produce the values @samp{a} and @samp{} (the empty string),
4964 respectively.  @xref{Testing Flags}, for a practical application of
4965 @code{findstring}.@refill
4967 @need 750
4968 @findex filter
4969 @cindex filtering words
4970 @cindex words, filtering
4971 @item $(filter @var{pattern}@dots{},@var{text})
4972 Removes all whitespace-separated words in @var{text} that do
4973 @emph{not} match any of the @var{pattern} words, returning only
4974 matching words.  The patterns are written using @samp{%}, just like
4975 the patterns used in the @code{patsubst} function above.@refill
4977 The @code{filter} function can be used to separate out different types
4978 of strings (such as file names) in a variable.  For example:
4980 @example
4981 sources := foo.c bar.c baz.s ugh.h
4982 foo: $(sources)
4983         cc $(filter %.c %.s,$(sources)) -o foo
4984 @end example
4986 @noindent
4987 says that @file{foo} depends of @file{foo.c}, @file{bar.c},
4988 @file{baz.s} and @file{ugh.h} but only @file{foo.c}, @file{bar.c} and
4989 @file{baz.s} should be specified in the command to the
4990 compiler.@refill
4992 @item $(filter-out @var{pattern}@dots{},@var{text})
4993 @findex filter-out
4994 @cindex filtering out words
4995 @cindex words, filtering out
4996 Removes all whitespace-separated words in @var{text} that @emph{do}
4997 match the @var{pattern} words, returning only the words that @emph{do
4998 not} match.  This is the exact opposite of the @code{filter}
4999 function.@refill
5001 For example, given:
5003 @example
5004 @group
5005 objects=main1.o foo.o main2.o bar.o
5006 mains=main1.o main2.o
5007 @end group
5008 @end example
5010 @noindent
5011 the following generates a list which contains all the object files not
5012 in @samp{mains}:
5014 @example
5015 $(filter-out $(mains),$(objects))
5016 @end example
5018 @need 1500
5019 @findex sort
5020 @cindex sorting words
5021 @item $(sort @var{list})
5022 Sorts the words of @var{list} in lexical order, removing duplicate
5023 words.  The output is a list of words separated by single spaces.
5024 Thus,
5026 @example
5027 $(sort foo bar lose)
5028 @end example
5030 @noindent
5031 returns the value @samp{bar foo lose}.
5033 @cindex removing duplicate words
5034 @cindex duplicate words, removing
5035 @cindex words, removing duplicates
5036 Incidentally, since @code{sort} removes duplicate words, you can use
5037 it for this purpose even if you don't care about the sort order.
5038 @end table
5040 Here is a realistic example of the use of @code{subst} and
5041 @code{patsubst}.  Suppose that a makefile uses the @code{VPATH} variable
5042 to specify a list of directories that @code{make} should search for
5043 dependency files 
5044 (@pxref{General Search, , @code{VPATH} Search Path for All Dependencies}).  
5045 This example shows how to
5046 tell the C compiler to search for header files in the same list of
5047 directories.@refill
5049 The value of @code{VPATH} is a list of directories separated by colons,
5050 such as @samp{src:../headers}.  First, the @code{subst} function is used to
5051 change the colons to spaces:
5053 @example
5054 $(subst :, ,$(VPATH))
5055 @end example
5057 @noindent
5058 This produces @samp{src ../headers}.  Then @code{patsubst} is used to turn
5059 each directory name into a @samp{-I} flag.  These can be added to the
5060 value of the variable @code{CFLAGS}, which is passed automatically to the C
5061 compiler, like this:
5063 @example
5064 override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH)))
5065 @end example
5067 @noindent
5068 The effect is to append the text @samp{-Isrc -I../headers} to the
5069 previously given value of @code{CFLAGS}.  The @code{override} directive is
5070 used so that the new value is assigned even if the previous value of
5071 @code{CFLAGS} was specified with a command argument (@pxref{Override
5072 Directive, , The @code{override} Directive}).
5074 @node Filename Functions, Foreach Function, Text Functions, Functions
5075 @section Functions for File Names
5076 @cindex functions, for file names
5077 @cindex file name functions
5079 Several of the built-in expansion functions relate specifically to
5080 taking apart file names or lists of file names.
5082 Each of the following functions performs a specific transformation on a
5083 file name.  The argument of the function is regarded as a series of file
5084 names, separated by whitespace.  (Leading and trailing whitespace is
5085 ignored.)  Each file name in the series is transformed in the same way and
5086 the results are concatenated with single spaces between them.
5088 @table @code
5089 @item $(dir @var{names}@dots{})
5090 @findex dir
5091 @cindex directory part
5092 @cindex file name, directory part
5093 Extracts the directory-part of each file name in @var{names}.  The
5094 directory-part of the file name is everything up through (and
5095 including) the last slash in it.  If the file name contains no slash,
5096 the directory part is the string @samp{./}.  For example,
5098 @example
5099 $(dir src/foo.c hacks)
5100 @end example
5102 @noindent
5103 produces the result @samp{src/ ./}.
5105 @item $(notdir @var{names}@dots{})
5106 @findex notdir
5107 @cindex file name, nondirectory part
5108 @cindex nondirectory part
5109 Extracts all but the directory-part of each file name in @var{names}.
5110 If the file name contains no slash, it is left unchanged.  Otherwise,
5111 everything through the last slash is removed from it.
5113 A file name that ends with a slash becomes an empty string.  This is
5114 unfortunate, because it means that the result does not always have the
5115 same number of whitespace-separated file names as the argument had;
5116 but we do not see any other valid alternative.
5118 For example,
5120 @example
5121 $(notdir src/foo.c hacks)
5122 @end example
5124 @noindent
5125 produces the result @samp{foo.c hacks}.
5127 @item $(suffix @var{names}@dots{})
5128 @findex suffix
5129 @cindex suffix, function to find
5130 @cindex file name suffix
5131 Extracts the suffix of each file name in @var{names}.  If the file name
5132 contains a period, the suffix is everything starting with the last
5133 period.  Otherwise, the suffix is the empty string.  This frequently
5134 means that the result will be empty when @var{names} is not, and if
5135 @var{names} contains multiple file names, the result may contain fewer
5136 file names.
5138 For example,
5140 @example
5141 $(suffix src/foo.c hacks)
5142 @end example
5144 @noindent
5145 produces the result @samp{.c}.
5147 @item $(basename @var{names}@dots{})
5148 @findex basename
5149 @cindex basename
5150 @cindex file name, basename of
5151 Extracts all but the suffix of each file name in @var{names}.  If the
5152 file name contains a period, the basename is everything starting up to
5153 (and not including) the last period.  Otherwise, the basename is the
5154 entire file name.  For example,
5156 @example
5157 $(basename src/foo.c hacks)
5158 @end example
5160 @noindent
5161 produces the result @samp{src/foo hacks}.
5163 @c plural convention with dots (be consistent)
5164 @item $(addsuffix @var{suffix},@var{names}@dots{})
5165 @findex addsuffix
5166 @cindex suffix, adding
5167 @cindex file name suffix, adding
5168 The argument @var{names} is regarded as a series of names, separated
5169 by whitespace; @var{suffix} is used as a unit.  The value of
5170 @var{suffix} is appended to the end of each individual name and the
5171 resulting larger names are concatenated with single spaces between
5172 them.  For example,
5174 @example
5175 $(addsuffix .c,foo bar)
5176 @end example
5178 @noindent
5179 produces the result @samp{foo.c bar.c}.
5181 @item $(addprefix @var{prefix},@var{names}@dots{})
5182 @findex addprefix
5183 @cindex prefix, adding
5184 @cindex file name prefix, adding
5185 The argument @var{names} is regarded as a series of names, separated
5186 by whitespace; @var{prefix} is used as a unit.  The value of
5187 @var{prefix} is prepended to the front of each individual name and the
5188 resulting larger names are concatenated with single spaces between
5189 them.  For example,
5191 @example
5192 $(addprefix src/,foo bar)
5193 @end example
5195 @noindent
5196 produces the result @samp{src/foo src/bar}.
5198 @item $(join @var{list1},@var{list2})
5199 @findex join
5200 @cindex joining lists of words
5201 @cindex words, joining lists
5202 Concatenates the two arguments word by word: the two first words (one
5203 from each argument) concatenated form the first word of the result, the
5204 two second words form the second word of the result, and so on.  So the
5205 @var{n}th word of the result comes from the @var{n}th word of each
5206 argument.  If one argument has more words that the other, the extra
5207 words are copied unchanged into the result.
5209 For example, @samp{$(join a b,.c .o)} produces @samp{a.c b.o}.
5211 Whitespace between the words in the lists is not preserved; it is
5212 replaced with a single space.
5214 This function can merge the results of the @code{dir} and
5215 @code{notdir} functions, to produce the original list of files which
5216 was given to those two functions.@refill
5218 @item $(word @var{n},@var{text})
5219 @findex word
5220 @cindex words, selecting
5221 @cindex selecting words
5222 Returns the @var{n}th word of @var{text}.  The legitimate values of
5223 @var{n} start from 1.  If @var{n} is bigger than the number of words
5224 in @var{text}, the value is empty.  For example,
5226 @example
5227 $(word 2, foo bar baz)
5228 @end example
5230 @noindent
5231 returns @samp{bar}.
5233 @c Following item phrased to prevent overfull hbox.  --RJC 17 Jul 92
5234 @item $(words @var{text})
5235 @findex words
5236 @cindex words, finding number
5237 Returns the number of words in @var{text}.  
5238 Thus, the last word of @var{text} is
5239 @w{@code{$(word $(words @var{text}),@var{text})}}.@refill
5241 @item $(firstword @var{names}@dots{})
5242 @findex firstword
5243 @cindex words, extracting first
5244 The argument @var{names} is regarded as a series of names, separated
5245 by whitespace.  The value is the first name in the series.  The rest
5246 of the names are ignored.
5248 For example,
5250 @example
5251 $(firstword foo bar)
5252 @end example
5254 @noindent
5255 produces the result @samp{foo}.  Although @code{$(firstword
5256 @var{text})} is the same as @code{$(word 1,@var{text})}, the
5257 @code{firstword} function is retained for its simplicity.@refill
5259 @item $(wildcard @var{pattern})
5260 @findex wildcard
5261 @cindex wildcard, function
5262 The argument @var{pattern} is a file name pattern, typically containing
5263 wildcard characters (as in shell file name patterns).  The result of
5264 @code{wildcard} is a space-separated list of the names of existing files
5265 that match the pattern.
5266 @xref{Wildcards, ,Using Wildcard Characters in File Names}.
5267 @end table
5269 @node Foreach Function, Origin Function, Filename Functions, Functions
5270 @section The @code{foreach} Function
5271 @findex foreach
5272 @cindex words, iterating over
5274 The @code{foreach} function is very different from other functions.  It
5275 causes one piece of text to be used repeatedly, each time with a different
5276 substitution performed on it.  It resembles the @code{for} command in the
5277 shell @code{sh} and the @code{foreach} command in the C-shell @code{csh}.
5279 The syntax of the @code{foreach} function is:
5281 @example
5282 $(foreach @var{var},@var{list},@var{text})
5283 @end example
5285 @noindent
5286 The first two arguments, @var{var} and @var{list}, are expanded before
5287 anything else is done; note that the last argument, @var{text}, is
5288 @strong{not} expanded at the same time.  Then for each word of the expanded
5289 value of @var{list}, the variable named by the expanded value of @var{var}
5290 is set to that word, and @var{text} is expanded.  Presumably @var{text}
5291 contains references to that variable, so its expansion will be different
5292 each time.
5294 The result is that @var{text} is expanded as many times as there are
5295 whitespace-separated words in @var{list}.  The multiple expansions of
5296 @var{text} are concatenated, with spaces between them, to make the result
5297 of @code{foreach}.
5299 This simple example sets the variable @samp{files} to the list of all files
5300 in the directories in the list @samp{dirs}:
5302 @example
5303 dirs := a b c d
5304 files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
5305 @end example
5307 Here @var{text} is @samp{$(wildcard $(dir)/*)}.  The first repetition
5308 finds the value @samp{a} for @code{dir}, so it produces the same result
5309 as @samp{$(wildcard a/*)}; the second repetition produces the result
5310 of @samp{$(wildcard b/*)}; and the third, that of @samp{$(wildcard c/*)}.
5312 This example has the same result (except for setting @samp{dirs}) as
5313 the following example:
5315 @example
5316 files := $(wildcard a/* b/* c/* d/*)
5317 @end example
5319 When @var{text} is complicated, you can improve readability by giving it
5320 a name, with an additional variable:
5322 @example
5323 find_files = $(wildcard $(dir)/*)
5324 dirs := a b c d
5325 files := $(foreach dir,$(dirs),$(find_files))
5326 @end example
5328 @noindent
5329 Here we use the variable @code{find_files} this way.  We use plain @samp{=}
5330 to define a recursively-expanding variable, so that its value contains an
5331 actual function call to be reexpanded under the control of @code{foreach};
5332 a simply-expanded variable would not do, since @code{wildcard} would be
5333 called only once at the time of defining @code{find_files}.
5335 The @code{foreach} function has no permanent effect on the variable
5336 @var{var}; its value and flavor after the @code{foreach} function call are
5337 the same as they were beforehand.  The other values which are taken from
5338 @var{list} are in effect only temporarily, during the execution of
5339 @code{foreach}.  The variable @var{var} is a simply-expanded variable
5340 during the execution of @code{foreach}.  If @var{var} was undefined
5341 before the @code{foreach} function call, it is undefined after the call.
5342 @xref{Flavors, ,The Two Flavors of Variables}.@refill
5344 You must take care when using complex variable expressions that result in
5345 variable names because many strange things are valid variable names, but
5346 are probably not what you intended.  For example,
5348 @smallexample
5349 files := $(foreach Es escrito en espanol!,b c ch,$(find_files))
5350 @end smallexample
5352 @noindent
5353 might be useful if the value of @code{find_files} references the variable
5354 whose name is @samp{Es escrito en espanol!} (es un nombre bastante largo,
5355 no?), but it is more likely to be a mistake.
5357 @node Origin Function, Shell Function, Foreach Function, Functions
5358 @section The @code{origin} Function
5359 @findex origin
5360 @cindex variables, origin of
5361 @cindex origin of variable
5363 The @code{origin} function is unlike most other functions in that it does
5364 not operate on the values of variables; it tells you something @emph{about}
5365 a variable.  Specifically, it tells you where it came from.
5367 The syntax of the @code{origin} function is:
5369 @example
5370 $(origin @var{variable})
5371 @end example
5373 Note that @var{variable} is the @emph{name} of a variable to inquire about;
5374 not a @emph{reference} to that variable.  Therefore you would not normally
5375 use a @samp{$} or parentheses when writing it.  (You can, however, use a
5376 variable reference in the name if you want the name not to be a constant.)
5378 The result of this function is a string telling you how the variable
5379 @var{variable} was defined:
5381 @table @samp
5382 @item undefined
5384 if @var{variable} was never defined.
5386 @item default
5388 if @var{variable} has a default definition, as is usual with @code{CC}
5389 and so on.  @xref{Implicit Variables, ,Variables Used by Implicit Rules}.
5390 Note that if you have redefined a default variable, the @code{origin}
5391 function will return the origin of the later definition.
5393 @item environment
5395 if @var{variable} was defined as an environment variable and the
5396 @samp{-e} option is @emph{not} turned on (@pxref{Options Summary, ,Summary of Options}).
5398 @item environment override
5400 if @var{variable} was defined as an environment variable and the
5401 @w{@samp{-e}} option @emph{is} turned on (@pxref{Options Summary,
5402 ,Summary of Options}).@refill
5404 @item file
5406 if @var{variable} was defined in a makefile.
5408 @item command line
5410 if @var{variable} was defined on the command line.
5412 @item override
5414 if @var{variable} was defined with an @code{override} directive in a
5415 makefile (@pxref{Override Directive, ,The @code{override} Directive}).
5417 @item automatic
5419 if @var{variable} is an automatic variable defined for the
5420 execution of the commands for each rule
5421 (@pxref{Automatic, , Automatic Variables}).
5422 @end table
5424 This information is primarily useful (other than for your curiosity) to
5425 determine if you want to believe the value of a variable.  For example,
5426 suppose you have a makefile @file{foo} that includes another makefile
5427 @file{bar}.  You want a variable @code{bletch} to be defined in @file{bar}
5428 if you run the command @w{@samp{make -f bar}}, even if the environment contains
5429 a definition of @code{bletch}.  However, if @file{foo} defined
5430 @code{bletch} before including @file{bar}, you do not want to override that
5431 definition.  This could be done by using an @code{override} directive in
5432 @file{foo}, giving that definition precedence over the later definition in
5433 @file{bar}; unfortunately, the @code{override} directive would also
5434 override any command line definitions.  So, @file{bar} could
5435 include:@refill
5437 @example
5438 @group
5439 ifdef bletch
5440 ifeq "$(origin bletch)" "environment"
5441 bletch = barf, gag, etc.
5442 endif
5443 endif
5444 @end group
5445 @end example
5447 @noindent
5448 If @code{bletch} has been defined from the environment, this will redefine
5451 If you want to override a previous definition of @code{bletch} if it came
5452 from the environment, even under @samp{-e}, you could instead write:
5454 @example
5455 @group
5456 ifneq "$(findstring environment,$(origin bletch))" ""
5457 bletch = barf, gag, etc.
5458 endif
5459 @end group
5460 @end example
5462 Here the redefinition takes place if @samp{$(origin bletch)} returns either
5463 @samp{environment} or @samp{environment override}.
5464 @xref{Text Functions, , Functions for String Substitution and Analysis}.
5466 @node Shell Function,  , Origin Function, Functions
5467 @section The @code{shell} Function
5468 @findex shell
5469 @cindex commands, expansion
5470 @cindex backquotes
5471 @cindex shell command, function for
5473 The @code{shell} function is unlike any other function except the
5474 @code{wildcard} function 
5475 (@pxref{Wildcard Function, ,The Function @code{wildcard}}) in that it
5476 communicates with the world outside of @code{make}.
5478 The @code{shell} function performs the same function that backquotes
5479 (@samp{`}) perform in most shells: it does @dfn{command expansion}.  This
5480 means that it takes an argument that is a shell command and returns the
5481 output of the command.  The only processing @code{make} does on the result,
5482 before substituting it into the surrounding text, is to convert newlines to
5483 spaces.@refill
5485 The commands run by calls to the @code{shell} function are run when the
5486 function calls are expanded.  In most cases, this is when the makefile is
5487 read in.  The exception is that function calls in the commands of the rules
5488 are expanded when the commands are run, and this applies to @code{shell}
5489 function calls like all others.
5491 Here are some examples of the use of the @code{shell} function:
5493 @example
5494 contents := $(shell cat foo)
5495 @end example
5497 @noindent
5498 sets @code{contents} to the contents of the file @file{foo}, with a space
5499 (rather than a newline) separating each line.
5501 @example
5502 files := $(shell echo *.c)
5503 @end example
5505 @noindent
5506 sets @code{files} to the expansion of @samp{*.c}.  Unless @code{make} is
5507 using a very strange shell, this has the same result as
5508 @w{@samp{$(wildcard *.c)}}.@refill
5510 @node Running, Implicit Rules, Functions, Top
5511 @chapter How to Run @code{make}
5513 A makefile that says how to recompile a program can be used in more
5514 than one way.  The simplest use is to recompile every file that is out
5515 of date.  Usually, makefiles are written so that if you run
5516 @code{make} with no arguments, it does just that.
5518 But you might want to update only some of the files; you might want to use
5519 a different compiler or different compiler options; you might want just to
5520 find out which files are out of date without changing them.
5522 By giving arguments when you run @code{make}, you can do any of these
5523 things and many others.
5525 The exit status of @code{make} is always one of three values:
5526 @table @code
5527 @item 0
5528 The exit status is zero if @code{make} is successful.
5529 @item 2
5530 The exit status is two if @code{make} encounters any errors.
5531 It will print messages describing the particular errors.
5532 @item 1
5533 The exit status is one if you use the @samp{-q} flag and @code{make}
5534 determines that some target is not already up to date.
5535 @xref{Instead of Execution, ,Instead of Executing the Commands}.
5536 @end table
5538 @menu
5539 * Makefile Arguments::          How to specify which makefile to use.
5540 * Goals::                       How to use goal arguments to specify which 
5541                                   parts of the makefile to use.
5542 * Instead of Execution::        How to use mode flags to specify what
5543                                   kind of thing to do with the commands 
5544                                   in the makefile other than simply 
5545                                   execute them.
5546 * Avoiding Compilation::        How to avoid recompiling certain files.
5547 * Overriding::                  How to override a variable to specify 
5548                                   an alternate compiler and other things.
5549 * Testing::                     How to proceed past some errors, to 
5550                                   test compilation.
5551 * Options Summary::             Summary of Options
5552 @end menu
5554 @node Makefile Arguments, Goals,  , Running
5555 @section Arguments to Specify the Makefile
5556 @cindex @code{--file}
5557 @cindex @code{--makefile}
5558 @cindex @code{-f}
5560 The way to specify the name of the makefile is with the @samp{-f} or
5561 @samp{--file} option (@samp{--makefile} also works).  For example,
5562 @samp{-f altmake} says to use the file @file{altmake} as the makefile.
5564 If you use the @samp{-f} flag several times and follow each @samp{-f}
5565 with an argument, all the specified files are used jointly as
5566 makefiles.
5568 If you do not use the @samp{-f} or @samp{--file} flag, the default is
5569 to try @file{GNUmakefile}, @file{makefile}, and @file{Makefile}, in
5570 that order, and use the first of these three which exists or can be made
5571 (@pxref{Makefiles, ,Writing Makefiles}).@refill
5573 @node Goals, Instead of Execution, Makefile Arguments, Running
5574 @section Arguments to Specify the Goals
5575 @cindex goal, how to specify
5577 The @dfn{goals} are the targets that @code{make} should strive ultimately
5578 to update.  Other targets are updated as well if they appear as
5579 dependencies of goals, or dependencies of dependencies of goals, etc.
5581 By default, the goal is the first target in the makefile (not counting
5582 targets that start with a period).  Therefore, makefiles are usually
5583 written so that the first target is for compiling the entire program or
5584 programs they describe.  If the first rule in the makefile has several
5585 targets, only the first target in the rule becomes the default goal, not
5586 the whole list.
5588 You can specify a different goal or goals with arguments to @code{make}.
5589 Use the name of the goal as an argument.  If you specify several goals,
5590 @code{make} processes each of them in turn, in the order you name them.
5592 Any target in the makefile may be specified as a goal (unless it
5593 starts with @samp{-} or contains an @samp{=}, in which case it will be
5594 parsed as a switch or variable definition, respectively).  Even
5595 targets not in the makefile may be specified, if @code{make} can find
5596 implicit rules that say how to make them.
5598 One use of specifying a goal is if you want to compile only a part of
5599 the program, or only one of several programs.  Specify as a goal each
5600 file that you wish to remake.  For example, consider a directory containing
5601 several programs, with a makefile that starts like this:
5603 @example
5604 .PHONY: all
5605 all: size nm ld ar as
5606 @end example
5608 If you are working on the program @code{size}, you might want to say
5609 @w{@samp{make size}} so that only the files of that program are recompiled.
5611 Another use of specifying a goal is to make files that are not normally
5612 made.  For example, there may be a file of debugging output, or a
5613 version of the program that is compiled specially for testing, which has
5614 a rule in the makefile but is not a dependency of the default goal.
5616 Another use of specifying a goal is to run the commands associated with
5617 a phony target (@pxref{Phony Targets}) or empty target (@pxref{Empty
5618 Targets, ,Empty Target Files to Record Events}).  Many makefiles contain
5619 a phony target named @file{clean} which deletes everything except source
5620 files.  Naturally, this is done only if you request it explicitly with
5621 @w{@samp{make clean}}.  Following is a list of typical phony and empty
5622 target names.  @xref{Standard Targets}, for a detailed list of all the
5623 standard target names which GNU software packages use.
5625 @table @file
5626 @item all
5627 @cindex @code{all} @r{(standard target)}
5628 Make all the top-level targets the makefile knows about.
5630 @item clean
5631 @cindex @code{clean} @r{(standard target)}
5632 Delete all files that are normally created by running @code{make}.
5634 @item mostlyclean
5635 @cindex @code{mostlyclean} @r{(standard target)}
5636 Like @samp{clean}, but may refrain from deleting a few files that people
5637 normally don't want to recompile.  For example, the @samp{mostlyclean}
5638 target for GCC does not delete @file{libgcc.a}, because recompiling it
5639 is rarely necessary and takes a lot of time.
5641 @item distclean
5642 @cindex @code{distclean} @r{(standard target)}
5643 @itemx realclean
5644 @cindex @code{realclean} @r{(standard target)}
5645 @itemx clobber
5646 @cindex @code{clobber} @r{(standard target)}
5647 Any of these targets might be defined to delete @emph{more} files than
5648 @samp{clean} does.  For example, this would delete configuration files
5649 or links that you would normally create as preparation for compilation,
5650 even if the makefile itself cannot create these files.
5652 @item install
5653 @cindex @code{install} @r{(standard target)}
5654 Copy the executable file into a directory that users typically search
5655 for commands; copy any auxiliary files that the executable uses into
5656 the directories where it will look for them.
5658 @item print
5659 @cindex @code{print} @r{(standard target)}
5660 Print listings of the source files that have changed.
5662 @item tar
5663 @cindex @code{tar} @r{(standard target)}
5664 Create a tar file of the source files.
5666 @item shar
5667 @cindex @code{shar} @r{(standard target)}
5668 Create a shell archive (shar file) of the source files.
5670 @item dist
5671 @cindex @code{dist} @r{(standard target)}
5672 Create a distribution file of the source files.  This might
5673 be a tar file, or a shar file, or a compressed version of one of the
5674 above, or even more than one of the above.
5676 @item TAGS
5677 @cindex @code{TAGS} @r{(standard target)}
5678 Update a tags table for this program.
5680 @item check
5681 @cindex @code{check} @r{(standard target)}
5682 @itemx test
5683 @cindex @code{test} @r{(standard target)}
5684 Perform self tests on the program this makefile builds.
5685 @end table
5687 @node Instead of Execution, Avoiding Compilation, Goals, Running
5688 @section Instead of Executing the Commands
5689 @cindex execution, instead of
5690 @cindex commands, instead of executing
5692 The makefile tells @code{make} how to tell whether a target is up to date,
5693 and how to update each target.  But updating the targets is not always
5694 what you want.  Certain options specify other activities for @code{make}.
5696 @comment Extra blank lines make it print better.
5697 @table @samp
5698 @item -n
5699 @itemx --just-print
5700 @itemx --dry-run
5701 @itemx --recon
5702 @cindex @code{--just-print}
5703 @cindex @code{--dry-run}
5704 @cindex @code{--recon}
5705 @cindex @code{-n}
5707 ``No-op''.  The activity is to print what commands would be used to make
5708 the targets up to date, but not actually execute them.
5710 @item -t
5711 @itemx --touch
5712 @cindex @code{--touch}
5713 @cindex touching files
5714 @cindex target, touching
5715 @cindex @code{-t}
5717 ``Touch''.  The activity is to mark the targets as up to date without
5718 actually changing them.  In other words, @code{make} pretends to compile
5719 the targets but does not really change their contents.
5721 @item -q
5722 @itemx --question
5723 @cindex @code{--question}
5724 @cindex @code{-q}
5725 @cindex question mode
5727 ``Question''.  The activity is to find out silently whether the targets
5728 are up to date already; but execute no commands in either case.  In other
5729 words, neither compilation nor output will occur.
5731 @item -W @var{file}
5732 @itemx --what-if=@var{file}
5733 @itemx --assume-new=@var{file}
5734 @itemx --new-file=@var{file}
5735 @cindex @code{--what-if}
5736 @cindex @code{-W}
5737 @cindex @code{--assume-new}
5738 @cindex @code{--new-file}
5739 @cindex what if
5740 @cindex files, assuming new
5742 ``What if''.  Each @samp{-W} flag is followed by a file name.  The given
5743 files' modification times are recorded by @code{make} as being the present
5744 time, although the actual modification times remain the same.  
5745 You can use the @samp{-W} flag in conjunction with the @samp{-n} flag
5746 to see what would happen if you were to modify specific files.@refill
5747 @end table
5749 With the @samp{-n} flag, @code{make} prints the commands that it would
5750 normally execute but does not execute them.
5752 With the @samp{-t} flag, @code{make} ignores the commands in the rules
5753 and uses (in effect) the command @code{touch} for each target that needs to
5754 be remade.  The @code{touch} command is also printed, unless @samp{-s} or
5755 @code{.SILENT} is used.  For speed, @code{make} does not actually invoke
5756 the program @code{touch}.  It does the work directly.
5758 With the @samp{-q} flag, @code{make} prints nothing and executes no
5759 commands, but the exit status code it returns is zero if and only if the
5760 targets to be considered are already up to date.  If the exit status is
5761 one, then some updating needs to be done.  If @code{make} encounters an
5762 error, the exit status is two, so you can distinguish an error from a
5763 target that is not up to date.
5765 It is an error to use more than one of these three flags in the same
5766 invocation of @code{make}.
5768 The @samp{-n}, @samp{-t}, and @samp{-q} options do not affect command
5769 lines that begin with @samp{+} characters or contain the strings
5770 @samp{$(MAKE)} or @samp{$@{MAKE@}}.  Note that only the line containing
5771 the @samp{+} character or the strings @samp{$(MAKE)} or @samp{$@{MAKE@}}
5772 is run regardless of these options.  Other lines in the same rule are
5773 not run unless they too begin with @samp{+} or contain @samp{$(MAKE)} or
5774 @samp{$@{MAKE@}} (@xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.)
5776 The @samp{-W} flag provides two features:
5778 @itemize @bullet
5779 @item
5780 If you also use the @samp{-n} or @samp{-q} flag, you can see what
5781 @code{make} would do if you were to modify some files.
5783 @item
5784 Without the @samp{-n} or @samp{-q} flag, when @code{make} is actually
5785 executing commands, the @samp{-W} flag can direct @code{make} to act
5786 as if some files had been modified, without actually modifying the
5787 files.@refill
5788 @end itemize
5790 Note that the options @samp{-p} and @samp{-v} allow you to obtain other
5791 information about @code{make} or about the makefiles in use
5792 (@pxref{Options Summary, ,Summary of Options}).@refill
5794 @node Avoiding Compilation, Overriding, Instead of Execution, Running
5795 @section Avoiding Recompilation of Some Files
5796 @cindex @code{-o}
5797 @cindex @code{--old-file}
5798 @cindex @code{--assume-old}
5799 @cindex files, assuming old
5800 @cindex files, avoiding recompilation of
5801 @cindex recompilation, avoiding
5803 Sometimes you may have changed a source file but you do not want to
5804 recompile all the files that depend on it.  For example, suppose you add a
5805 macro or a declaration to a header file that many other files depend on.
5806 Being conservative, @code{make} assumes that any change in the header file
5807 requires recompilation of all dependent files, but you know that they do not
5808 need to be recompiled and you would rather not waste the time waiting for
5809 them to compile.
5811 If you anticipate the problem before changing the header file, you can
5812 use the @samp{-t} flag.  This flag tells @code{make} not to run the
5813 commands in the rules, but rather to mark the target up to date by
5814 changing its last-modification date.  You would follow this procedure:
5816 @enumerate
5817 @item
5818 Use the command @samp{make} to recompile the source files that really
5819 need recompilation.
5821 @item
5822 Make the changes in the header files.
5824 @item
5825 Use the command @samp{make -t} to mark all the object files as
5826 up to date.  The next time you run @code{make}, the changes in the
5827 header files will not cause any recompilation.
5828 @end enumerate
5830 If you have already changed the header file at a time when some files
5831 do need recompilation, it is too late to do this.  Instead, you can
5832 use the @w{@samp{-o @var{file}}} flag, which marks a specified file as
5833 ``old'' (@pxref{Options Summary, ,Summary of Options}).  This means
5834 that the file itself will not be remade, and nothing else will be
5835 remade on its account.  Follow this procedure:
5837 @enumerate
5838 @item
5839 Recompile the source files that need compilation for reasons independent
5840 of the particular header file, with @samp{make -o @var{headerfile}}.
5841 If several header files are involved, use a separate @samp{-o} option
5842 for each header file.
5844 @item
5845 Touch all the object files with @samp{make -t}.
5846 @end enumerate
5848 @node Overriding, Testing, Avoiding Compilation, Running
5849 @section Overriding Variables
5850 @cindex overriding variables with arguments
5851 @cindex variables, overriding with arguments
5852 @cindex command line variables
5853 @cindex variables, command line
5855 An argument that contains @samp{=} specifies the value of a variable:
5856 @samp{@var{v}=@var{x}} sets the value of the variable @var{v} to @var{x}.
5857 If you specify a value in this way, all ordinary assignments of the same
5858 variable in the makefile are ignored; we say they have been
5859 @dfn{overridden} by the command line argument.
5861 The most common way to use this facility is to pass extra flags to
5862 compilers.  For example, in a properly written makefile, the variable
5863 @code{CFLAGS} is included in each command that runs the C compiler, so a
5864 file @file{foo.c} would be compiled something like this:
5866 @example
5867 cc -c $(CFLAGS) foo.c
5868 @end example
5870 Thus, whatever value you set for @code{CFLAGS} affects each compilation
5871 that occurs.  The makefile probably specifies the usual value for
5872 @code{CFLAGS}, like this:
5874 @example
5875 CFLAGS=-g
5876 @end example
5878 Each time you run @code{make}, you can override this value if you
5879 wish.  For example, if you say @samp{make CFLAGS='-g -O'}, each C
5880 compilation will be done with @samp{cc -c -g -O}.  (This illustrates
5881 how you can use quoting in the shell to enclose spaces and other
5882 special characters in the value of a variable when you override it.)
5884 The variable @code{CFLAGS} is only one of many standard variables that
5885 exist just so that you can change them this way.  @xref{Implicit
5886 Variables, , Variables Used by Implicit Rules}, for a complete list.
5888 You can also program the makefile to look at additional variables of your
5889 own, giving the user the ability to control other aspects of how the
5890 makefile works by changing the variables.
5892 When you override a variable with a command argument, you can define either
5893 a recursively-expanded variable or a simply-expanded variable.  The
5894 examples shown above make a recursively-expanded variable; to make a
5895 simply-expanded variable, write @samp{:=} instead of @samp{=}.  But, unless
5896 you want to include a variable reference or function call in the
5897 @emph{value} that you specify, it makes no difference which kind of
5898 variable you create.
5900 There is one way that the makefile can change a variable that you have
5901 overridden.  This is to use the @code{override} directive, which is a line
5902 that looks like this: @samp{override @var{variable} = @var{value}}
5903 (@pxref{Override Directive, ,The @code{override} Directive}).
5905 @node Testing, Options Summary, Overriding, Running
5906 @section Testing the Compilation of a Program
5907 @cindex testing compilation
5908 @cindex compilation, testing
5910 Normally, when an error happens in executing a shell command, @code{make}
5911 gives up immediately, returning a nonzero status.  No further commands are
5912 executed for any target.  The error implies that the goal cannot be
5913 correctly remade, and @code{make} reports this as soon as it knows.
5915 When you are compiling a program that you have just changed, this is not
5916 what you want.  Instead, you would rather that @code{make} try compiling
5917 every file that can be tried, to show you as many compilation errors
5918 as possible.
5920 @cindex @code{-k}
5921 @cindex @code{--keep-going}
5922 On these occasions, you should use the @samp{-k} or
5923 @samp{--keep-going} flag.  This tells @code{make} to continue to
5924 consider the other dependencies of the pending targets, remaking them
5925 if necessary, before it gives up and returns nonzero status.  For
5926 example, after an error in compiling one object file, @samp{make -k}
5927 will continue compiling other object files even though it already
5928 knows that linking them will be impossible.  In addition to continuing
5929 after failed shell commands, @samp{make -k} will continue as much as
5930 possible after discovering that it does not know how to make a target
5931 or dependency file.  This will always cause an error message, but
5932 without @samp{-k}, it is a fatal error (@pxref{Options Summary,
5933 ,Summary of Options}).@refill
5935 The usual behavior of @code{make} assumes that your purpose is to get the
5936 goals up to date; once @code{make} learns that this is impossible, it might
5937 as well report the failure immediately.  The @samp{-k} flag says that the
5938 real purpose is to test as much as possible of the changes made in the
5939 program, perhaps to find several independent problems so that you can
5940 correct them all before the next attempt to compile.  This is why Emacs'
5941 @kbd{M-x compile} command passes the @samp{-k} flag by default.
5943 @node Options Summary,  , Testing, Running
5944 @section Summary of Options
5945 @cindex options
5946 @cindex flags
5947 @cindex switches
5949 Here is a table of all the options @code{make} understands:
5951 @table @samp
5952 @item -b
5953 @cindex @code{-b}
5954 @itemx -m
5955 @cindex @code{-m}
5956 These options are ignored for compatibility with other versions of @code{make}.
5958 @item -C @var{dir}
5959 @cindex @code{-C}
5960 @itemx --directory=@var{dir}
5961 @cindex @code{--directory}
5962 Change to directory @var{dir} before reading the makefiles.  If multiple
5963 @samp{-C} options are specified, each is interpreted relative to the
5964 previous one: @samp{-C / -C etc} is equivalent to @samp{-C /etc}.
5965 This is typically used with recursive invocations of @code{make}
5966 (@pxref{Recursion, ,Recursive Use of @code{make}}).
5968 @item -d
5969 @cindex @code{-d}
5970 @itemx --debug
5971 @cindex @code{--debug}
5972 @c Extra blank line here makes the table look better.
5974 Print debugging information in addition to normal processing.  The
5975 debugging information says which files are being considered for
5976 remaking, which file-times are being compared and with what results,
5977 which files actually need to be remade, which implicit rules are
5978 considered and which are applied---everything interesting about how
5979 @code{make} decides what to do.
5981 @item -e
5982 @cindex @code{-e}
5983 @itemx --environment-overrides
5984 @cindex @code{--environment-overrides}
5985 Give variables taken from the environment precedence
5986 over variables from makefiles.
5987 @xref{Environment, ,Variables from the Environment}.
5989 @item -f @var{file}
5990 @cindex @code{-f}
5991 @itemx --file=@var{file}
5992 @cindex @code{--file}
5993 @itemx --makefile=@var{file}
5994 @cindex @code{--makefile}
5995 Read the file named @var{file} as a makefile.
5996 @xref{Makefiles, ,Writing Makefiles}.
5998 @item -h
5999 @cindex @code{-h}
6000 @itemx --help
6001 @cindex @code{--help}
6002 @c Extra blank line here makes the table look better.
6004 Remind you of the options that @code{make} understands and then exit.
6006 @item -i
6007 @cindex @code{-i}
6008 @itemx --ignore-errors
6009 @cindex @code{--ignore-errors}
6010 Ignore all errors in commands executed to remake files.
6011 @xref{Errors, ,Errors in Commands}.
6013 @item -I @var{dir}
6014 @cindex @code{-I}
6015 @itemx --include-dir=@var{dir}
6016 @cindex @code{--include-dir}
6017 Specifies a directory @var{dir} to search for included makefiles.
6018 @xref{Include, ,Including Other Makefiles}.  If several @samp{-I}
6019 options are used to specify several directories, the directories are
6020 searched in the order specified.
6022 @item -j [@var{jobs}]
6023 @cindex @code{-j}
6024 @itemx --jobs=[@var{jobs}]
6025 @cindex @code{--jobs}
6026 Specifies the number of jobs (commands) to run simultaneously.  With no
6027 argument, @code{make} runs as many jobs simultaneously as possible.  If
6028 there is more than one @samp{-j} option, the last one is effective.
6029 @xref{Parallel, ,Parallel Execution},
6030 for more information on how commands are run.
6032 @item -k
6033 @cindex @code{-k}
6034 @itemx --keep-going
6035 @cindex @code{--keep-going}
6036 Continue as much as possible after an error.  While the target that
6037 failed, and those that depend on it, cannot be remade, the other
6038 dependencies of these targets can be processed all the same.
6039 @xref{Testing, ,Testing the Compilation of a Program}.
6041 @item -l [@var{load}]
6042 @cindex @code{-l}
6043 @itemx --load-average[=@var{load}]
6044 @cindex @code{--load-average}
6045 @itemx --max-load[=@var{load}]
6046 @cindex @code{--max-load}
6047 Specifies that no new jobs (commands) should be started if there are
6048 other jobs running and the load average is at least @var{load} (a
6049 floating-point number).  With no argument, removes a previous load
6050 limit.  @xref{Parallel, ,Parallel Execution}.
6052 @item -n
6053 @cindex @code{-n}
6054 @itemx --just-print
6055 @cindex @code{--just-print}
6056 @itemx --dry-run
6057 @cindex @code{--dry-run}
6058 @itemx --recon
6059 @cindex @code{--recon}
6060 @c Extra blank line here makes the table look better.
6062 Print the commands that would be executed, but do not execute them.
6063 @xref{Instead of Execution, ,Instead of Executing the Commands}.
6065 @item -o @var{file}
6066 @cindex @code{-o}
6067 @itemx --old-file=@var{file}
6068 @cindex @code{--old-file}
6069 @itemx --assume-old=@var{file}
6070 @cindex @code{--assume-old}
6071 Do not remake the file @var{file} even if it is older than its
6072 dependencies, and do not remake anything on account of changes in
6073 @var{file}.  Essentially the file is treated as very old and its rules
6074 are ignored.  @xref{Avoiding Compilation, ,Avoiding Recompilation of
6075 Some Files}.@refill
6077 @item -p
6078 @cindex @code{-p}
6079 @itemx --print-data-base
6080 @cindex @code{--print-data-base}
6081 Print the data base (rules and variable values) that results from
6082 reading the makefiles; then execute as usual or as otherwise
6083 specified.  This also prints the version information given by
6084 the @samp{-v} switch (see below).  To print the data base without
6085 trying to remake any files, use @w{@samp{make -p -f /dev/null}}.
6087 @item -q
6088 @cindex @code{-q}
6089 @itemx --question
6090 @cindex @code{--question}
6091 ``Question mode''.  Do not run any commands, or print anything; just
6092 return an exit status that is zero if the specified targets are already
6093 up to date, one if any remaking is required, or two if an error is
6094 encountered.  @xref{Instead of Execution, ,Instead of Executing the
6095 Commands}.@refill
6097 @item -r
6098 @cindex @code{-r}
6099 @itemx --no-builtin-rules
6100 @cindex @code{--no-builtin-rules}
6101 Eliminate use of the built-in implicit rules (@pxref{Implicit Rules,
6102 ,Using Implicit Rules}).  You can still define your own by writing
6103 pattern rules (@pxref{Pattern Rules, ,Defining and Redefining Pattern
6104 Rules}).  The @samp{-r} option also clears out the default list of
6105 suffixes for suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix
6106 Rules}).  But you can still define your own suffixes with a rule for
6107 @code{.SUFFIXES}, and then define your own suffix rules.
6109 @item -s
6110 @cindex @code{-s}
6111 @itemx --silent
6112 @cindex @code{--silent}
6113 @itemx --quiet
6114 @cindex @code{--quiet}
6115 @c Extra blank line here makes the table look better.
6117 Silent operation; do not print the commands as they are executed.
6118 @xref{Echoing, ,Command Echoing}.
6120 @item -S
6121 @cindex @code{-S}
6122 @itemx --no-keep-going
6123 @cindex @code{--no-keep-going}
6124 @itemx --stop
6125 @cindex @code{--stop}
6126 @c Extra blank line here makes the table look better.
6128 Cancel the effect of the @samp{-k} option.  This is never necessary
6129 except in a recursive @code{make} where @samp{-k} might be inherited
6130 from the top-level @code{make} via @code{MAKEFLAGS}
6131 (@pxref{Recursion, ,Recursive Use of @code{make}})
6132 or if you set @samp{-k} in @code{MAKEFLAGS} in your environment.@refill
6134 @item -t
6135 @cindex @code{-t}
6136 @itemx --touch
6137 @cindex @code{--touch}
6138 @c Extra blank line here makes the table look better.
6140 Touch files (mark them up to date without really changing them)
6141 instead of running their commands.  This is used to pretend that the
6142 commands were done, in order to fool future invocations of
6143 @code{make}.  @xref{Instead of Execution, ,Instead of Executing the Commands}.
6145 @item -v
6146 @cindex @code{-v}
6147 @itemx --version
6148 @cindex @code{--version}
6149 Print the version of the @code{make} program plus a copyright, a list
6150 of authors, and a notice that there is no warranty; then exit.
6152 @item -w
6153 @cindex @code{-w}
6154 @itemx --print-directory
6155 @cindex @code{--print-directory}
6156 Print a message containing the working directory both before and after
6157 executing the makefile.  This may be useful for tracking down errors
6158 from complicated nests of recursive @code{make} commands.
6159 @xref{Recursion, ,Recursive Use of @code{make}}.  (In practice, you
6160 rarely need to specify this option since @samp{make} does it for you;
6161 see @ref{-w Option, ,The @samp{--print-directory} Option}.)
6163 @itemx --no-print-directory
6164 @cindex @code{--no-print-directory}
6165 Disable printing of the working directory under @code{-w}.
6166 This option is useful when @code{-w} is turned on automatically,
6167 but you do not want to see the extra messages.
6168 @xref{-w Option, ,The @samp{--print-directory} Option}.
6170 @item -W @var{file}
6171 @cindex @code{-W}
6172 @itemx --what-if=@var{file}
6173 @cindex @code{--what-if}
6174 @itemx --new-file=@var{file}
6175 @cindex @code{--new-file}
6176 @itemx --assume-new=@var{file}
6177 @cindex @code{--assume-new}
6178 Pretend that the target @var{file} has just been modified.  When used
6179 with the @samp{-n} flag, this shows you what would happen if you were
6180 to modify that file.  Without @samp{-n}, it is almost the same as
6181 running a @code{touch} command on the given file before running
6182 @code{make}, except that the modification time is changed only in the
6183 imagination of @code{make}.
6184 @xref{Instead of Execution, ,Instead of Executing the Commands}.
6186 @item --warn-undefined-variables
6187 @cindex @code{--warn-undefined-variables}
6188 @cindex variables, warning for undefined
6189 @cindex undefined variables, warning message
6190 Issue a warning message whenever @code{make} sees a reference to an
6191 undefined variable.  This can be helpful when you are trying to debug
6192 makefiles which use variables in complex ways.
6193 @end table
6195 @node Implicit Rules, Archives, Running, Top
6196 @chapter Using Implicit Rules
6197 @cindex implicit rule
6198 @cindex rule, implicit
6200 Certain standard ways of remaking target files are used very often.  For
6201 example, one customary way to make an object file is from a C source file
6202 using the C compiler, @code{cc}.
6204 @dfn{Implicit rules} tell @code{make} how to use customary techniques so
6205 that you do not have to specify them in detail when you want to use
6206 them.  For example, there is an implicit rule for C compilation.  File
6207 names determine which implicit rules are run.  For example, C
6208 compilation typically takes a @file{.c} file and makes a @file{.o} file.
6209 So @code{make} applies the implicit rule for C compilation when it sees
6210 this combination of file name endings.@refill
6212 A chain of implicit rules can apply in sequence; for example, @code{make}
6213 will remake a @file{.o} file from a @file{.y} file by way of a @file{.c} file.
6214 @iftex
6215 @xref{Chained Rules, ,Chains of Implicit Rules}.
6216 @end iftex
6218 The built-in implicit rules use several variables in their commands so
6219 that, by changing the values of the variables, you can change the way the
6220 implicit rule works.  For example, the variable @code{CFLAGS} controls the
6221 flags given to the C compiler by the implicit rule for C compilation.
6222 @iftex
6223 @xref{Implicit Variables, ,Variables Used by Implicit Rules}.
6224 @end iftex
6226 You can define your own implicit rules by writing @dfn{pattern rules}.
6227 @iftex
6228 @xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.
6229 @end iftex
6231 @dfn{Suffix rules} are a more limited way to define implicit rules.
6232 Pattern rules are more general and clearer, but suffix rules are
6233 retained for compatibility.
6234 @iftex
6235 @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
6236 @end iftex
6238 @menu
6239 * Using Implicit::              How to use an existing implicit rule
6240                                   to get the commands for updating a file.
6241 * Catalogue of Rules::          A list of built-in implicit rules.
6242 * Implicit Variables::          How to change what predefined rules do.
6243 * Chained Rules::               How to use a chain of implicit rules.
6244 * Pattern Rules::               How to define new implicit rules.
6245 * Last Resort::                 How to defining commands for rules 
6246                                   which cannot find any.
6247 * Suffix Rules::                The old-fashioned style of implicit rule.
6248 * Search Algorithm::            The precise algorithm for applying 
6249                                   implicit rules.
6250 @end menu
6252 @node Using Implicit, Catalogue of Rules,  , Implicit Rules
6253 @section Using Implicit Rules
6254 @cindex implicit rule, how to use
6255 @cindex rule, implicit, how to use
6257 To allow @code{make} to find a customary method for updating a target file,
6258 all you have to do is refrain from specifying commands yourself.  Either
6259 write a rule with no command lines, or don't write a rule at all.  Then
6260 @code{make} will figure out which implicit rule to use based on which
6261 kind of source file exists or can be made.
6263 For example, suppose the makefile looks like this:
6265 @example
6266 foo : foo.o bar.o
6267         cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)
6268 @end example
6270 @noindent
6271 Because you mention @file{foo.o} but do not give a rule for it, @code{make}
6272 will automatically look for an implicit rule that tells how to update it.
6273 This happens whether or not the file @file{foo.o} currently exists.
6275 If an implicit rule is found, it can supply both commands and one or
6276 more dependencies (the source files).  You would want to write a rule
6277 for @file{foo.o} with no command lines if you need to specify additional
6278 dependencies, such as header files, that the implicit rule cannot
6279 supply.
6281 Each implicit rule has a target pattern and dependency patterns.  There may
6282 be many implicit rules with the same target pattern.  For example, numerous
6283 rules make @samp{.o} files: one, from a @samp{.c} file with the C compiler;
6284 another, from a @samp{.p} file with the Pascal compiler; and so on.  The rule
6285 that actually applies is the one whose dependencies exist or can be made.
6286 So, if you have a file @file{foo.c}, @code{make} will run the C compiler;
6287 otherwise, if you have a file @file{foo.p}, @code{make} will run the Pascal
6288 compiler; and so on.
6290 Of course, when you write the makefile, you know which implicit rule you
6291 want @code{make} to use, and you know it will choose that one because you
6292 know which possible dependency files are supposed to exist.
6293 @xref{Catalogue of Rules, ,Catalogue of Implicit Rules},
6294 for a catalogue of all the predefined implicit rules.
6296 Above, we said an implicit rule applies if the required dependencies ``exist
6297 or can be made''.  A file ``can be made'' if it is mentioned explicitly in
6298 the makefile as a target or a dependency, or if an implicit rule can be
6299 recursively found for how to make it.  When an implicit dependency is the
6300 result of another implicit rule, we say that @dfn{chaining} is occurring.
6301 @xref{Chained Rules, ,Chains of Implicit Rules}.
6303 In general, @code{make} searches for an implicit rule for each target, and
6304 for each double-colon rule, that has no commands.  A file that is mentioned
6305 only as a dependency is considered a target whose rule specifies nothing,
6306 so implicit rule search happens for it.  @xref{Search Algorithm, ,Implicit Rule Search Algorithm}, for the
6307 details of how the search is done.
6309 Note that explicit dependencies do not influence implicit rule search.
6310 For example, consider this explicit rule:
6312 @example
6313 foo.o: foo.p
6314 @end example
6316 @noindent
6317 The dependency on @file{foo.p} does not necessarily mean that
6318 @code{make} will remake @file{foo.o} according to the implicit rule to
6319 make an object file, a @file{.o} file, from a Pascal source file, a
6320 @file{.p} file.  For example, if @file{foo.c} also exists, the implicit
6321 rule to make an object file from a C source file is used instead,
6322 because it appears before the Pascal rule in the list of predefined
6323 implicit rules (@pxref{Catalogue of Rules, , Catalogue of Implicit
6324 Rules}).
6326 If you do not want an implicit rule to be used for a target that has no
6327 commands, you can give that target empty commands by writing a semicolon
6328 (@pxref{Empty Commands, ,Defining Empty Commands}).
6330 @node Catalogue of Rules, Implicit Variables, Using Implicit, Implicit Rules
6331 @section Catalogue of Implicit Rules
6332 @cindex implicit rule, predefined
6333 @cindex rule, implicit, predefined
6335 Here is a catalogue of predefined implicit rules which are always
6336 available unless the makefile explicitly overrides or cancels them.
6337 @xref{Canceling Rules, ,Canceling Implicit Rules}, for information on
6338 canceling or overriding an implicit rule.  The @samp{-r} or
6339 @samp{--no-builtin-rules} option cancels all predefined rules.
6341 Not all of these rules will always be defined, even when the @samp{-r}
6342 option is not given.  Many of the predefined implicit rules are
6343 implemented in @code{make} as suffix rules, so which ones will be
6344 defined depends on the @dfn{suffix list} (the list of dependencies of
6345 the special target @code{.SUFFIXES}).  The default suffix list is:
6346 @code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc},
6347 @code{.C}, @code{.p}, @code{.f}, @code{.F}, @code{.r}, @code{.y},
6348 @code{.l}, @code{.s}, @code{.S}, @code{.mod}, @code{.sym}, @code{.def},
6349 @code{.h}, @code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo},
6350 @code{.texi}, @code{.txinfo}, @code{.w}, @code{.ch} @code{.web},
6351 @code{.sh}, @code{.elc}, @code{.el}.  All of the implicit rules
6352 described below whose dependencies have one of these suffixes are
6353 actually suffix rules.  If you modify the suffix list, the only
6354 predefined suffix rules in effect will be those named by one or two of
6355 the suffixes that are on the list you specify; rules whose suffixes fail
6356 to be on the list are disabled.  @xref{Suffix Rules, ,Old-Fashioned
6357 Suffix Rules}, for full details on suffix rules.
6359 @table @asis
6360 @item Compiling C programs
6361 @cindex C, rule to compile
6362 @pindex cc
6363 @pindex gcc
6364 @pindex .o
6365 @pindex .c
6366 @file{@var{n}.o} is made automatically from @file{@var{n}.c} with
6367 a command of the form @samp{$(CC) -c $(CPPFLAGS) $(CFLAGS)}.@refill
6369 @item Compiling C++ programs
6370 @cindex C++, rule to compile
6371 @pindex g++
6372 @pindex .C
6373 @pindex .cc
6374 @file{@var{n}.o} is made automatically from @file{@var{n}.cc} or
6375 @file{@var{n}.C} with a command of the form @samp{$(CXX) -c $(CPPFLAGS)
6376 $(CXXFLAGS)}.  We encourage you to use the suffix @samp{.cc} for C++
6377 source files instead of @samp{.C}.@refill
6379 @item Compiling Pascal programs
6380 @cindex Pascal, rule to compile
6381 @pindex pc
6382 @pindex .p
6383 @file{@var{n}.o} is made automatically from @file{@var{n}.p}
6384 with the command @samp{$(PC) -c $(PFLAGS)}.@refill
6386 @item Compiling Fortran and Ratfor programs
6387 @cindex Fortran, rule to compile
6388 @cindex Ratfor, rule to compile
6389 @pindex f77
6390 @pindex .f
6391 @pindex .r
6392 @pindex .F
6393 @file{@var{n}.o} is made automatically from @file{@var{n}.r},
6394 @file{@var{n}.F} or @file{@var{n}.f} by running the
6395 Fortran compiler.  The precise command used is as follows:@refill
6397 @table @samp
6398 @item .f
6399 @samp{$(FC) -c $(FFLAGS)}.
6400 @item .F
6401 @samp{$(FC) -c $(FFLAGS) $(CPPFLAGS)}.
6402 @item .r
6403 @samp{$(FC) -c $(FFLAGS) $(RFLAGS)}.
6404 @end table
6406 @item Preprocessing Fortran and Ratfor programs
6407 @file{@var{n}.f} is made automatically from @file{@var{n}.r} or
6408 @file{@var{n}.F}.  This rule runs just the preprocessor to convert a
6409 Ratfor or preprocessable Fortran program into a strict Fortran
6410 program.  The precise command used is as follows:@refill
6412 @table @samp
6413 @item .F
6414 @samp{$(FC) -F $(CPPFLAGS) $(FFLAGS)}.
6415 @item .r
6416 @samp{$(FC) -F $(FFLAGS) $(RFLAGS)}.
6417 @end table
6419 @item Compiling Modula-2 programs
6420 @cindex Modula-2, rule to compile
6421 @pindex m2c
6422 @pindex .sym
6423 @pindex .def
6424 @pindex .mod
6425 @file{@var{n}.sym} is made from @file{@var{n}.def} with a command
6426 of the form @samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}.  @file{@var{n}.o}
6427 is made from @file{@var{n}.mod}; the form is:
6428 @w{@samp{$(M2C) $(M2FLAGS) $(MODFLAGS)}}.@refill
6430 @need 1200
6431 @item Assembling and preprocessing assembler programs
6432 @cindex assembly, rule to compile
6433 @pindex as
6434 @pindex .s
6435 @file{@var{n}.o} is made automatically from @file{@var{n}.s} by
6436 running the assembler, @code{as}.  The precise command is
6437 @samp{$(AS) $(ASFLAGS)}.@refill
6439 @pindex .S
6440 @file{@var{n}.s} is made automatically from @file{@var{n}.S} by
6441 running the C preprocessor, @code{cpp}.  The precise command is
6442 @w{@samp{$(CPP) $(CPPFLAGS)}}.
6444 @item Linking a single object file
6445 @cindex linking, predefined rule for
6446 @pindex ld
6447 @pindex .o
6448 @file{@var{n}} is made automatically from @file{@var{n}.o} by running
6449 the linker (usually called @code{ld}) via the C compiler.  The precise
6450 command used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES)}}.
6452 This rule does the right thing for a simple program with only one
6453 source file.  It will also do the right thing if there are multiple
6454 object files (presumably coming from various other source files), one
6455 of which has a name matching that of the executable file.  Thus,
6457 @example
6458 x: y.o z.o
6459 @end example
6461 @noindent
6462 when @file{x.c}, @file{y.c} and @file{z.c} all exist will execute:
6464 @example
6465 @group
6466 cc -c x.c -o x.o
6467 cc -c y.c -o y.o
6468 cc -c z.c -o z.o
6469 cc x.o y.o z.o -o x
6470 rm -f x.o
6471 rm -f y.o
6472 rm -f z.o
6473 @end group
6474 @end example
6476 @noindent
6477 In more complicated cases, such as when there is no object file whose
6478 name derives from the executable file name, you must write an explicit
6479 command for linking.
6481 Each kind of file automatically made into @samp{.o} object files will
6482 be automatically linked by using the compiler (@samp{$(CC)},
6483 @samp{$(FC)} or @samp{$(PC)}; the C compiler @samp{$(CC)} is used to
6484 assemble @samp{.s} files) without the @samp{-c} option.  This could be
6485 done by using the @samp{.o} object files as intermediates, but it is
6486 faster to do the compiling and linking in one step, so that's how it's
6487 done.@refill
6489 @item Yacc for C programs
6490 @pindex yacc
6491 @cindex Yacc, rule to run
6492 @pindex .y
6493 @file{@var{n}.c} is made automatically from @file{@var{n}.y} by
6494 running Yacc with the command @samp{$(YACC) $(YFLAGS)}.
6496 @item Lex for C programs
6497 @pindex lex
6498 @cindex Lex, rule to run
6499 @pindex .l
6500 @file{@var{n}.c} is made automatically from @file{@var{n}.l} by
6501 by running Lex.  The actual command is @samp{$(LEX) $(LFLAGS)}.
6503 @item Lex for Ratfor programs
6504 @file{@var{n}.r} is made automatically from @file{@var{n}.l} by
6505 by running Lex.  The actual command is @samp{$(LEX) $(LFLAGS)}.
6507 The convention of using the same suffix @samp{.l} for all Lex files
6508 regardless of whether they produce C code or Ratfor code makes it
6509 impossible for @code{make} to determine automatically which of the two
6510 languages you are using in any particular case.  If @code{make} is
6511 called upon to remake an object file from a @samp{.l} file, it must
6512 guess which compiler to use.  It will guess the C compiler, because
6513 that is more common.  If you are using Ratfor, make sure @code{make}
6514 knows this by mentioning @file{@var{n}.r} in the makefile.  Or, if you
6515 are using Ratfor exclusively, with no C files, remove @samp{.c} from
6516 the list of implicit rule suffixes with:@refill
6518 @example
6519 @group
6520 .SUFFIXES:
6521 .SUFFIXES: .o .r .f .l @dots{}
6522 @end group
6523 @end example
6525 @item Making Lint Libraries from C, Yacc, or Lex programs
6526 @pindex lint
6527 @cindex @code{lint}, rule to run
6528 @pindex .ln
6529 @file{@var{n}.ln} is made from @file{@var{n}.c} by running @code{lint}.
6530 The precise command is @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}.  
6531 The same command is used on the C code produced from 
6532 @file{@var{n}.y} or @file{@var{n}.l}.@refill
6534 @item @TeX{} and Web
6535 @cindex @TeX{}, rule to run
6536 @cindex Web, rule to run
6537 @pindex tex
6538 @pindex cweave
6539 @pindex weave
6540 @pindex tangle
6541 @pindex ctangle
6542 @pindex .dvi
6543 @pindex .tex
6544 @pindex .web
6545 @pindex .w
6546 @pindex .ch
6547 @file{@var{n}.dvi} is made from @file{@var{n}.tex} with the command
6548 @samp{$(TEX)}.  @file{@var{n}.tex} is made from @file{@var{n}.web} with
6549 @samp{$(WEAVE)}, or from @file{@var{n}.w} (and from @file{@var{n}.ch} if
6550 it exists or can be made) with @samp{$(CWEAVE)}.  @file{@var{n}.p} is
6551 made from @file{@var{n}.web} with @samp{$(TANGLE)} and @file{@var{n}.c}
6552 is made from @file{@var{n}.w} (and from @file{@var{n}.ch} if it exists
6553 or can be made) with @samp{$(CTANGLE)}.@refill
6555 @item Texinfo and Info
6556 @cindex Texinfo, rule to format
6557 @cindex Info, rule to format
6558 @pindex texi2dvi
6559 @pindex makeinfo
6560 @pindex .texinfo
6561 @pindex .info
6562 @pindex .texi
6563 @pindex .txinfo
6564 @file{@var{n}.dvi} is made from @file{@var{n}.texinfo},
6565 @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with the command
6566 @w{@samp{$(TEXI2DVI) $(TEXI2DVI_FLAGS)}}.  @file{@var{n}.info} is made from
6567 @file{@var{n}.texinfo}, @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with
6568 the command @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}.
6570 @item RCS
6571 @cindex RCS, rule to extract from
6572 @pindex co
6573 @pindex ,v @r{(RCS file extension)}
6574 Any file @file{@var{n}} is extracted if necessary from an RCS file
6575 named either @file{@var{n},v} or @file{RCS/@var{n},v}.  The precise
6576 command used is @w{@samp{$(CO) $(COFLAGS)}}.  @file{@var{n}} will not be
6577 extracted from RCS if it already exists, even if the RCS file is
6578 newer.  The rules for RCS are terminal 
6579 (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}), 
6580 so RCS files cannot be generated from another source; they must
6581 actually exist.@refill
6583 @item SCCS
6584 @cindex SCCS, rule to extract from
6585 @pindex get
6586 @pindex s. @r{(SCCS file prefix)}
6587 Any file @file{@var{n}} is extracted if necessary from an SCCS file
6588 named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}.  The precise
6589 command used is @w{@samp{$(GET) $(GFLAGS)}}.  The rules for SCCS are
6590 terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
6591 so SCCS files cannot be generated from another source; they must
6592 actually exist.@refill
6594 @pindex .sh
6595 For the benefit of SCCS, a file @file{@var{n}} is copied from
6596 @file{@var{n}.sh} and made executable (by everyone).  This is for
6597 shell scripts that are checked into SCCS.  Since RCS preserves the
6598 execution permission of a file, you do not need to use this feature
6599 with RCS.@refill
6601 We recommend that you avoid using of SCCS.  RCS is widely held to be
6602 superior, and is also free.  By choosing free software in place of
6603 comparable (or inferior) proprietary software, you support the free
6604 software movement.
6605 @end table
6607 Usually, you want to change only the variables listed in the table
6608 above, which are documented in the following section.
6610 However, the commands in built-in implicit rules actually use
6611 variables such as @code{COMPILE.c}, @code{LINK.p}, and
6612 @code{PREPROCESS.S}, whose values contain the commands listed above.
6614 @code{make} follows the convention that the rule to compile a
6615 @file{.@var{x}} source file uses the variable @code{COMPILE.@var{x}}.
6616 Similarly, the rule to produce an executable from a @file{.@var{x}}
6617 file uses @code{LINK.@var{x}}; and the rule to preprocess a
6618 @file{.@var{x}} file uses @code{PREPROCESS.@var{x}}.
6620 @vindex OUTPUT_OPTION
6621 Every rule that produces an object file uses the variable
6622 @code{OUTPUT_OPTION}.  @code{make} defines this variable either to
6623 contain @samp{-o $@@}, or to be empty, depending on a compile-time
6624 option.  You need the @samp{-o} option to ensure that the output goes
6625 into the right file when the source file is in a different directory,
6626 as when using @code{VPATH} (@pxref{Directory Search}).  However,
6627 compilers on some systems do not accept a @samp{-o} switch for object
6628 files.  If you use such a system, and use @code{VPATH}, some
6629 compilations will put their output in the wrong place.
6630 A possible workaround for this problem is to give @code{OUTPUT_OPTION}
6631 the value @w{@samp{; mv $*.o $@@}}.
6633 @node Implicit Variables, Chained Rules, Catalogue of Rules, Implicit Rules
6634 @section Variables Used by Implicit Rules
6635 @cindex flags for compilers
6637 The commands in built-in implicit rules make liberal use of certain
6638 predefined variables.  You can alter these variables in the makefile,
6639 with arguments to @code{make}, or in the environment to alter how the
6640 implicit rules work without redefining the rules themselves.
6642 For example, the command used to compile a C source file actually says
6643 @samp{$(CC) -c $(CFLAGS) $(CPPFLAGS)}.  The default values of the variables
6644 used are @samp{cc} and nothing, resulting in the command @samp{cc -c}.  By
6645 redefining @samp{CC} to @samp{ncc}, you could cause @samp{ncc} to be
6646 used for all C compilations performed by the implicit rule.  By redefining
6647 @samp{CFLAGS} to be @samp{-g}, you could pass the @samp{-g} option to
6648 each compilation.  @emph{All} implicit rules that do C compilation use
6649 @samp{$(CC)} to get the program name for the compiler and @emph{all}
6650 include @samp{$(CFLAGS)} among the arguments given to the compiler.@refill
6652 The variables used in implicit rules fall into two classes: those that are
6653 names of programs (like @code{CC}) and those that contain arguments for the
6654 programs (like @code{CFLAGS}).  (The ``name of a program'' may also contain
6655 some command arguments, but it must start with an actual executable program
6656 name.)  If a variable value contains more than one argument, separate them
6657 with spaces.
6659 Here is a table of variables used as names of programs in built-in rules:
6661 @table @code
6662 @item AR
6663 @vindex AR
6664 Archive-maintaining program; default @samp{ar}.
6665 @pindex ar
6667 @item AS
6668 @vindex AS
6669 Program for doing assembly; default @samp{as}.
6670 @pindex as
6672 @item CC
6673 @vindex CC
6674 Program for compiling C programs; default @samp{cc}.
6675 @pindex cc
6677 @item CXX
6678 @vindex CXX
6679 Program for compiling C++ programs; default @samp{g++}.
6680 @pindex g++
6682 @item CO
6683 @vindex CO
6684 Program for extracting a file from RCS; default @samp{co}.
6685 @pindex co
6687 @item CPP
6688 @vindex CPP
6689 Program for running the C preprocessor, with results to standard output;
6690 default @samp{$(CC) -E}.
6692 @item FC
6693 @vindex FC
6694 Program for compiling or preprocessing Fortran and Ratfor programs;
6695 default @samp{f77}.
6696 @pindex f77
6698 @item GET
6699 @vindex GET
6700 Program for extracting a file from SCCS; default @samp{get}.
6701 @pindex get
6703 @item LEX
6704 @vindex LEX
6705 Program to use to turn Lex grammars into C programs or Ratfor programs;
6706 default @samp{lex}.
6707 @pindex lex
6709 @item PC
6710 @vindex PC
6711 Program for compiling Pascal programs; default @samp{pc}.
6712 @pindex pc
6714 @item YACC
6715 @vindex YACC
6716 Program to use to turn Yacc grammars into C programs; default @samp{yacc}.
6717 @pindex yacc
6719 @item YACCR
6720 @vindex YACCR
6721 Program to use to turn Yacc grammars into Ratfor
6722 programs; default @samp{yacc -r}.
6724 @item MAKEINFO
6725 @vindex MAKEINFO
6726 Program to convert a Texinfo source file into an Info file; default
6727 @samp{makeinfo}.
6728 @pindex makeinfo
6730 @item TEX
6731 @vindex TEX
6732 Program to make @TeX{} @sc{dvi} files from @TeX{} source;
6733 default @samp{tex}.
6734 @pindex tex
6736 @item TEXI2DVI
6737 @vindex TEXI2DVI
6738 Program to make @TeX{} @sc{dvi} files from Texinfo source;
6739 default @samp{texi2dvi}.
6740 @pindex texi2dvi
6742 @item WEAVE
6743 @vindex WEAVE
6744 Program to translate Web into @TeX{}; default @samp{weave}.
6745 @pindex weave
6747 @item CWEAVE
6748 @vindex CWEAVE
6749 Program to translate C Web into @TeX{}; default @samp{cweave}.
6750 @pindex cweave
6752 @item TANGLE
6753 @vindex TANGLE
6754 Program to translate Web into Pascal; default @samp{tangle}.
6755 @pindex tangle
6757 @item CTANGLE
6758 @vindex CTANGLE
6759 Program to translate C Web into C; default @samp{ctangle}.
6760 @pindex ctangle
6762 @item RM
6763 @vindex RM
6764 Command to remove a file; default @samp{rm -f}.
6765 @pindex rm
6766 @end table
6768 Here is a table of variables whose values are additional arguments for the
6769 programs above.  The default values for all of these is the empty
6770 string, unless otherwise noted.
6772 @table @code
6773 @item ARFLAGS
6774 @vindex ARFLAGS
6775 Flags to give the archive-maintaining program; default @samp{rv}.
6777 @item ASFLAGS
6778 @vindex ASFLAGS
6779 Extra flags to give to the assembler (when explicitly
6780 invoked on a @samp{.s} or @samp{.S} file).
6782 @item CFLAGS
6783 @vindex CFLAGS
6784 Extra flags to give to the C compiler.
6786 @item CXXFLAGS
6787 @vindex CXXFLAGS
6788 Extra flags to give to the C++ compiler.
6790 @item COFLAGS
6791 @vindex COFLAGS
6792 Extra flags to give to the RCS @code{co} program.
6794 @item CPPFLAGS
6795 @vindex CPPFLAGS
6796 Extra flags to give to the C preprocessor and programs
6797 that use it (the C and Fortran compilers).
6799 @item FFLAGS
6800 @vindex FFLAGS
6801 Extra flags to give to the Fortran compiler.
6803 @item GFLAGS
6804 @vindex GFLAGS
6805 Extra flags to give to the SCCS @code{get} program.
6807 @item LDFLAGS
6808 @vindex LDFLAGS
6809 Extra flags to give to compilers when they are
6810 supposed to invoke the linker, @samp{ld}.
6812 @item LFLAGS
6813 @vindex LFLAGS
6814 Extra flags to give to Lex.
6816 @item PFLAGS
6817 @vindex PFLAGS
6818 Extra flags to give to the Pascal compiler.
6820 @item RFLAGS
6821 @vindex RFLAGS
6822 Extra flags to give to the Fortran compiler for Ratfor programs.
6824 @item YFLAGS
6825 @vindex YFLAGS
6826 Extra flags to give to Yacc.
6827 @end table
6829 @node Chained Rules, Pattern Rules, Implicit Variables, Implicit Rules
6830 @section Chains of Implicit Rules
6832 @cindex chains of rules
6833 @cindex rule, implicit, chains of
6834 Sometimes a file can be made by a sequence of implicit rules.  For example,
6835 a file @file{@var{n}.o} could be made from @file{@var{n}.y} by running
6836 first Yacc and then @code{cc}.  Such a sequence is called a @dfn{chain}.
6838 If the file @file{@var{n}.c} exists, or is mentioned in the makefile, no
6839 special searching is required: @code{make} finds that the object file can
6840 be made by C compilation from @file{@var{n}.c}; later on, when considering
6841 how to make @file{@var{n}.c}, the rule for running Yacc is
6842 used.  Ultimately both @file{@var{n}.c} and @file{@var{n}.o} are
6843 updated.@refill
6845 @cindex intermediate files
6846 @cindex files, intermediate
6847 However, even if @file{@var{n}.c} does not exist and is not mentioned,
6848 @code{make} knows how to envision it as the missing link between
6849 @file{@var{n}.o} and @file{@var{n}.y}!  In this case, @file{@var{n}.c} is
6850 called an @dfn{intermediate file}.  Once @code{make} has decided to use the
6851 intermediate file, it is entered in the data base as if it had been
6852 mentioned in the makefile, along with the implicit rule that says how to
6853 create it.@refill
6855 Intermediate files are remade using their rules just like all other
6856 files.  The difference is that the intermediate file is deleted when
6857 @code{make} is finished.  Therefore, the intermediate file which did not
6858 exist before @code{make} also does not exist after @code{make}.  The
6859 deletion is reported to you by printing a @samp{rm -f} command that
6860 shows what @code{make} is doing.  (You can list the target pattern of an
6861 implicit rule (such as @samp{%.o}) as a dependency of the special
6862 target @code{.PRECIOUS} to preserve intermediate files made by implicit
6863 rules whose target patterns match that file's name; 
6864 see @ref{Interrupts}.)@refill
6865 @cindex intermediate files, preserving
6866 @cindex preserving intermediate files
6867 @cindex preserving with @code{.PRECIOUS}
6868 @cindex @code{.PRECIOUS} intermediate files
6870 A chain can involve more than two implicit rules.  For example, it is
6871 possible to make a file @file{foo} from @file{RCS/foo.y,v} by running RCS,
6872 Yacc and @code{cc}.  Then both @file{foo.y} and @file{foo.c} are
6873 intermediate files that are deleted at the end.@refill
6875 No single implicit rule can appear more than once in a chain.  This means
6876 that @code{make} will not even consider such a ridiculous thing as making
6877 @file{foo} from @file{foo.o.o} by running the linker twice.  This
6878 constraint has the added benefit of preventing any infinite loop in the
6879 search for an implicit rule chain.
6881 There are some special implicit rules to optimize certain cases that would
6882 otherwise be handled by rule chains.  For example, making @file{foo} from
6883 @file{foo.c} could be handled by compiling and linking with separate
6884 chained rules, using @file{foo.o} as an intermediate file.  But what
6885 actually happens is that a special rule for this case does the compilation
6886 and linking with a single @code{cc} command.  The optimized rule is used in
6887 preference to the step-by-step chain because it comes earlier in the
6888 ordering of rules.
6890 @node Pattern Rules, Last Resort, Chained Rules, Implicit Rules
6891 @section Defining and Redefining Pattern Rules
6893 You define an implicit rule by writing a @dfn{pattern rule}.  A pattern
6894 rule looks like an ordinary rule, except that its target contains the
6895 character @samp{%} (exactly one of them).  The target is considered a
6896 pattern for matching file names; the @samp{%} can match any nonempty
6897 substring, while other characters match only themselves.  The dependencies
6898 likewise use @samp{%} to show how their names relate to the target name.
6900 Thus, a pattern rule @samp{%.o : %.c} says how to make any file
6901 @file{@var{stem}.o} from another file @file{@var{stem}.c}.@refill
6903 Note that expansion using @samp{%} in pattern rules occurs
6904 @strong{after} any variable or function expansions, which take place
6905 when the makefile is read.  @xref{Using Variables, , How to Use
6906 Variables}, and @ref{Functions, ,Functions for Transforming Text}.
6908 @menu
6909 * Pattern Intro::               An introduction to pattern rules.
6910 * Pattern Examples::            Examples of pattern rules.
6911 * Automatic::                   How to use automatic variables in the
6912                                   commands of implicit rules.
6913 * Pattern Match::               How patterns match.
6914 * Match-Anything Rules::        Precautions you should take prior to
6915                                   defining rules that can match any
6916                                   target file whatever.
6917 * Canceling Rules::             How to override or cancel built-in rules.
6918 @end menu
6920 @node Pattern Intro, Pattern Examples,  , Pattern Rules
6921 @subsection Introduction to Pattern Rules
6922 @cindex pattern rule
6923 @cindex rule, pattern
6925 A pattern rule contains the character @samp{%} (exactly one of them)
6926 in the target; otherwise, it looks exactly like an ordinary rule.  The
6927 target is a pattern for matching file names; the @samp{%} matches any
6928 nonempty substring, while other characters match only themselves.
6929 @cindex target pattern, implicit
6930 @cindex @code{%}, in pattern rules
6932 For example, @samp{%.c} as a pattern matches any file name that ends in
6933 @samp{.c}.  @samp{s.%.c} as a pattern matches any file name that starts
6934 with @samp{s.}, ends in @samp{.c} and is at least five characters long.
6935 (There must be at least one character to match the @samp{%}.)  The substring
6936 that the @samp{%} matches is called the @dfn{stem}.@refill
6938 @samp{%} in a dependency of a pattern rule stands for the same stem
6939 that was matched by the @samp{%} in the target.  In order for
6940 the pattern rule to apply, its target pattern must match the file name
6941 under consideration, and its dependency patterns must name files that
6942 exist or can be made.  These files become dependencies of the target.
6943 @cindex dependency pattern, implicit
6945 Thus, a rule of the form
6947 @example
6948 %.o : %.c ; @var{command}@dots{}
6949 @end example
6951 @noindent
6952 specifies how to make a file @file{@var{n}.o}, with another file
6953 @file{@var{n}.c} as its dependency, provided that @file{@var{n}.c}
6954 exists or can be made.
6956 There may also be dependencies that do not use @samp{%}; such a dependency
6957 attaches to every file made by this pattern rule.  These unvarying
6958 dependencies are useful occasionally.
6960 A pattern rule need not have any dependencies that contain @samp{%}, or
6961 in fact any dependencies at all.  Such a rule is effectively a general
6962 wildcard.  It provides a way to make any file that matches the target
6963 pattern.  @xref{Last Resort}.
6965 @c !!! The end of of this paragraph should be rewritten.  --bob
6966 Pattern rules may have more than one target.  Unlike normal rules, this
6967 does not act as many different rules with the same dependencies and
6968 commands.  If a pattern rule has multiple targets, @code{make} knows that
6969 the rule's commands are responsible for making all of the targets.  The
6970 commands are executed only once to make all the targets.  When searching
6971 for a pattern rule to match a target, the target patterns of a rule other
6972 than the one that matches the target in need of a rule are incidental:
6973 @code{make} worries only about giving commands and dependencies to the file
6974 presently in question.  However, when this file's commands are run, the
6975 other targets are marked as having been updated themselves.
6976 @cindex multiple targets, in pattern rule
6977 @cindex target, multiple in pattern rule
6979 The order in which pattern rules appear in the makefile is important
6980 since this is the order in which they are considered.
6981 Of equally applicable
6982 rules, only the first one found is used.  The rules you write take precedence
6983 over those that are built in.  Note however, that a rule whose
6984 dependencies actually exist or are mentioned always takes priority over a
6985 rule with dependencies that must be made by chaining other implicit rules.
6986 @cindex pattern rules, order of
6987 @cindex order of pattern rules
6989 @node Pattern Examples, Automatic, Pattern Intro, Pattern Rules
6990 @subsection Pattern Rule Examples
6992 Here are some examples of pattern rules actually predefined in
6993 @code{make}.  First, the rule that compiles @samp{.c} files into @samp{.o}
6994 files:@refill
6996 @example
6997 %.o : %.c
6998         $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@
6999 @end example
7001 @noindent
7002 defines a rule that can make any file @file{@var{x}.o} from
7003 @file{@var{x}.c}.  The command uses the automatic variables @samp{$@@} and
7004 @samp{$<} to substitute the names of the target file and the source file
7005 in each case where the rule applies (@pxref{Automatic, ,Automatic Variables}).@refill
7007 Here is a second built-in rule:
7009 @example
7010 % :: RCS/%,v
7011         $(CO) $(COFLAGS) $<
7012 @end example
7014 @noindent
7015 defines a rule that can make any file @file{@var{x}} whatsoever from a
7016 corresponding file @file{@var{x},v} in the subdirectory @file{RCS}.  Since
7017 the target is @samp{%}, this rule will apply to any file whatever, provided
7018 the appropriate dependency file exists.  The double colon makes the rule
7019 @dfn{terminal}, which means that its dependency may not be an intermediate
7020 file (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}).@refill
7022 @need 500
7023 This pattern rule has two targets:
7025 @example
7026 @group
7027 %.tab.c %.tab.h: %.y
7028         bison -d $<
7029 @end group
7030 @end example
7032 @noindent
7033 @c The following paragraph is rewritten to avoid overfull hboxes
7034 This tells @code{make} that the command @samp{bison -d @var{x}.y} will
7035 make both @file{@var{x}.tab.c} and @file{@var{x}.tab.h}.  If the file
7036 @file{foo} depends on the files @file{parse.tab.o} and @file{scan.o}
7037 and the file @file{scan.o} depends on the file @file{parse.tab.h},
7038 when @file{parse.y} is changed, the command @samp{bison -d parse.y}
7039 will be executed only once, and the dependencies of both
7040 @file{parse.tab.o} and @file{scan.o} will be satisfied.  (Presumably
7041 the file @file{parse.tab.o} will be recompiled from @file{parse.tab.c}
7042 and the file @file{scan.o} from @file{scan.c}, while @file{foo} is
7043 linked from @file{parse.tab.o}, @file{scan.o}, and its other
7044 dependencies, and it will execute happily ever after.)@refill
7046 @node Automatic, Pattern Match, Pattern Examples, Pattern Rules
7047 @subsection Automatic Variables
7048 @cindex automatic variables
7049 @cindex variables, automatic
7050 @cindex variables, and implicit rule
7052 Suppose you are writing a pattern rule to compile a @samp{.c} file into a
7053 @samp{.o} file: how do you write the @samp{cc} command so that it operates
7054 on the right source file name?  You cannot write the name in the command,
7055 because the name is different each time the implicit rule is applied.
7057 What you do is use a special feature of @code{make}, the @dfn{automatic
7058 variables}.  These variables have values computed afresh for each rule that
7059 is executed, based on the target and dependencies of the rule.  In this
7060 example, you would use @samp{$@@} for the object file name and @samp{$<}
7061 for the source file name.
7063 Here is a table of automatic variables:
7065 @table @code
7066 @vindex $@@
7067 @vindex @@ @r{(automatic variable)}
7068 @item $@@
7069 The file name of the target of the rule.  If the target is an archive
7070 member, then @samp{$@@} is the name of the archive file.  In a pattern
7071 rule that has multiple targets (@pxref{Pattern Intro, ,Introduction to
7072 Pattern Rules}), @samp{$@@} is the name of whichever target caused the
7073 rule's commands to be run.
7075 @vindex $%
7076 @vindex % @r{(automatic variable)}
7077 @item $%
7078 The target member name, when the target is an archive member.
7079 @xref{Archives}.  For example, if the target is @file{foo.a(bar.o)} then
7080 @samp{$%} is @file{bar.o} and @samp{$@@} is @file{foo.a}.  @samp{$%} is
7081 empty when the target is not an archive member.
7083 @vindex $<
7084 @vindex < @r{(automatic variable)}
7085 @item $<
7086 The name of the first dependency.  If the target got its commands from
7087 an implicit rule, this will be the first dependency added by the
7088 implicit rule (@pxref{Implicit Rules}).
7090 @vindex $?
7091 @vindex ? @r{(automatic variable)}
7092 @item $?
7093 The names of all the dependencies that are newer than the target, with
7094 spaces between them.  For dependencies which are archive members, only
7095 the member named is used (@pxref{Archives}).
7096 @cindex dependencies, list of changed
7097 @cindex list of changed dependencies
7099 @vindex $^
7100 @vindex ^ @r{(automatic variable)}
7101 @item $^
7102 The names of all the dependencies, with spaces between them.  For
7103 dependencies which are archive members, only the member named is used
7104 (@pxref{Archives}).  A target has only one dependency on each other file
7105 it depends on, no matter how many times each file is listed as a
7106 dependency.  So if you list a dependency more than once for a target,
7107 the value of @code{$^} contains just one copy of the name.
7108 @cindex dependencies, list of all
7109 @cindex list of all dependencies
7111 @vindex $*
7112 @vindex * @r{(automatic variable)}
7113 @item $*
7114 The stem with which an implicit rule matches (@pxref{Pattern Match, ,How
7115 Patterns Match}).  If the target is @file{dir/a.foo.b} and the target
7116 pattern is @file{a.%.b} then the stem is @file{dir/foo}.  The stem is
7117 useful for constructing names of related files.@refill
7118 @cindex stem, variable for
7120 In a static pattern rule, the stem is part of the file name that matched
7121 the @samp{%} in the target pattern.
7123 In an explicit rule, there is no stem; so @samp{$*} cannot be determined
7124 in that way.  Instead, if the target name ends with a recognized suffix
7125 (@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}), @samp{$*} is set to
7126 the target name minus the suffix.  For example, if the target name is
7127 @samp{foo.c}, then @samp{$*} is set to @samp{foo}, since @samp{.c} is a
7128 suffix.  GNU @code{make} does this bizarre thing only for compatibility
7129 with other implementations of @code{make}.  You should generally avoid
7130 using @samp{$*} except in implicit rules or static pattern rules.@refill
7132 If the target name in an explicit rule does not end with a recognized
7133 suffix, @samp{$*} is set to the empty string for that rule.
7134 @end table
7136 @samp{$?} is useful even in explicit rules when you wish to operate on only
7137 the dependencies that have changed.  For example, suppose that an archive
7138 named @file{lib} is supposed to contain copies of several object files.
7139 This rule copies just the changed object files into the archive:
7141 @example
7142 @group
7143 lib: foo.o bar.o lose.o win.o
7144         ar r lib $?
7145 @end group
7146 @end example
7148 Of the variables listed above, four have values that are single file
7149 names, and two have values that are lists of file names.  These six have
7150 variants that get just the file's directory name or just the file name
7151 within the directory.  The variant variables' names are formed by
7152 appending @samp{D} or @samp{F}, respectively.  These variants are
7153 semi-obsolete in GNU @code{make} since the functions @code{dir} and
7154 @code{notdir} can be used to get a similar effect (@pxref{Filename
7155 Functions, , Functions for File Names}).  Note, however, that the
7156 @samp{F} variants all omit the trailing slash which always appears in
7157 the output of the @code{dir} function.  Here is a table of the variants:
7159 @table @samp
7160 @vindex $(@@D)
7161 @vindex @@D @r{(automatic variable)}
7162 @item $(@@D)
7163 The directory part of the file name of the target, with the trailing
7164 slash removed.  If the value of @samp{$@@} is @file{dir/foo.o} then
7165 @samp{$(@@D)} is @file{dir}.  This value is @file{.} if @samp{$@@} does
7166 not contain a slash.
7168 @vindex $(@@F)
7169 @vindex @@F @r{(automatic variable)}
7170 @item $(@@F)
7171 The file-within-directory part of the file name of the target.  If the
7172 value of @samp{$@@} is @file{dir/foo.o} then @samp{$(@@F)} is
7173 @file{foo.o}.  @samp{$(@@F)} is equivalent to @samp{$(notdir $@@)}.
7175 @vindex $(*D)
7176 @vindex *D @r{(automatic variable)}
7177 @item $(*D)
7178 @vindex $(*F)
7179 @vindex *F @r{(automatic variable)}
7180 @itemx $(*F)
7181 The directory part and the file-within-directory
7182 part of the stem; @file{dir} and @file{foo} in this example.
7184 @vindex $(%D)
7185 @vindex %D @r{(automatic variable)}
7186 @item $(%D)
7187 @vindex $(%F)
7188 @vindex %F @r{(automatic variable)}
7189 @itemx $(%F)
7190 The directory part and the file-within-directory part of the target
7191 archive member name.  This makes sense only for archive member targets
7192 of the form @file{@var{archive}(@var{member})} and is useful only when
7193 @var{member} may contain a directory name.  (@xref{Archive Members,
7194 ,Archive Members as Targets}.)
7196 @vindex $(<D)
7197 @vindex <D @r{(automatic variable)}
7198 @item $(<D)
7199 @vindex $(<F)
7200 @vindex <F @r{(automatic variable)}
7201 @itemx $(<F)
7202 The directory part and the file-within-directory
7203 part of the first dependency.
7205 @vindex $(^D)
7206 @vindex ^D @r{(automatic variable)}
7207 @item $(^D)
7208 @vindex $(^F)
7209 @vindex ^F @r{(automatic variable)}
7210 @itemx $(^F)
7211 Lists of the directory parts and the file-within-directory
7212 parts of all dependencies.
7214 @vindex $(?D)
7215 @vindex ?D @r{(automatic variable)}
7216 @item $(?D)
7217 @vindex $(?F)
7218 @vindex ?F @r{(automatic variable)}
7219 @itemx $(?F)
7220 Lists of the directory parts and the file-within-directory parts of
7221 all dependencies that are newer than the target.
7222 @end table
7224 Note that we use a special stylistic convention when we talk about these
7225 automatic variables; we write ``the value of @samp{$<}'', rather than
7226 @w{``the variable @code{<}''} as we would write for ordinary variables
7227 such as @code{objects} and @code{CFLAGS}.  We think this convention
7228 looks more natural in this special case.  Please do not assume it has a
7229 deep significance; @samp{$<} refers to the variable named @code{<} just
7230 as @samp{$(CFLAGS)} refers to the variable named @code{CFLAGS}.
7231 You could just as well use @samp{$(<)} in place of @samp{$<}.
7233 @node Pattern Match, Match-Anything Rules, Automatic, Pattern Rules
7234 @subsection How Patterns Match
7236 @cindex stem
7237 A target pattern is composed of a @samp{%} between a prefix and a suffix,
7238 either or both of which may be empty.  The pattern matches a file name only
7239 if the file name starts with the prefix and ends with the suffix, without
7240 overlap.  The text between the prefix and the suffix is called the
7241 @dfn{stem}.  Thus, when the pattern @samp{%.o} matches the file name
7242 @file{test.o}, the stem is @samp{test}.  The pattern rule dependencies are
7243 turned into actual file names by substituting the stem for the character
7244 @samp{%}.  Thus, if in the same example one of the dependencies is written
7245 as @samp{%.c}, it expands to @samp{test.c}.@refill
7247 When the target pattern does not contain a slash (and it usually does
7248 not), directory names in the file names are removed from the file name
7249 before it is compared with the target prefix and suffix.  After the
7250 comparison of the file name to the target pattern, the directory
7251 names, along with the slash that ends them, are added on to the
7252 dependency file names generated from the pattern rule's dependency
7253 patterns and the file name. The directories are ignored only for the
7254 purpose of finding an implicit rule to use, not in the application of
7255 that rule.  Thus, @samp{e%t} matches the file name @file{src/eat},
7256 with @samp{src/a} as the stem.  When dependencies are turned into file
7257 names, the directories from the stem are added at the front, while the
7258 rest of the stem is substituted for the @samp{%}.  The stem
7259 @samp{src/a} with a dependency pattern @samp{c%r} gives the file name
7260 @file{src/car}.@refill
7262 @node Match-Anything Rules, Canceling Rules, Pattern Match, Pattern Rules
7263 @subsection Match-Anything Pattern Rules
7265 @cindex match-anything rule
7266 @cindex terminal rule
7267 When a pattern rule's target is just @samp{%}, it matches any file name
7268 whatever.  We call these rules @dfn{match-anything} rules.  They are very
7269 useful, but it can take a lot of time for @code{make} to think about them,
7270 because it must consider every such rule for each file name listed either
7271 as a target or as a dependency.
7273 Suppose the makefile mentions @file{foo.c}.  For this target, @code{make}
7274 would have to consider making it by linking an object file @file{foo.c.o},
7275 or by C compilation-and-linking in one step from @file{foo.c.c}, or by
7276 Pascal compilation-and-linking from @file{foo.c.p}, and many other
7277 possibilities.
7279 We know these possibilities are ridiculous since @file{foo.c} is a C source
7280 file, not an executable.  If @code{make} did consider these possibilities,
7281 it would ultimately reject them, because files such as @file{foo.c.o} and
7282 @file{foo.c.p} would not exist.  But these possibilities are so
7283 numerous that @code{make} would run very slowly if it had to consider
7284 them.@refill
7286 To gain speed, we have put various constraints on the way @code{make}
7287 considers match-anything rules.  There are two different constraints that
7288 can be applied, and each time you define a match-anything rule you must
7289 choose one or the other for that rule.
7291 One choice is to mark the match-anything rule as @dfn{terminal} by defining
7292 it with a double colon.  When a rule is terminal, it does not apply unless
7293 its dependencies actually exist.  Dependencies that could be made with
7294 other implicit rules are not good enough.  In other words, no further
7295 chaining is allowed beyond a terminal rule.
7297 For example, the built-in implicit rules for extracting sources from RCS
7298 and SCCS files are terminal; as a result, if the file @file{foo.c,v} does
7299 not exist, @code{make} will not even consider trying to make it as an
7300 intermediate file from @file{foo.c,v.o} or from @file{RCS/SCCS/s.foo.c,v}.
7301 RCS and SCCS files are generally ultimate source files, which should not be
7302 remade from any other files; therefore, @code{make} can save time by not
7303 looking for ways to remake them.@refill
7305 If you do not mark the match-anything rule as terminal, then it is
7306 nonterminal.  A nonterminal match-anything rule cannot apply to a file name
7307 that indicates a specific type of data.  A file name indicates a specific
7308 type of data if some non-match-anything implicit rule target matches it.
7310 For example, the file name @file{foo.c} matches the target for the pattern
7311 rule @samp{%.c : %.y} (the rule to run Yacc).  Regardless of whether this
7312 rule is actually applicable (which happens only if there is a file
7313 @file{foo.y}), the fact that its target matches is enough to prevent
7314 consideration of any nonterminal match-anything rules for the file
7315 @file{foo.c}.  Thus, @code{make} will not even consider trying to make
7316 @file{foo.c} as an executable file from @file{foo.c.o}, @file{foo.c.c},
7317 @file{foo.c.p}, etc.@refill
7319 The motivation for this constraint is that nonterminal match-anything
7320 rules are used for making files containing specific types of data (such as
7321 executable files) and a file name with a recognized suffix indicates some
7322 other specific type of data (such as a C source file).
7324 Special built-in dummy pattern rules are provided solely to recognize
7325 certain file names so that nonterminal match-anything rules will not be
7326 considered.  These dummy rules have no dependencies and no commands, and
7327 they are ignored for all other purposes.  For example, the built-in
7328 implicit rule
7330 @example
7331 %.p :
7332 @end example
7334 @noindent
7335 exists to make sure that Pascal source files such as @file{foo.p} match a
7336 specific target pattern and thereby prevent time from being wasted looking
7337 for @file{foo.p.o} or @file{foo.p.c}.
7339 Dummy pattern rules such as the one for @samp{%.p} are made for every
7340 suffix listed as valid for use in suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}).
7342 @node Canceling Rules,  , Match-Anything Rules, Pattern Rules
7343 @subsection Canceling Implicit Rules
7345 You can override a built-in implicit rule (or one you have defined
7346 yourself) by defining a new pattern rule with the same target and
7347 dependencies, but different commands.  When the new rule is defined, the
7348 built-in one is replaced.  The new rule's position in the sequence of
7349 implicit rules is determined by where you write the new rule.
7351 You can cancel a built-in implicit rule by defining a pattern rule with the
7352 same target and dependencies, but no commands.  For example, the following
7353 would cancel the rule that runs the assembler:
7355 @example
7356 %.o : %.s
7357 @end example
7359 @node Last Resort, Suffix Rules, Pattern Rules, Implicit Rules
7360 @section Defining Last-Resort Default Rules
7361 @cindex last-resort default rules
7362 @cindex default rules, last-resort
7364 You can define a last-resort implicit rule by writing a terminal
7365 match-anything pattern rule with no dependencies (@pxref{Match-Anything
7366 Rules}).  This is just like any other pattern rule; the only thing
7367 special about it is that it will match any target.  So such a rule's
7368 commands are used for all targets and dependencies that have no commands
7369 of their own and for which no other implicit rule applies.
7371 For example, when testing a makefile, you might not care if the source
7372 files contain real data, only that they exist.  Then you might do this:
7374 @example
7376         touch $@@
7377 @end example
7379 @noindent
7380 to cause all the source files needed (as dependencies) to be created
7381 automatically.
7383 @findex .DEFAULT
7384 You can instead define commands to be used for targets for which there
7385 are no rules at all, even ones which don't specify commands.  You do
7386 this by writing a rule for the target @code{.DEFAULT}.  Such a rule's
7387 commands are used for all dependencies which do not appear as targets in
7388 any explicit rule, and for which no implicit rule applies.  Naturally,
7389 there is no @code{.DEFAULT} rule unless you write one.
7391 If you use @code{.DEFAULT} with no commands or dependencies:
7393 @example
7394 .DEFAULT:
7395 @end example
7397 @noindent
7398 the commands previously stored for @code{.DEFAULT} are cleared.
7399 Then @code{make} acts as if you had never defined @code{.DEFAULT} at all.
7401 If you do not want a target to get the commands from a match-anything
7402 pattern rule or @code{.DEFAULT}, but you also do not want any commands
7403 to be run for the target, you can give it empty commands (@pxref{Empty
7404 Commands, ,Defining Empty Commands}).@refill
7406 You can use a last-resort rule to override part of another makefile.
7407 @xref{Overriding Makefiles, , Overriding Part of Another Makefile}.
7409 @node Suffix Rules, Search Algorithm, Last Resort, Implicit Rules
7410 @section Old-Fashioned Suffix Rules
7411 @cindex old-fashioned suffix rules
7412 @cindex suffix rule
7414 @dfn{Suffix rules} are the old-fashioned way of defining implicit rules for
7415 @code{make}.  Suffix rules are obsolete because pattern rules are more
7416 general and clearer.  They are supported in GNU @code{make} for
7417 compatibility with old makefiles.  They come in two kinds:
7418 @dfn{double-suffix} and @dfn{single-suffix}.@refill
7420 A double-suffix rule is defined by a pair of suffixes: the target suffix
7421 and the source suffix.  It matches any file whose name ends with the
7422 target suffix.  The corresponding implicit dependency is made by
7423 replacing the target suffix with the source suffix in the file name.  A
7424 two-suffix rule whose target and source suffixes are @samp{.o} and
7425 @samp{.c} is equivalent to the pattern rule @samp{%.o : %.c}.
7427 A single-suffix rule is defined by a single suffix, which is the source
7428 suffix.  It matches any file name, and the corresponding implicit
7429 dependency name is made by appending the source suffix.  A single-suffix
7430 rule whose source suffix is @samp{.c} is equivalent to the pattern rule
7431 @samp{% : %.c}.
7433 Suffix rule definitions are recognized by comparing each rule's target
7434 against a defined list of known suffixes.  When @code{make} sees a rule
7435 whose target is a known suffix, this rule is considered a single-suffix
7436 rule.  When @code{make} sees a rule whose target is two known suffixes
7437 concatenated, this rule is taken as a double-suffix rule.
7439 For example, @samp{.c} and @samp{.o} are both on the default list of
7440 known suffixes.  Therefore, if you define a rule whose target is
7441 @samp{.c.o}, @code{make} takes it to be a double-suffix rule with source
7442 suffix @samp{.c} and target suffix @samp{.o}.  Here is the old-fashioned
7443 way to define the rule for compiling a C source file:@refill
7445 @example
7446 .c.o:
7447         $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
7448 @end example
7450 Suffix rules cannot have any dependencies of their own.  If they have any,
7451 they are treated as normal files with funny names, not as suffix rules.
7452 Thus, the rule:
7454 @example
7455 .c.o: foo.h
7456         $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
7457 @end example
7459 @noindent
7460 tells how to make the file @file{.c.o} from the dependency file
7461 @file{foo.h}, and is not at all like the pattern rule:
7463 @example
7464 %.o: %.c foo.h
7465         $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
7466 @end example
7468 @noindent
7469 which tells how to make @samp{.o} files from @samp{.c} files, and makes all
7470 @samp{.o} files using this pattern rule also depend on @file{foo.h}.
7472 Suffix rules with no commands are also meaningless.  They do not remove
7473 previous rules as do pattern rules with no commands (@pxref{Canceling
7474 Rules, , Canceling Implicit Rules}).  They simply enter the suffix or pair of suffixes concatenated as
7475 a target in the data base.@refill
7477 @findex .SUFFIXES
7478 The known suffixes are simply the names of the dependencies of the special
7479 target @code{.SUFFIXES}.  You can add your own suffixes by writing a rule
7480 for @code{.SUFFIXES} that adds more dependencies, as in:
7482 @example
7483 .SUFFIXES: .hack .win
7484 @end example
7486 @noindent
7487 which adds @samp{.hack} and @samp{.win} to the end of the list of suffixes.
7489 If you wish to eliminate the default known suffixes instead of just adding
7490 to them, write a rule for @code{.SUFFIXES} with no dependencies.  By
7491 special dispensation, this eliminates all existing dependencies of
7492 @code{.SUFFIXES}.  You can then write another rule to add the suffixes you
7493 want.  For example,
7495 @example
7496 @group
7497 .SUFFIXES:            # @r{Delete the default suffixes}
7498 .SUFFIXES: .c .o .h   # @r{Define our suffix list}
7499 @end group
7500 @end example
7502 The @samp{-r} or @samp{--no-builtin-rules} flag causes the default
7503 list of suffixes to be empty.
7505 @vindex SUFFIXES
7506 The variable @code{SUFFIXES} is defined to the default list of suffixes
7507 before @code{make} reads any makefiles.  You can change the list of suffixes
7508 with a rule for the special target @code{.SUFFIXES}, but that does not alter
7509 this variable.
7511 @node Search Algorithm,  , Suffix Rules, Implicit Rules
7512 @section Implicit Rule Search Algorithm
7513 @cindex implicit rule, search algorithm
7514 @cindex search algorithm, implicit rule
7516 Here is the procedure @code{make} uses for searching for an implicit rule
7517 for a target @var{t}.  This procedure is followed for each double-colon
7518 rule with no commands, for each target of ordinary rules none of which have
7519 commands, and for each dependency that is not the target of any rule.  It
7520 is also followed recursively for dependencies that come from implicit
7521 rules, in the search for a chain of rules.
7523 Suffix rules are not mentioned in this algorithm because suffix rules are
7524 converted to equivalent pattern rules once the makefiles have been read in.
7526 For an archive member target of the form
7527 @samp{@var{archive}(@var{member})}, the following algorithm is run
7528 twice, first using the entire target name @var{t}, and second using
7529 @samp{(@var{member})} as the target @var{t} if the first run found no
7530 rule.@refill
7532 @enumerate
7533 @item
7534 Split @var{t} into a directory part, called @var{d}, and the rest,
7535 called @var{n}.  For example, if @var{t} is @samp{src/foo.o}, then
7536 @var{d} is @samp{src/} and @var{n} is @samp{foo.o}.@refill
7538 @item
7539 Make a list of all the pattern rules one of whose targets matches
7540 @var{t} or @var{n}.  If the target pattern contains a slash, it is
7541 matched against @var{t}; otherwise, against @var{n}.
7543 @item
7544 If any rule in that list is @emph{not} a match-anything rule, then
7545 remove all nonterminal match-anything rules from the list.
7547 @item
7548 Remove from the list all rules with no commands.
7550 @item
7551 For each pattern rule in the list:
7553 @enumerate a
7554 @item
7555 Find the stem @var{s}, which is the nonempty part of @var{t} or @var{n}
7556 matched by the @samp{%} in the target pattern.@refill
7558 @item
7559 Compute the dependency names by substituting @var{s} for @samp{%}; if
7560 the target pattern does not contain a slash, append @var{d} to
7561 the front of each dependency name.@refill
7563 @item
7564 Test whether all the dependencies exist or ought to exist.  (If a
7565 file name is mentioned in the makefile as a target or as an explicit
7566 dependency, then we say it ought to exist.)
7568 If all dependencies exist or ought to exist, or there are no dependencies,
7569 then this rule applies.
7570 @end enumerate
7572 @item
7573 If no pattern rule has been found so far, try harder.
7574 For each pattern rule in the list:
7576 @enumerate a
7577 @item
7578 If the rule is terminal, ignore it and go on to the next rule.
7580 @item
7581 Compute the dependency names as before.
7583 @item
7584 Test whether all the dependencies exist or ought to exist.
7586 @item
7587 For each dependency that does not exist, follow this algorithm
7588 recursively to see if the dependency can be made by an implicit
7589 rule.
7591 @item
7592 If all dependencies exist, ought to exist, or can be
7593 made by implicit rules, then this rule applies.
7594 @end enumerate
7596 @item
7597 If no implicit rule applies, the rule for @code{.DEFAULT}, if any,
7598 applies.  In that case, give @var{t} the same commands that
7599 @code{.DEFAULT} has.  Otherwise, there are no commands for @var{t}.
7600 @end enumerate
7602 Once a rule that applies has been found, for each target pattern of the
7603 rule other than the one that matched @var{t} or @var{n}, the @samp{%} in
7604 the pattern is replaced with @var{s} and the resultant file name is stored
7605 until the commands to remake the target file @var{t} are executed.  After
7606 these commands are executed, each of these stored file names are entered
7607 into the data base and marked as having been updated and having the same
7608 update status as the file @var{t}.
7610 When the commands of a pattern rule are executed for @var{t}, the automatic
7611 variables are set corresponding to the target and dependencies.
7612 @xref{Automatic, ,Automatic Variables}.
7614 @node Archives, Features, Implicit Rules, Top
7615 @chapter Using @code{make} to Update Archive Files
7616 @cindex archive
7618 @dfn{Archive files} are files containing named subfiles called
7619 @dfn{members}; they are maintained with the program @code{ar} and their
7620 main use is as subroutine libraries for linking.
7622 @menu
7623 * Archive Members::             Archive members as targets.
7624 * Archive Update::              The implicit rule for archive member targets.
7625 * Archive Pitfalls::            Dangers to watch out for when using archives.
7626 * Archive Suffix Rules::        You can write a special kind of suffix rule
7627                                   for updating archives.
7628 @end menu
7630 @node Archive Members, Archive Update,  , Archives
7631 @section Archive Members as Targets
7632 @cindex archive member targets
7634 An individual member of an archive file can be used as a target or
7635 dependency in @code{make}.  You specify the member named @var{member} in
7636 archive file @var{archive} as follows:
7638 @example
7639 @var{archive}(@var{member})
7640 @end example
7642 @noindent
7643 This construct is available only in targets and dependencies, not in
7644 commands!  Most programs that you might use in commands do not support this
7645 syntax and cannot act directly on archive members.  Only @code{ar} and
7646 other programs specifically designed to operate on archives can do so.
7647 Therefore, valid commands to update an archive member target probably must
7648 use @code{ar}.  For example, this rule says to create a member
7649 @file{hack.o} in archive @file{foolib} by copying the file @file{hack.o}:
7651 @example
7652 foolib(hack.o) : hack.o
7653         ar cr foolib hack.o
7654 @end example
7656 In fact, nearly all archive member targets are updated in just this way
7657 and there is an implicit rule to do it for you.  @strong{Note:} The
7658 @samp{c} flag to @code{ar} is required if the archive file does not
7659 already exist.
7661 To specify several members in the same archive, you can write all the
7662 member names together between the parentheses.  For example:
7664 @example
7665 foolib(hack.o kludge.o)
7666 @end example
7668 @noindent
7669 is equivalent to:
7671 @example
7672 foolib(hack.o) foolib(kludge.o)
7673 @end example
7675 @cindex wildcard, in archive member
7676 You can also use shell-style wildcards in an archive member reference.
7677 @xref{Wildcards, ,Using Wildcard Characters in File Names}.  For
7678 example, @w{@samp{foolib(*.o)}} expands to all existing members of the
7679 @file{foolib} archive whose names end in @samp{.o}; perhaps
7680 @samp{@w{foolib(hack.o)} @w{foolib(kludge.o)}}.
7682 @node Archive Update
7683 @section Implicit Rule for Archive Member Targets
7685 Recall that a target that looks like @file{@var{a}(@var{m})} stands for the
7686 member named @var{m} in the archive file @var{a}.
7688 When @code{make} looks for an implicit rule for such a target, as a special
7689 feature it considers implicit rules that match @file{(@var{m})}, as well as
7690 those that match the actual target @file{@var{a}(@var{m})}.
7692 This causes one special rule whose target is @file{(%)} to match.  This
7693 rule updates the target @file{@var{a}(@var{m})} by copying the file @var{m}
7694 into the archive.  For example, it will update the archive member target
7695 @file{foo.a(bar.o)} by copying the @emph{file} @file{bar.o} into the
7696 archive @file{foo.a} as a @emph{member} named @file{bar.o}.
7698 When this rule is chained with others, the result is very powerful.
7699 Thus, @samp{make "foo.a(bar.o)"} (the quotes are needed to protect the
7700 @samp{(} and @samp{)} from being interpreted specially by the shell) in
7701 the presence of a file @file{bar.c} is enough to cause the following
7702 commands to be run, even without a makefile:
7704 @example
7705 cc -c bar.c -o bar.o
7706 ar r foo.a bar.o
7707 rm -f bar.o
7708 @end example
7710 @noindent
7711 Here @code{make} has envisioned the file @file{bar.o} as an intermediate
7712 file.  @xref{Chained Rules, ,Chains of Implicit Rules}.
7714 Implicit rules such as this one are written using the automatic variable
7715 @samp{$%}.  @xref{Automatic, ,Automatic Variables}.
7717 An archive member name in an archive cannot contain a directory name, but
7718 it may be useful in a makefile to pretend that it does.  If you write an
7719 archive member target @file{foo.a(dir/file.o)}, @code{make} will perform
7720 automatic updating with this command:
7722 @example
7723 ar r foo.a dir/file.o
7724 @end example
7726 @noindent
7727 which has the effect of copying the file @file{dir/file.o} into a member
7728 named @file{file.o}.  In connection with such usage, the automatic variables
7729 @code{%D} and @code{%F} may be useful.
7731 @menu
7732 * Archive Symbols::             How to update archive symbol directories.
7733 @end menu
7735 @node Archive Symbols,  ,  , Archive Update
7736 @subsection Updating Archive Symbol Directories
7737 @cindex @code{__.SYMDEF}
7738 @cindex updating archive symbol directories
7739 @cindex archive symbol directory updating
7740 @cindex symbol directories, updating archive 
7741 @cindex directories, updating archive symbol
7743 An archive file that is used as a library usually contains a special member
7744 named @file{__.SYMDEF} that contains a directory of the external symbol
7745 names defined by all the other members.  After you update any other
7746 members, you need to update @file{__.SYMDEF} so that it will summarize the
7747 other members properly.  This is done by running the @code{ranlib} program:
7749 @example
7750 ranlib @var{archivefile}
7751 @end example
7753 Normally you would put this command in the rule for the archive file,
7754 and make all the members of the archive file dependencies of that rule.
7755 For example,
7757 @example
7758 libfoo.a: libfoo.a(x.o) libfoo.a(y.o) @dots{}
7759         ranlib libfoo.a
7760 @end example
7762 @noindent
7763 The effect of this is to update archive members @file{x.o}, @file{y.o},
7764 etc., and then update the symbol directory member @file{__.SYMDEF} by
7765 running @code{ranlib}.  The rules for updating the members are not shown
7766 here; most likely you can omit them and use the implicit rule which copies
7767 files into the archive, as described in the preceding section.
7769 This is not necessary when using the GNU @code{ar} program, which
7770 updates the @file{__.SYMDEF} member automatically.
7772 @node Archive Pitfalls
7773 @section Dangers When Using Archives
7774 @cindex archive, and parallel execution
7775 @cindex parallel execution, and archive update
7776 @cindex archive, and @code{-j}
7777 @cindex @code{-j}, and archive update
7779 It is important to be careful when using parallel execution (the
7780 @code{-j} switch; @pxref{Parallel, ,Parallel Execution}) and archives.
7781 If multiple @code{ar} commands run at the same time on the same archive
7782 file, they will not know about each other and can corrupt the file.
7784 Possibly a future version of @code{make} will provide a mechanism to
7785 circumvent this problem by serializing all commands that operate on the
7786 same archive file.  But for the time being, you must either write your
7787 makefiles to avoid this problem in some other way, or not use @code{-j}.
7789 @node Archive Suffix Rules, Archive Update, Archive Pitfalls, Archives
7790 @section Suffix Rules for Archive Files
7791 @cindex suffix rule, for archive
7792 @cindex archive, suffix rule for
7793 @cindex library archive, suffix rule for
7794 @cindex @code{.a} (archives)
7796 You can write a special kind of suffix rule for dealing with archive
7797 files.  @xref{Suffix Rules}, for a full explanation of suffix rules.
7798 Archive suffix rules are obsolete in GNU @code{make}, because pattern
7799 rules for archives are a more general mechanism (@pxref{Archive
7800 Update}).  But they are retained for compatibility with other
7801 @code{make}s.
7803 To write a suffix rule for archives, you simply write a suffix rule
7804 using the target suffix @samp{.a} (the usual suffix for archive files).
7805 For example, here is the old-fashioned suffix rule to update a library
7806 archive from C source files:
7808 @example
7809 @group
7810 .c.a:
7811         $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
7812         $(AR) r $@@ $*.o
7813         $(RM) $*.o
7814 @end group
7815 @end example
7817 @noindent
7818 This works just as if you had written the pattern rule:
7820 @example
7821 @group
7822 (%.o): %.c
7823         $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
7824         $(AR) r $@@ $*.o
7825         $(RM) $*.o
7826 @end group
7827 @end example
7829 In fact, this is just what @code{make} does when it sees a suffix rule
7830 with @samp{.a} as the target suffix.  Any double-suffix rule
7831 @w{@samp{.@var{x}.a}} is converted to a pattern rule with the target
7832 pattern @samp{(%.o)} and a dependency pattern of @samp{%.@var{x}}.
7834 Since you might want to use @samp{.a} as the suffix for some other kind
7835 of file, @code{make} also converts archive suffix rules to pattern rules
7836 in the normal way (@pxref{Suffix Rules}).  Thus a double-suffix rule
7837 @w{@samp{.@var{x}.a}} produces two pattern rules: @samp{@w{(%.o):}
7838 @w{%.@var{x}}} and @samp{@w{%.a}: @w{%.@var{x}}}.@refill
7840 @node Features, Missing, Archives, Top
7841 @chapter Features of GNU @code{make}
7842 @cindex features of GNU @code{make}
7843 @cindex portability
7844 @cindex compatibility
7846 Here is a summary of the features of GNU @code{make}, for comparison
7847 with and credit to other versions of @code{make}.  We consider the
7848 features of @code{make} in 4.2 BSD systems as a baseline.  If you are
7849 concerned with writing portable makefiles, you should use only the
7850 features of @code{make} @emph{not} listed here or in @ref{Missing}.
7852 Many features come from the version of @code{make} in System V.
7854 @itemize @bullet
7855 @item
7856 The @code{VPATH} variable and its special meaning. 
7857 @xref{Directory Search, , Searching Directories for Dependencies}.  
7858 This feature exists in System V @code{make}, but is undocumented.
7859 It is documented in 4.3 BSD @code{make} (which says it mimics System V's
7860 @code{VPATH} feature).@refill
7862 @item
7863 Included makefiles.  @xref{Include, ,Including Other Makefiles}.
7864 Allowing multiple files to be included with a single directive is a GNU
7865 extension.
7867 @item
7868 Variables are read from and communicated via the environment.
7869 @xref{Environment, ,Variables from the Environment}.
7871 @item
7872 Options passed through the variable @code{MAKEFLAGS} to recursive
7873 invocations of @code{make}.
7874 @xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
7876 @item
7877 The automatic variable @code{$%} is set to the member name
7878 in an archive reference.  @xref{Automatic, ,Automatic Variables}.
7880 @item
7881 The automatic variables @code{$@@}, @code{$*}, @code{$<}, @code{$%},
7882 and @code{$?} have corresponding forms like @code{$(@@F)} and
7883 @code{$(@@D)}.  We have generalized this to @code{$^} as an obvious
7884 extension.  @xref{Automatic, ,Automatic Variables}.@refill
7886 @item
7887 Substitution variable references.
7888 @xref{Reference, ,Basics of Variable References}.
7890 @item
7891 The command-line options @samp{-b} and @samp{-m}, accepted and
7892 ignored.  In System V @code{make}, these options actually do something.
7894 @item
7895 Execution of recursive commands to run @code{make} via the variable
7896 @code{MAKE} even if @samp{-n}, @samp{-q} or @samp{-t} is specified.
7897 @xref{Recursion, ,Recursive Use of @code{make}}.
7899 @item
7900 Support for suffix @samp{.a} in suffix rules.  @xref{Archive Suffix
7901 Rules}.  This feature is obsolete in GNU @code{make}, because the
7902 general feature of rule chaining (@pxref{Chained Rules, ,Chains of
7903 Implicit Rules}) allows one pattern rule for installing members in an
7904 archive (@pxref{Archive Update}) to be sufficient.
7906 @item
7907 The arrangement of lines and backslash-newline combinations in
7908 commands is retained when the commands are printed, so they appear as
7909 they do in the makefile, except for the stripping of initial
7910 whitespace.
7911 @end itemize
7913 The following features were inspired by various other versions of
7914 @code{make}.  In some cases it is unclear exactly which versions inspired
7915 which others.
7917 @itemize @bullet
7918 @item
7919 Pattern rules using @samp{%}.
7920 This has been implemented in several versions of @code{make}.
7921 We're not sure who invented it first, but it's been spread around a bit.
7922 @xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.@refill
7924 @item
7925 Rule chaining and implicit intermediate files.
7926 This was implemented by Stu Feldman in his version of @code{make}
7927 for AT&T Eighth Edition Research Unix, and later by Andrew Hume of
7928 AT&T Bell Labs in his @code{mk} program (where he terms it
7929 ``transitive closure'').  We do not really know if
7930 we got this from either of them or thought it up ourselves at the
7931 same time.  @xref{Chained Rules, ,Chains of Implicit Rules}.
7933 @item
7934 The automatic variable @code{$^} containing a list of all dependencies
7935 of the current target.  We did not invent this, but we have no idea who did.
7936 @xref{Automatic, ,Automatic Variables}.
7938 @item
7939 The ``what if'' flag (@samp{-W} in GNU @code{make}) was (as far as we know)
7940 invented by Andrew Hume in @code{mk}.  
7941 @xref{Instead of Execution, ,Instead of Executing the Commands}.
7943 @item
7944 The concept of doing several things at once (parallelism) exists in
7945 many incarnations of @code{make} and similar programs, though not in the
7946 System V or BSD implementations.  @xref{Execution, ,Command Execution}.
7948 @item
7949 Modified variable references using pattern substitution come from
7950 SunOS 4.  @xref{Reference, ,Basics of Variable References}.
7951 This functionality was provided in GNU @code{make} by the
7952 @code{patsubst} function before the alternate syntax was implemented
7953 for compatibility with SunOS 4.  It is not altogether clear who
7954 inspired whom, since GNU @code{make} had @code{patsubst} before SunOS
7955 4 was released.@refill
7957 @item
7958 The special significance of @samp{+} characters preceding command lines
7959 (@pxref{Instead of Execution, ,Instead of Executing the Commands}) is
7960 mandated by
7961 @cite{IEEE Standard 1003.2-1992} (POSIX.2).
7963 @item
7964 The @samp{+=} syntax to append to the value of a variable comes from SunOS
7965 4 @code{make}.  @xref{Appending, , Appending More Text to Variables}.
7967 @item
7968 The syntax @w{@samp{@var{archive}(@var{mem1} @var{mem2}@dots{})}} to list
7969 multiple members in a single archive file comes from SunOS 4 @code{make}.
7970 @xref{Archive Members}.
7972 @item
7973 The @code{-include} directive to include makefiles with no error for a
7974 nonexistent file comes from SunOS 4 @code{make}.  (But note that SunOS 4
7975 @code{make} does not allow multiple makefiles to be specified in one
7976 @code{-include} directive.)
7977 @end itemize
7979 The remaining features are inventions new in GNU @code{make}:
7981 @itemize @bullet
7982 @item
7983 Use the @samp{-v} or @samp{--version} option to print version and
7984 copyright information.
7986 @item 
7987 Use the @samp{-h} or @samp{--help} option to summarize the options to
7988 @code{make}.
7990 @item
7991 Simply-expanded variables.  @xref{Flavors, ,The Two Flavors of Variables}.
7993 @item
7994 Pass command-line variable assignments automatically through the
7995 variable @code{MAKE} to recursive @code{make} invocations.
7996 @xref{Recursion, ,Recursive Use of @code{make}}.
7998 @item
7999 Use the @samp{-C} or @samp{--directory} command option to change
8000 directory.  @xref{Options Summary, ,Summary of Options}.
8002 @item
8003 Make verbatim variable definitions with @code{define}.  
8004 @xref{Defining, ,Defining Variables Verbatim}.
8006 @item
8007 Declare phony targets with the special target @code{.PHONY}.
8009 Andrew Hume of AT&T Bell Labs implemented a similar feature with a
8010 different syntax in his @code{mk} program.  This seems to be a case of
8011 parallel discovery.  @xref{Phony Targets, ,Phony Targets}.
8013 @item
8014 Manipulate text by calling functions.  
8015 @xref{Functions, ,Functions for Transforming Text}.
8017 @item
8018 Use the @samp{-o} or @samp{--old-file}
8019 option to pretend a file's modification-time is old.
8020 @xref{Avoiding Compilation, ,Avoiding Recompilation of Some Files}.
8022 @item
8023 Conditional execution.
8025 This feature has been implemented numerous times in various versions
8026 of @code{make}; it seems a natural extension derived from the features
8027 of the C preprocessor and similar macro languages and is not a
8028 revolutionary concept.  @xref{Conditionals, ,Conditional Parts of Makefiles}.
8030 @item
8031 Specify a search path for included makefiles.
8032 @xref{Include, ,Including Other Makefiles}.
8034 @item
8035 Specify extra makefiles to read with an environment variable.
8036 @xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}.
8038 @item
8039 Strip leading sequences of @samp{./} from file names, so that
8040 @file{./@var{file}} and @file{@var{file}} are considered to be the
8041 same file.@refill
8043 @item
8044 Use a special search method for library dependencies written in the
8045 form @samp{-l@var{name}}.  
8046 @xref{Libraries/Search, ,Directory Search for Link Libraries}.
8048 @item
8049 Allow suffixes for suffix rules 
8050 (@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}) to contain any
8051 characters.  In other versions of @code{make}, they must begin with
8052 @samp{.} and not contain any @samp{/} characters.
8054 @item
8055 Keep track of the current level of @code{make} recursion using the
8056 variable @code{MAKELEVEL}.  @xref{Recursion, ,Recursive Use of @code{make}}.
8058 @item
8059 Specify static pattern rules.  @xref{Static Pattern, ,Static Pattern Rules}.
8061 @item
8062 Provide selective @code{vpath} search.  
8063 @xref{Directory Search, ,Searching Directories for Dependencies}.
8065 @item
8066 Provide computed variable references.  
8067 @xref{Reference, ,Basics of Variable References}.
8069 @item
8070 Update makefiles.  @xref{Remaking Makefiles, ,How Makefiles Are Remade}.
8071 System V @code{make} has a very, very limited form of this
8072 functionality in that it will check out SCCS files for makefiles.
8074 @item
8075 Various new built-in implicit rules.  
8076 @xref{Catalogue of Rules, ,Catalogue of Implicit Rules}.
8078 @item
8079 The built-in variable @samp{MAKE_VERSION} gives the version number of
8080 @code{make}.
8081 @end itemize
8083 @node Missing, Makefile Conventions, Features, Top
8084 @chapter Incompatibilities and Missing Features
8085 @cindex incompatibilities 
8086 @cindex missing features
8087 @cindex features, missing
8089 The @code{make} programs in various other systems support a few features
8090 that are not implemented in GNU @code{make}.  The POSIX.2 standard
8091 (@cite{IEEE Standard 1003.2-1992}) which specifies @code{make} does not
8092 require any of these features.@refill
8094 @itemize @bullet
8095 @item
8096 A target of the form @samp{@var{file}((@var{entry}))} stands for a member
8097 of archive file @var{file}.  The member is chosen, not by name, but by
8098 being an object file which defines the linker symbol @var{entry}.@refill
8100 This feature was not put into GNU @code{make} because of the
8101 nonmodularity of putting knowledge into @code{make} of the internal
8102 format of archive file symbol tables.  
8103 @xref{Archive Symbols, ,Updating Archive Symbol Directories}.
8105 @item
8106 Suffixes (used in suffix rules) that end with the character @samp{~}
8107 have a special meaning to System V @code{make}; 
8108 they refer to the SCCS file that corresponds
8109 to the file one would get without the @samp{~}.  For example, the
8110 suffix rule @samp{.c~.o} would make the file @file{@var{n}.o} from
8111 the SCCS file @file{s.@var{n}.c}.  For complete coverage, a whole
8112 series of such suffix rules is required.  
8113 @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
8115 In GNU @code{make}, this entire series of cases is handled by two
8116 pattern rules for extraction from SCCS, in combination with the
8117 general feature of rule chaining.  
8118 @xref{Chained Rules, ,Chains of Implicit Rules}.
8120 @item
8121 In System V @code{make}, the string @samp{$$@@} has the strange meaning
8122 that, in the dependencies of a rule with multiple targets, it stands
8123 for the particular target that is being processed.
8125 This is not defined in GNU @code{make} because @samp{$$} should always
8126 stand for an ordinary @samp{$}.
8128 It is possible to get this functionality through the use of static pattern
8129 rules (@pxref{Static Pattern, ,Static Pattern Rules}).  
8130 The System V @code{make} rule:
8132 @example
8133 $(targets): $$@@.o lib.a
8134 @end example
8136 @noindent
8137 can be replaced with the GNU @code{make} static pattern rule:
8139 @example
8140 $(targets): %: %.o lib.a
8141 @end example
8143 @item
8144 In System V and 4.3 BSD @code{make}, files found by @code{VPATH} search
8145 (@pxref{Directory Search, ,Searching Directories for Dependencies}) have their names changed inside command
8146 strings.  We feel it is much cleaner to always use automatic variables
8147 and thus make this feature obsolete.@refill
8149 @item
8150 In some Unix @code{make}s, the automatic variable @code{$*} appearing in
8151 the dependencies of a rule has the amazingly strange ``feature'' of
8152 expanding to the full name of the @emph{target of that rule}.  We cannot
8153 imagine what went on in the minds of Unix @code{make} developers to do
8154 this; it is utterly inconsistent with the normal definition of @code{$*}.
8155 @vindex * @r{(automatic variable), unsupported bizarre usage}
8157 @item
8158 In some Unix @code{make}s, implicit rule search
8159 (@pxref{Implicit Rules, ,Using Implicit Rules}) is apparently done for
8160 @emph{all} targets, not just those without commands.  This means you can
8161 do:@refill
8163 @example
8164 @group
8165 foo.o:
8166         cc -c foo.c
8167 @end group
8168 @end example
8170 @noindent
8171 and Unix @code{make} will intuit that @file{foo.o} depends on
8172 @file{foo.c}.@refill
8174 We feel that such usage is broken.  The dependency properties of
8175 @code{make} are well-defined (for GNU @code{make}, at least),
8176 and doing such a thing simply does not fit the model.@refill
8178 @item
8179 GNU @code{make} does not include any built-in implicit rules for
8180 compiling or preprocessing EFL programs.  If we hear of anyone who is
8181 using EFL, we will gladly add them.
8183 @item
8184 It appears that in SVR4 @code{make}, a suffix rule can be specified with
8185 no commands, and it is treated as if it had empty commands
8186 (@pxref{Empty Commands}).  For example:
8188 @example
8189 .c.a:
8190 @end example
8192 @noindent
8193 will override the built-in @file{.c.a} suffix rule.
8195 We feel that it is cleaner for a rule without commands to always simply
8196 add to the dependency list for the target.  The above example can be
8197 easily rewritten to get the desired behavior in GNU @code{make}:
8199 @example
8200 .c.a: ;
8201 @end example
8203 @item
8204 Some versions of @code{make} invoke the shell with the @samp{-e} flag,
8205 except under @samp{-k} (@pxref{Testing, ,Testing the Compilation of a
8206 Program}).  The @samp{-e} flag tells the shell to exit as soon as any
8207 program it runs returns a nonzero status.  We feel it is cleaner to
8208 write each shell command line to stand on its own and not require this
8209 special treatment.
8210 @end itemize
8212 @comment The makefile standards are in a separate file that is also
8213 @comment included by standards.texi.
8214 @include make-stds.texi
8216 @node Quick Reference, Complex Makefile, Makefile Conventions, Top
8217 @appendix Quick Reference
8219 This appendix summarizes the directives, text manipulation functions,
8220 and special variables which GNU @code{make} understands.
8221 @xref{Special Targets}, @ref{Catalogue of Rules, ,Catalogue of Implicit Rules},
8222 and @ref{Options Summary, ,Summary of Options},
8223 for other summaries.
8225 Here is a summary of the directives GNU @code{make} recognizes:
8227 @table @code
8228 @item define @var{variable}
8229 @itemx endef
8231 Define a multi-line, recursively-expanded variable.@*
8232 @xref{Sequences}.
8234 @item ifdef @var{variable}
8235 @itemx ifndef @var{variable}
8236 @itemx ifeq (@var{a},@var{b})
8237 @itemx ifeq "@var{a}" "@var{b}"
8238 @itemx ifeq '@var{a}' '@var{b}'
8239 @itemx ifneq (@var{a},@var{b})
8240 @itemx ifneq "@var{a}" "@var{b}"
8241 @itemx ifneq '@var{a}' '@var{b}'
8242 @itemx else
8243 @itemx endif
8245 Conditionally evaluate part of the makefile.@*
8246 @xref{Conditionals}.
8248 @item include @var{file}
8250 Include another makefile.@*
8251 @xref{Include, ,Including Other Makefiles}.
8253 @item override @var{variable} = @var{value}
8254 @itemx override @var{variable} := @var{value}
8255 @itemx override @var{variable} += @var{value}
8256 @itemx override define @var{variable}
8257 @itemx endef
8259 Define a variable, overriding any previous definition, even one from
8260 the command line.@*
8261 @xref{Override Directive, ,The @code{override} Directive}.
8263 @item export
8265 Tell @code{make} to export all variables to child processes by default.@*
8266 @xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
8268 @item export @var{variable}
8269 @itemx export @var{variable} = @var{value}
8270 @itemx export @var{variable} := @var{value}
8271 @itemx export @var{variable} += @var{value}
8272 @itemx unexport @var{variable}
8273 Tell @code{make} whether or not to export a particular variable to child
8274 processes.@*
8275 @xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
8277 @item vpath @var{pattern} @var{path}
8278 Specify a search path for files matching a @samp{%} pattern.@*
8279 @xref{Selective Search, , The @code{vpath} Directive}.
8281 @item vpath @var{pattern}
8282 Remove all search paths previously specified for @var{pattern}.
8284 @item vpath
8285 Remove all search paths previously specified in any @code{vpath}
8286 directive.
8287 @end table
8289 Here is a summary of the text manipulation functions (@pxref{Functions}):
8291 @table @code
8292 @item $(subst @var{from},@var{to},@var{text})
8293 Replace @var{from} with @var{to} in @var{text}.@*
8294 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8296 @item $(patsubst @var{pattern},@var{replacement},@var{text})
8297 Replace words matching @var{pattern} with @var{replacement} in @var{text}.@*
8298 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8300 @item $(strip @var{string})
8301 Remove excess whitespace characters from @var{string}.@*
8302 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8304 @item $(findstring @var{find},@var{text})
8305 Locate @var{find} in @var{text}.@*
8306 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8308 @item $(filter @var{pattern}@dots{},@var{text})
8309 Select words in @var{text} that match one of the @var{pattern} words.@*
8310 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8312 @item $(filter-out @var{pattern}@dots{},@var{text})
8313 Select words in @var{text} that @emph{do not} match any of the @var{pattern} words.@*
8314 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8316 @item $(sort @var{list})
8317 Sort the words in @var{list} lexicographically, removing duplicates.@*
8318 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8320 @item $(dir @var{names}@dots{})
8321 Extract the directory part of each file name.@*
8322 @xref{Filename Functions, ,Functions for File Names}.
8324 @item $(notdir @var{names}@dots{})
8325 Extract the non-directory part of each file name.@*
8326 @xref{Filename Functions, ,Functions for File Names}.
8328 @item $(suffix @var{names}@dots{})
8329 Extract the suffix (the last @samp{.} and following characters) of each file name.@*
8330 @xref{Filename Functions, ,Functions for File Names}.
8332 @item $(basename @var{names}@dots{})
8333 Extract the base name (name without suffix) of each file name.@*
8334 @xref{Filename Functions, ,Functions for File Names}.
8336 @item $(addsuffix @var{suffix},@var{names}@dots{})
8337 Append @var{suffix} to each word in @var{names}.@*
8338 @xref{Filename Functions, ,Functions for File Names}.
8340 @item $(addprefix @var{prefix},@var{names}@dots{})
8341 Prepend @var{prefix} to each word in @var{names}.@*
8342 @xref{Filename Functions, ,Functions for File Names}.
8344 @item $(join @var{list1},@var{list2})
8345 Join two parallel lists of words.@*
8346 @xref{Filename Functions, ,Functions for File Names}.
8348 @item $(word @var{n},@var{text})
8349 Extract the @var{n}th word (one-origin) of @var{text}.@*
8350 @xref{Filename Functions, ,Functions for File Names}.
8352 @item $(words @var{text})
8353 Count the number of words in @var{text}.@*
8354 @xref{Filename Functions, ,Functions for File Names}.
8356 @item $(firstword @var{names}@dots{})
8357 Extract the first word of @var{names}.@*
8358 @xref{Filename Functions, ,Functions for File Names}.
8360 @item $(wildcard @var{pattern}@dots{})
8361 Find file names matching a shell file name pattern (@emph{not} a
8362 @samp{%} pattern).@*
8363 @xref{Wildcard Function, ,The Function @code{wildcard}}.
8365 @item $(shell @var{command})
8367 Execute a shell command and return its output.@*
8368 @xref{Shell Function, , The @code{shell} Function}.
8370 @item $(origin @var{variable})
8372 Return a string describing how the @code{make} variable @var{variable} was
8373 defined.@*
8374 @xref{Origin Function, , The @code{origin} Function}.
8376 @item $(foreach @var{var},@var{words},@var{text})
8378 Evaluate @var{text} with @var{var} bound to each word in @var{words},
8379 and concatenate the results.@*
8380 @xref{Foreach Function, ,The @code{foreach} Function}.
8381 @end table
8383 Here is a summary of the automatic variables.
8384 @xref{Automatic, ,Automatic Variables},
8385 for full information.
8387 @table @code
8388 @item $@@
8389 The file name of the target.
8391 @item $%
8392 The target member name, when the target is an archive member.
8394 @item $<
8395 The name of the first dependency.
8397 @item $?
8398 The names of all the dependencies that are
8399 newer than the target, with spaces between them.
8400 For dependencies which are archive members, only
8401 the member named is used (@pxref{Archives}).
8403 @item $^
8404 The names of all the dependencies, with spaces between them.  For
8405 dependencies which are archive members, only the member named is used
8406 (@pxref{Archives}).
8408 @item $*
8409 The stem with which an implicit rule matches 
8410 (@pxref{Pattern Match, ,How Patterns Match}).
8412 @item $(@@D)
8413 @itemx $(@@F)
8414 The directory part and the file-within-directory part of @code{$@@}.
8416 @item $(*D)
8417 @itemx $(*F)
8418 The directory part and the file-within-directory part of @code{$*}.
8420 @item $(%D)
8421 @itemx $(%F)
8422 The directory part and the file-within-directory part of @code{$%}.
8424 @item $(<D)
8425 @itemx $(<F)
8426 The directory part and the file-within-directory part of @code{$<}.
8428 @item $(^D)
8429 @itemx $(^F)
8430 The directory part and the file-within-directory part of @code{$^}.
8432 @item $(?D)
8433 @itemx $(?F)
8434 The directory part and the file-within-directory part of @code{$?}.
8435 @end table
8437 These variables are used specially by GNU @code{make}:
8439 @table @code
8440 @item MAKEFILES
8442 Makefiles to be read on every invocation of @code{make}.@*
8443 @xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}.
8445 @item VPATH
8447 Directory search path for files not found in the current directory.@*
8448 @xref{General Search, , @code{VPATH} Search Path for All Dependencies}.  
8450 @item SHELL
8452 The name of the system default command interpreter, usually @file{/bin/sh}.
8453 You can set @code{SHELL} in the makefile to change the shell used to run
8454 commands.  @xref{Execution, ,Command Execution}.
8456 @item MAKE
8458 The name with which @code{make} was invoked.
8459 Using this variable in commands has special meaning.
8460 @xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.
8462 @item MAKELEVEL
8464 The number of levels of recursion (sub-@code{make}s).@*
8465 @xref{Variables/Recursion}.
8467 @item MAKEFLAGS
8469 The flags given to @code{make}.  You can set this in the environment or
8470 a makefile to set flags.@*
8471 @xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
8473 @item SUFFIXES
8475 The default list of suffixes before @code{make} reads any makefiles.
8476 @end table
8478 @node Complex Makefile, Concept Index, Quick Reference, Top
8479 @appendix Complex Makefile Example
8481 Here is the makefile for the GNU @code{tar} program.  This is a
8482 moderately complex makefile.
8484 Because it is the first target, the default goal is @samp{all}.  An
8485 interesting feature of this makefile is that @file{testpad.h} is a
8486 source file automatically created by the @code{testpad} program,
8487 itself compiled from @file{testpad.c}.
8489 If you type @samp{make} or @samp{make all}, then @code{make} creates
8490 the @file{tar} executable, the @file{rmt} daemon that provides
8491 remote tape access, and the @file{tar.info} Info file.
8493 If you type @samp{make install}, then @code{make} not only creates
8494 @file{tar}, @file{rmt}, and @file{tar.info}, but also installs
8495 them.
8497 If you type @samp{make clean}, then @code{make} removes the @samp{.o}
8498 files, and the @file{tar}, @file{rmt}, @file{testpad},
8499 @file{testpad.h}, and @file{core} files.
8501 If you type @samp{make distclean}, then @code{make} not only removes
8502 the same files as does @samp{make clean} but also the
8503 @file{TAGS}, @file{Makefile}, and @file{config.status} files.
8504 (Although it is not evident, this makefile (and
8505 @file{config.status}) is generated by the user with the
8506 @code{configure} program, which is provided in the @code{tar}
8507 distribution, but is not shown here.)
8509 If you type @samp{make realclean}, then @code{make} removes the same
8510 files as does @samp{make distclean} and also removes the Info files
8511 generated from @file{tar.texinfo}.
8513 In addition, there are targets @code{shar} and @code{dist} that create
8514 distribution kits.
8516 @example
8517 @group
8518 # Generated automatically from Makefile.in by configure.
8519 # Un*x Makefile for GNU tar program.
8520 # Copyright (C) 1991 Free Software Foundation, Inc.
8521 @end group
8523 @group
8524 # This program is free software; you can redistribute
8525 # it and/or modify it under the terms of the GNU
8526 # General Public License @dots{}
8527 @dots{}
8528 @dots{}
8529 @end group
8531 SHELL = /bin/sh
8533 #### Start of system configuration section. ####
8535 srcdir = .
8537 @group
8538 # If you use gcc, you should either run the
8539 # fixincludes script that comes with it or else use
8540 # gcc with the -traditional option.  Otherwise ioctl
8541 # calls will be compiled incorrectly on some systems.
8542 CC = gcc -O
8543 YACC = bison -y
8544 INSTALL = /usr/local/bin/install -c
8545 INSTALLDATA = /usr/local/bin/install -c -m 644
8546 @end group
8548 # Things you might add to DEFS:
8549 # -DSTDC_HEADERS        If you have ANSI C headers and
8550 #                       libraries.
8551 # -DPOSIX               If you have POSIX.1 headers and 
8552 #                       libraries.
8553 # -DBSD42               If you have sys/dir.h (unless 
8554 #                       you use -DPOSIX), sys/file.h, 
8555 #                       and st_blocks in `struct stat'.
8556 # -DUSG                 If you have System V/ANSI C 
8557 #                       string and memory functions 
8558 #                       and headers, sys/sysmacros.h, 
8559 #                       fcntl.h, getcwd, no valloc, 
8560 #                       and ndir.h (unless 
8561 #                       you use -DDIRENT).
8562 # -DNO_MEMORY_H         If USG or STDC_HEADERS but do not 
8563 #                       include memory.h.
8564 # -DDIRENT              If USG and you have dirent.h 
8565 #                       instead of ndir.h.
8566 # -DSIGTYPE=int         If your signal handlers 
8567 #                       return int, not void.
8568 # -DNO_MTIO             If you lack sys/mtio.h 
8569 #                       (magtape ioctls).
8570 # -DNO_REMOTE           If you do not have a remote shell 
8571 #                       or rexec.
8572 # -DUSE_REXEC           To use rexec for remote tape
8573 #                       operations instead of 
8574 #                       forking rsh or remsh.
8575 # -DVPRINTF_MISSING     If you lack vprintf function 
8576 #                       (but have _doprnt).
8577 # -DDOPRNT_MISSING      If you lack _doprnt function.  
8578 #                       Also need to define 
8579 #                       -DVPRINTF_MISSING.
8580 # -DFTIME_MISSING       If you lack ftime system call.
8581 # -DSTRSTR_MISSING      If you lack strstr function.
8582 # -DVALLOC_MISSING      If you lack valloc function.
8583 # -DMKDIR_MISSING       If you lack mkdir and 
8584 #                       rmdir system calls.
8585 # -DRENAME_MISSING      If you lack rename system call.
8586 # -DFTRUNCATE_MISSING   If you lack ftruncate 
8587 #                       system call.
8588 # -DV7                  On Version 7 Unix (not 
8589 #                       tested in a long time).
8590 # -DEMUL_OPEN3          If you lack a 3-argument version 
8591 #                       of open, and want to emulate it 
8592 #                       with system calls you do have.
8593 # -DNO_OPEN3            If you lack the 3-argument open
8594 #                       and want to disable the tar -k 
8595 #                       option instead of emulating open.
8596 # -DXENIX               If you have sys/inode.h 
8597 #                       and need it 94 to be included.
8599 DEFS =  -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
8600         -DVPRINTF_MISSING -DBSD42
8601 # Set this to rtapelib.o unless you defined NO_REMOTE, 
8602 # in which case make it empty.
8603 RTAPELIB = rtapelib.o
8604 LIBS = 
8605 DEF_AR_FILE = /dev/rmt8
8606 DEFBLOCKING = 20
8608 @group
8609 CDEBUG = -g
8610 CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
8611         -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \
8612         -DDEFBLOCKING=$(DEFBLOCKING)
8613 LDFLAGS = -g
8614 @end group
8616 @group
8617 prefix = /usr/local
8618 # Prefix for each installed program, 
8619 # normally empty or `g'.
8620 binprefix = 
8622 # The directory to install tar in.
8623 bindir = $(prefix)/bin
8625 # The directory to install the info files in.
8626 infodir = $(prefix)/info
8627 @end group
8629 #### End of system configuration section. ####
8631 SRC1 =  tar.c create.c extract.c buffer.c \
8632         getoldopt.c update.c gnu.c mangle.c
8633 SRC2 =  version.c list.c names.c diffarch.c \
8634         port.c wildmat.c getopt.c
8635 SRC3 =  getopt1.c regex.c getdate.y
8636 SRCS =  $(SRC1) $(SRC2) $(SRC3)
8637 OBJ1 =  tar.o create.o extract.o buffer.o \
8638         getoldopt.o update.o gnu.o mangle.o
8639 OBJ2 =  version.o list.o names.o diffarch.o \
8640         port.o wildmat.o getopt.o
8641 OBJ3 =  getopt1.o regex.o getdate.o $(RTAPELIB)
8642 OBJS =  $(OBJ1) $(OBJ2) $(OBJ3)
8643 @group
8644 AUX =   README COPYING ChangeLog Makefile.in  \
8645         makefile.pc configure configure.in \
8646         tar.texinfo tar.info* texinfo.tex \
8647         tar.h port.h open3.h getopt.h regex.h \
8648         rmt.h rmt.c rtapelib.c alloca.c \
8649         msd_dir.h msd_dir.c tcexparg.c \
8650         level-0 level-1 backup-specs testpad.c
8651 @end group
8653 all:    tar rmt tar.info
8655 @group
8656 tar:    $(OBJS)
8657         $(CC) $(LDFLAGS) -o $@@ $(OBJS) $(LIBS)
8658 @end group
8660 @group
8661 rmt:    rmt.c
8662         $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ rmt.c
8663 @end group
8665 @group
8666 tar.info: tar.texinfo
8667         makeinfo tar.texinfo
8668 @end group
8670 @group
8671 install: all
8672         $(INSTALL) tar $(bindir)/$(binprefix)tar
8673         -test ! -f rmt || $(INSTALL) rmt /etc/rmt
8674         $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
8675 @end group
8677 @group
8678 $(OBJS): tar.h port.h testpad.h
8679 regex.o buffer.o tar.o: regex.h
8680 # getdate.y has 8 shift/reduce conflicts.
8681 @end group
8683 @group
8684 testpad.h: testpad
8685         ./testpad
8686 @end group
8688 @group
8689 testpad: testpad.o
8690         $(CC) -o $@@ testpad.o
8691 @end group
8693 @group
8694 TAGS:   $(SRCS)
8695         etags $(SRCS)
8696 @end group
8698 @group
8699 clean:
8700         rm -f *.o tar rmt testpad testpad.h core
8701 @end group
8703 @group
8704 distclean: clean
8705         rm -f TAGS Makefile config.status
8706 @end group
8708 @group
8709 realclean: distclean
8710         rm -f tar.info*
8711 @end group
8713 @group
8714 shar: $(SRCS) $(AUX)
8715         shar $(SRCS) $(AUX) | compress \
8716           > tar-`sed -e '/version_string/!d' \
8717                      -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
8718                      -e q 
8719                      version.c`.shar.Z
8720 @end group
8722 @group
8723 dist: $(SRCS) $(AUX)
8724         echo tar-`sed \
8725              -e '/version_string/!d' \
8726              -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
8727              -e q 
8728              version.c` > .fname
8729         -rm -rf `cat .fname`
8730         mkdir `cat .fname`
8731         ln $(SRCS) $(AUX) `cat .fname`
8732         -rm -rf `cat .fname` .fname
8733         tar chZf `cat .fname`.tar.Z `cat .fname`
8734 @end group
8736 @group
8737 tar.zoo: $(SRCS) $(AUX)
8738         -rm -rf tmp.dir
8739         -mkdir tmp.dir
8740         -rm tar.zoo
8741         for X in $(SRCS) $(AUX) ; do \
8742             echo $$X ; \
8743             sed 's/$$/^M/' $$X \
8744             > tmp.dir/$$X ; done
8745         cd tmp.dir ; zoo aM ../tar.zoo *
8746         -rm -rf tmp.dir
8747 @end group
8748 @end example
8750 @node Concept Index, Name Index, Complex Makefile, Top
8751 @unnumbered Index of Concepts
8753 @printindex cp
8755 @node Name Index,  , Concept Index, Top
8756 @unnumbered Index of Functions, Variables, & Directives
8758 @printindex fn
8760 @summarycontents
8761 @contents
8762 @bye