VirtualBox

source: kBuild/trunk/src/kmk/doc/make.texi@ 2074

Last change on this file since 2074 was 1993, checked in by bird, 16 years ago

Merged in current GNU Make code (CVS from 2008-10-28). Ref #55.

  • Property svn:eol-style set to native
File size: 411.4 KB
Line 
1\input texinfo @c -*- Texinfo -*-
2@c %**start of header
3@setfilename make.info
4
5@include version.texi
6@set EDITION 0.70
7@set RCSID $Id: make.texi,v 1.52 2008/05/18 15:11:40 psmith Exp $
8
9@settitle GNU @code{make}
10@setchapternewpage odd
11@c Combine the variable and function indices:
12@syncodeindex vr fn
13@c Combine the program and concept indices:
14@syncodeindex pg cp
15@c FSF publishers: format makebook.texi instead of using this file directly.
16@c ISBN provided by Lisa M. Opus Goldstein <[email protected]>, 5 May 2004
17@set ISBN 1-882114-83-5
18@c %**end of header
19
20@copying
21This file documents the GNU @code{make} utility, which determines
22automatically which pieces of a large program need to be recompiled,
23and issues the commands to recompile them.
24
25This is Edition @value{EDITION}, last updated @value{UPDATED},
26of @cite{The GNU Make Manual}, for GNU @code{make} version @value{VERSION}.
27
28Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
291996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007
30Free Software Foundation, Inc.
31
32@quotation
33Permission is granted to copy, distribute and/or modify this document
34under the terms of the GNU Free Documentation License, Version 1.2 or
35any later version published by the Free Software Foundation; with no
36Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
37and with the Back-Cover Texts as in (a) below. A copy of the
38license is included in the section entitled ``GNU Free Documentation
39License.''
40
41(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
42this GNU Manual. Buying copies from GNU Press supports the FSF in
43developing GNU and promoting software freedom.''
44@end quotation
45@end copying
46
47@c finalout
48
49@c ISPELL CHECK: done, 10 June 1993 --roland
50@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
51
52
53@dircategory Software development
54@direntry
55* Make: (make). Remake files automatically.
56@end direntry
57
58@iftex
59@shorttitlepage GNU Make
60@end iftex
61@titlepage
62@title GNU Make
63@subtitle A Program for Directing Recompilation
64@subtitle GNU @code{make} Version @value{VERSION}
65@subtitle @value{UPDATED-MONTH}
66@author Richard M. Stallman, Roland McGrath, Paul D. Smith
67@page
68@vskip 0pt plus 1filll
69@insertcopying
70@sp 2
71Published by the Free Software Foundation @*
7251 Franklin St. -- Fifth Floor @*
73Boston, MA 02110-1301 USA @*
74ISBN @value{ISBN} @*
75@sp 2
76Cover art by Etienne Suvasa.
77@end titlepage
78
79@summarycontents
80@contents
81
82@ifnottex
83@node Top, Overview, (dir), (dir)
84@top GNU @code{make}
85
86@insertcopying
87@end ifnottex
88
89@menu
90* Overview:: Overview of @code{make}.
91* Introduction:: An introduction to @code{make}.
92* Makefiles:: Makefiles tell @code{make} what to do.
93* Rules:: Rules describe when a file must be remade.
94* Recipes:: Recipes say how to remake a file.
95* Using Variables:: You can use variables to avoid repetition.
96* Conditionals:: Use or ignore parts of the makefile based
97 on the values of variables.
98* Functions:: Many powerful ways to manipulate text.
99* Invoking make: Running. How to invoke @code{make} on the command line.
100* Implicit Rules:: Use implicit rules to treat many files alike,
101 based on their file names.
102* Archives:: How @code{make} can update library archives.
103* Features:: Features GNU @code{make} has over other @code{make}s.
104* Missing:: What GNU @code{make} lacks from other @code{make}s.
105* Makefile Conventions:: Conventions for writing makefiles for
106 GNU programs.
107* Quick Reference:: A quick reference for experienced users.
108* Error Messages:: A list of common errors generated by @code{make}.
109* Complex Makefile:: A real example of a straightforward,
110 but nontrivial, makefile.
111
112* GNU Free Documentation License:: License for copying this manual
113* Concept Index:: Index of Concepts
114* Name Index:: Index of Functions, Variables, & Directives
115
116@detailmenu
117 --- The Detailed Node Listing ---
118
119Overview of @code{make}
120
121* Preparing:: Preparing and running make
122* Reading:: On reading this text
123* Bugs:: Problems and bugs
124
125An Introduction to Makefiles
126
127* Rule Introduction:: What a rule looks like.
128* Simple Makefile:: A simple makefile
129* How Make Works:: How @code{make} processes this makefile
130* Variables Simplify:: Variables make makefiles simpler
131* make Deduces:: Letting @code{make} deduce the recipe
132* Combine By Prerequisite:: Another style of makefile
133* Cleanup:: Rules for cleaning the directory
134
135Writing Makefiles
136
137* Makefile Contents:: What makefiles contain.
138* Makefile Names:: How to name your makefile.
139* Include:: How one makefile can use another makefile.
140* MAKEFILES Variable:: The environment can specify extra makefiles.
141* Remaking Makefiles:: How makefiles get remade.
142* Overriding Makefiles:: How to override part of one makefile
143 with another makefile.
144* Reading Makefiles:: How makefiles are parsed.
145* Secondary Expansion:: How and when secondary expansion is performed.
146
147Writing Rules
148
149* Rule Example:: An example explained.
150* Rule Syntax:: General syntax explained.
151* Prerequisite Types:: There are two types of prerequisites.
152* Wildcards:: Using wildcard characters such as `*'.
153* Directory Search:: Searching other directories for source files.
154* Phony Targets:: Using a target that is not a real file's name.
155* Force Targets:: You can use a target without a recipe
156 or prerequisites to mark other targets
157 as phony.
158* Empty Targets:: When only the date matters and the
159 files are empty.
160* Special Targets:: Targets with special built-in meanings.
161* Multiple Targets:: When to make use of several targets in a rule.
162* Multiple Rules:: How to use several rules with the same target.
163* Static Pattern:: Static pattern rules apply to multiple targets
164 and can vary the prerequisites according to
165 the target name.
166* Double-Colon:: How to use a special kind of rule to allow
167 several independent rules for one target.
168* Automatic Prerequisites:: How to automatically generate rules giving
169 prerequisites from source files themselves.
170
171Using Wildcard Characters in File Names
172
173* Wildcard Examples:: Several examples
174* Wildcard Pitfall:: Problems to avoid.
175* Wildcard Function:: How to cause wildcard expansion where
176 it does not normally take place.
177
178Searching Directories for Prerequisites
179
180* General Search:: Specifying a search path that applies
181 to every prerequisite.
182* Selective Search:: Specifying a search path
183 for a specified class of names.
184* Search Algorithm:: When and how search paths are applied.
185* Recipes/Search:: How to write recipes that work together
186 with search paths.
187* Implicit/Search:: How search paths affect implicit rules.
188* Libraries/Search:: Directory search for link libraries.
189
190Static Pattern Rules
191
192* Static Usage:: The syntax of static pattern rules.
193* Static versus Implicit:: When are they better than implicit rules?
194
195Writing Recipes in Rules
196
197* Recipe Syntax:: Recipe syntax features and pitfalls.
198* Echoing:: How to control when recipes are echoed.
199* Execution:: How recipes are executed.
200* Parallel:: How recipes can be executed in parallel.
201* Errors:: What happens after a recipe execution error.
202* Interrupts:: What happens when a recipe is interrupted.
203* Recursion:: Invoking @code{make} from makefiles.
204* Sequences:: Defining canned recipes.
205* Empty Recipes:: Defining useful, do-nothing recipes.
206
207Recipe Syntax
208
209* Splitting Lines:: Breaking long recipe lines for readability.
210* Variables in Recipes:: Using @code{make} variables in recipes.
211
212Recipe Execution
213
214* Choosing the Shell:: How @code{make} chooses the shell used
215 to run recipes.
216
217Recursive Use of @code{make}
218
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.
224
225How to Use Variables
226
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.
239* Target-specific:: Variable values can be defined on a per-target
240 basis.
241* Pattern-specific:: Target-specific variable values can be applied
242 to a group of targets that match a pattern.
243* Special Variables:: Variables with special meaning or behavior.
244
245Advanced Features for Reference to Variables
246
247* Substitution Refs:: Referencing a variable with
248 substitutions on the value.
249* Computed Names:: Computing the name of the variable to refer to.
250
251Conditional Parts of Makefiles
252
253* Conditional Example:: Example of a conditional
254* Conditional Syntax:: The syntax of conditionals.
255* Testing Flags:: Conditionals that test flags.
256
257Functions for Transforming Text
258
259* Syntax of Functions:: How to write a function call.
260* Text Functions:: General-purpose text manipulation functions.
261* File Name Functions:: Functions for manipulating file names.
262* Conditional Functions:: Functions that implement conditions.
263* Foreach Function:: Repeat some text with controlled variation.
264* Call Function:: Expand a user-defined function.
265* Value Function:: Return the un-expanded value of a variable.
266* Eval Function:: Evaluate the arguments as makefile syntax.
267* Origin Function:: Find where a variable got its value.
268* Flavor Function:: Find out the flavor of a variable.
269* Shell Function:: Substitute the output of a shell command.
270* Make Control Functions:: Functions that control how make runs.
271
272How to Run @code{make}
273
274* Makefile Arguments:: How to specify which makefile to use.
275* Goals:: How to use goal arguments to specify which
276 parts of the makefile to use.
277* Instead of Execution:: How to use mode flags to specify what
278 kind of thing to do with the recipes
279 in the makefile other than simply
280 execute them.
281* Avoiding Compilation:: How to avoid recompiling certain files.
282* Overriding:: How to override a variable to specify
283 an alternate compiler and other things.
284* Testing:: How to proceed past some errors, to
285 test compilation.
286* Options Summary:: Summary of Options
287
288Using Implicit Rules
289
290* Using Implicit:: How to use an existing implicit rule
291 to get the recipe for updating a file.
292* Catalogue of Rules:: A list of built-in implicit rules.
293* Implicit Variables:: How to change what predefined rules do.
294* Chained Rules:: How to use a chain of implicit rules.
295* Pattern Rules:: How to define new implicit rules.
296* Last Resort:: How to define a recipe for rules which
297 cannot find any.
298* Suffix Rules:: The old-fashioned style of implicit rule.
299* Implicit Rule Search:: The precise algorithm for applying
300 implicit rules.
301
302Defining and Redefining Pattern Rules
303
304* Pattern Intro:: An introduction to pattern rules.
305* Pattern Examples:: Examples of pattern rules.
306* Automatic Variables:: How to use automatic variables in the
307 recipe of implicit rules.
308* Pattern Match:: How patterns match.
309* Match-Anything Rules:: Precautions you should take prior to
310 defining rules that can match any
311 target file whatever.
312* Canceling Rules:: How to override or cancel built-in rules.
313
314Using @code{make} to Update Archive Files
315
316* Archive Members:: Archive members as targets.
317* Archive Update:: The implicit rule for archive member targets.
318* Archive Pitfalls:: Dangers to watch out for when using archives.
319* Archive Suffix Rules:: You can write a special kind of suffix rule
320 for updating archives.
321
322Implicit Rule for Archive Member Targets
323
324* Archive Symbols:: How to update archive symbol directories.
325
326@end detailmenu
327@end menu
328
329@node Overview, Introduction, Top, Top
330@comment node-name, next, previous, up
331@chapter Overview of @code{make}
332
333The @code{make} utility automatically determines which pieces of a large
334program need to be recompiled, and issues commands to recompile them.
335This manual describes GNU @code{make}, which was implemented by Richard
336Stallman and Roland McGrath. Development since Version 3.76 has been
337handled by Paul D. Smith.
338
339GNU @code{make} conforms to section 6.2 of @cite{IEEE Standard
3401003.2-1992} (POSIX.2).
341@cindex POSIX
342@cindex IEEE Standard 1003.2
343@cindex standards conformance
344
345Our examples show C programs, since they are most common, but you can use
346@code{make} with any programming language whose compiler can be run with a
347shell command. Indeed, @code{make} is not limited to programs. You can
348use it to describe any task where some files must be updated automatically
349from others whenever the others change.
350
351@menu
352* Preparing:: Preparing and Running Make
353* Reading:: On Reading this Text
354* Bugs:: Problems and Bugs
355@end menu
356
357@node Preparing, Reading, Overview, Overview
358@ifnottex
359@heading Preparing and Running Make
360@end ifnottex
361
362To prepare to use @code{make}, you must write a file called
363the @dfn{makefile} that describes the relationships among files
364in your program and provides commands for updating each file.
365In a program, typically, the executable file is updated from object
366files, which are in turn made by compiling source files.@refill
367
368Once a suitable makefile exists, each time you change some source files,
369this simple shell command:
370
371@example
372make
373@end example
374
375@noindent
376suffices to perform all necessary recompilations. The @code{make} program
377uses the makefile data base and the last-modification times of the files to
378decide which of the files need to be updated. For each of those files, it
379issues the recipes recorded in the data base.
380
381You can provide command line arguments to @code{make} to control which
382files should be recompiled, or how. @xref{Running, ,How to Run
383@code{make}}.
384
385@node Reading, Bugs, Preparing, Overview
386@section How to Read This Manual
387
388If you are new to @code{make}, or are looking for a general
389introduction, read the first few sections of each chapter, skipping the
390later sections. In each chapter, the first few sections contain
391introductory or general information and the later sections contain
392specialized or technical information.
393@ifnottex
394The exception is the second chapter, @ref{Introduction, ,An
395Introduction to Makefiles}, all of which is introductory.
396@end ifnottex
397@iftex
398The exception is @ref{Introduction, ,An Introduction to Makefiles},
399all of which is introductory.
400@end iftex
401
402If you are familiar with other @code{make} programs, see @ref{Features,
403,Features of GNU @code{make}}, which lists the enhancements GNU
404@code{make} has, and @ref{Missing, ,Incompatibilities and Missing
405Features}, which explains the few things GNU @code{make} lacks that
406others have.
407
408For a quick summary, see @ref{Options Summary}, @ref{Quick Reference},
409and @ref{Special Targets}.
410
411@node Bugs, , Reading, Overview
412@section Problems and Bugs
413@cindex reporting bugs
414@cindex bugs, reporting
415@cindex problems and bugs, reporting
416
417If you have problems with GNU @code{make} or think you've found a bug,
418please report it to the developers; we cannot promise to do anything but
419we might well want to fix it.
420
421Before reporting a bug, make sure you've actually found a real bug.
422Carefully reread the documentation and see if it really says you can do
423what you're trying to do. If it's not clear whether you should be able
424to do something or not, report that too; it's a bug in the
425documentation!
426
427Before reporting a bug or trying to fix it yourself, try to isolate it
428to the smallest possible makefile that reproduces the problem. Then
429send us the makefile and the exact results @code{make} gave you,
430including any error or warning messages. Please don't paraphrase
431these messages: it's best to cut and paste them into your report.
432When generating this small makefile, be sure to not use any non-free
433or unusual tools in your recipes: you can almost always emulate what
434such a tool would do with simple shell commands. Finally, be sure to
435explain what you expected to occur; this will help us decide whether
436the problem was really in the documentation.
437
438Once you have a precise problem you can report it in one of two ways.
439Either send electronic mail to:
440
441@example
442 bug-make@@gnu.org
443@end example
444
445@noindent
446or use our Web-based project management tool, at:
447
448@example
449 http://savannah.gnu.org/projects/make/
450@end example
451
452@noindent
453In addition to the information above, please be careful to include the
454version number of @code{make} you are using. You can get this
455information with the command @samp{make --version}. Be sure also to
456include the type of machine and operating system you are using. One
457way to obtain this information is by looking at the final lines of
458output from the command @samp{make --help}.
459
460@node Introduction, Makefiles, Overview, Top
461@comment node-name, next, previous, up
462@chapter An Introduction to Makefiles
463
464You need a file called a @dfn{makefile} to tell @code{make} what to do.
465Most often, the makefile tells @code{make} how to compile and link a
466program.
467@cindex makefile
468
469In this chapter, we will discuss a simple makefile that describes how to
470compile and link a text editor which consists of eight C source files
471and three header files. The makefile can also tell @code{make} how to
472run miscellaneous commands when explicitly asked (for example, to remove
473certain files as a clean-up operation). To see a more complex example
474of a makefile, see @ref{Complex Makefile}.
475
476When @code{make} recompiles the editor, each changed C source file
477must be recompiled. If a header file has changed, each C source file
478that includes the header file must be recompiled to be safe. Each
479compilation produces an object file corresponding to the source file.
480Finally, if any source file has been recompiled, all the object files,
481whether newly made or saved from previous compilations, must be linked
482together to produce the new executable editor.
483@cindex recompilation
484@cindex editor
485
486@menu
487* Rule Introduction:: What a rule looks like.
488* Simple Makefile:: A Simple Makefile
489* How Make Works:: How @code{make} Processes This Makefile
490* Variables Simplify:: Variables Make Makefiles Simpler
491* make Deduces:: Letting @code{make} Deduce the Recipes
492* Combine By Prerequisite:: Another Style of Makefile
493* Cleanup:: Rules for Cleaning the Directory
494@end menu
495
496@node Rule Introduction, Simple Makefile, Introduction, Introduction
497@comment node-name, next, previous, up
498@section What a Rule Looks Like
499@cindex rule, introduction to
500@cindex makefile rule parts
501@cindex parts of makefile rule
502
503A simple makefile consists of ``rules'' with the following shape:
504
505@cindex targets, introduction to
506@cindex prerequisites, introduction to
507@cindex recipes, introduction to
508@example
509@group
510@var{target} @dots{} : @var{prerequisites} @dots{}
511 @var{recipe}
512 @dots{}
513 @dots{}
514@end group
515@end example
516
517A @dfn{target} is usually the name of a file that is generated by a
518program; examples of targets are executable or object files. A target
519can also be the name of an action to carry out, such as @samp{clean}
520(@pxref{Phony Targets}).
521
522A @dfn{prerequisite} is a file that is used as input to create the
523target. A target often depends on several files.
524
525@cindex tabs in rules
526A @dfn{recipe} is an action that @code{make} carries out.
527A recipe may have more than one command, each on its own line.
528@strong{Please note:} you need to put a tab character at the beginning of
529every command line! This is an obscurity that catches the unwary. If
530you prefer to prefix your recipes with a character other than tab,
531you can set the @code{.CMDPREFIX} variable to an alternate character
532(@pxref{Special Variables}).
533
534Usually a recipe is in a rule with prerequisites and serves to create a
535target file if any of the prerequisites change. However, the rule that
536specifies a recipe for the target need not have prerequisites. For
537example, the rule containing the delete command associated with the
538target @samp{clean} does not have prerequisites.
539
540A @dfn{rule}, then, explains how and when to remake certain files
541which are the targets of the particular rule. @code{make} carries out
542the recipe on the prerequisites to create or update the target. A
543rule can also explain how and when to carry out an action.
544@xref{Rules, , Writing Rules}.
545
546A makefile may contain other text besides rules, but a simple makefile
547need only contain rules. Rules may look somewhat more complicated
548than shown in this template, but all fit the pattern more or less.
549
550@node Simple Makefile, How Make Works, Rule Introduction, Introduction
551@section A Simple Makefile
552@cindex simple makefile
553@cindex makefile, simple
554
555Here is a straightforward makefile that describes the way an
556executable file called @code{edit} depends on eight object files
557which, in turn, depend on eight C source and three header files.
558
559In this example, all the C files include @file{defs.h}, but only those
560defining editing commands include @file{command.h}, and only low
561level files that change the editor buffer include @file{buffer.h}.
562
563@example
564@group
565edit : main.o kbd.o command.o display.o \
566 insert.o search.o files.o utils.o
567 cc -o edit main.o kbd.o command.o display.o \
568 insert.o search.o files.o utils.o
569
570main.o : main.c defs.h
571 cc -c main.c
572kbd.o : kbd.c defs.h command.h
573 cc -c kbd.c
574command.o : command.c defs.h command.h
575 cc -c command.c
576display.o : display.c defs.h buffer.h
577 cc -c display.c
578insert.o : insert.c defs.h buffer.h
579 cc -c insert.c
580search.o : search.c defs.h buffer.h
581 cc -c search.c
582files.o : files.c defs.h buffer.h command.h
583 cc -c files.c
584utils.o : utils.c defs.h
585 cc -c utils.c
586clean :
587 rm edit main.o kbd.o command.o display.o \
588 insert.o search.o files.o utils.o
589@end group
590@end example
591
592@noindent
593We split each long line into two lines using backslash-newline; this is
594like using one long line, but is easier to read.
595@cindex continuation lines
596@cindex @code{\} (backslash), for continuation lines
597@cindex backslash (@code{\}), for continuation lines
598@cindex quoting newline, in makefile
599@cindex newline, quoting, in makefile
600
601To use this makefile to create the executable file called @file{edit},
602type:
603
604@example
605make
606@end example
607
608To use this makefile to delete the executable file and all the object
609files from the directory, type:
610
611@example
612make clean
613@end example
614
615In the example makefile, the targets include the executable file
616@samp{edit}, and the object files @samp{main.o} and @samp{kbd.o}. The
617prerequisites are files such as @samp{main.c} and @samp{defs.h}.
618In fact, each @samp{.o} file is both a target and a prerequisite.
619Recipes include @w{@samp{cc -c main.c}} and @w{@samp{cc -c kbd.c}}.
620
621When a target is a file, it needs to be recompiled or relinked if any
622of its prerequisites change. In addition, any prerequisites that are
623themselves automatically generated should be updated first. In this
624example, @file{edit} depends on each of the eight object files; the
625object file @file{main.o} depends on the source file @file{main.c} and
626on the header file @file{defs.h}.
627
628A recipe may follow each line that contains a target and
629prerequisites. These recipes say how to update the target file. A
630tab character (or whatever character is specified by the
631@code{.CMDPREFIX} variable; @pxref{Special Variables}) must come at
632the beginning of every line in the recipe to distinguish recipes from
633other lines in the makefile. (Bear in mind that @code{make} does not
634know anything about how the recipes work. It is up to you to supply
635recipes that will update the target file properly. All @code{make}
636does is execute the commands in the recipe you have specified when the
637target file needs to be updated.)@refill
638@cindex recipe
639
640The target @samp{clean} is not a file, but merely the name of an
641action. Since you normally do not want to carry out the actions in
642this rule, @samp{clean} is not a prerequisite of any other rule.
643Consequently, @code{make} never does anything with it unless you tell
644it specifically. Note that this rule not only is not a prerequisite,
645it also does not have any prerequisites, so the only purpose of the
646rule is to run the specified recipe. Targets that do not refer to
647files but are just actions are called @dfn{phony targets}.
648@xref{Phony Targets}, for information about this kind of target.
649@xref{Errors, , Errors in Recipes}, to see how to cause @code{make}
650to ignore errors from @code{rm} or any other command.
651@cindex @code{clean} target
652@cindex @code{rm} (shell command)
653
654@node How Make Works, Variables Simplify, Simple Makefile, Introduction
655@comment node-name, next, previous, up
656@section How @code{make} Processes a Makefile
657@cindex processing a makefile
658@cindex makefile, how @code{make} processes
659
660By default, @code{make} starts with the first target (not targets whose
661names start with @samp{.}). This is called the @dfn{default goal}.
662(@dfn{Goals} are the targets that @code{make} strives ultimately to
663update. You can override this behavior using the command line
664(@pxref{Goals, , Arguments to Specify the Goals}) or with the
665@code{.DEFAULT_GOAL} special variable (@pxref{Special Variables, ,
666Other Special Variables}).
667@cindex default goal
668@cindex goal, default
669@cindex goal
670
671In the simple example of the previous section, the default goal is to
672update the executable program @file{edit}; therefore, we put that rule
673first.
674
675Thus, when you give the command:
676
677@example
678make
679@end example
680
681@noindent
682@code{make} reads the makefile in the current directory and begins by
683processing the first rule. In the example, this rule is for relinking
684@file{edit}; but before @code{make} can fully process this rule, it
685must process the rules for the files that @file{edit} depends on,
686which in this case are the object files. Each of these files is
687processed according to its own rule. These rules say to update each
688@samp{.o} file by compiling its source file. The recompilation must
689be done if the source file, or any of the header files named as
690prerequisites, is more recent than the object file, or if the object
691file does not exist.
692
693The other rules are processed because their targets appear as
694prerequisites of the goal. If some other rule is not depended on by the
695goal (or anything it depends on, etc.), that rule is not processed,
696unless you tell @code{make} to do so (with a command such as
697@w{@code{make clean}}).
698
699Before recompiling an object file, @code{make} considers updating its
700prerequisites, the source file and header files. This makefile does not
701specify anything to be done for them---the @samp{.c} and @samp{.h} files
702are not the targets of any rules---so @code{make} does nothing for these
703files. But @code{make} would update automatically generated C programs,
704such as those made by Bison or Yacc, by their own rules at this time.
705
706After recompiling whichever object files need it, @code{make} decides
707whether to relink @file{edit}. This must be done if the file
708@file{edit} does not exist, or if any of the object files are newer than
709it. If an object file was just recompiled, it is now newer than
710@file{edit}, so @file{edit} is relinked.
711@cindex relinking
712
713Thus, if we change the file @file{insert.c} and run @code{make},
714@code{make} will compile that file to update @file{insert.o}, and then
715link @file{edit}. If we change the file @file{command.h} and run
716@code{make}, @code{make} will recompile the object files @file{kbd.o},
717@file{command.o} and @file{files.o} and then link the file @file{edit}.
718
719@node Variables Simplify, make Deduces, How Make Works, Introduction
720@section Variables Make Makefiles Simpler
721@cindex variables
722@cindex simplifying with variables
723
724In our example, we had to list all the object files twice in the rule for
725@file{edit} (repeated here):
726
727@example
728@group
729edit : main.o kbd.o command.o display.o \
730 insert.o search.o files.o utils.o
731 cc -o edit main.o kbd.o command.o display.o \
732 insert.o search.o files.o utils.o
733@end group
734@end example
735
736@cindex @code{objects}
737Such duplication is error-prone; if a new object file is added to the
738system, we might add it to one list and forget the other. We can eliminate
739the risk and simplify the makefile by using a variable. @dfn{Variables}
740allow a text string to be defined once and substituted in multiple places
741later (@pxref{Using Variables, ,How to Use Variables}).
742
743@cindex @code{OBJECTS}
744@cindex @code{objs}
745@cindex @code{OBJS}
746@cindex @code{obj}
747@cindex @code{OBJ}
748It is standard practice for every makefile to have a variable named
749@code{objects}, @code{OBJECTS}, @code{objs}, @code{OBJS}, @code{obj},
750or @code{OBJ} which is a list of all object file names. We would
751define such a variable @code{objects} with a line like this in the
752makefile:@refill
753
754@example
755@group
756objects = main.o kbd.o command.o display.o \
757 insert.o search.o files.o utils.o
758@end group
759@end example
760
761@noindent
762Then, each place we want to put a list of the object file names, we can
763substitute the variable's value by writing @samp{$(objects)}
764(@pxref{Using Variables, ,How to Use Variables}).
765
766Here is how the complete simple makefile looks when you use a variable
767for the object files:
768
769@example
770@group
771objects = main.o kbd.o command.o display.o \
772 insert.o search.o files.o utils.o
773
774edit : $(objects)
775 cc -o edit $(objects)
776main.o : main.c defs.h
777 cc -c main.c
778kbd.o : kbd.c defs.h command.h
779 cc -c kbd.c
780command.o : command.c defs.h command.h
781 cc -c command.c
782display.o : display.c defs.h buffer.h
783 cc -c display.c
784insert.o : insert.c defs.h buffer.h
785 cc -c insert.c
786search.o : search.c defs.h buffer.h
787 cc -c search.c
788files.o : files.c defs.h buffer.h command.h
789 cc -c files.c
790utils.o : utils.c defs.h
791 cc -c utils.c
792clean :
793 rm edit $(objects)
794@end group
795@end example
796
797@node make Deduces, Combine By Prerequisite, Variables Simplify, Introduction
798@section Letting @code{make} Deduce the Recipes
799@cindex deducing recipes (implicit rules)
800@cindex implicit rule, introduction to
801@cindex rule, implicit, introduction to
802
803It is not necessary to spell out the recipes for compiling the individual
804C source files, because @code{make} can figure them out: it has an
805@dfn{implicit rule} for updating a @samp{.o} file from a correspondingly
806named @samp{.c} file using a @samp{cc -c} command. For example, it will
807use the recipe @samp{cc -c main.c -o main.o} to compile @file{main.c} into
808@file{main.o}. We can therefore omit the recipes from the rules for the
809object files. @xref{Implicit Rules, ,Using Implicit Rules}.@refill
810
811When a @samp{.c} file is used automatically in this way, it is also
812automatically added to the list of prerequisites. We can therefore omit
813the @samp{.c} files from the prerequisites, provided we omit the recipe.
814
815Here is the entire example, with both of these changes, and a variable
816@code{objects} as suggested above:
817
818@example
819@group
820objects = main.o kbd.o command.o display.o \
821 insert.o search.o files.o utils.o
822
823edit : $(objects)
824 cc -o edit $(objects)
825
826main.o : defs.h
827kbd.o : defs.h command.h
828command.o : defs.h command.h
829display.o : defs.h buffer.h
830insert.o : defs.h buffer.h
831search.o : defs.h buffer.h
832files.o : defs.h buffer.h command.h
833utils.o : defs.h
834
835.PHONY : clean
836clean :
837 rm edit $(objects)
838@end group
839@end example
840
841@noindent
842This is how we would write the makefile in actual practice. (The
843complications associated with @samp{clean} are described elsewhere.
844See @ref{Phony Targets}, and @ref{Errors, ,Errors in Recipes}.)
845
846Because implicit rules are so convenient, they are important. You
847will see them used frequently.@refill
848
849@node Combine By Prerequisite, Cleanup, make Deduces, Introduction
850@section Another Style of Makefile
851@cindex combining rules by prerequisite
852
853When the objects of a makefile are created only by implicit rules, an
854alternative style of makefile is possible. In this style of makefile,
855you group entries by their prerequisites instead of by their targets.
856Here is what one looks like:
857
858@example
859@group
860objects = main.o kbd.o command.o display.o \
861 insert.o search.o files.o utils.o
862
863edit : $(objects)
864 cc -o edit $(objects)
865
866$(objects) : defs.h
867kbd.o command.o files.o : command.h
868display.o insert.o search.o files.o : buffer.h
869@end group
870@end example
871
872@noindent
873Here @file{defs.h} is given as a prerequisite of all the object files;
874@file{command.h} and @file{buffer.h} are prerequisites of the specific
875object files listed for them.
876
877Whether this is better is a matter of taste: it is more compact, but some
878people dislike it because they find it clearer to put all the information
879about each target in one place.
880
881@node Cleanup, , Combine By Prerequisite, Introduction
882@section Rules for Cleaning the Directory
883@cindex cleaning up
884@cindex removing, to clean up
885
886Compiling a program is not the only thing you might want to write rules
887for. Makefiles commonly tell how to do a few other things besides
888compiling a program: for example, how to delete all the object files
889and executables so that the directory is @samp{clean}.
890
891@cindex @code{clean} target
892Here is how we
893could write a @code{make} rule for cleaning our example editor:
894
895@example
896@group
897clean:
898 rm edit $(objects)
899@end group
900@end example
901
902In practice, we might want to write the rule in a somewhat more
903complicated manner to handle unanticipated situations. We would do this:
904
905@example
906@group
907.PHONY : clean
908clean :
909 -rm edit $(objects)
910@end group
911@end example
912
913@noindent
914This prevents @code{make} from getting confused by an actual file
915called @file{clean} and causes it to continue in spite of errors from
916@code{rm}. (See @ref{Phony Targets}, and @ref{Errors, ,Errors in
917Recipes}.)
918
919@noindent
920A rule such as this should not be placed at the beginning of the
921makefile, because we do not want it to run by default! Thus, in the
922example makefile, we want the rule for @code{edit}, which recompiles
923the editor, to remain the default goal.
924
925Since @code{clean} is not a prerequisite of @code{edit}, this rule will not
926run at all if we give the command @samp{make} with no arguments. In
927order to make the rule run, we have to type @samp{make clean}.
928@xref{Running, ,How to Run @code{make}}.
929
930@node Makefiles, Rules, Introduction, Top
931@chapter Writing Makefiles
932
933@cindex makefile, how to write
934The information that tells @code{make} how to recompile a system comes from
935reading a data base called the @dfn{makefile}.
936
937@menu
938* Makefile Contents:: What makefiles contain.
939* Makefile Names:: How to name your makefile.
940* Include:: How one makefile can use another makefile.
941* MAKEFILES Variable:: The environment can specify extra makefiles.
942* Remaking Makefiles:: How makefiles get remade.
943* Overriding Makefiles:: How to override part of one makefile
944 with another makefile.
945* Reading Makefiles:: How makefiles are parsed.
946* Secondary Expansion:: How and when secondary expansion is performed.
947@end menu
948
949@node Makefile Contents, Makefile Names, Makefiles, Makefiles
950@section What Makefiles Contain
951
952Makefiles contain five kinds of things: @dfn{explicit rules},
953@dfn{implicit rules}, @dfn{variable definitions}, @dfn{directives},
954and @dfn{comments}. Rules, variables, and directives are described at
955length in later chapters.@refill
956
957@itemize @bullet
958@cindex rule, explicit, definition of
959@cindex explicit rule, definition of
960@item
961An @dfn{explicit rule} says when and how to remake one or more files,
962called the rule's @dfn{targets}. It lists the other files that the
963targets depend on, called the @dfn{prerequisites} of the target, and
964may also give a recipe to use to create or update the targets.
965@xref{Rules, ,Writing Rules}.
966
967@cindex rule, implicit, definition of
968@cindex implicit rule, definition of
969@item
970An @dfn{implicit rule} says when and how to remake a class of files
971based on their names. It describes how a target may depend on a file
972with a name similar to the target and gives a recipe to create or
973update such a target. @xref{Implicit Rules, ,Using Implicit Rules}.
974
975@cindex variable definition
976@item
977A @dfn{variable definition} is a line that specifies a text string
978value for a variable that can be substituted into the text later. The
979simple makefile example shows a variable definition for @code{objects}
980as a list of all object files (@pxref{Variables Simplify, , Variables
981Make Makefiles Simpler}).
982
983@cindex directive
984@item
985A @dfn{directive} is an instruction for @code{make} to do something
986special while reading the makefile. These include:
987
988@itemize @bullet
989@item
990Reading another makefile (@pxref{Include, ,Including Other Makefiles}).
991
992@item
993Deciding (based on the values of variables) whether to use or
994ignore a part of the makefile (@pxref{Conditionals, ,Conditional Parts of Makefiles}).
995
996@item
997Defining a variable from a verbatim string containing multiple lines
998(@pxref{Defining, ,Defining Variables Verbatim}).
999@end itemize
1000
1001@cindex comments, in makefile
1002@cindex @code{#} (comments), in makefile
1003@item
1004@samp{#} in a line of a makefile starts a @dfn{comment}. It and the
1005rest of the line are ignored, except that a trailing backslash not
1006escaped by another backslash will continue the comment across multiple
1007lines. A line containing just a comment (with perhaps spaces before
1008it) is effectively blank, and is ignored. If you want a literal
1009@code{#}, escape it with a backslash (e.g., @code{\#}). Comments may
1010appear on any line in the makefile, although they are treated
1011specially in certain situations.
1012
1013You cannot use comments within variable references or function calls:
1014any instance of @code{#} will be treated literally (rather than as the
1015start of a comment) inside a variable reference or function call.
1016
1017Comments within a recipe are passed to the shell, just as with any
1018other recipe text. The shell decides how to interpret it: whether or
1019not this is a comment is up to the shell.
1020
1021Within a @code{define} directive, comments are not ignored during the
1022definition of the variable, but rather kept intact in the value of the
1023variable. When the variable is expanded they will either be treated
1024as @code{make} comments or as recipe text, depending on the context in
1025which the variable is evaluated.
1026@end itemize
1027
1028@node Makefile Names, Include, Makefile Contents, Makefiles
1029@section What Name to Give Your Makefile
1030@cindex makefile name
1031@cindex name of makefile
1032@cindex default makefile name
1033@cindex file name of makefile
1034
1035@c following paragraph rewritten to avoid overfull hbox
1036By default, when @code{make} looks for the makefile, it tries the
1037following names, in order: @file{GNUmakefile}, @file{makefile}
1038and @file{Makefile}.@refill
1039@findex Makefile
1040@findex GNUmakefile
1041@findex makefile
1042
1043@cindex @code{README}
1044Normally you should call your makefile either @file{makefile} or
1045@file{Makefile}. (We recommend @file{Makefile} because it appears
1046prominently near the beginning of a directory listing, right near other
1047important files such as @file{README}.) The first name checked,
1048@file{GNUmakefile}, is not recommended for most makefiles. You should
1049use this name if you have a makefile that is specific to GNU
1050@code{make}, and will not be understood by other versions of
1051@code{make}. Other @code{make} programs look for @file{makefile} and
1052@file{Makefile}, but not @file{GNUmakefile}.
1053
1054If @code{make} finds none of these names, it does not use any makefile.
1055Then you must specify a goal with a command argument, and @code{make}
1056will attempt to figure out how to remake it using only its built-in
1057implicit rules. @xref{Implicit Rules, ,Using Implicit Rules}.
1058
1059@cindex @code{-f}
1060@cindex @code{--file}
1061@cindex @code{--makefile}
1062If you want to use a nonstandard name for your makefile, you can specify
1063the makefile name with the @samp{-f} or @samp{--file} option. The
1064arguments @w{@samp{-f @var{name}}} or @w{@samp{--file=@var{name}}} tell
1065@code{make} to read the file @var{name} as the makefile. If you use
1066more than one @samp{-f} or @samp{--file} option, you can specify several
1067makefiles. All the makefiles are effectively concatenated in the order
1068specified. The default makefile names @file{GNUmakefile},
1069@file{makefile} and @file{Makefile} are not checked automatically if you
1070specify @samp{-f} or @samp{--file}.@refill
1071@cindex specifying makefile name
1072@cindex makefile name, how to specify
1073@cindex name of makefile, how to specify
1074@cindex file name of makefile, how to specify
1075
1076@node Include, MAKEFILES Variable, Makefile Names, Makefiles
1077@section Including Other Makefiles
1078@cindex including other makefiles
1079@cindex makefile, including
1080
1081@findex include
1082The @code{include} directive tells @code{make} to suspend reading the
1083current makefile and read one or more other makefiles before continuing.
1084The directive is a line in the makefile that looks like this:
1085
1086@example
1087include @var{filenames}@dots{}
1088@end example
1089
1090@noindent
1091@var{filenames} can contain shell file name patterns. If
1092@var{filenames} is empty, nothing is included and no error is printed.
1093@cindex shell file name pattern (in @code{include})
1094@cindex shell wildcards (in @code{include})
1095@cindex wildcard, in @code{include}
1096
1097Extra spaces are allowed and ignored at the beginning of the line, but
1098the first character must not be a tab (or the value of
1099@code{.CMDPREFIX})---if the line begins with a tab, it will be
1100considered a recipe line. Whitespace is required between
1101@code{include} and the file names, and between file names; extra
1102whitespace is ignored there and at the end of the directive. A
1103comment starting with @samp{#} is allowed at the end of the line. If
1104the file names contain any variable or function references, they are
1105expanded. @xref{Using Variables, ,How to Use Variables}.
1106
1107For example, if you have three @file{.mk} files, @file{a.mk},
1108@file{b.mk}, and @file{c.mk}, and @code{$(bar)} expands to
1109@code{bish bash}, then the following expression
1110
1111@example
1112include foo *.mk $(bar)
1113@end example
1114
1115is equivalent to
1116
1117@example
1118include foo a.mk b.mk c.mk bish bash
1119@end example
1120
1121When @code{make} processes an @code{include} directive, it suspends
1122reading of the containing makefile and reads from each listed file in
1123turn. When that is finished, @code{make} resumes reading the
1124makefile in which the directive appears.
1125
1126One occasion for using @code{include} directives is when several programs,
1127handled by individual makefiles in various directories, need to use a
1128common set of variable definitions
1129(@pxref{Setting, ,Setting Variables}) or pattern rules
1130(@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}).
1131
1132Another such occasion is when you want to generate prerequisites from
1133source files automatically; the prerequisites can be put in a file that
1134is included by the main makefile. This practice is generally cleaner
1135than that of somehow appending the prerequisites to the end of the main
1136makefile as has been traditionally done with other versions of
1137@code{make}. @xref{Automatic Prerequisites}.
1138@cindex prerequisites, automatic generation
1139@cindex automatic generation of prerequisites
1140@cindex generating prerequisites automatically
1141
1142@cindex @code{-I}
1143@cindex @code{--include-dir}
1144@cindex included makefiles, default directories
1145@cindex default directories for included makefiles
1146@findex /usr/gnu/include
1147@findex /usr/local/include
1148@findex /usr/include
1149If the specified name does not start with a slash, and the file is not
1150found in the current directory, several other directories are searched.
1151First, any directories you have specified with the @samp{-I} or
1152@samp{--include-dir} option are searched
1153(@pxref{Options Summary, ,Summary of Options}).
1154Then the following directories (if they exist)
1155are searched, in this order:
1156@file{@var{prefix}/include} (normally @file{/usr/local/include}
1157@footnote{GNU Make compiled for MS-DOS and MS-Windows behaves as if
1158@var{prefix} has been defined to be the root of the DJGPP tree
1159hierarchy.})
1160@file{/usr/gnu/include},
1161@file{/usr/local/include}, @file{/usr/include}.
1162
1163If an included makefile cannot be found in any of these directories, a
1164warning message is generated, but it is not an immediately fatal error;
1165processing of the makefile containing the @code{include} continues.
1166Once it has finished reading makefiles, @code{make} will try to remake
1167any that are out of date or don't exist.
1168@xref{Remaking Makefiles, ,How Makefiles Are Remade}.
1169Only after it has tried to find a way to remake a makefile and failed,
1170will @code{make} diagnose the missing makefile as a fatal error.
1171
1172If you want @code{make} to simply ignore a makefile which does not exist
1173and cannot be remade, with no error message, use the @w{@code{-include}}
1174directive instead of @code{include}, like this:
1175
1176@example
1177-include @var{filenames}@dots{}
1178@end example
1179
1180This acts like @code{include} in every way except that there is no
1181error (not even a warning) if any of the @var{filenames} do not exist.
1182For compatibility with some other @code{make} implementations,
1183@code{sinclude} is another name for @w{@code{-include}}.
1184
1185@node MAKEFILES Variable, Remaking Makefiles, Include, Makefiles
1186@section The Variable @code{MAKEFILES}
1187@cindex makefile, and @code{MAKEFILES} variable
1188@cindex including (@code{MAKEFILES} variable)
1189
1190@vindex MAKEFILES
1191If the environment variable @code{MAKEFILES} is defined, @code{make}
1192considers its value as a list of names (separated by whitespace) of
1193additional makefiles to be read before the others. This works much like
1194the @code{include} directive: various directories are searched for those
1195files (@pxref{Include, ,Including Other Makefiles}). In addition, the
1196default goal is never taken from one of these makefiles and it is not an
1197error if the files listed in @code{MAKEFILES} are not found.@refill
1198
1199@cindex recursion, and @code{MAKEFILES} variable
1200The main use of @code{MAKEFILES} is in communication between recursive
1201invocations of @code{make} (@pxref{Recursion, ,Recursive Use of
1202@code{make}}). It usually is not desirable to set the environment
1203variable before a top-level invocation of @code{make}, because it is
1204usually better not to mess with a makefile from outside. However, if
1205you are running @code{make} without a specific makefile, a makefile in
1206@code{MAKEFILES} can do useful things to help the built-in implicit
1207rules work better, such as defining search paths (@pxref{Directory Search}).
1208
1209Some users are tempted to set @code{MAKEFILES} in the environment
1210automatically on login, and program makefiles to expect this to be done.
1211This is a very bad idea, because such makefiles will fail to work if run by
1212anyone else. It is much better to write explicit @code{include} directives
1213in the makefiles. @xref{Include, , Including Other Makefiles}.
1214
1215@node Remaking Makefiles, Overriding Makefiles, MAKEFILES Variable, Makefiles
1216@section How Makefiles Are Remade
1217
1218@cindex updating makefiles
1219@cindex remaking makefiles
1220@cindex makefile, remaking of
1221Sometimes makefiles can be remade from other files, such as RCS or SCCS
1222files. If a makefile can be remade from other files, you probably want
1223@code{make} to get an up-to-date version of the makefile to read in.
1224
1225To this end, after reading in all makefiles, @code{make} will consider
1226each as a goal target and attempt to update it. If a makefile has a
1227rule which says how to update it (found either in that very makefile or
1228in another one) or if an implicit rule applies to it (@pxref{Implicit
1229Rules, ,Using Implicit Rules}), it will be updated if necessary. After
1230all makefiles have been checked, if any have actually been changed,
1231@code{make} starts with a clean slate and reads all the makefiles over
1232again. (It will also attempt to update each of them over again, but
1233normally this will not change them again, since they are already up to
1234date.)@refill
1235
1236If you know that one or more of your makefiles cannot be remade and
1237you want to keep @code{make} from performing an implicit rule search
1238on them, perhaps for efficiency reasons, you can use any normal method
1239of preventing implicit rule lookup to do so. For example, you can
1240write an explicit rule with the makefile as the target, and an empty
1241recipe (@pxref{Empty Recipes, ,Using Empty Recipes}).
1242
1243If the makefiles specify a double-colon rule to remake a file with
1244a recipe but no prerequisites, that file will always be remade
1245(@pxref{Double-Colon}). In the case of makefiles, a makefile that has a
1246double-colon rule with a recipe but no prerequisites will be remade every
1247time @code{make} is run, and then again after @code{make} starts over
1248and reads the makefiles in again. This would cause an infinite loop:
1249@code{make} would constantly remake the makefile, and never do anything
1250else. So, to avoid this, @code{make} will @strong{not} attempt to
1251remake makefiles which are specified as targets of a double-colon rule
1252with a recipe but no prerequisites.@refill
1253
1254If you do not specify any makefiles to be read with @samp{-f} or
1255@samp{--file} options, @code{make} will try the default makefile names;
1256@pxref{Makefile Names, ,What Name to Give Your Makefile}. Unlike
1257makefiles explicitly requested with @samp{-f} or @samp{--file} options,
1258@code{make} is not certain that these makefiles should exist. However,
1259if a default makefile does not exist but can be created by running
1260@code{make} rules, you probably want the rules to be run so that the
1261makefile can be used.
1262
1263Therefore, if none of the default makefiles exists, @code{make} will try
1264to make each of them in the same order in which they are searched for
1265(@pxref{Makefile Names, ,What Name to Give Your Makefile})
1266until it succeeds in making one, or it runs out of names to try. Note
1267that it is not an error if @code{make} cannot find or make any makefile;
1268a makefile is not always necessary.@refill
1269
1270When you use the @samp{-t} or @samp{--touch} option
1271(@pxref{Instead of Execution, ,Instead of Executing the Recipe}),
1272you would not want to use an out-of-date makefile to decide which
1273targets to touch. So the @samp{-t} option has no effect on updating
1274makefiles; they are really updated even if @samp{-t} is specified.
1275Likewise, @samp{-q} (or @samp{--question}) and @samp{-n} (or
1276@samp{--just-print}) do not prevent updating of makefiles, because an
1277out-of-date makefile would result in the wrong output for other targets.
1278Thus, @samp{make -f mfile -n foo} will update @file{mfile}, read it in,
1279and then print the recipe to update @file{foo} and its prerequisites
1280without running it. The recipe printed for @file{foo} will be the one
1281specified in the updated contents of @file{mfile}.
1282
1283However, on occasion you might actually wish to prevent updating of even
1284the makefiles. You can do this by specifying the makefiles as goals in
1285the command line as well as specifying them as makefiles. When the
1286makefile name is specified explicitly as a goal, the options @samp{-t}
1287and so on do apply to them.
1288
1289Thus, @samp{make -f mfile -n mfile foo} would read the makefile
1290@file{mfile}, print the recipe needed to update it without actually
1291running it, and then print the recipe needed to update @file{foo}
1292without running that. The recipe for @file{foo} will be the one
1293specified by the existing contents of @file{mfile}.
1294
1295@node Overriding Makefiles, Reading Makefiles, Remaking Makefiles, Makefiles
1296@section Overriding Part of Another Makefile
1297
1298@cindex overriding makefiles
1299@cindex makefile, overriding
1300Sometimes it is useful to have a makefile that is mostly just like
1301another makefile. You can often use the @samp{include} directive to
1302include one in the other, and add more targets or variable definitions.
1303However, it is illegal for two makefiles to give different recipes for
1304the same target. But there is another way.
1305
1306@cindex match-anything rule, used to override
1307In the containing makefile (the one that wants to include the other),
1308you can use a match-anything pattern rule to say that to remake any
1309target that cannot be made from the information in the containing
1310makefile, @code{make} should look in another makefile.
1311@xref{Pattern Rules}, for more information on pattern rules.
1312
1313For example, if you have a makefile called @file{Makefile} that says how
1314to make the target @samp{foo} (and other targets), you can write a
1315makefile called @file{GNUmakefile} that contains:
1316
1317@example
1318foo:
1319 frobnicate > foo
1320
1321%: force
1322 @@$(MAKE) -f Makefile $@@
1323force: ;
1324@end example
1325
1326If you say @samp{make foo}, @code{make} will find @file{GNUmakefile},
1327read it, and see that to make @file{foo}, it needs to run the recipe
1328@samp{frobnicate > foo}. If you say @samp{make bar}, @code{make} will
1329find no way to make @file{bar} in @file{GNUmakefile}, so it will use the
1330recipe from the pattern rule: @samp{make -f Makefile bar}. If
1331@file{Makefile} provides a rule for updating @file{bar}, @code{make}
1332will apply the rule. And likewise for any other target that
1333@file{GNUmakefile} does not say how to make.
1334
1335The way this works is that the pattern rule has a pattern of just
1336@samp{%}, so it matches any target whatever. The rule specifies a
1337prerequisite @file{force}, to guarantee that the recipe will be run even
1338if the target file already exists. We give the @file{force} target an
1339empty recipe to prevent @code{make} from searching for an implicit rule to
1340build it---otherwise it would apply the same match-anything rule to
1341@file{force} itself and create a prerequisite loop!
1342
1343@node Reading Makefiles, Secondary Expansion, Overriding Makefiles, Makefiles
1344@section How @code{make} Reads a Makefile
1345@cindex reading makefiles
1346@cindex makefile, parsing
1347
1348GNU @code{make} does its work in two distinct phases. During the first
1349phase it reads all the makefiles, included makefiles, etc. and
1350internalizes all the variables and their values, implicit and explicit
1351rules, and constructs a dependency graph of all the targets and their
1352prerequisites. During the second phase, @code{make} uses these internal
1353structures to determine what targets will need to be rebuilt and to
1354invoke the rules necessary to do so.
1355
1356It's important to understand this two-phase approach because it has a
1357direct impact on how variable and function expansion happens; this is
1358often a source of some confusion when writing makefiles. Here we will
1359present a summary of the phases in which expansion happens for different
1360constructs within the makefile. We say that expansion is
1361@dfn{immediate} if it happens during the first phase: in this case
1362@code{make} will expand any variables or functions in that section of a
1363construct as the makefile is parsed. We say that expansion is
1364@dfn{deferred} if expansion is not performed immediately. Expansion of
1365a deferred construct is not performed until either the construct appears
1366later in an immediate context, or until the second phase.
1367
1368You may not be familiar with some of these constructs yet. You can
1369reference this section as you become familiar with them, in later
1370chapters.
1371
1372@subheading Variable Assignment
1373@cindex +=, expansion
1374@cindex =, expansion
1375@cindex ?=, expansion
1376@cindex +=, expansion
1377@cindex define, expansion
1378
1379Variable definitions are parsed as follows:
1380
1381@example
1382@var{immediate} = @var{deferred}
1383@var{immediate} ?= @var{deferred}
1384@var{immediate} := @var{immediate}
1385@var{immediate} += @var{deferred} or @var{immediate}
1386
1387define @var{immediate}
1388 @var{deferred}
1389endef
1390@end example
1391
1392For the append operator, @samp{+=}, the right-hand side is considered
1393immediate if the variable was previously set as a simple variable
1394(@samp{:=}), and deferred otherwise.
1395
1396@subheading Conditional Directives
1397@cindex ifdef, expansion
1398@cindex ifeq, expansion
1399@cindex ifndef, expansion
1400@cindex ifneq, expansion
1401
1402Conditional directives are parsed immediately. This means, for
1403example, that automatic variables cannot be used in conditional
1404directives, as automatic variables are not set until the recipe for
1405that rule is invoked. If you need to use automatic variables in a
1406conditional directive you @emph{must} move the condition into the
1407recipe and use shell conditional syntax instead.
1408
1409@subheading Rule Definition
1410@cindex target, expansion
1411@cindex prerequisite, expansion
1412@cindex implicit rule, expansion
1413@cindex pattern rule, expansion
1414@cindex explicit rule, expansion
1415
1416A rule is always expanded the same way, regardless of the form:
1417
1418@example
1419@var{immediate} : @var{immediate} ; @var{deferred}
1420 @var{deferred}
1421@end example
1422
1423That is, the target and prerequisite sections are expanded immediately,
1424and the recipe used to construct the target is always deferred. This
1425general rule is true for explicit rules, pattern rules, suffix rules,
1426static pattern rules, and simple prerequisite definitions.
1427
1428@node Secondary Expansion, , Reading Makefiles, Makefiles
1429@section Secondary Expansion
1430@cindex secondary expansion
1431@cindex expansion, secondary
1432
1433@findex .SECONDEXPANSION
1434In the previous section we learned that GNU @code{make} works in two
1435distinct phases: a read-in phase and a target-update phase
1436(@pxref{Reading Makefiles, , How @code{make} Reads a Makefile}). GNU
1437make also has the ability to enable a @emph{second expansion} of the
1438prerequisites (only) for some or all targets defined in the makefile.
1439In order for this second expansion to occur, the special target
1440@code{.SECONDEXPANSION} must be defined before the first prerequisite
1441list that makes use of this feature.
1442
1443If that special target is defined then in between the two phases
1444mentioned above, right at the end of the read-in phase, all the
1445prerequisites of the targets defined after the special target are
1446expanded a @emph{second time}. In most circumstances this secondary
1447expansion will have no effect, since all variable and function
1448references will have been expanded during the initial parsing of the
1449makefiles. In order to take advantage of the secondary expansion
1450phase of the parser, then, it's necessary to @emph{escape} the
1451variable or function reference in the makefile. In this case the
1452first expansion merely un-escapes the reference but doesn't expand it,
1453and expansion is left to the secondary expansion phase. For example,
1454consider this makefile:
1455
1456@example
1457.SECONDEXPANSION:
1458ONEVAR = onefile
1459TWOVAR = twofile
1460myfile: $(ONEVAR) $$(TWOVAR)
1461@end example
1462
1463After the first expansion phase the prerequisites list of the
1464@file{myfile} target will be @code{onefile} and @code{$(TWOVAR)}; the
1465first (unescaped) variable reference to @var{ONEVAR} is expanded,
1466while the second (escaped) variable reference is simply unescaped,
1467without being recognized as a variable reference. Now during the
1468secondary expansion the first word is expanded again but since it
1469contains no variable or function references it remains the static
1470value @file{onefile}, while the second word is now a normal reference
1471to the variable @var{TWOVAR}, which is expanded to the value
1472@file{twofile}. The final result is that there are two prerequisites,
1473@file{onefile} and @file{twofile}.
1474
1475Obviously, this is not a very interesting case since the same result
1476could more easily have been achieved simply by having both variables
1477appear, unescaped, in the prerequisites list. One difference becomes
1478apparent if the variables are reset; consider this example:
1479
1480@example
1481.SECONDEXPANSION:
1482AVAR = top
1483onefile: $(AVAR)
1484twofile: $$(AVAR)
1485AVAR = bottom
1486@end example
1487
1488Here the prerequisite of @file{onefile} will be expanded immediately,
1489and resolve to the value @file{top}, while the prerequisite of
1490@file{twofile} will not be full expanded until the secondary expansion
1491and yield a value of @file{bottom}.
1492
1493This is marginally more exciting, but the true power of this feature
1494only becomes apparent when you discover that secondary expansions
1495always take place within the scope of the automatic variables for that
1496target. This means that you can use variables such as @code{$@@},
1497@code{$*}, etc. during the second expansion and they will have their
1498expected values, just as in the recipe. All you have to do is defer
1499the expansion by escaping the @code{$}. Also, secondary expansion
1500occurs for both explicit and implicit (pattern) rules. Knowing this,
1501the possible uses for this feature increase dramatically. For
1502example:
1503
1504@example
1505.SECONDEXPANSION:
1506main_OBJS := main.o try.o test.o
1507lib_OBJS := lib.o api.o
1508
1509main lib: $$($$@@_OBJS)
1510@end example
1511
1512Here, after the initial expansion the prerequisites of both the
1513@file{main} and @file{lib} targets will be @code{$($@@_OBJS)}. During
1514the secondary expansion, the @code{$@@} variable is set to the name of
1515the target and so the expansion for the @file{main} target will yield
1516@code{$(main_OBJS)}, or @code{main.o try.o test.o}, while the
1517secondary expansion for the @file{lib} target will yield
1518@code{$(lib_OBJS)}, or @code{lib.o api.o}.
1519
1520You can also mix in functions here, as long as they are properly escaped:
1521
1522@example
1523main_SRCS := main.c try.c test.c
1524lib_SRCS := lib.c api.c
1525
1526.SECONDEXPANSION:
1527main lib: $$(patsubst %.c,%.o,$$($$@@_SRCS))
1528@end example
1529
1530This version allows users to specify source files rather than object
1531files, but gives the same resulting prerequisites list as the previous
1532example.
1533
1534Evaluation of automatic variables during the secondary expansion
1535phase, especially of the target name variable @code{$$@@}, behaves
1536similarly to evaluation within recipes. However, there are some
1537subtle differences and ``corner cases'' which come into play for the
1538different types of rule definitions that @code{make} understands. The
1539subtleties of using the different automatic variables are described
1540below.
1541
1542@subheading Secondary Expansion of Explicit Rules
1543@cindex secondary expansion and explicit rules
1544@cindex explicit rules, secondary expansion of
1545
1546During the secondary expansion of explicit rules, @code{$$@@} and
1547@code{$$%} evaluate, respectively, to the file name of the target and,
1548when the target is an archive member, the target member name. The
1549@code{$$<} variable evaluates to the first prerequisite in the first
1550rule for this target. @code{$$^} and @code{$$+} evaluate to the list
1551of all prerequisites of rules @emph{that have already appeared} for
1552the same target (@code{$$+} with repetitions and @code{$$^}
1553without). The following example will help illustrate these behaviors:
1554
1555@example
1556.SECONDEXPANSION:
1557
1558foo: foo.1 bar.1 $$< $$^ $$+ # line #1
1559
1560foo: foo.2 bar.2 $$< $$^ $$+ # line #2
1561
1562foo: foo.3 bar.3 $$< $$^ $$+ # line #3
1563@end example
1564
1565In the first prerequisite list, all three variables (@code{$$<},
1566@code{$$^}, and @code{$$+}) expand to the empty string. In the
1567second, they will have values @code{foo.1}, @code{foo.1 bar.1}, and
1568@code{foo.1 bar.1} respectively. In the third they will have values
1569@code{foo.1}, @code{foo.1 bar.1 foo.2 bar.2}, and @code{foo.1 bar.1
1570foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1} respectively.
1571
1572Rules undergo secondary expansion in makefile order, except that
1573the rule with the recipe is always evaluated last.
1574
1575The variables @code{$$?} and @code{$$*} are not available and expand
1576to the empty string.
1577
1578@subheading Secondary Expansion of Static Pattern Rules
1579@cindex secondary expansion and static pattern rules
1580@cindex static pattern rules, secondary expansion of
1581
1582Rules for secondary expansion of static pattern rules are identical to
1583those for explicit rules, above, with one exception: for static
1584pattern rules the @code{$$*} variable is set to the pattern stem. As
1585with explicit rules, @code{$$?} is not available and expands to the
1586empty string.
1587
1588@subheading Secondary Expansion of Implicit Rules
1589@cindex secondary expansion and implicit rules
1590@cindex implicit rules, secondary expansion of
1591
1592As @code{make} searches for an implicit rule, it substitutes the stem
1593and then performs secondary expansion for every rule with a matching
1594target pattern. The value of the automatic variables is derived in
1595the same fashion as for static pattern rules. As an example:
1596
1597@example
1598.SECONDEXPANSION:
1599
1600foo: bar
1601
1602foo foz: fo%: bo%
1603
1604%oo: $$< $$^ $$+ $$*
1605@end example
1606
1607When the implicit rule is tried for target @file{foo}, @code{$$<}
1608expands to @file{bar}, @code{$$^} expands to @file{bar boo},
1609@code{$$+} also expands to @file{bar boo}, and @code{$$*} expands to
1610@file{f}.
1611
1612Note that the directory prefix (D), as described in @ref{Implicit Rule
1613Search, ,Implicit Rule Search Algorithm}, is appended (after
1614expansion) to all the patterns in the prerequisites list. As an
1615example:
1616
1617@example
1618.SECONDEXPANSION:
1619
1620/tmp/foo.o:
1621
1622%.o: $$(addsuffix /%.c,foo bar) foo.h
1623@end example
1624
1625The prerequisite list after the secondary expansion and directory
1626prefix reconstruction will be @file{/tmp/foo/foo.c /tmp/var/bar/foo.c
1627foo.h}. If you are not interested in this reconstruction, you can use
1628@code{$$*} instead of @code{%} in the prerequisites list.
1629
1630@node Rules, Recipes, Makefiles, Top
1631@chapter Writing Rules
1632@cindex writing rules
1633@cindex rule, how to write
1634@cindex target
1635@cindex prerequisite
1636
1637A @dfn{rule} appears in the makefile and says when and how to remake
1638certain files, called the rule's @dfn{targets} (most often only one per rule).
1639It lists the other files that are the @dfn{prerequisites} of the target, and
1640the @dfn{recipe} to use to create or update the target.
1641
1642@cindex default goal
1643@cindex goal, default
1644The order of rules is not significant, except for determining the
1645@dfn{default goal}: the target for @code{make} to consider, if you do
1646not otherwise specify one. The default goal is the target of the first
1647rule in the first makefile. If the first rule has multiple targets,
1648only the first target is taken as the default. There are two
1649exceptions: a target starting with a period is not a default unless it
1650contains one or more slashes, @samp{/}, as well; and, a target that
1651defines a pattern rule has no effect on the default goal.
1652(@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.)
1653
1654Therefore, we usually write the makefile so that the first rule is the
1655one for compiling the entire program or all the programs described by
1656the makefile (often with a target called @samp{all}).
1657@xref{Goals, ,Arguments to Specify the Goals}.
1658
1659@menu
1660* Rule Example:: An example explained.
1661* Rule Syntax:: General syntax explained.
1662* Prerequisite Types:: There are two types of prerequisites.
1663* Wildcards:: Using wildcard characters such as `*'.
1664* Directory Search:: Searching other directories for source files.
1665* Phony Targets:: Using a target that is not a real file's name.
1666* Force Targets:: You can use a target without recipes
1667 or prerequisites to mark other targets
1668 as phony.
1669* Empty Targets:: When only the date matters and the
1670 files are empty.
1671* Special Targets:: Targets with special built-in meanings.
1672* Multiple Targets:: When to make use of several targets in a rule.
1673* Multiple Rules:: How to use several rules with the same target.
1674* Static Pattern:: Static pattern rules apply to multiple targets
1675 and can vary the prerequisites according to
1676 the target name.
1677* Double-Colon:: How to use a special kind of rule to allow
1678 several independent rules for one target.
1679* Automatic Prerequisites:: How to automatically generate rules giving
1680 prerequisites from source files themselves.
1681@end menu
1682
1683@ifnottex
1684@node Rule Example, Rule Syntax, Rules, Rules
1685@section Rule Example
1686
1687Here is an example of a rule:
1688
1689@example
1690foo.o : foo.c defs.h # module for twiddling the frobs
1691 cc -c -g foo.c
1692@end example
1693
1694Its target is @file{foo.o} and its prerequisites are @file{foo.c} and
1695@file{defs.h}. It has one command in the recipe: @samp{cc -c -g foo.c}.
1696The recipe starts with a tab to identify it as a recipe.
1697
1698This rule says two things:
1699
1700@itemize @bullet
1701@item
1702How to decide whether @file{foo.o} is out of date: it is out of date
1703if it does not exist, or if either @file{foo.c} or @file{defs.h} is
1704more recent than it.
1705
1706@item
1707How to update the file @file{foo.o}: by running @code{cc} as stated.
1708The recipe does not explicitly mention @file{defs.h}, but we presume
1709that @file{foo.c} includes it, and that that is why @file{defs.h} was
1710added to the prerequisites.
1711@end itemize
1712@end ifnottex
1713
1714@node Rule Syntax, Prerequisite Types, Rule Example, Rules
1715@section Rule Syntax
1716
1717@cindex rule syntax
1718@cindex syntax of rules
1719In general, a rule looks like this:
1720
1721@example
1722@var{targets} : @var{prerequisites}
1723 @var{recipe}
1724 @dots{}
1725@end example
1726
1727@noindent
1728or like this:
1729
1730@example
1731@var{targets} : @var{prerequisites} ; @var{recipe}
1732 @var{recipe}
1733 @dots{}
1734@end example
1735
1736@cindex targets
1737@cindex rule targets
1738The @var{targets} are file names, separated by spaces. Wildcard
1739characters may be used (@pxref{Wildcards, ,Using Wildcard Characters
1740in File Names}) and a name of the form @file{@var{a}(@var{m})}
1741represents member @var{m} in archive file @var{a}
1742(@pxref{Archive Members, ,Archive Members as Targets}).
1743Usually there is only one
1744target per rule, but occasionally there is a reason to have more
1745(@pxref{Multiple Targets, , Multiple Targets in a Rule}).@refill
1746
1747@cindex recipes
1748@cindex tab character (in commands)
1749The @var{recipe} lines start with a tab character (or the first
1750character in the value of the @code{.CMDPREFIX} variable;
1751@pxref{Special Variables}). The first recipe line may appear on the line
1752after the prerequisites, with a tab character, or may appear on the
1753same line, with a semicolon. Either way, the effect is the same.
1754There are other differences in the syntax of recipes.
1755@xref{Recipes, ,Writing Recipes in Rules}.
1756
1757@cindex dollar sign (@code{$}), in rules
1758@cindex @code{$}, in rules
1759@cindex rules, and @code{$}
1760Because dollar signs are used to start @code{make} variable
1761references, if you really want a dollar sign in a target or
1762prerequisite you must write two of them, @samp{$$} (@pxref{Using
1763Variables, ,How to Use Variables}). If you have enabled secondary
1764expansion (@pxref{Secondary Expansion}) and you want a literal dollar
1765sign in the prerequisites list, you must actually write @emph{four}
1766dollar signs (@samp{$$$$}).
1767
1768You may split a long line by inserting a backslash followed by a
1769newline, but this is not required, as @code{make} places no limit on
1770the length of a line in a makefile.
1771
1772A rule tells @code{make} two things: when the targets are out of date,
1773and how to update them when necessary.
1774
1775@cindex prerequisites
1776@cindex rule prerequisites
1777The criterion for being out of date is specified in terms of the
1778@var{prerequisites}, which consist of file names separated by spaces.
1779(Wildcards and archive members (@pxref{Archives}) are allowed here too.)
1780A target is out of date if it does not exist or if it is older than any
1781of the prerequisites (by comparison of last-modification times). The
1782idea is that the contents of the target file are computed based on
1783information in the prerequisites, so if any of the prerequisites changes,
1784the contents of the existing target file are no longer necessarily
1785valid.
1786
1787How to update is specified by a @var{recipe}. This is one or more
1788lines to be executed by the shell (normally @samp{sh}), but with some
1789extra features (@pxref{Recipes, ,Writing Recipes in Rules}).
1790
1791@node Prerequisite Types, Wildcards, Rule Syntax, Rules
1792@comment node-name, next, previous, up
1793@section Types of Prerequisites
1794@cindex prerequisite types
1795@cindex types of prerequisites
1796
1797@cindex prerequisites, normal
1798@cindex normal prerequisites
1799@cindex prerequisites, order-only
1800@cindex order-only prerequisites
1801There are actually two different types of prerequisites understood by
1802GNU @code{make}: normal prerequisites such as described in the
1803previous section, and @dfn{order-only} prerequisites. A normal
1804prerequisite makes two statements: first, it imposes an order of
1805execution of recipes: any recipes necessary to build any of a
1806target's prerequisites will be fully executed before any recipe
1807necessary to build the target. Second, it imposes a dependency
1808relationship: if any prerequisite is newer than the target, then the
1809target is considered out-of-date and must be rebuilt.
1810
1811Normally, this is exactly what you want: if a target's prerequisite is
1812updated, then the target should also be updated.
1813
1814Occasionally, however, you have a situation where you want to impose a
1815specific ordering on the rules to be invoked @emph{without} forcing
1816the target to be updated if one of those rules is executed. In that
1817case, you want to define @dfn{order-only} prerequisites. Order-only
1818prerequisites can be specified by placing a pipe symbol (@code{|})
1819in the prerequisites list: any prerequisites to the left of the pipe
1820symbol are normal; any prerequisites to the right are order-only:
1821
1822@example
1823@var{targets} : @var{normal-prerequisites} | @var{order-only-prerequisites}
1824@end example
1825
1826The normal prerequisites section may of course be empty. Also, you
1827may still declare multiple lines of prerequisites for the same target:
1828they are appended appropriately (normal prerequisites are appended to
1829the list of normal prerequisites; order-only prerequisites are
1830appended to the list of order-only prerequisites). Note that if you
1831declare the same file to be both a normal and an order-only
1832prerequisite, the normal prerequisite takes precedence (since they
1833have a strict superset of the behavior of an order-only prerequisite).
1834
1835Consider an example where your targets are to be placed in a separate
1836directory, and that directory might not exist before @code{make} is
1837run. In this situation, you want the directory to be created before
1838any targets are placed into it but, because the timestamps on
1839directories change whenever a file is added, removed, or renamed, we
1840certainly don't want to rebuild all the targets whenever the
1841directory's timestamp changes. One way to manage this is with
1842order-only prerequisites: make the directory an order-only
1843prerequisite on all the targets:
1844
1845@example
1846OBJDIR := objdir
1847OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)
1848
1849$(OBJDIR)/%.o : %.c
1850 $(COMPILE.c) $(OUTPUT_OPTION) $<
1851
1852all: $(OBJS)
1853
1854$(OBJS): | $(OBJDIR)
1855
1856$(OBJDIR):
1857 mkdir $(OBJDIR)
1858@end example
1859
1860Now the rule to create the @file{objdir} directory will be run, if
1861needed, before any @samp{.o} is built, but no @samp{.o} will be built
1862because the @file{objdir} directory timestamp changed.
1863
1864@node Wildcards, Directory Search, Prerequisite Types, Rules
1865@section Using Wildcard Characters in File Names
1866@cindex wildcard
1867@cindex file name with wildcards
1868@cindex globbing (wildcards)
1869
1870@cindex @code{*} (wildcard character)
1871@cindex @code{?} (wildcard character)
1872@cindex @code{[@dots{}]} (wildcard characters)
1873A single file name can specify many files using @dfn{wildcard characters}.
1874The wildcard characters in @code{make} are @samp{*}, @samp{?} and
1875@samp{[@dots{}]}, the same as in the Bourne shell. For example, @file{*.c}
1876specifies a list of all the files (in the working directory) whose names
1877end in @samp{.c}.@refill
1878
1879@cindex @code{~} (tilde)
1880@cindex tilde (@code{~})
1881@cindex home directory
1882The character @samp{~} at the beginning of a file name also has special
1883significance. If alone, or followed by a slash, it represents your home
1884directory. For example @file{~/bin} expands to @file{/home/you/bin}.
1885If the @samp{~} is followed by a word, the string represents the home
1886directory of the user named by that word. For example @file{~john/bin}
1887expands to @file{/home/john/bin}. On systems which don't have a home
1888directory for each user (such as MS-DOS or MS-Windows), this
1889functionality can be simulated by setting the environment variable
1890@var{HOME}.@refill
1891
1892Wildcard expansion is performed by @code{make} automatically in
1893targets and in prerequisites. In recipes, the shell is responsible
1894for wildcard expansion. In other contexts, wildcard expansion happens
1895only if you request it explicitly with the @code{wildcard} function.
1896
1897The special significance of a wildcard character can be turned off by
1898preceding it with a backslash. Thus, @file{foo\*bar} would refer to a
1899specific file whose name consists of @samp{foo}, an asterisk, and
1900@samp{bar}.@refill
1901
1902@menu
1903* Wildcard Examples:: Several examples
1904* Wildcard Pitfall:: Problems to avoid.
1905* Wildcard Function:: How to cause wildcard expansion where
1906 it does not normally take place.
1907@end menu
1908
1909@node Wildcard Examples, Wildcard Pitfall, Wildcards, Wildcards
1910@subsection Wildcard Examples
1911
1912Wildcards can be used in the recipe of a rule, where they are expanded
1913by the shell. For example, here is a rule to delete all the object files:
1914
1915@example
1916@group
1917clean:
1918 rm -f *.o
1919@end group
1920@end example
1921@cindex @code{rm} (shell command)
1922
1923Wildcards are also useful in the prerequisites of a rule. With the
1924following rule in the makefile, @samp{make print} will print all the
1925@samp{.c} files that have changed since the last time you printed them:
1926
1927@example
1928print: *.c
1929 lpr -p $?
1930 touch print
1931@end example
1932
1933@cindex @code{print} target
1934@cindex @code{lpr} (shell command)
1935@cindex @code{touch} (shell command)
1936@noindent
1937This rule uses @file{print} as an empty target file; see @ref{Empty
1938Targets, ,Empty Target Files to Record Events}. (The automatic variable
1939@samp{$?} is used to print only those files that have changed; see
1940@ref{Automatic Variables}.)@refill
1941
1942Wildcard expansion does not happen when you define a variable. Thus, if
1943you write this:
1944
1945@example
1946objects = *.o
1947@end example
1948
1949@noindent
1950then the value of the variable @code{objects} is the actual string
1951@samp{*.o}. However, if you use the value of @code{objects} in a target,
1952prerequisite, or recipe, wildcard expansion will take place at that time.
1953To set @code{objects} to the expansion, instead use:
1954
1955@example
1956objects := $(wildcard *.o)
1957@end example
1958
1959@noindent
1960@xref{Wildcard Function}.
1961
1962@node Wildcard Pitfall, Wildcard Function, Wildcard Examples, Wildcards
1963@subsection Pitfalls of Using Wildcards
1964@cindex wildcard pitfalls
1965@cindex pitfalls of wildcards
1966@cindex mistakes with wildcards
1967@cindex errors with wildcards
1968@cindex problems with wildcards
1969
1970Now here is an example of a naive way of using wildcard expansion, that
1971does not do what you would intend. Suppose you would like to say that the
1972executable file @file{foo} is made from all the object files in the
1973directory, and you write this:
1974
1975@example
1976objects = *.o
1977
1978foo : $(objects)
1979 cc -o foo $(CFLAGS) $(objects)
1980@end example
1981
1982@noindent
1983The value of @code{objects} is the actual string @samp{*.o}. Wildcard
1984expansion happens in the rule for @file{foo}, so that each @emph{existing}
1985@samp{.o} file becomes a prerequisite of @file{foo} and will be recompiled if
1986necessary.
1987
1988But what if you delete all the @samp{.o} files? When a wildcard matches
1989no files, it is left as it is, so then @file{foo} will depend on the
1990oddly-named file @file{*.o}. Since no such file is likely to exist,
1991@code{make} will give you an error saying it cannot figure out how to
1992make @file{*.o}. This is not what you want!
1993
1994Actually it is possible to obtain the desired result with wildcard
1995expansion, but you need more sophisticated techniques, including the
1996@code{wildcard} function and string substitution.
1997@ifnottex
1998@xref{Wildcard Function, ,The Function @code{wildcard}}.
1999@end ifnottex
2000@iftex
2001These are described in the following section.
2002@end iftex
2003
2004@cindex wildcards and MS-DOS/MS-Windows backslashes
2005@cindex backslashes in pathnames and wildcard expansion
2006
2007Microsoft operating systems (MS-DOS and MS-Windows) use backslashes to
2008separate directories in pathnames, like so:
2009
2010@example
2011 c:\foo\bar\baz.c
2012@end example
2013
2014This is equivalent to the Unix-style @file{c:/foo/bar/baz.c} (the
2015@file{c:} part is the so-called drive letter). When @code{make} runs on
2016these systems, it supports backslashes as well as the Unix-style forward
2017slashes in pathnames. However, this support does @emph{not} include the
2018wildcard expansion, where backslash is a quote character. Therefore,
2019you @emph{must} use Unix-style slashes in these cases.
2020
2021
2022@node Wildcard Function, , Wildcard Pitfall, Wildcards
2023@subsection The Function @code{wildcard}
2024@findex wildcard
2025
2026Wildcard expansion happens automatically in rules. But wildcard expansion
2027does not normally take place when a variable is set, or inside the
2028arguments of a function. If you want to do wildcard expansion in such
2029places, you need to use the @code{wildcard} function, like this:
2030
2031@example
2032$(wildcard @var{pattern}@dots{})
2033@end example
2034
2035@noindent
2036This string, used anywhere in a makefile, is replaced by a
2037space-separated list of names of existing files that match one of the
2038given file name patterns. If no existing file name matches a pattern,
2039then that pattern is omitted from the output of the @code{wildcard}
2040function. Note that this is different from how unmatched wildcards
2041behave in rules, where they are used verbatim rather than ignored
2042(@pxref{Wildcard Pitfall}).
2043
2044One use of the @code{wildcard} function is to get a list of all the C source
2045files in a directory, like this:
2046
2047@example
2048$(wildcard *.c)
2049@end example
2050
2051We can change the list of C source files into a list of object files by
2052replacing the @samp{.c} suffix with @samp{.o} in the result, like this:
2053
2054@example
2055$(patsubst %.c,%.o,$(wildcard *.c))
2056@end example
2057
2058@noindent
2059(Here we have used another function, @code{patsubst}.
2060@xref{Text Functions, ,Functions for String Substitution and Analysis}.)@refill
2061
2062Thus, a makefile to compile all C source files in the directory and then
2063link them together could be written as follows:
2064
2065@example
2066objects := $(patsubst %.c,%.o,$(wildcard *.c))
2067
2068foo : $(objects)
2069 cc -o foo $(objects)
2070@end example
2071
2072@noindent
2073(This takes advantage of the implicit rule for compiling C programs, so
2074there is no need to write explicit rules for compiling the files.
2075@xref{Flavors, ,The Two Flavors of Variables}, for an explanation of
2076@samp{:=}, which is a variant of @samp{=}.)
2077
2078@node Directory Search, Phony Targets, Wildcards, Rules
2079@section Searching Directories for Prerequisites
2080@vindex VPATH
2081@findex vpath
2082@cindex vpath
2083@cindex search path for prerequisites (@code{VPATH})
2084@cindex directory search (@code{VPATH})
2085
2086For large systems, it is often desirable to put sources in a separate
2087directory from the binaries. The @dfn{directory search} features of
2088@code{make} facilitate this by searching several directories
2089automatically to find a prerequisite. When you redistribute the files
2090among directories, you do not need to change the individual rules,
2091just the search paths.
2092
2093@menu
2094* General Search:: Specifying a search path that applies
2095 to every prerequisite.
2096* Selective Search:: Specifying a search path
2097 for a specified class of names.
2098* Search Algorithm:: When and how search paths are applied.
2099* Recipes/Search:: How to write recipes that work together
2100 with search paths.
2101* Implicit/Search:: How search paths affect implicit rules.
2102* Libraries/Search:: Directory search for link libraries.
2103@end menu
2104
2105@node General Search, Selective Search, Directory Search, Directory Search
2106@subsection @code{VPATH}: Search Path for All Prerequisites
2107@vindex VPATH
2108
2109The value of the @code{make} variable @code{VPATH} specifies a list of
2110directories that @code{make} should search. Most often, the
2111directories are expected to contain prerequisite files that are not in the
2112current directory; however, @code{make} uses @code{VPATH} as a search
2113list for both prerequisites and targets of rules.
2114
2115Thus, if a file that is listed as a target or prerequisite does not exist
2116in the current directory, @code{make} searches the directories listed in
2117@code{VPATH} for a file with that name. If a file is found in one of
2118them, that file may become the prerequisite (see below). Rules may then
2119specify the names of files in the prerequisite list as if they all
2120existed in the current directory. @xref{Recipes/Search, ,Writing Recipes with Directory Search}.
2121
2122In the @code{VPATH} variable, directory names are separated by colons or
2123blanks. The order in which directories are listed is the order followed
2124by @code{make} in its search. (On MS-DOS and MS-Windows, semi-colons
2125are used as separators of directory names in @code{VPATH}, since the
2126colon can be used in the pathname itself, after the drive letter.)
2127
2128For example,
2129
2130@example
2131VPATH = src:../headers
2132@end example
2133
2134@noindent
2135specifies a path containing two directories, @file{src} and
2136@file{../headers}, which @code{make} searches in that order.
2137
2138With this value of @code{VPATH}, the following rule,
2139
2140@example
2141foo.o : foo.c
2142@end example
2143
2144@noindent
2145is interpreted as if it were written like this:
2146
2147@example
2148foo.o : src/foo.c
2149@end example
2150
2151@noindent
2152assuming the file @file{foo.c} does not exist in the current directory but
2153is found in the directory @file{src}.
2154
2155@node Selective Search, Search Algorithm, General Search, Directory Search
2156@subsection The @code{vpath} Directive
2157@findex vpath
2158
2159Similar to the @code{VPATH} variable, but more selective, is the
2160@code{vpath} directive (note lower case), which allows you to specify a
2161search path for a particular class of file names: those that match a
2162particular pattern. Thus you can supply certain search directories for
2163one class of file names and other directories (or none) for other file
2164names.
2165
2166There are three forms of the @code{vpath} directive:
2167
2168@table @code
2169@item vpath @var{pattern} @var{directories}
2170Specify the search path @var{directories} for file names that match
2171@var{pattern}.
2172
2173The search path, @var{directories}, is a list of directories to be
2174searched, separated by colons (semi-colons on MS-DOS and MS-Windows) or
2175blanks, just like the search path used in the @code{VPATH} variable.
2176
2177@item vpath @var{pattern}
2178Clear out the search path associated with @var{pattern}.
2179
2180@c Extra blank line makes sure this gets two lines.
2181@item vpath
2182
2183Clear all search paths previously specified with @code{vpath} directives.
2184@end table
2185
2186A @code{vpath} pattern is a string containing a @samp{%} character. The
2187string must match the file name of a prerequisite that is being searched
2188for, the @samp{%} character matching any sequence of zero or more
2189characters (as in pattern rules; @pxref{Pattern Rules, ,Defining and
2190Redefining Pattern Rules}). For example, @code{%.h} matches files that
2191end in @code{.h}. (If there is no @samp{%}, the pattern must match the
2192prerequisite exactly, which is not useful very often.)
2193
2194@cindex @code{%}, quoting in @code{vpath}
2195@cindex @code{%}, quoting with @code{\} (backslash)
2196@cindex @code{\} (backslash), to quote @code{%}
2197@cindex backslash (@code{\}), to quote @code{%}
2198@cindex quoting @code{%}, in @code{vpath}
2199@samp{%} characters in a @code{vpath} directive's pattern can be quoted
2200with preceding backslashes (@samp{\}). Backslashes that would otherwise
2201quote @samp{%} characters can be quoted with more backslashes.
2202Backslashes that quote @samp{%} characters or other backslashes are
2203removed from the pattern before it is compared to file names. Backslashes
2204that are not in danger of quoting @samp{%} characters go unmolested.@refill
2205
2206When a prerequisite fails to exist in the current directory, if the
2207@var{pattern} in a @code{vpath} directive matches the name of the
2208prerequisite file, then the @var{directories} in that directive are searched
2209just like (and before) the directories in the @code{VPATH} variable.
2210
2211For example,
2212
2213@example
2214vpath %.h ../headers
2215@end example
2216
2217@noindent
2218tells @code{make} to look for any prerequisite whose name ends in @file{.h}
2219in the directory @file{../headers} if the file is not found in the current
2220directory.
2221
2222If several @code{vpath} patterns match the prerequisite file's name, then
2223@code{make} processes each matching @code{vpath} directive one by one,
2224searching all the directories mentioned in each directive. @code{make}
2225handles multiple @code{vpath} directives in the order in which they
2226appear in the makefile; multiple directives with the same pattern are
2227independent of each other.
2228
2229@need 750
2230Thus,
2231
2232@example
2233@group
2234vpath %.c foo
2235vpath % blish
2236vpath %.c bar
2237@end group
2238@end example
2239
2240@noindent
2241will look for a file ending in @samp{.c} in @file{foo}, then
2242@file{blish}, then @file{bar}, while
2243
2244@example
2245@group
2246vpath %.c foo:bar
2247vpath % blish
2248@end group
2249@end example
2250
2251@noindent
2252will look for a file ending in @samp{.c} in @file{foo}, then
2253@file{bar}, then @file{blish}.
2254
2255@node Search Algorithm, Recipes/Search, Selective Search, Directory Search
2256@subsection How Directory Searches are Performed
2257@cindex algorithm for directory search
2258@cindex directory search algorithm
2259
2260When a prerequisite is found through directory search, regardless of type
2261(general or selective), the pathname located may not be the one that
2262@code{make} actually provides you in the prerequisite list. Sometimes
2263the path discovered through directory search is thrown away.
2264
2265The algorithm @code{make} uses to decide whether to keep or abandon a
2266path found via directory search is as follows:
2267
2268@enumerate
2269@item
2270If a target file does not exist at the path specified in the makefile,
2271directory search is performed.
2272
2273@item
2274If the directory search is successful, that path is kept and this file
2275is tentatively stored as the target.
2276
2277@item
2278All prerequisites of this target are examined using this same method.
2279
2280@item
2281After processing the prerequisites, the target may or may not need to be
2282rebuilt:
2283
2284@enumerate a
2285@item
2286If the target does @emph{not} need to be rebuilt, the path to the file
2287found during directory search is used for any prerequisite lists which
2288contain this target. In short, if @code{make} doesn't need to rebuild
2289the target then you use the path found via directory search.
2290
2291@item
2292If the target @emph{does} need to be rebuilt (is out-of-date), the
2293pathname found during directory search is @emph{thrown away}, and the
2294target is rebuilt using the file name specified in the makefile. In
2295short, if @code{make} must rebuild, then the target is rebuilt locally,
2296not in the directory found via directory search.
2297@end enumerate
2298@end enumerate
2299
2300This algorithm may seem complex, but in practice it is quite often
2301exactly what you want.
2302
2303@cindex traditional directory search (GPATH)
2304@cindex directory search, traditional (GPATH)
2305Other versions of @code{make} use a simpler algorithm: if the file does
2306not exist, and it is found via directory search, then that pathname is
2307always used whether or not the target needs to be built. Thus, if the
2308target is rebuilt it is created at the pathname discovered during
2309directory search.
2310
2311@vindex GPATH
2312If, in fact, this is the behavior you want for some or all of your
2313directories, you can use the @code{GPATH} variable to indicate this to
2314@code{make}.
2315
2316@code{GPATH} has the same syntax and format as @code{VPATH} (that is, a
2317space- or colon-delimited list of pathnames). If an out-of-date target
2318is found by directory search in a directory that also appears in
2319@code{GPATH}, then that pathname is not thrown away. The target is
2320rebuilt using the expanded path.
2321
2322@node Recipes/Search, Implicit/Search, Search Algorithm, Directory Search
2323@subsection Writing Recipes with Directory Search
2324@cindex recipes, and directory search
2325@cindex directory search (@code{VPATH}), and recipes
2326
2327When a prerequisite is found in another directory through directory search,
2328this cannot change the recipe of the rule; they will execute as written.
2329Therefore, you must write the recipe with care so that it will look for
2330the prerequisite in the directory where @code{make} finds it.
2331
2332This is done with the @dfn{automatic variables} such as @samp{$^}
2333(@pxref{Automatic Variables}).
2334For instance, the value of @samp{$^} is a
2335list of all the prerequisites of the rule, including the names of
2336the directories in which they were found, and the value of
2337@samp{$@@} is the target. Thus:@refill
2338
2339@example
2340foo.o : foo.c
2341 cc -c $(CFLAGS) $^ -o $@@
2342@end example
2343
2344@noindent
2345(The variable @code{CFLAGS} exists so you can specify flags for C
2346compilation by implicit rules; we use it here for consistency so it will
2347affect all C compilations uniformly;
2348@pxref{Implicit Variables, ,Variables Used by Implicit Rules}.)
2349
2350Often the prerequisites include header files as well, which you do not
2351want to mention in the recipe. The automatic variable @samp{$<} is
2352just the first prerequisite:
2353
2354@example
2355VPATH = src:../headers
2356foo.o : foo.c defs.h hack.h
2357 cc -c $(CFLAGS) $< -o $@@
2358@end example
2359
2360@node Implicit/Search, Libraries/Search, Recipes/Search, Directory Search
2361@subsection Directory Search and Implicit Rules
2362@cindex @code{VPATH}, and implicit rules
2363@cindex directory search (@code{VPATH}), and implicit rules
2364@cindex search path for prerequisites (@code{VPATH}), and implicit rules
2365@cindex implicit rule, and directory search
2366@cindex implicit rule, and @code{VPATH}
2367@cindex rule, implicit, and directory search
2368@cindex rule, implicit, and @code{VPATH}
2369
2370The search through the directories specified in @code{VPATH} or with
2371@code{vpath} also happens during consideration of implicit rules
2372(@pxref{Implicit Rules, ,Using Implicit Rules}).
2373
2374For example, when a file @file{foo.o} has no explicit rule, @code{make}
2375considers implicit rules, such as the built-in rule to compile
2376@file{foo.c} if that file exists. If such a file is lacking in the
2377current directory, the appropriate directories are searched for it. If
2378@file{foo.c} exists (or is mentioned in the makefile) in any of the
2379directories, the implicit rule for C compilation is applied.
2380
2381The recipes of implicit rules normally use automatic variables as a
2382matter of necessity; consequently they will use the file names found by
2383directory search with no extra effort.
2384
2385@node Libraries/Search, , Implicit/Search, Directory Search
2386@subsection Directory Search for Link Libraries
2387@cindex link libraries, and directory search
2388@cindex libraries for linking, directory search
2389@cindex directory search (@code{VPATH}), and link libraries
2390@cindex @code{VPATH}, and link libraries
2391@cindex search path for prerequisites (@code{VPATH}), and link libraries
2392@cindex @code{-l} (library search)
2393@cindex link libraries, patterns matching
2394@cindex @code{.LIBPATTERNS}, and link libraries
2395@vindex .LIBPATTERNS
2396
2397Directory search applies in a special way to libraries used with the
2398linker. This special feature comes into play when you write a prerequisite
2399whose name is of the form @samp{-l@var{name}}. (You can tell something
2400strange is going on here because the prerequisite is normally the name of a
2401file, and the @emph{file name} of a library generally looks like
2402@file{lib@var{name}.a}, not like @samp{-l@var{name}}.)@refill
2403
2404When a prerequisite's name has the form @samp{-l@var{name}}, @code{make}
2405handles it specially by searching for the file @file{lib@var{name}.so} in
2406the current directory, in directories specified by matching @code{vpath}
2407search paths and the @code{VPATH} search path, and then in the
2408directories @file{/lib}, @file{/usr/lib}, and @file{@var{prefix}/lib}
2409(normally @file{/usr/local/lib}, but MS-DOS/MS-Windows versions of
2410@code{make} behave as if @var{prefix} is defined to be the root of the
2411DJGPP installation tree).
2412
2413If that file is not found, then the file @file{lib@var{name}.a} is
2414searched for, in the same directories as above.
2415
2416For example, if there is a @file{/usr/lib/libcurses.a} library on your
2417system (and no @file{/usr/lib/libcurses.so} file), then
2418
2419@example
2420@group
2421foo : foo.c -lcurses
2422 cc $^ -o $@@
2423@end group
2424@end example
2425
2426@noindent
2427would cause the command @samp{cc foo.c /usr/lib/libcurses.a -o foo} to
2428be executed when @file{foo} is older than @file{foo.c} or than
2429@file{/usr/lib/libcurses.a}.@refill
2430
2431Although the default set of files to be searched for is
2432@file{lib@var{name}.so} and @file{lib@var{name}.a}, this is customizable
2433via the @code{.LIBPATTERNS} variable. Each word in the value of this
2434variable is a pattern string. When a prerequisite like
2435@samp{-l@var{name}} is seen, @code{make} will replace the percent in
2436each pattern in the list with @var{name} and perform the above directory
2437searches using that library filename. If no library is found, the next
2438word in the list will be used.
2439
2440The default value for @code{.LIBPATTERNS} is @samp{lib%.so lib%.a},
2441which provides the default behavior described above.
2442
2443You can turn off link library expansion completely by setting this
2444variable to an empty value.
2445
2446@node Phony Targets, Force Targets, Directory Search, Rules
2447@section Phony Targets
2448@cindex phony targets
2449@cindex targets, phony
2450@cindex targets without a file
2451
2452A phony target is one that is not really the name of a file; rather it
2453is just a name for a recipe to be executed when you make an explicit
2454request. There are two reasons to use a phony target: to avoid a
2455conflict with a file of the same name, and to improve performance.
2456
2457If you write a rule whose recipe will not create the target file, the
2458recipe will be executed every time the target comes up for remaking.
2459Here is an example:
2460
2461@example
2462@group
2463clean:
2464 rm *.o temp
2465@end group
2466@end example
2467
2468@noindent
2469Because the @code{rm} command does not create a file named @file{clean},
2470probably no such file will ever exist. Therefore, the @code{rm} command
2471will be executed every time you say @samp{make clean}.
2472@cindex @code{rm} (shell command)
2473
2474@findex .PHONY
2475The phony target will cease to work if anything ever does create a file
2476named @file{clean} in this directory. Since it has no prerequisites, the
2477file @file{clean} would inevitably be considered up to date, and its
2478recipe would not be executed. To avoid this problem, you can explicitly
2479declare the target to be phony, using the special target @code{.PHONY}
2480(@pxref{Special Targets, ,Special Built-in Target Names}) as follows:
2481
2482@example
2483.PHONY : clean
2484@end example
2485
2486@noindent
2487Once this is done, @samp{make clean} will run the recipe regardless of
2488whether there is a file named @file{clean}.
2489
2490Since it knows that phony targets do not name actual files that could be
2491remade from other files, @code{make} skips the implicit rule search for
2492phony targets (@pxref{Implicit Rules}). This is why declaring a target
2493phony is good for performance, even if you are not worried about the
2494actual file existing.
2495
2496Thus, you first write the line that states that @code{clean} is a
2497phony target, then you write the rule, like this:
2498
2499@example
2500@group
2501.PHONY: clean
2502clean:
2503 rm *.o temp
2504@end group
2505@end example
2506
2507Another example of the usefulness of phony targets is in conjunction
2508with recursive invocations of @code{make} (for more information, see
2509@ref{Recursion, ,Recursive Use of @code{make}}). In this case the
2510makefile will often contain a variable which lists a number of
2511subdirectories to be built. One way to handle this is with one rule
2512whose recipe is a shell loop over the subdirectories, like this:
2513
2514@example
2515@group
2516SUBDIRS = foo bar baz
2517
2518subdirs:
2519 for dir in $(SUBDIRS); do \
2520 $(MAKE) -C $$dir; \
2521 done
2522@end group
2523@end example
2524
2525There are problems with this method, however. First, any error
2526detected in a submake is ignored by this rule, so it will continue
2527to build the rest of the directories even when one fails. This can be
2528overcome by adding shell commands to note the error and exit, but then
2529it will do so even if @code{make} is invoked with the @code{-k}
2530option, which is unfortunate. Second, and perhaps more importantly,
2531you cannot take advantage of @code{make}'s ability to build targets in
2532parallel (@pxref{Parallel, ,Parallel Execution}), since there is only
2533one rule.
2534
2535By declaring the subdirectories as phony targets (you must do this as
2536the subdirectory obviously always exists; otherwise it won't be built)
2537you can remove these problems:
2538
2539@example
2540@group
2541SUBDIRS = foo bar baz
2542
2543.PHONY: subdirs $(SUBDIRS)
2544
2545subdirs: $(SUBDIRS)
2546
2547$(SUBDIRS):
2548 $(MAKE) -C $@@
2549
2550foo: baz
2551@end group
2552@end example
2553
2554Here we've also declared that the @file{foo} subdirectory cannot be
2555built until after the @file{baz} subdirectory is complete; this kind of
2556relationship declaration is particularly important when attempting
2557parallel builds.
2558
2559A phony target should not be a prerequisite of a real target file; if it
2560is, its recipe will be run every time @code{make} goes to update that
2561file. As long as a phony target is never a prerequisite of a real
2562target, the phony target recipe will be executed only when the phony
2563target is a specified goal (@pxref{Goals, ,Arguments to Specify the
2564Goals}).
2565
2566Phony targets can have prerequisites. When one directory contains multiple
2567programs, it is most convenient to describe all of the programs in one
2568makefile @file{./Makefile}. Since the target remade by default will be the
2569first one in the makefile, it is common to make this a phony target named
2570@samp{all} and give it, as prerequisites, all the individual programs. For
2571example:
2572
2573@example
2574all : prog1 prog2 prog3
2575.PHONY : all
2576
2577prog1 : prog1.o utils.o
2578 cc -o prog1 prog1.o utils.o
2579
2580prog2 : prog2.o
2581 cc -o prog2 prog2.o
2582
2583prog3 : prog3.o sort.o utils.o
2584 cc -o prog3 prog3.o sort.o utils.o
2585@end example
2586
2587@noindent
2588Now you can say just @samp{make} to remake all three programs, or
2589specify as arguments the ones to remake (as in @samp{make prog1
2590prog3}). Phoniness is not inherited: the prerequisites of a phony
2591target are not themselves phony, unless explicitly declared to be so.
2592
2593When one phony target is a prerequisite of another, it serves as a subroutine
2594of the other. For example, here @samp{make cleanall} will delete the
2595object files, the difference files, and the file @file{program}:
2596
2597@example
2598.PHONY: cleanall cleanobj cleandiff
2599
2600cleanall : cleanobj cleandiff
2601 rm program
2602
2603cleanobj :
2604 rm *.o
2605
2606cleandiff :
2607 rm *.diff
2608@end example
2609
2610@node Force Targets, Empty Targets, Phony Targets, Rules
2611@section Rules without Recipes or Prerequisites
2612@cindex force targets
2613@cindex targets, force
2614@cindex @code{FORCE}
2615@cindex rule, no recipe or prerequisites
2616
2617If a rule has no prerequisites or recipe, and the target of the rule
2618is a nonexistent file, then @code{make} imagines this target to have
2619been updated whenever its rule is run. This implies that all targets
2620depending on this one will always have their recipe run.
2621
2622An example will illustrate this:
2623
2624@example
2625@group
2626clean: FORCE
2627 rm $(objects)
2628FORCE:
2629@end group
2630@end example
2631
2632Here the target @samp{FORCE} satisfies the special conditions, so the
2633target @file{clean} that depends on it is forced to run its recipe.
2634There is nothing special about the name @samp{FORCE}, but that is one
2635name commonly used this way.
2636
2637As you can see, using @samp{FORCE} this way has the same results as using
2638@samp{.PHONY: clean}.
2639
2640Using @samp{.PHONY} is more explicit and more efficient. However,
2641other versions of @code{make} do not support @samp{.PHONY}; thus
2642@samp{FORCE} appears in many makefiles. @xref{Phony Targets}.
2643
2644@node Empty Targets, Special Targets, Force Targets, Rules
2645@section Empty Target Files to Record Events
2646@cindex empty targets
2647@cindex targets, empty
2648@cindex recording events with empty targets
2649
2650The @dfn{empty target} is a variant of the phony target; it is used to hold
2651recipes for an action that you request explicitly from time to time.
2652Unlike a phony target, this target file can really exist; but the file's
2653contents do not matter, and usually are empty.
2654
2655The purpose of the empty target file is to record, with its
2656last-modification time, when the rule's recipe was last executed. It
2657does so because one of the commands in the recipe is a @code{touch}
2658command to update the target file.
2659
2660The empty target file should have some prerequisites (otherwise it
2661doesn't make sense). When you ask to remake the empty target, the
2662recipe is executed if any prerequisite is more recent than the target;
2663in other words, if a prerequisite has changed since the last time you
2664remade the target. Here is an example:
2665
2666@example
2667print: foo.c bar.c
2668 lpr -p $?
2669 touch print
2670@end example
2671@cindex @code{print} target
2672@cindex @code{lpr} (shell command)
2673@cindex @code{touch} (shell command)
2674
2675@noindent
2676With this rule, @samp{make print} will execute the @code{lpr} command if
2677either source file has changed since the last @samp{make print}. The
2678automatic variable @samp{$?} is used to print only those files that have
2679changed (@pxref{Automatic Variables}).
2680
2681@node Special Targets, Multiple Targets, Empty Targets, Rules
2682@section Special Built-in Target Names
2683@cindex special targets
2684@cindex built-in special targets
2685@cindex targets, built-in special
2686
2687Certain names have special meanings if they appear as targets.
2688
2689@table @code
2690@findex .PHONY
2691@item .PHONY
2692
2693The prerequisites of the special target @code{.PHONY} are considered to
2694be phony targets. When it is time to consider such a target,
2695@code{make} will run its recipe unconditionally, regardless of
2696whether a file with that name exists or what its last-modification
2697time is. @xref{Phony Targets, ,Phony Targets}.
2698
2699@findex .SUFFIXES
2700@item .SUFFIXES
2701
2702The prerequisites of the special target @code{.SUFFIXES} are the list
2703of suffixes to be used in checking for suffix rules.
2704@xref{Suffix Rules, , Old-Fashioned Suffix Rules}.
2705
2706@findex .DEFAULT
2707@item .DEFAULT
2708
2709The recipe specified for @code{.DEFAULT} is used for any target for
2710which no rules are found (either explicit rules or implicit rules).
2711@xref{Last Resort}. If a @code{.DEFAULT} recipe is specified, every
2712file mentioned as a prerequisite, but not as a target in a rule, will have
2713that recipe executed on its behalf. @xref{Implicit Rule Search,
2714,Implicit Rule Search Algorithm}.
2715
2716@findex .PRECIOUS
2717@item .PRECIOUS
2718@cindex precious targets
2719@cindex preserving with @code{.PRECIOUS}
2720
2721The targets which @code{.PRECIOUS} depends on are given the following
2722special treatment: if @code{make} is killed or interrupted during the
2723execution of their recipes, the target is not deleted.
2724@xref{Interrupts, ,Interrupting or Killing @code{make}}. Also, if the
2725target is an intermediate file, it will not be deleted after it is no
2726longer needed, as is normally done. @xref{Chained Rules, ,Chains of
2727Implicit Rules}. In this latter respect it overlaps with the
2728@code{.SECONDARY} special target.
2729
2730You can also list the target pattern of an implicit rule (such as
2731@samp{%.o}) as a prerequisite file of the special target @code{.PRECIOUS}
2732to preserve intermediate files created by rules whose target patterns
2733match that file's name.
2734
2735@findex .INTERMEDIATE
2736@item .INTERMEDIATE
2737@cindex intermediate targets, explicit
2738
2739The targets which @code{.INTERMEDIATE} depends on are treated as
2740intermediate files. @xref{Chained Rules, ,Chains of Implicit Rules}.
2741@code{.INTERMEDIATE} with no prerequisites has no effect.
2742
2743@findex .SECONDARY
2744@item .SECONDARY
2745@cindex secondary targets
2746@cindex preserving with @code{.SECONDARY}
2747
2748The targets which @code{.SECONDARY} depends on are treated as
2749intermediate files, except that they are never automatically deleted.
2750@xref{Chained Rules, ,Chains of Implicit Rules}.
2751
2752@code{.SECONDARY} with no prerequisites causes all targets to be treated
2753as secondary (i.e., no target is removed because it is considered
2754intermediate).
2755
2756@findex .SECONDEXPANSION
2757@item .SECONDEXPANSION
2758
2759If @code{.SECONDEXPANSION} is mentioned as a target anywhere in the
2760makefile, then all prerequisite lists defined @emph{after} it appears
2761will be expanded a second time after all makefiles have been read in.
2762@xref{Secondary Expansion, ,Secondary Expansion}.
2763
2764@findex .DELETE_ON_ERROR
2765@item .DELETE_ON_ERROR
2766@cindex removing targets on failure
2767
2768If @code{.DELETE_ON_ERROR} is mentioned as a target anywhere in the
2769makefile, then @code{make} will delete the target of a rule if it has
2770changed and its recipe exits with a nonzero exit status, just as it
2771does when it receives a signal. @xref{Errors, ,Errors in Recipes}.
2772
2773@findex .IGNORE
2774@item .IGNORE
2775
2776If you specify prerequisites for @code{.IGNORE}, then @code{make} will
2777ignore errors in execution of the recipe for those particular files.
2778The recipe for @code{.IGNORE} (if any) is ignored.
2779
2780If mentioned as a target with no prerequisites, @code{.IGNORE} says to
2781ignore errors in execution of recipes for all files. This usage of
2782@samp{.IGNORE} is supported only for historical compatibility. Since
2783this affects every recipe in the makefile, it is not very useful; we
2784recommend you use the more selective ways to ignore errors in specific
2785recipes. @xref{Errors, ,Errors in Recipes}.
2786
2787@findex .LOW_RESOLUTION_TIME
2788@item .LOW_RESOLUTION_TIME
2789
2790If you specify prerequisites for @code{.LOW_RESOLUTION_TIME},
2791@command{make} assumes that these files are created by commands that
2792generate low resolution time stamps. The recipe for the
2793@code{.LOW_RESOLUTION_TIME} target are ignored.
2794
2795The high resolution file time stamps of many modern file systems
2796lessen the chance of @command{make} incorrectly concluding that a file
2797is up to date. Unfortunately, some hosts do not provide a way to set a
2798high resolution file time stamp, so commands like @samp{cp -p} that
2799explicitly set a file's time stamp must discard its subsecond part.
2800If a file is created by such a command, you should list it as a
2801prerequisite of @code{.LOW_RESOLUTION_TIME} so that @command{make}
2802does not mistakenly conclude that the file is out of date. For
2803example:
2804
2805@example
2806@group
2807.LOW_RESOLUTION_TIME: dst
2808dst: src
2809 cp -p src dst
2810@end group
2811@end example
2812
2813Since @samp{cp -p} discards the subsecond part of @file{src}'s time
2814stamp, @file{dst} is typically slightly older than @file{src} even when
2815it is up to date. The @code{.LOW_RESOLUTION_TIME} line causes
2816@command{make} to consider @file{dst} to be up to date if its time stamp
2817is at the start of the same second that @file{src}'s time stamp is in.
2818
2819Due to a limitation of the archive format, archive member time stamps
2820are always low resolution. You need not list archive members as
2821prerequisites of @code{.LOW_RESOLUTION_TIME}, as @command{make} does this
2822automatically.
2823
2824@findex .SILENT
2825@item .SILENT
2826
2827If you specify prerequisites for @code{.SILENT}, then @code{make} will
2828not print the recipe used to remake those particular files before
2829executing them. The recipe for @code{.SILENT} is ignored.
2830
2831If mentioned as a target with no prerequisites, @code{.SILENT} says not
2832to print any recipes before executing them. This usage of
2833@samp{.SILENT} is supported only for historical compatibility. We
2834recommend you use the more selective ways to silence specific recipes.
2835@xref{Echoing, ,Recipe Echoing}. If you want to silence all recipes
2836for a particular run of @code{make}, use the @samp{-s} or
2837@w{@samp{--silent}} option (@pxref{Options Summary}).
2838
2839@findex .EXPORT_ALL_VARIABLES
2840@item .EXPORT_ALL_VARIABLES
2841
2842Simply by being mentioned as a target, this tells @code{make} to
2843export all variables to child processes by default.
2844@xref{Variables/Recursion, ,Communicating Variables to a
2845Sub-@code{make}}.
2846
2847@findex .NOTPARALLEL
2848@item .NOTPARALLEL
2849@cindex parallel execution, overriding
2850
2851If @code{.NOTPARALLEL} is mentioned as a target, then this invocation
2852of @code{make} will be run serially, even if the @samp{-j} option is
2853given. Any recursively invoked @code{make} command will still run
2854recipes in parallel (unless its makefile also contains this target).
2855Any prerequisites on this target are ignored.
2856@end table
2857
2858Any defined implicit rule suffix also counts as a special target if it
2859appears as a target, and so does the concatenation of two suffixes, such
2860as @samp{.c.o}. These targets are suffix rules, an obsolete way of
2861defining implicit rules (but a way still widely used). In principle, any
2862target name could be special in this way if you break it in two and add
2863both pieces to the suffix list. In practice, suffixes normally begin with
2864@samp{.}, so these special target names also begin with @samp{.}.
2865@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
2866
2867@node Multiple Targets, Multiple Rules, Special Targets, Rules
2868@section Multiple Targets in a Rule
2869@cindex multiple targets
2870@cindex several targets in a rule
2871@cindex targets, multiple
2872@cindex rule, with multiple targets
2873
2874A rule with multiple targets is equivalent to writing many rules, each with
2875one target, and all identical aside from that. The same recipe applies to
2876all the targets, but its effect may vary because you can substitute the
2877actual target name into the recipe using @samp{$@@}. The rule contributes
2878the same prerequisites to all the targets also.
2879
2880This is useful in two cases.
2881
2882@itemize @bullet
2883@item
2884You want just prerequisites, no recipe. For example:
2885
2886@example
2887kbd.o command.o files.o: command.h
2888@end example
2889
2890@noindent
2891gives an additional prerequisite to each of the three object files
2892mentioned.
2893
2894@item
2895Similar recipes work for all the targets. The recipes do not need
2896to be absolutely identical, since the automatic variable @samp{$@@}
2897can be used to substitute the particular target to be remade into the
2898commands (@pxref{Automatic Variables}). For example:
2899
2900@example
2901@group
2902bigoutput littleoutput : text.g
2903 generate text.g -$(subst output,,$@@) > $@@
2904@end group
2905@end example
2906@findex subst
2907
2908@noindent
2909is equivalent to
2910
2911@example
2912bigoutput : text.g
2913 generate text.g -big > bigoutput
2914littleoutput : text.g
2915 generate text.g -little > littleoutput
2916@end example
2917
2918@noindent
2919Here we assume the hypothetical program @code{generate} makes two
2920types of output, one if given @samp{-big} and one if given
2921@samp{-little}.
2922@xref{Text Functions, ,Functions for String Substitution and Analysis},
2923for an explanation of the @code{subst} function.
2924@end itemize
2925
2926Suppose you would like to vary the prerequisites according to the
2927target, much as the variable @samp{$@@} allows you to vary the recipe.
2928You cannot do this with multiple targets in an ordinary rule, but you
2929can do it with a @dfn{static pattern rule}. @xref{Static Pattern,
2930,Static Pattern Rules}.
2931
2932@node Multiple Rules, Static Pattern, Multiple Targets, Rules
2933@section Multiple Rules for One Target
2934@cindex multiple rules for one target
2935@cindex several rules for one target
2936@cindex rule, multiple for one target
2937@cindex target, multiple rules for one
2938
2939One file can be the target of several rules. All the prerequisites
2940mentioned in all the rules are merged into one list of prerequisites for
2941the target. If the target is older than any prerequisite from any rule,
2942the recipe is executed.
2943
2944There can only be one recipe to be executed for a file. If more than
2945one rule gives a recipe for the same file, @code{make} uses the last
2946one given and prints an error message. (As a special case, if the
2947file's name begins with a dot, no error message is printed. This odd
2948behavior is only for compatibility with other implementations of
2949@code{make}@dots{} you should avoid using it). Occasionally it is
2950useful to have the same target invoke multiple recipes which are
2951defined in different parts of your makefile; you can use
2952@dfn{double-colon rules} (@pxref{Double-Colon}) for this.
2953
2954An extra rule with just prerequisites can be used to give a few extra
2955prerequisites to many files at once. For example, makefiles often
2956have a variable, such as @code{objects}, containing a list of all the
2957compiler output files in the system being made. An easy way to say
2958that all of them must be recompiled if @file{config.h} changes is to
2959write the following:
2960
2961@example
2962objects = foo.o bar.o
2963foo.o : defs.h
2964bar.o : defs.h test.h
2965$(objects) : config.h
2966@end example
2967
2968This could be inserted or taken out without changing the rules that really
2969specify how to make the object files, making it a convenient form to use if
2970you wish to add the additional prerequisite intermittently.
2971
2972Another wrinkle is that the additional prerequisites could be
2973specified with a variable that you set with a command line argument to
2974@code{make} (@pxref{Overriding, ,Overriding Variables}). For example,
2975
2976@example
2977@group
2978extradeps=
2979$(objects) : $(extradeps)
2980@end group
2981@end example
2982
2983@noindent
2984means that the command @samp{make extradeps=foo.h} will consider
2985@file{foo.h} as a prerequisite of each object file, but plain @samp{make}
2986will not.
2987
2988If none of the explicit rules for a target has a recipe, then @code{make}
2989searches for an applicable implicit rule to find one
2990@pxref{Implicit Rules, ,Using Implicit Rules}).
2991
2992@node Static Pattern, Double-Colon, Multiple Rules, Rules
2993@section Static Pattern Rules
2994@cindex static pattern rule
2995@cindex rule, static pattern
2996@cindex pattern rules, static (not implicit)
2997@cindex varying prerequisites
2998@cindex prerequisites, varying (static pattern)
2999
3000@dfn{Static pattern rules} are rules which specify multiple targets and
3001construct the prerequisite names for each target based on the target name.
3002They are more general than ordinary rules with multiple targets because the
3003targets do not have to have identical prerequisites. Their prerequisites must
3004be @emph{analogous}, but not necessarily @emph{identical}.
3005
3006@menu
3007* Static Usage:: The syntax of static pattern rules.
3008* Static versus Implicit:: When are they better than implicit rules?
3009@end menu
3010
3011@node Static Usage, Static versus Implicit, Static Pattern, Static Pattern
3012@subsection Syntax of Static Pattern Rules
3013@cindex static pattern rule, syntax of
3014@cindex pattern rules, static, syntax of
3015
3016Here is the syntax of a static pattern rule:
3017
3018@example
3019@var{targets} @dots{}: @var{target-pattern}: @var{prereq-patterns} @dots{}
3020 @var{recipe}
3021 @dots{}
3022@end example
3023
3024@noindent
3025The @var{targets} list specifies the targets that the rule applies to.
3026The targets can contain wildcard characters, just like the targets of
3027ordinary rules (@pxref{Wildcards, ,Using Wildcard Characters in File
3028Names}).
3029
3030@cindex target pattern, static (not implicit)
3031@cindex stem
3032The @var{target-pattern} and @var{prereq-patterns} say how to compute the
3033prerequisites of each target. Each target is matched against the
3034@var{target-pattern} to extract a part of the target name, called the
3035@dfn{stem}. This stem is substituted into each of the @var{prereq-patterns}
3036to make the prerequisite names (one from each @var{prereq-pattern}).
3037
3038Each pattern normally contains the character @samp{%} just once. When the
3039@var{target-pattern} matches a target, the @samp{%} can match any part of
3040the target name; this part is called the @dfn{stem}. The rest of the
3041pattern must match exactly. For example, the target @file{foo.o} matches
3042the pattern @samp{%.o}, with @samp{foo} as the stem. The targets
3043@file{foo.c} and @file{foo.out} do not match that pattern.@refill
3044
3045@cindex prerequisite pattern, static (not implicit)
3046The prerequisite names for each target are made by substituting the stem
3047for the @samp{%} in each prerequisite pattern. For example, if one
3048prerequisite pattern is @file{%.c}, then substitution of the stem
3049@samp{foo} gives the prerequisite name @file{foo.c}. It is legitimate
3050to write a prerequisite pattern that does not contain @samp{%}; then this
3051prerequisite is the same for all targets.
3052
3053@cindex @code{%}, quoting in static pattern
3054@cindex @code{%}, quoting with @code{\} (backslash)
3055@cindex @code{\} (backslash), to quote @code{%}
3056@cindex backslash (@code{\}), to quote @code{%}
3057@cindex quoting @code{%}, in static pattern
3058@samp{%} characters in pattern rules can be quoted with preceding
3059backslashes (@samp{\}). Backslashes that would otherwise quote @samp{%}
3060characters can be quoted with more backslashes. Backslashes that quote
3061@samp{%} characters or other backslashes are removed from the pattern
3062before it is compared to file names or has a stem substituted into it.
3063Backslashes that are not in danger of quoting @samp{%} characters go
3064unmolested. For example, the pattern @file{the\%weird\\%pattern\\} has
3065@samp{the%weird\} preceding the operative @samp{%} character, and
3066@samp{pattern\\} following it. The final two backslashes are left alone
3067because they cannot affect any @samp{%} character.@refill
3068
3069Here is an example, which compiles each of @file{foo.o} and @file{bar.o}
3070from the corresponding @file{.c} file:
3071
3072@example
3073@group
3074objects = foo.o bar.o
3075
3076all: $(objects)
3077
3078$(objects): %.o: %.c
3079 $(CC) -c $(CFLAGS) $< -o $@@
3080@end group
3081@end example
3082
3083@noindent
3084Here @samp{$<} is the automatic variable that holds the name of the
3085prerequisite and @samp{$@@} is the automatic variable that holds the name
3086of the target; see @ref{Automatic Variables}.
3087
3088Each target specified must match the target pattern; a warning is issued
3089for each target that does not. If you have a list of files, only some of
3090which will match the pattern, you can use the @code{filter} function to
3091remove nonmatching file names (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
3092
3093@example
3094files = foo.elc bar.o lose.o
3095
3096$(filter %.o,$(files)): %.o: %.c
3097 $(CC) -c $(CFLAGS) $< -o $@@
3098$(filter %.elc,$(files)): %.elc: %.el
3099 emacs -f batch-byte-compile $<
3100@end example
3101
3102@noindent
3103In this example the result of @samp{$(filter %.o,$(files))} is
3104@file{bar.o lose.o}, and the first static pattern rule causes each of
3105these object files to be updated by compiling the corresponding C source
3106file. The result of @w{@samp{$(filter %.elc,$(files))}} is
3107@file{foo.elc}, so that file is made from @file{foo.el}.@refill
3108
3109Another example shows how to use @code{$*} in static pattern rules:
3110@vindex $*@r{, and static pattern}
3111
3112@example
3113@group
3114bigoutput littleoutput : %output : text.g
3115 generate text.g -$* > $@@
3116@end group
3117@end example
3118
3119@noindent
3120When the @code{generate} command is run, @code{$*} will expand to the
3121stem, either @samp{big} or @samp{little}.
3122
3123@node Static versus Implicit, , Static Usage, Static Pattern
3124@subsection Static Pattern Rules versus Implicit Rules
3125@cindex rule, static pattern versus implicit
3126@cindex static pattern rule, versus implicit
3127
3128A static pattern rule has much in common with an implicit rule defined as a
3129pattern rule (@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}).
3130Both have a pattern for the target and patterns for constructing the
3131names of prerequisites. The difference is in how @code{make} decides
3132@emph{when} the rule applies.
3133
3134An implicit rule @emph{can} apply to any target that matches its pattern,
3135but it @emph{does} apply only when the target has no recipe otherwise
3136specified, and only when the prerequisites can be found. If more than one
3137implicit rule appears applicable, only one applies; the choice depends on
3138the order of rules.
3139
3140By contrast, a static pattern rule applies to the precise list of targets
3141that you specify in the rule. It cannot apply to any other target and it
3142invariably does apply to each of the targets specified. If two conflicting
3143rules apply, and both have recipes, that's an error.
3144
3145The static pattern rule can be better than an implicit rule for these
3146reasons:
3147
3148@itemize @bullet
3149@item
3150You may wish to override the usual implicit rule for a few
3151files whose names cannot be categorized syntactically but
3152can be given in an explicit list.
3153
3154@item
3155If you cannot be sure of the precise contents of the directories
3156you are using, you may not be sure which other irrelevant files
3157might lead @code{make} to use the wrong implicit rule. The choice
3158might depend on the order in which the implicit rule search is done.
3159With static pattern rules, there is no uncertainty: each rule applies
3160to precisely the targets specified.
3161@end itemize
3162
3163@node Double-Colon, Automatic Prerequisites, Static Pattern, Rules
3164@section Double-Colon Rules
3165@cindex double-colon rules
3166@cindex rule, double-colon (@code{::})
3167@cindex multiple rules for one target (@code{::})
3168@cindex @code{::} rules (double-colon)
3169
3170@dfn{Double-colon} rules are rules written with @samp{::} instead of
3171@samp{:} after the target names. They are handled differently from
3172ordinary rules when the same target appears in more than one rule.
3173
3174When a target appears in multiple rules, all the rules must be the same
3175type: all ordinary, or all double-colon. If they are double-colon, each
3176of them is independent of the others. Each double-colon rule's recipe
3177is executed if the target is older than any prerequisites of that rule.
3178If there are no prerequisites for that rule, its recipe is always
3179executed (even if the target already exists). This can result in
3180executing none, any, or all of the double-colon rules.
3181
3182Double-colon rules with the same target are in fact completely separate
3183from one another. Each double-colon rule is processed individually, just
3184as rules with different targets are processed.
3185
3186The double-colon rules for a target are executed in the order they appear
3187in the makefile. However, the cases where double-colon rules really make
3188sense are those where the order of executing the recipes would not matter.
3189
3190Double-colon rules are somewhat obscure and not often very useful; they
3191provide a mechanism for cases in which the method used to update a target
3192differs depending on which prerequisite files caused the update, and such
3193cases are rare.
3194
3195Each double-colon rule should specify a recipe; if it does not, an
3196implicit rule will be used if one applies.
3197@xref{Implicit Rules, ,Using Implicit Rules}.
3198
3199@node Automatic Prerequisites, , Double-Colon, Rules
3200@section Generating Prerequisites Automatically
3201@cindex prerequisites, automatic generation
3202@cindex automatic generation of prerequisites
3203@cindex generating prerequisites automatically
3204
3205In the makefile for a program, many of the rules you need to write often
3206say only that some object file depends on some header
3207file. For example, if @file{main.c} uses @file{defs.h} via an
3208@code{#include}, you would write:
3209
3210@example
3211main.o: defs.h
3212@end example
3213
3214@noindent
3215You need this rule so that @code{make} knows that it must remake
3216@file{main.o} whenever @file{defs.h} changes. You can see that for a
3217large program you would have to write dozens of such rules in your
3218makefile. And, you must always be very careful to update the makefile
3219every time you add or remove an @code{#include}.
3220@cindex @code{#include}
3221
3222@cindex @code{-M} (to compiler)
3223To avoid this hassle, most modern C compilers can write these rules for
3224you, by looking at the @code{#include} lines in the source files.
3225Usually this is done with the @samp{-M} option to the compiler.
3226For example, the command:
3227
3228@example
3229cc -M main.c
3230@end example
3231
3232@noindent
3233generates the output:
3234
3235@example
3236main.o : main.c defs.h
3237@end example
3238
3239@noindent
3240Thus you no longer have to write all those rules yourself.
3241The compiler will do it for you.
3242
3243Note that such a prerequisite constitutes mentioning @file{main.o} in a
3244makefile, so it can never be considered an intermediate file by implicit
3245rule search. This means that @code{make} won't ever remove the file
3246after using it; @pxref{Chained Rules, ,Chains of Implicit Rules}.
3247
3248@cindex @code{make depend}
3249With old @code{make} programs, it was traditional practice to use this
3250compiler feature to generate prerequisites on demand with a command like
3251@samp{make depend}. That command would create a file @file{depend}
3252containing all the automatically-generated prerequisites; then the
3253makefile could use @code{include} to read them in (@pxref{Include}).
3254
3255In GNU @code{make}, the feature of remaking makefiles makes this
3256practice obsolete---you need never tell @code{make} explicitly to
3257regenerate the prerequisites, because it always regenerates any makefile
3258that is out of date. @xref{Remaking Makefiles}.
3259
3260The practice we recommend for automatic prerequisite generation is to have
3261one makefile corresponding to each source file. For each source file
3262@file{@var{name}.c} there is a makefile @file{@var{name}.d} which lists
3263what files the object file @file{@var{name}.o} depends on. That way
3264only the source files that have changed need to be rescanned to produce
3265the new prerequisites.
3266
3267Here is the pattern rule to generate a file of prerequisites (i.e., a makefile)
3268called @file{@var{name}.d} from a C source file called @file{@var{name}.c}:
3269
3270@smallexample
3271@group
3272%.d: %.c
3273 @@set -e; rm -f $@@; \
3274 $(CC) -M $(CPPFLAGS) $< > $@@.$$$$; \
3275 sed 's,\($*\)\.o[ :]*,\1.o $@@ : ,g' < $@@.$$$$ > $@@; \
3276 rm -f $@@.$$$$
3277@end group
3278@end smallexample
3279
3280@noindent
3281@xref{Pattern Rules}, for information on defining pattern rules. The
3282@samp{-e} flag to the shell causes it to exit immediately if the
3283@code{$(CC)} command (or any other command) fails (exits with a
3284nonzero status).
3285@cindex @code{-e} (shell flag)
3286
3287@cindex @code{-MM} (to GNU compiler)
3288With the GNU C compiler, you may wish to use the @samp{-MM} flag instead
3289of @samp{-M}. This omits prerequisites on system header files.
3290@xref{Preprocessor Options, , Options Controlling the Preprocessor,
3291gcc.info, Using GNU CC}, for details.
3292
3293@cindex @code{sed} (shell command)
3294The purpose of the @code{sed} command is to translate (for example):
3295
3296@example
3297main.o : main.c defs.h
3298@end example
3299
3300@noindent
3301into:
3302
3303@example
3304main.o main.d : main.c defs.h
3305@end example
3306
3307@noindent
3308@cindex @code{.d}
3309This makes each @samp{.d} file depend on all the source and header files
3310that the corresponding @samp{.o} file depends on. @code{make} then
3311knows it must regenerate the prerequisites whenever any of the source or
3312header files changes.
3313
3314Once you've defined the rule to remake the @samp{.d} files,
3315you then use the @code{include} directive to read them all in.
3316@xref{Include}. For example:
3317
3318@example
3319@group
3320sources = foo.c bar.c
3321
3322include $(sources:.c=.d)
3323@end group
3324@end example
3325
3326@noindent
3327(This example uses a substitution variable reference to translate the
3328list of source files @samp{foo.c bar.c} into a list of prerequisite
3329makefiles, @samp{foo.d bar.d}. @xref{Substitution Refs}, for full
3330information on substitution references.) Since the @samp{.d} files are
3331makefiles like any others, @code{make} will remake them as necessary
3332with no further work from you. @xref{Remaking Makefiles}.
3333
3334Note that the @samp{.d} files contain target definitions; you should
3335be sure to place the @code{include} directive @emph{after} the first,
3336default goal in your makefiles or run the risk of having a random
3337object file become the default goal.
3338@xref{How Make Works}.
3339
3340@node Recipes, Using Variables, Rules, Top
3341@chapter Writing Recipes in Rules
3342@cindex recipes
3343@cindex recipes, how to write
3344@cindex writing recipes
3345
3346The recipe of a rule consists of one or more shell command lines to
3347be executed, one at a time, in the order they appear. Typically, the
3348result of executing these commands is that the target of the rule is
3349brought up to date.
3350
3351Users use many different shell programs, but recipes in makefiles are
3352always interpreted by @file{/bin/sh} unless the makefile specifies
3353otherwise. @xref{Execution, ,Command Execution}.
3354
3355@menu
3356* Recipe Syntax:: Recipe syntax features and pitfalls.
3357* Echoing:: How to control when recipes are echoed.
3358* Execution:: How recipes are executed.
3359* Parallel:: How recipes can be executed in parallel.
3360* Errors:: What happens after a recipe execution error.
3361* Interrupts:: What happens when a recipe is interrupted.
3362* Recursion:: Invoking @code{make} from makefiles.
3363* Sequences:: Defining canned recipes.
3364* Empty Recipes:: Defining useful, do-nothing recipes.
3365@end menu
3366
3367@node Recipe Syntax, Echoing, Recipes, Recipes
3368@section Recipe Syntax
3369@cindex recipe syntax
3370@cindex syntax of recipe
3371
3372Makefiles have the unusual property that there are really two distinct
3373syntaxes in one file. Most of the makefile uses @code{make} syntax
3374(@pxref{Makefiles, ,Writing Makefiles}). However, recipes are meant
3375to be interpreted by the shell and so they are written using shell
3376syntax. The @code{make} program does not try to understand shell
3377syntax: it performs only a very few specific translations on the
3378content of the recipe before handing it to the shell.
3379
3380Each line in the recipe must start with a tab (or the first character
3381in the value of the @code{.CMDPREFIX} variable; @pxref{Special
3382Variables}), except that the first recipe line may be attached to the
3383target-and-prerequisites line with a semicolon in between. @emph{Any}
3384line in the makefile that begins with a tab and appears in a ``rule
3385context'' (that is, after a rule has been started until another rule
3386or variable definition) will be considered part of a recipe for that
3387rule. Blank lines and lines of just comments may appear among the
3388recipe lines; they are ignored.
3389
3390Some consequences of these rules include:
3391
3392@itemize @bullet
3393@item
3394A blank line that begins with a tab is not blank: it's an empty
3395recipe (@pxref{Empty Recipes}).
3396
3397@cindex comments, in recipes
3398@cindex recipes, comments in
3399@cindex @code{#} (comments), in recipes
3400@item
3401A comment in a recipe is not a @code{make} comment; it will be
3402passed to the shell as-is. Whether the shell treats it as a comment
3403or not depends on your shell.
3404
3405@item
3406A variable definition in a ``rule context'' which is indented by a tab
3407as the first character on the line, will be considered part of a
3408recipe, not a @code{make} variable definition, and passed to the
3409shell.
3410
3411@item
3412A conditional expression (@code{ifdef}, @code{ifeq},
3413etc. @pxref{Conditional Syntax, ,Syntax of Conditionals}) in a ``rule
3414context'' which is indented by a tab as the first character on the
3415line, will be considered part of a recipe and be passed to the shell.
3416
3417@end itemize
3418
3419@menu
3420* Splitting Lines:: Breaking long recipe lines for readability.
3421* Variables in Recipes:: Using @code{make} variables in recipes.
3422@end menu
3423
3424@node Splitting Lines, Variables in Recipes, Recipe Syntax, Recipe Syntax
3425@subsection Splitting Recipe Lines
3426@cindex recipes, splitting
3427@cindex splitting recipes
3428@cindex recipes, backslash (@code{\}) in
3429@cindex recipes, quoting newlines in
3430@cindex backslash (@code{\}), in recipes
3431@cindex @code{\} (backslash), in recipes
3432@cindex quoting newline, in recipes
3433@cindex newline, quoting, in recipes
3434
3435One of the few ways in which @code{make} does interpret recipes is
3436checking for a backslash just before the newline. As in normal
3437makefile syntax, a single logical recipe line can be split into
3438multiple physical lines in the makefile by placing a backslash before
3439each newline. A sequence of lines like this is considered a single
3440recipe line, and one instance of the shell will be invoked to run it.
3441
3442However, in contrast to how they are treated in other places in a
3443makefile, backslash-newline pairs are @emph{not} removed from the
3444recipe. Both the backslash and the newline characters are preserved
3445and passed to the shell. How the backslash-newline is interpreted
3446depends on your shell. If the first character of the next line after
3447the backslash-newline is the recipe prefix character (a tab by
3448default; @pxref{Special Variables}), then that character (and only
3449that character) is removed. Whitespace is never added to the recipe.
3450
3451For example, the recipe for the all target in this makefile:
3452
3453@example
3454@group
3455all :
3456 @@echo no\
3457space
3458 @@echo no\
3459 space
3460 @@echo one \
3461 space
3462 @@echo one\
3463 space
3464@end group
3465@end example
3466
3467@noindent
3468consists of four separate shell commands where the output is:
3469
3470@example
3471@group
3472nospace
3473nospace
3474one space
3475one space
3476@end group
3477@end example
3478
3479As a more complex example, this makefile:
3480
3481@example
3482@group
3483all : ; @@echo 'hello \
3484 world' ; echo "hello \
3485 world"
3486@end group
3487@end example
3488
3489@noindent
3490will invoke one shell with a command of:
3491
3492@example
3493@group
3494echo 'hello \
3495world' ; echo "hello \
3496 world"
3497@end group
3498@end example
3499
3500@noindent
3501which, according to shell quoting rules, will yield the following output:
3502
3503@example
3504@group
3505hello \
3506world
3507hello world
3508@end group
3509@end example
3510
3511@noindent
3512Notice how the backslash/newline pair was removed inside the string
3513quoted with double quotes (@code{"@dots{}"}), but not from the string
3514quoted with single quotes (@code{'@dots{}'}). This is the way the
3515default shell (@file{/bin/sh}) handles backslash/newline pairs. If
3516you specify a different shell in your makefiles it may treat them
3517differently.
3518
3519Sometimes you want to split a long line inside of single quotes, but
3520you don't want the backslash-newline to appear in the quoted content.
3521This is often the case when passing scripts to languages such as Perl,
3522where extraneous backslashes inside the script can change its meaning
3523or even be a syntax error. One simple way of handling this is to
3524place the quoted string, or even the entire command, into a
3525@code{make} variable then use the variable in the recipe. In this
3526situation the newline quoting rules for makefiles will be used, and
3527the backslash-newline will be removed. If we rewrite our example
3528above using this method:
3529
3530@example
3531@group
3532HELLO = 'hello \
3533world'
3534
3535all : ; @@echo $(HELLO)
3536@end group
3537@end example
3538
3539@noindent
3540we will get output like this:
3541
3542@example
3543@group
3544hello world
3545@end group
3546@end example
3547
3548If you like, you can also use target-specific variables
3549(@pxref{Target-specific, ,Target-specific Variable Values}) to obtain
3550a tighter correspondence between the variable and the recipe that
3551uses it.
3552
3553@node Variables in Recipes, , Splitting Lines, Recipe Syntax
3554@subsection Using Variables in Recipes
3555@cindex variable references in recipes
3556@cindex recipes, using variables in
3557
3558The other way in which @code{make} processes recipes is by expanding
3559any variable references in them (@pxref{Reference,Basics of Variable
3560References}). This occurs after make has finished reading all the
3561makefiles and the target is determined to be out of date; so, the
3562recipes for targets which are not rebuilt are never expanded.
3563
3564Variable and function references in recipes have identical syntax and
3565semantics to references elsewhere in the makefile. They also have the
3566same quoting rules: if you want a dollar sign to appear in your
3567recipe, you must double it (@samp{$$}). For shells like the default
3568shell, that use dollar signs to introduce variables, it's important to
3569keep clear in your mind whether the variable you want to reference is
3570a @code{make} variable (use a single dollar sign) or a shell variable
3571(use two dollar signs). For example:
3572
3573@example
3574@group
3575LIST = one two three
3576all:
3577 for i in $(LIST); do \
3578 echo $$i; \
3579 done
3580@end group
3581@end example
3582
3583@noindent
3584results in the following command being passed to the shell:
3585
3586@example
3587@group
3588for i in one two three; do \
3589 echo $i; \
3590done
3591@end group
3592@end example
3593
3594@noindent
3595which generates the expected result:
3596
3597@example
3598@group
3599one
3600two
3601three
3602@end group
3603@end example
3604
3605@node Echoing, Execution, Recipe Syntax, Recipes
3606@section Recipe Echoing
3607@cindex echoing of recipes
3608@cindex silent operation
3609@cindex @code{@@} (in recipes)
3610@cindex recipes, echoing
3611@cindex printing of recipes
3612
3613Normally @code{make} prints each line of the recipe before it is
3614executed. We call this @dfn{echoing} because it gives the appearance
3615that you are typing the lines yourself.
3616
3617When a line starts with @samp{@@}, the echoing of that line is suppressed.
3618The @samp{@@} is discarded before the line is passed to the shell.
3619Typically you would use this for a command whose only effect is to print
3620something, such as an @code{echo} command to indicate progress through
3621the makefile:
3622
3623@example
3624@@echo About to make distribution files
3625@end example
3626
3627@cindex @code{-n}
3628@cindex @code{--just-print}
3629@cindex @code{--dry-run}
3630@cindex @code{--recon}
3631When @code{make} is given the flag @samp{-n} or @samp{--just-print}
3632it only echoes recipes, it won't execute them. @xref{Options Summary,
3633,Summary of Options}. In this case and only this case, even the
3634recipe lines starting with @samp{@@} are printed. This flag is useful for
3635finding out which recipes @code{make} thinks are necessary without
3636actually doing them.
3637
3638@cindex @code{-s}
3639@cindex @code{--silent}
3640@cindex @code{--quiet}
3641@findex .SILENT
3642The @samp{-s} or @samp{--silent}
3643flag to @code{make} prevents all echoing, as if all recipes
3644started with @samp{@@}. A rule in the makefile for the special target
3645@code{.SILENT} without prerequisites has the same effect
3646(@pxref{Special Targets, ,Special Built-in Target Names}).
3647@code{.SILENT} is essentially obsolete since @samp{@@} is more flexible.@refill
3648
3649@node Execution, Parallel, Echoing, Recipes
3650@section Recipe Execution
3651@cindex recipe, execution
3652@cindex execution, of recipes
3653@vindex @code{SHELL} @r{(recipe execution)}
3654
3655When it is time to execute recipes to update a target, they are
3656executed by invoking a new subshell for each line of the recipe. (In
3657practice, @code{make} may take shortcuts that do not affect the
3658results.)
3659
3660@cindex @code{cd} (shell command)
3661@cindex shell variables, setting in recipes
3662@cindex recipes setting shell variables
3663@strong{Please note:} this implies that setting shell variables and
3664invoking shell commands such as @code{cd} that set a context local to
3665each process will not affect the following lines in the recipe.@footnote{On
3666MS-DOS, the value of current working directory is @strong{global}, so
3667changing it @emph{will} affect the following recipe lines on those
3668systems.} If you want to use @code{cd} to affect the next statement,
3669put both statements in a single recipe line. Then @code{make} will
3670invoke one shell to run the entire line, and the shell will execute
3671the statements in sequence. For example:
3672
3673@example
3674foo : bar/lose
3675 cd $(@@D) && gobble $(@@F) > ../$@@
3676@end example
3677
3678@noindent
3679Here we use the shell AND operator (@code{&&}) so that if the
3680@code{cd} command fails, the script will fail without trying to invoke
3681the @code{gobble} command in the wrong directory, which could cause
3682problems (in this case it would certainly cause @file{../foo} to be
3683truncated, at least).
3684
3685@menu
3686* Choosing the Shell:: How @code{make} chooses the shell used
3687 to run recipes.
3688@end menu
3689
3690@node Choosing the Shell, , Execution, Execution
3691@subsection Choosing the Shell
3692@cindex shell, choosing the
3693@cindex @code{SHELL}, value of
3694
3695@vindex SHELL
3696The program used as the shell is taken from the variable @code{SHELL}.
3697If this variable is not set in your makefile, the program
3698@file{/bin/sh} is used as the shell.
3699
3700@cindex environment, @code{SHELL} in
3701Unlike most variables, the variable @code{SHELL} is never set from the
3702environment. This is because the @code{SHELL} environment variable is
3703used to specify your personal choice of shell program for interactive
3704use. It would be very bad for personal choices like this to affect the
3705functioning of makefiles. @xref{Environment, ,Variables from the
3706Environment}.
3707
3708Furthermore, when you do set @code{SHELL} in your makefile that value
3709is @emph{not} exported in the environment to recipe lines that
3710@code{make} invokes. Instead, the value inherited from the user's
3711environment, if any, is exported. You can override this behavior by
3712explicitly exporting @code{SHELL} (@pxref{Variables/Recursion,
3713,Communicating Variables to a Sub-@code{make}}), forcing it to be
3714passed in the environment to recipe lines.
3715
3716@vindex @code{MAKESHELL} @r{(MS-DOS alternative to @code{SHELL})}
3717However, on MS-DOS and MS-Windows the value of @code{SHELL} in the
3718environment @strong{is} used, since on those systems most users do not
3719set this variable, and therefore it is most likely set specifically to
3720be used by @code{make}. On MS-DOS, if the setting of @code{SHELL} is
3721not suitable for @code{make}, you can set the variable
3722@code{MAKESHELL} to the shell that @code{make} should use; if set it
3723will be used as the shell instead of the value of @code{SHELL}.
3724
3725@subsubheading Choosing a Shell in DOS and Windows
3726@cindex shell, in DOS and Windows
3727@cindex DOS, choosing a shell in
3728@cindex Windows, choosing a shell in
3729
3730Choosing a shell in MS-DOS and MS-Windows is much more complex than on
3731other systems.
3732
3733@vindex COMSPEC
3734On MS-DOS, if @code{SHELL} is not set, the value of the variable
3735@code{COMSPEC} (which is always set) is used instead.
3736
3737@cindex @code{SHELL}, MS-DOS specifics
3738The processing of lines that set the variable @code{SHELL} in Makefiles
3739is different on MS-DOS. The stock shell, @file{command.com}, is
3740ridiculously limited in its functionality and many users of @code{make}
3741tend to install a replacement shell. Therefore, on MS-DOS, @code{make}
3742examines the value of @code{SHELL}, and changes its behavior based on
3743whether it points to a Unix-style or DOS-style shell. This allows
3744reasonable functionality even if @code{SHELL} points to
3745@file{command.com}.
3746
3747If @code{SHELL} points to a Unix-style shell, @code{make} on MS-DOS
3748additionally checks whether that shell can indeed be found; if not, it
3749ignores the line that sets @code{SHELL}. In MS-DOS, GNU @code{make}
3750searches for the shell in the following places:
3751
3752@enumerate
3753@item
3754In the precise place pointed to by the value of @code{SHELL}. For
3755example, if the makefile specifies @samp{SHELL = /bin/sh}, @code{make}
3756will look in the directory @file{/bin} on the current drive.
3757
3758@item
3759In the current directory.
3760
3761@item
3762In each of the directories in the @code{PATH} variable, in order.
3763
3764@end enumerate
3765
3766In every directory it examines, @code{make} will first look for the
3767specific file (@file{sh} in the example above). If this is not found,
3768it will also look in that directory for that file with one of the known
3769extensions which identify executable files. For example @file{.exe},
3770@file{.com}, @file{.bat}, @file{.btm}, @file{.sh}, and some others.
3771
3772If any of these attempts is successful, the value of @code{SHELL} will
3773be set to the full pathname of the shell as found. However, if none of
3774these is found, the value of @code{SHELL} will not be changed, and thus
3775the line that sets it will be effectively ignored. This is so
3776@code{make} will only support features specific to a Unix-style shell if
3777such a shell is actually installed on the system where @code{make} runs.
3778
3779Note that this extended search for the shell is limited to the cases
3780where @code{SHELL} is set from the Makefile; if it is set in the
3781environment or command line, you are expected to set it to the full
3782pathname of the shell, exactly as things are on Unix.
3783
3784The effect of the above DOS-specific processing is that a Makefile that
3785contains @samp{SHELL = /bin/sh} (as many Unix makefiles do), will work
3786on MS-DOS unaltered if you have e.g.@: @file{sh.exe} installed in some
3787directory along your @code{PATH}.
3788
3789@node Parallel, Errors, Execution, Recipes
3790@section Parallel Execution
3791@cindex recipes, execution in parallel
3792@cindex parallel execution
3793@cindex execution, in parallel
3794@cindex job slots
3795@cindex @code{-j}
3796@cindex @code{--jobs}
3797
3798GNU @code{make} knows how to execute several recipes at once.
3799Normally, @code{make} will execute only one recipe at a time, waiting
3800for it to finish before executing the next. However, the @samp{-j} or
3801@samp{--jobs} option tells @code{make} to execute many recipes
3802simultaneously. You can inhibit parallelism in a particular makefile
3803with the @code{.NOTPARALLEL} pseudo-target (@pxref{Special
3804Targets,Special Built-in Target Names}).@refill
3805
3806On MS-DOS, the @samp{-j} option has no effect, since that system doesn't
3807support multi-processing.
3808
3809If the @samp{-j} option is followed by an integer, this is the number of
3810recipes to execute at once; this is called the number of @dfn{job slots}.
3811If there is nothing looking like an integer after the @samp{-j} option,
3812there is no limit on the number of job slots. The default number of job
3813slots is one, which means serial execution (one thing at a time).
3814
3815One unpleasant consequence of running several recipes simultaneously is
3816that output generated by the recipes appears whenever each recipe
3817sends it, so messages from different recipes may be interspersed.
3818
3819Another problem is that two processes cannot both take input from the
3820same device; so to make sure that only one recipe tries to take input
3821from the terminal at once, @code{make} will invalidate the standard
3822input streams of all but one running recipe. This means that
3823attempting to read from standard input will usually be a fatal error (a
3824@samp{Broken pipe} signal) for most child processes if there are
3825several.
3826@cindex broken pipe
3827@cindex standard input
3828
3829It is unpredictable which recipe will have a valid standard input stream
3830(which will come from the terminal, or wherever you redirect the standard
3831input of @code{make}). The first recipe run will always get it first, and
3832the first recipe started after that one finishes will get it next, and so
3833on.
3834
3835We will change how this aspect of @code{make} works if we find a better
3836alternative. In the mean time, you should not rely on any recipe using
3837standard input at all if you are using the parallel execution feature; but
3838if you are not using this feature, then standard input works normally in
3839all recipes.
3840
3841Finally, handling recursive @code{make} invocations raises issues. For
3842more information on this, see
3843@ref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
3844
3845If a recipe fails (is killed by a signal or exits with a nonzero
3846status), and errors are not ignored for that recipe
3847(@pxref{Errors, ,Errors in Recipes}),
3848the remaining recipe lines to remake the same target will not be run.
3849If a recipe fails and the @samp{-k} or @samp{--keep-going}
3850option was not given
3851(@pxref{Options Summary, ,Summary of Options}),
3852@code{make} aborts execution. If make
3853terminates for any reason (including a signal) with child processes
3854running, it waits for them to finish before actually exiting.@refill
3855
3856@cindex load average
3857@cindex limiting jobs based on load
3858@cindex jobs, limiting based on load
3859@cindex @code{-l} (load average)
3860@cindex @code{--max-load}
3861@cindex @code{--load-average}
3862When the system is heavily loaded, you will probably want to run fewer jobs
3863than when it is lightly loaded. You can use the @samp{-l} option to tell
3864@code{make} to limit the number of jobs to run at once, based on the load
3865average. The @samp{-l} or @samp{--max-load}
3866option is followed by a floating-point number. For
3867example,
3868
3869@example
3870-l 2.5
3871@end example
3872
3873@noindent
3874will not let @code{make} start more than one job if the load average is
3875above 2.5. The @samp{-l} option with no following number removes the
3876load limit, if one was given with a previous @samp{-l} option.@refill
3877
3878More precisely, when @code{make} goes to start up a job, and it already has
3879at least one job running, it checks the current load average; if it is not
3880lower than the limit given with @samp{-l}, @code{make} waits until the load
3881average goes below that limit, or until all the other jobs finish.
3882
3883By default, there is no load limit.
3884
3885@node Errors, Interrupts, Parallel, Recipes
3886@section Errors in Recipes
3887@cindex errors (in recipes)
3888@cindex recipes, errors in
3889@cindex exit status (errors)
3890
3891After each shell invocation returns, @code{make} looks at its exit
3892status. If the shell completed successfully (the exit status is
3893zero), the next line in the recipe is executed in a new shell; after
3894the last line is finished, the rule is finished.
3895
3896If there is an error (the exit status is nonzero), @code{make} gives up on
3897the current rule, and perhaps on all rules.
3898
3899Sometimes the failure of a certain recipe line does not indicate a problem.
3900For example, you may use the @code{mkdir} command to ensure that a
3901directory exists. If the directory already exists, @code{mkdir} will
3902report an error, but you probably want @code{make} to continue regardless.
3903
3904@cindex @code{-} (in recipes)
3905To ignore errors in a recipe line, write a @samp{-} at the beginning
3906of the line's text (after the initial tab). The @samp{-} is discarded
3907before the line is passed to the shell for execution.
3908
3909For example,
3910
3911@example
3912@group
3913clean:
3914 -rm -f *.o
3915@end group
3916@end example
3917@cindex @code{rm} (shell command)
3918
3919@noindent
3920This causes @code{make} to continue even if @code{rm} is unable to
3921remove a file.
3922
3923@cindex @code{-i}
3924@cindex @code{--ignore-errors}
3925@findex .IGNORE
3926When you run @code{make} with the @samp{-i} or @samp{--ignore-errors}
3927flag, errors are ignored in all recipes of all rules. A rule in the
3928makefile for the special target @code{.IGNORE} has the same effect, if
3929there are no prerequisites. These ways of ignoring errors are obsolete
3930because @samp{-} is more flexible.
3931
3932When errors are to be ignored, because of either a @samp{-} or the
3933@samp{-i} flag, @code{make} treats an error return just like success,
3934except that it prints out a message that tells you the status code
3935the shell exited with, and says that the error has been ignored.
3936
3937When an error happens that @code{make} has not been told to ignore,
3938it implies that the current target cannot be correctly remade, and neither
3939can any other that depends on it either directly or indirectly. No further
3940recipes will be executed for these targets, since their preconditions
3941have not been achieved.
3942
3943
3944@cindex @code{-k}
3945@cindex @code{--keep-going}
3946Normally @code{make} gives up immediately in this circumstance, returning a
3947nonzero status. However, if the @samp{-k} or @samp{--keep-going}
3948flag is specified, @code{make}
3949continues to consider the other prerequisites of the pending targets,
3950remaking them if necessary, before it gives up and returns nonzero status.
3951For example, after an error in compiling one object file, @samp{make -k}
3952will continue compiling other object files even though it already knows
3953that linking them will be impossible. @xref{Options Summary, ,Summary of Options}.
3954
3955The usual behavior assumes that your purpose is to get the specified
3956targets up to date; once @code{make} learns that this is impossible, it
3957might as well report the failure immediately. The @samp{-k} option says
3958that the real purpose is to test as many of the changes made in the
3959program as possible, perhaps to find several independent problems so
3960that you can correct them all before the next attempt to compile. This
3961is why Emacs' @code{compile} command passes the @samp{-k} flag by
3962default.
3963@cindex Emacs (@code{M-x compile})
3964
3965@findex .DELETE_ON_ERROR
3966@cindex deletion of target files
3967@cindex removal of target files
3968@cindex target, deleting on error
3969Usually when a recipe line fails, if it has changed the target file at all,
3970the file is corrupted and cannot be used---or at least it is not
3971completely updated. Yet the file's time stamp says that it is now up to
3972date, so the next time @code{make} runs, it will not try to update that
3973file. The situation is just the same as when the shell is killed by a
3974signal; @pxref{Interrupts}. So generally the right thing to do is to
3975delete the target file if the recipe fails after beginning to change
3976the file. @code{make} will do this if @code{.DELETE_ON_ERROR} appears
3977as a target. This is almost always what you want @code{make} to do, but
3978it is not historical practice; so for compatibility, you must explicitly
3979request it.
3980
3981@node Interrupts, Recursion, Errors, Recipes
3982@section Interrupting or Killing @code{make}
3983@cindex interrupt
3984@cindex signal
3985@cindex deletion of target files
3986@cindex removal of target files
3987@cindex target, deleting on interrupt
3988@cindex killing (interruption)
3989
3990If @code{make} gets a fatal signal while a shell is executing, it may
3991delete the target file that the recipe was supposed to update. This is
3992done if the target file's last-modification time has changed since
3993@code{make} first checked it.
3994
3995The purpose of deleting the target is to make sure that it is remade from
3996scratch when @code{make} is next run. Why is this? Suppose you type
3997@kbd{Ctrl-c} while a compiler is running, and it has begun to write an
3998object file @file{foo.o}. The @kbd{Ctrl-c} kills the compiler, resulting
3999in an incomplete file whose last-modification time is newer than the source
4000file @file{foo.c}. But @code{make} also receives the @kbd{Ctrl-c} signal
4001and deletes this incomplete file. If @code{make} did not do this, the next
4002invocation of @code{make} would think that @file{foo.o} did not require
4003updating---resulting in a strange error message from the linker when it
4004tries to link an object file half of which is missing.
4005
4006@findex .PRECIOUS
4007You can prevent the deletion of a target file in this way by making the
4008special target @code{.PRECIOUS} depend on it. Before remaking a target,
4009@code{make} checks to see whether it appears on the prerequisites of
4010@code{.PRECIOUS}, and thereby decides whether the target should be deleted
4011if a signal happens. Some reasons why you might do this are that the
4012target is updated in some atomic fashion, or exists only to record a
4013modification-time (its contents do not matter), or must exist at all
4014times to prevent other sorts of trouble.
4015
4016@node Recursion, Sequences, Interrupts, Recipes
4017@section Recursive Use of @code{make}
4018@cindex recursion
4019@cindex subdirectories, recursion for
4020
4021Recursive use of @code{make} means using @code{make} as a command in a
4022makefile. This technique is useful when you want separate makefiles for
4023various subsystems that compose a larger system. For example, suppose you
4024have a subdirectory @file{subdir} which has its own makefile, and you would
4025like the containing directory's makefile to run @code{make} on the
4026subdirectory. You can do it by writing this:
4027
4028@example
4029subsystem:
4030 cd subdir && $(MAKE)
4031@end example
4032
4033@noindent
4034or, equivalently, this (@pxref{Options Summary, ,Summary of Options}):
4035
4036@example
4037subsystem:
4038 $(MAKE) -C subdir
4039@end example
4040@cindex @code{-C}
4041@cindex @code{--directory}
4042
4043You can write recursive @code{make} commands just by copying this example,
4044but there are many things to know about how they work and why, and about
4045how the sub-@code{make} relates to the top-level @code{make}. You may
4046also find it useful to declare targets that invoke recursive
4047@code{make} commands as @samp{.PHONY} (for more discussion on when
4048this is useful, see @ref{Phony Targets}).
4049
4050@vindex @code{CURDIR}
4051For your convenience, when GNU @code{make} starts (after it has
4052processed any @code{-C} options) it sets the variable @code{CURDIR} to
4053the pathname of the current working directory. This value is never
4054touched by @code{make} again: in particular note that if you include
4055files from other directories the value of @code{CURDIR} does not
4056change. The value has the same precedence it would have if it were
4057set in the makefile (by default, an environment variable @code{CURDIR}
4058will not override this value). Note that setting this variable has no
4059impact on the operation of @code{make} (it does not cause @code{make}
4060to change its working directory, for example).
4061
4062@menu
4063* MAKE Variable:: The special effects of using @samp{$(MAKE)}.
4064* Variables/Recursion:: How to communicate variables to a sub-@code{make}.
4065* Options/Recursion:: How to communicate options to a sub-@code{make}.
4066* -w Option:: How the @samp{-w} or @samp{--print-directory} option
4067 helps debug use of recursive @code{make} commands.
4068@end menu
4069
4070@node MAKE Variable, Variables/Recursion, Recursion, Recursion
4071@subsection How the @code{MAKE} Variable Works
4072@vindex MAKE
4073@cindex recursion, and @code{MAKE} variable
4074
4075Recursive @code{make} commands should always use the variable @code{MAKE},
4076not the explicit command name @samp{make}, as shown here:
4077
4078@example
4079@group
4080subsystem:
4081 cd subdir && $(MAKE)
4082@end group
4083@end example
4084
4085The value of this variable is the file name with which @code{make} was
4086invoked. If this file name was @file{/bin/make}, then the recipe executed
4087is @samp{cd subdir && /bin/make}. If you use a special version of
4088@code{make} to run the top-level makefile, the same special version will be
4089executed for recursive invocations.
4090@cindex @code{cd} (shell command)
4091
4092@cindex +, and recipes
4093As a special feature, using the variable @code{MAKE} in the recipe of
4094a rule alters the effects of the @samp{-t} (@samp{--touch}), @samp{-n}
4095(@samp{--just-print}), or @samp{-q} (@w{@samp{--question}}) option.
4096Using the @code{MAKE} variable has the same effect as using a @samp{+}
4097character at the beginning of the recipe line. @xref{Instead of
4098Execution, ,Instead of Executing the Recipes}. This special feature
4099is only enabled if the @code{MAKE} variable appears directly in the
4100recipe: it does not apply if the @code{MAKE} variable is referenced
4101through expansion of another variable. In the latter case you must
4102use the @samp{+} token to get these special effects.@refill
4103
4104Consider the command @samp{make -t} in the above example. (The
4105@samp{-t} option marks targets as up to date without actually running
4106any recipes; see @ref{Instead of Execution}.) Following the usual
4107definition of @samp{-t}, a @samp{make -t} command in the example would
4108create a file named @file{subsystem} and do nothing else. What you
4109really want it to do is run @samp{@w{cd subdir &&} @w{make -t}}; but
4110that would require executing the recipe, and @samp{-t} says not to
4111execute recipes.@refill
4112@cindex @code{-t}, and recursion
4113@cindex recursion, and @code{-t}
4114@cindex @code{--touch}, and recursion
4115
4116The special feature makes this do what you want: whenever a recipe
4117line of a rule contains the variable @code{MAKE}, the flags @samp{-t},
4118@samp{-n} and @samp{-q} do not apply to that line. Recipe lines
4119containing @code{MAKE} are executed normally despite the presence of a
4120flag that causes most recipes not to be run. The usual
4121@code{MAKEFLAGS} mechanism passes the flags to the sub-@code{make}
4122(@pxref{Options/Recursion, ,Communicating Options to a
4123Sub-@code{make}}), so your request to touch the files, or print the
4124recipes, is propagated to the subsystem.@refill
4125
4126@node Variables/Recursion, Options/Recursion, MAKE Variable, Recursion
4127@subsection Communicating Variables to a Sub-@code{make}
4128@cindex sub-@code{make}
4129@cindex environment, and recursion
4130@cindex exporting variables
4131@cindex variables, environment
4132@cindex variables, exporting
4133@cindex recursion, and environment
4134@cindex recursion, and variables
4135
4136Variable values of the top-level @code{make} can be passed to the
4137sub-@code{make} through the environment by explicit request. These
4138variables are defined in the sub-@code{make} as defaults, but do not
4139override what is specified in the makefile used by the sub-@code{make}
4140makefile unless you use the @samp{-e} switch (@pxref{Options Summary,
4141,Summary of Options}).@refill
4142
4143To pass down, or @dfn{export}, a variable, @code{make} adds the
4144variable and its value to the environment for running each line of the
4145recipe. The sub-@code{make}, in turn, uses the environment to
4146initialize its table of variable values. @xref{Environment,
4147,Variables from the Environment}.
4148
4149Except by explicit request, @code{make} exports a variable only if it
4150is either defined in the environment initially or set on the command
4151line, and if its name consists only of letters, numbers, and underscores.
4152Some shells cannot cope with environment variable names consisting of
4153characters other than letters, numbers, and underscores.
4154
4155@cindex SHELL, exported value
4156The value of the @code{make} variable @code{SHELL} is not exported.
4157Instead, the value of the @code{SHELL} variable from the invoking
4158environment is passed to the sub-@code{make}. You can force
4159@code{make} to export its value for @code{SHELL} by using the
4160@code{export} directive, described below. @xref{Choosing the Shell}.
4161
4162The special variable @code{MAKEFLAGS} is always exported (unless you
4163unexport it). @code{MAKEFILES} is exported if you set it to anything.
4164
4165@code{make} automatically passes down variable values that were defined
4166on the command line, by putting them in the @code{MAKEFLAGS} variable.
4167@iftex
4168See the next section.
4169@end iftex
4170@ifnottex
4171@xref{Options/Recursion}.
4172@end ifnottex
4173
4174Variables are @emph{not} normally passed down if they were created by
4175default by @code{make} (@pxref{Implicit Variables, ,Variables Used by
4176Implicit Rules}). The sub-@code{make} will define these for
4177itself.@refill
4178
4179@findex export
4180If you want to export specific variables to a sub-@code{make}, use the
4181@code{export} directive, like this:
4182
4183@example
4184export @var{variable} @dots{}
4185@end example
4186
4187@noindent
4188@findex unexport
4189If you want to @emph{prevent} a variable from being exported, use the
4190@code{unexport} directive, like this:
4191
4192@example
4193unexport @var{variable} @dots{}
4194@end example
4195
4196@noindent
4197In both of these forms, the arguments to @code{export} and
4198@code{unexport} are expanded, and so could be variables or functions
4199which expand to a (list of) variable names to be (un)exported.
4200
4201As a convenience, you can define a variable and export it at the same
4202time by doing:
4203
4204@example
4205export @var{variable} = value
4206@end example
4207
4208@noindent
4209has the same result as:
4210
4211@example
4212@var{variable} = value
4213export @var{variable}
4214@end example
4215
4216@noindent
4217and
4218
4219@example
4220export @var{variable} := value
4221@end example
4222
4223@noindent
4224has the same result as:
4225
4226@example
4227@var{variable} := value
4228export @var{variable}
4229@end example
4230
4231Likewise,
4232
4233@example
4234export @var{variable} += value
4235@end example
4236
4237@noindent
4238is just like:
4239
4240@example
4241@var{variable} += value
4242export @var{variable}
4243@end example
4244
4245@noindent
4246@xref{Appending, ,Appending More Text to Variables}.
4247
4248You may notice that the @code{export} and @code{unexport} directives
4249work in @code{make} in the same way they work in the shell, @code{sh}.
4250
4251If you want all variables to be exported by default, you can use
4252@code{export} by itself:
4253
4254@example
4255export
4256@end example
4257
4258@noindent
4259This tells @code{make} that variables which are not explicitly mentioned
4260in an @code{export} or @code{unexport} directive should be exported.
4261Any variable given in an @code{unexport} directive will still @emph{not}
4262be exported. If you use @code{export} by itself to export variables by
4263default, variables whose names contain characters other than
4264alphanumerics and underscores will not be exported unless specifically
4265mentioned in an @code{export} directive.@refill
4266
4267@findex .EXPORT_ALL_VARIABLES
4268The behavior elicited by an @code{export} directive by itself was the
4269default in older versions of GNU @code{make}. If your makefiles depend
4270on this behavior and you want to be compatible with old versions of
4271@code{make}, you can write a rule for the special target
4272@code{.EXPORT_ALL_VARIABLES} instead of using the @code{export} directive.
4273This will be ignored by old @code{make}s, while the @code{export}
4274directive will cause a syntax error.@refill
4275@cindex compatibility in exporting
4276
4277Likewise, you can use @code{unexport} by itself to tell @code{make}
4278@emph{not} to export variables by default. Since this is the default
4279behavior, you would only need to do this if @code{export} had been used
4280by itself earlier (in an included makefile, perhaps). You
4281@strong{cannot} use @code{export} and @code{unexport} by themselves to
4282have variables exported for some recipes and not for others. The last
4283@code{export} or @code{unexport} directive that appears by itself
4284determines the behavior for the entire run of @code{make}.@refill
4285
4286@vindex MAKELEVEL
4287@cindex recursion, level of
4288As a special feature, the variable @code{MAKELEVEL} is changed when it
4289is passed down from level to level. This variable's value is a string
4290which is the depth of the level as a decimal number. The value is
4291@samp{0} for the top-level @code{make}; @samp{1} for a sub-@code{make},
4292@samp{2} for a sub-sub-@code{make}, and so on. The incrementation
4293happens when @code{make} sets up the environment for a recipe.@refill
4294
4295The main use of @code{MAKELEVEL} is to test it in a conditional
4296directive (@pxref{Conditionals, ,Conditional Parts of Makefiles}); this
4297way you can write a makefile that behaves one way if run recursively and
4298another way if run directly by you.@refill
4299
4300@vindex MAKEFILES
4301You can use the variable @code{MAKEFILES} to cause all sub-@code{make}
4302commands to use additional makefiles. The value of @code{MAKEFILES} is
4303a whitespace-separated list of file names. This variable, if defined in
4304the outer-level makefile, is passed down through the environment; then
4305it serves as a list of extra makefiles for the sub-@code{make} to read
4306before the usual or specified ones. @xref{MAKEFILES Variable, ,The
4307Variable @code{MAKEFILES}}.@refill
4308
4309@node Options/Recursion, -w Option, Variables/Recursion, Recursion
4310@subsection Communicating Options to a Sub-@code{make}
4311@cindex options, and recursion
4312@cindex recursion, and options
4313
4314@vindex MAKEFLAGS
4315Flags such as @samp{-s} and @samp{-k} are passed automatically to the
4316sub-@code{make} through the variable @code{MAKEFLAGS}. This variable is
4317set up automatically by @code{make} to contain the flag letters that
4318@code{make} received. Thus, if you do @w{@samp{make -ks}} then
4319@code{MAKEFLAGS} gets the value @samp{ks}.@refill
4320
4321As a consequence, every sub-@code{make} gets a value for @code{MAKEFLAGS}
4322in its environment. In response, it takes the flags from that value and
4323processes them as if they had been given as arguments.
4324@xref{Options Summary, ,Summary of Options}.
4325
4326@cindex command line variable definitions, and recursion
4327@cindex variables, command line, and recursion
4328@cindex recursion, and command line variable definitions
4329Likewise variables defined on the command line are passed to the
4330sub-@code{make} through @code{MAKEFLAGS}. Words in the value of
4331@code{MAKEFLAGS} that contain @samp{=}, @code{make} treats as variable
4332definitions just as if they appeared on the command line.
4333@xref{Overriding, ,Overriding Variables}.
4334
4335@cindex @code{-C}, and recursion
4336@cindex @code{-f}, and recursion
4337@cindex @code{-o}, and recursion
4338@cindex @code{-W}, and recursion
4339@cindex @code{--directory}, and recursion
4340@cindex @code{--file}, and recursion
4341@cindex @code{--old-file}, and recursion
4342@cindex @code{--assume-old}, and recursion
4343@cindex @code{--assume-new}, and recursion
4344@cindex @code{--new-file}, and recursion
4345@cindex recursion, and @code{-C}
4346@cindex recursion, and @code{-f}
4347@cindex recursion, and @code{-o}
4348@cindex recursion, and @code{-W}
4349The options @samp{-C}, @samp{-f}, @samp{-o}, and @samp{-W} are not put
4350into @code{MAKEFLAGS}; these options are not passed down.@refill
4351
4352@cindex @code{-j}, and recursion
4353@cindex @code{--jobs}, and recursion
4354@cindex recursion, and @code{-j}
4355@cindex job slots, and recursion
4356The @samp{-j} option is a special case (@pxref{Parallel, ,Parallel Execution}).
4357If you set it to some numeric value @samp{N} and your operating system
4358supports it (most any UNIX system will; others typically won't), the
4359parent @code{make} and all the sub-@code{make}s will communicate to
4360ensure that there are only @samp{N} jobs running at the same time
4361between them all. Note that any job that is marked recursive
4362(@pxref{Instead of Execution, ,Instead of Executing the Recipes})
4363doesn't count against the total jobs (otherwise we could get @samp{N}
4364sub-@code{make}s running and have no slots left over for any real work!)
4365
4366If your operating system doesn't support the above communication, then
4367@samp{-j 1} is always put into @code{MAKEFLAGS} instead of the value you
4368specified. This is because if the @w{@samp{-j}} option were passed down
4369to sub-@code{make}s, you would get many more jobs running in parallel
4370than you asked for. If you give @samp{-j} with no numeric argument,
4371meaning to run as many jobs as possible in parallel, this is passed
4372down, since multiple infinities are no more than one.@refill
4373
4374If you do not want to pass the other flags down, you must change the
4375value of @code{MAKEFLAGS}, like this:
4376
4377@example
4378subsystem:
4379 cd subdir && $(MAKE) MAKEFLAGS=
4380@end example
4381
4382@vindex MAKEOVERRIDES
4383The command line variable definitions really appear in the variable
4384@code{MAKEOVERRIDES}, and @code{MAKEFLAGS} contains a reference to this
4385variable. If you do want to pass flags down normally, but don't want to
4386pass down the command line variable definitions, you can reset
4387@code{MAKEOVERRIDES} to empty, like this:
4388
4389@example
4390MAKEOVERRIDES =
4391@end example
4392
4393@noindent
4394@cindex Arg list too long
4395@cindex E2BIG
4396This is not usually useful to do. However, some systems have a small
4397fixed limit on the size of the environment, and putting so much
4398information into the value of @code{MAKEFLAGS} can exceed it. If you
4399see the error message @samp{Arg list too long}, this may be the problem.
4400@findex .POSIX
4401@cindex POSIX.2
4402(For strict compliance with POSIX.2, changing @code{MAKEOVERRIDES} does
4403not affect @code{MAKEFLAGS} if the special target @samp{.POSIX} appears
4404in the makefile. You probably do not care about this.)
4405
4406@vindex MFLAGS
4407A similar variable @code{MFLAGS} exists also, for historical
4408compatibility. It has the same value as @code{MAKEFLAGS} except that it
4409does not contain the command line variable definitions, and it always
4410begins with a hyphen unless it is empty (@code{MAKEFLAGS} begins with a
4411hyphen only when it begins with an option that has no single-letter
4412version, such as @samp{--warn-undefined-variables}). @code{MFLAGS} was
4413traditionally used explicitly in the recursive @code{make} command, like
4414this:
4415
4416@example
4417subsystem:
4418 cd subdir && $(MAKE) $(MFLAGS)
4419@end example
4420
4421@noindent
4422but now @code{MAKEFLAGS} makes this usage redundant. If you want your
4423makefiles to be compatible with old @code{make} programs, use this
4424technique; it will work fine with more modern @code{make} versions too.
4425
4426@cindex setting options from environment
4427@cindex options, setting from environment
4428@cindex setting options in makefiles
4429@cindex options, setting in makefiles
4430The @code{MAKEFLAGS} variable can also be useful if you want to have
4431certain options, such as @samp{-k} (@pxref{Options Summary, ,Summary of
4432Options}), set each time you run @code{make}. You simply put a value for
4433@code{MAKEFLAGS} in your environment. You can also set @code{MAKEFLAGS} in
4434a makefile, to specify additional flags that should also be in effect for
4435that makefile. (Note that you cannot use @code{MFLAGS} this way. That
4436variable is set only for compatibility; @code{make} does not interpret a
4437value you set for it in any way.)
4438
4439When @code{make} interprets the value of @code{MAKEFLAGS} (either from the
4440environment or from a makefile), it first prepends a hyphen if the value
4441does not already begin with one. Then it chops the value into words
4442separated by blanks, and parses these words as if they were options given
4443on the command line (except that @samp{-C}, @samp{-f}, @samp{-h},
4444@samp{-o}, @samp{-W}, and their long-named versions are ignored; and there
4445is no error for an invalid option).
4446
4447If you do put @code{MAKEFLAGS} in your environment, you should be sure not
4448to include any options that will drastically affect the actions of
4449@code{make} and undermine the purpose of makefiles and of @code{make}
4450itself. For instance, the @samp{-t}, @samp{-n}, and @samp{-q} options, if
4451put in one of these variables, could have disastrous consequences and would
4452certainly have at least surprising and probably annoying effects.@refill
4453
4454@node -w Option, , Options/Recursion, Recursion
4455@subsection The @samp{--print-directory} Option
4456@cindex directories, printing them
4457@cindex printing directories
4458@cindex recursion, and printing directories
4459
4460If you use several levels of recursive @code{make} invocations, the
4461@samp{-w} or @w{@samp{--print-directory}} option can make the output a
4462lot easier to understand by showing each directory as @code{make}
4463starts processing it and as @code{make} finishes processing it. For
4464example, if @samp{make -w} is run in the directory @file{/u/gnu/make},
4465@code{make} will print a line of the form:@refill
4466
4467@example
4468make: Entering directory `/u/gnu/make'.
4469@end example
4470
4471@noindent
4472before doing anything else, and a line of the form:
4473
4474@example
4475make: Leaving directory `/u/gnu/make'.
4476@end example
4477
4478@noindent
4479when processing is completed.
4480
4481@cindex @code{-C}, and @code{-w}
4482@cindex @code{--directory}, and @code{--print-directory}
4483@cindex recursion, and @code{-w}
4484@cindex @code{-w}, and @code{-C}
4485@cindex @code{-w}, and recursion
4486@cindex @code{--print-directory}, and @code{--directory}
4487@cindex @code{--print-directory}, and recursion
4488@cindex @code{--no-print-directory}
4489@cindex @code{--print-directory}, disabling
4490@cindex @code{-w}, disabling
4491Normally, you do not need to specify this option because @samp{make}
4492does it for you: @samp{-w} is turned on automatically when you use the
4493@samp{-C} option, and in sub-@code{make}s. @code{make} will not
4494automatically turn on @samp{-w} if you also use @samp{-s}, which says to
4495be silent, or if you use @samp{--no-print-directory} to explicitly
4496disable it.
4497
4498@node Sequences, Empty Recipes, Recursion, Recipes
4499@section Defining Canned Recipes
4500@cindex canned recipes
4501@cindex recipes, canned
4502@cindex sequences of commands
4503@cindex commands, sequences of
4504
4505When the same sequence of commands is useful in making various
4506targets, you can define it as a canned sequence with the @code{define}
4507directive, and refer to the canned sequence from the recipes for those
4508targets. The canned sequence is actually a variable, so the name must
4509not conflict with other variable names.
4510
4511Here is an example of defining a canned recipes:
4512
4513@example
4514define run-yacc
4515yacc $(firstword $^)
4516mv y.tab.c $@@
4517endef
4518@end example
4519@cindex @code{yacc}
4520
4521@noindent
4522Here @code{run-yacc} is the name of the variable being defined;
4523@code{endef} marks the end of the definition; the lines in between are the
4524commands. The @code{define} directive does not expand variable references
4525and function calls in the canned sequence; the @samp{$} characters,
4526parentheses, variable names, and so on, all become part of the value of the
4527variable you are defining.
4528@xref{Defining, ,Defining Variables Verbatim},
4529for a complete explanation of @code{define}.
4530
4531The first command in this example runs Yacc on the first prerequisite of
4532whichever rule uses the canned sequence. The output file from Yacc is
4533always named @file{y.tab.c}. The second command moves the output to the
4534rule's target file name.
4535
4536To use the canned sequence, substitute the variable into the recipe of a
4537rule. You can substitute it like any other variable
4538(@pxref{Reference, ,Basics of Variable References}).
4539Because variables defined by @code{define} are recursively expanded
4540variables, all the variable references you wrote inside the @code{define}
4541are expanded now. For example:
4542
4543@example
4544foo.c : foo.y
4545 $(run-yacc)
4546@end example
4547
4548@noindent
4549@samp{foo.y} will be substituted for the variable @samp{$^} when it occurs in
4550@code{run-yacc}'s value, and @samp{foo.c} for @samp{$@@}.@refill
4551
4552This is a realistic example, but this particular one is not needed in
4553practice because @code{make} has an implicit rule to figure out these
4554commands based on the file names involved
4555(@pxref{Implicit Rules, ,Using Implicit Rules}).
4556
4557@cindex @@, and @code{define}
4558@cindex -, and @code{define}
4559@cindex +, and @code{define}
4560In recipe execution, each line of a canned sequence is treated just as
4561if the line appeared on its own in the rule, preceded by a tab. In
4562particular, @code{make} invokes a separate subshell for each line. You
4563can use the special prefix characters that affect command lines
4564(@samp{@@}, @samp{-}, and @samp{+}) on each line of a canned sequence.
4565@xref{Recipes, ,Writing Recipes in Rules}.
4566For example, using this canned sequence:
4567
4568@example
4569define frobnicate
4570@@echo "frobnicating target $@@"
4571frob-step-1 $< -o $@@-step-1
4572frob-step-2 $@@-step-1 -o $@@
4573endef
4574@end example
4575
4576@noindent
4577@code{make} will not echo the first line, the @code{echo} command.
4578But it @emph{will} echo the following two recipe lines.
4579
4580On the other hand, prefix characters on the recipe line that refers to
4581a canned sequence apply to every line in the sequence. So the rule:
4582
4583@example
4584frob.out: frob.in
4585 @@$(frobnicate)
4586@end example
4587
4588@noindent
4589does not echo @emph{any} recipe lines.
4590(@xref{Echoing, ,Recipe Echoing}, for a full explanation of @samp{@@}.)
4591
4592@node Empty Recipes, , Sequences, Recipes
4593@section Using Empty Recipes
4594@cindex empty recipes
4595@cindex recipes, empty
4596
4597It is sometimes useful to define recipes which do nothing. This is done
4598simply by giving a recipe that consists of nothing but whitespace. For
4599example:
4600
4601@example
4602target: ;
4603@end example
4604
4605@noindent
4606defines an empty recipe for @file{target}. You could also use a line
4607beginning with a recipe prefix character to define an empty recipe,
4608but this would be confusing because such a line looks empty.
4609
4610@findex .DEFAULT@r{, and empty recipes}
4611You may be wondering why you would want to define a recipe that
4612does nothing. The only reason this is useful is to prevent a target
4613from getting implicit recipes (from implicit rules or the
4614@code{.DEFAULT} special target; @pxref{Implicit Rules} and
4615@pxref{Last Resort, ,Defining Last-Resort Default Rules}).@refill
4616
4617@c !!! another reason is for canonical stamp files:
4618@ignore
4619@example
4620foo: stamp-foo ;
4621stamp-foo: foo.in
4622 create foo frm foo.in
4623 touch $@
4624@end example
4625@end ignore
4626
4627You may be inclined to define empty recipes for targets that are
4628not actual files, but only exist so that their prerequisites can be
4629remade. However, this is not the best way to do that, because the
4630prerequisites may not be remade properly if the target file actually does exist.
4631@xref{Phony Targets, ,Phony Targets}, for a better way to do this.
4632
4633@node Using Variables, Conditionals, Recipes, Top
4634@chapter How to Use Variables
4635@cindex variable
4636@cindex value
4637@cindex recursive variable expansion
4638@cindex simple variable expansion
4639
4640A @dfn{variable} is a name defined in a makefile to represent a string
4641of text, called the variable's @dfn{value}. These values are
4642substituted by explicit request into targets, prerequisites, recipes,
4643and other parts of the makefile. (In some other versions of @code{make},
4644variables are called @dfn{macros}.)
4645@cindex macro
4646
4647Variables and functions in all parts of a makefile are expanded when
4648read, except for in recipes, the right-hand sides of variable
4649definitions using @samp{=}, and the bodies of variable definitions
4650using the @code{define} directive.@refill
4651
4652Variables can represent lists of file names, options to pass to compilers,
4653programs to run, directories to look in for source files, directories to
4654write output in, or anything else you can imagine.
4655
4656A variable name may be any sequence of characters not containing @samp{:},
4657@samp{#}, @samp{=}, or leading or trailing whitespace. However,
4658variable names containing characters other than letters, numbers, and
4659underscores should be avoided, as they may be given special meanings in the
4660future, and with some shells they cannot be passed through the environment to a
4661sub-@code{make}
4662(@pxref{Variables/Recursion, ,Communicating Variables to a Sub-@code{make}}).
4663
4664Variable names are case-sensitive. The names @samp{foo}, @samp{FOO},
4665and @samp{Foo} all refer to different variables.
4666
4667It is traditional to use upper case letters in variable names, but we
4668recommend using lower case letters for variable names that serve internal
4669purposes in the makefile, and reserving upper case for parameters that
4670control implicit rules or for parameters that the user should override with
4671command options (@pxref{Overriding, ,Overriding Variables}).
4672
4673A few variables have names that are a single punctuation character or
4674just a few characters. These are the @dfn{automatic variables}, and
4675they have particular specialized uses. @xref{Automatic Variables}.
4676
4677@menu
4678* Reference:: How to use the value of a variable.
4679* Flavors:: Variables come in two flavors.
4680* Advanced:: Advanced features for referencing a variable.
4681* Values:: All the ways variables get their values.
4682* Setting:: How to set a variable in the makefile.
4683* Appending:: How to append more text to the old value
4684 of a variable.
4685* Override Directive:: How to set a variable in the makefile even if
4686 the user has set it with a command argument.
4687* Defining:: An alternate way to set a variable
4688 to a verbatim string.
4689* Environment:: Variable values can come from the environment.
4690* Target-specific:: Variable values can be defined on a per-target
4691 basis.
4692* Pattern-specific:: Target-specific variable values can be applied
4693 to a group of targets that match a pattern.
4694* Special Variables:: Variables with special meaning or behavior.
4695@end menu
4696
4697@node Reference, Flavors, Using Variables, Using Variables
4698@section Basics of Variable References
4699@cindex variables, how to reference
4700@cindex reference to variables
4701@cindex @code{$}, in variable reference
4702@cindex dollar sign (@code{$}), in variable reference
4703
4704To substitute a variable's value, write a dollar sign followed by the name
4705of the variable in parentheses or braces: either @samp{$(foo)} or
4706@samp{$@{foo@}} is a valid reference to the variable @code{foo}. This
4707special significance of @samp{$} is why you must write @samp{$$} to have
4708the effect of a single dollar sign in a file name or recipe.
4709
4710Variable references can be used in any context: targets, prerequisites,
4711recipes, most directives, and new variable values. Here is an
4712example of a common case, where a variable holds the names of all the
4713object files in a program:
4714
4715@example
4716@group
4717objects = program.o foo.o utils.o
4718program : $(objects)
4719 cc -o program $(objects)
4720
4721$(objects) : defs.h
4722@end group
4723@end example
4724
4725Variable references work by strict textual substitution. Thus, the rule
4726
4727@example
4728@group
4729foo = c
4730prog.o : prog.$(foo)
4731 $(foo)$(foo) -$(foo) prog.$(foo)
4732@end group
4733@end example
4734
4735@noindent
4736could be used to compile a C program @file{prog.c}. Since spaces before
4737the variable value are ignored in variable assignments, the value of
4738@code{foo} is precisely @samp{c}. (Don't actually write your makefiles
4739this way!)
4740
4741A dollar sign followed by a character other than a dollar sign,
4742open-parenthesis or open-brace treats that single character as the
4743variable name. Thus, you could reference the variable @code{x} with
4744@samp{$x}. However, this practice is strongly discouraged, except in
4745the case of the automatic variables (@pxref{Automatic Variables}).
4746
4747@node Flavors, Advanced, Reference, Using Variables
4748@section The Two Flavors of Variables
4749@cindex flavors of variables
4750@cindex recursive variable expansion
4751@cindex variables, flavors
4752@cindex recursively expanded variables
4753@cindex variables, recursively expanded
4754
4755There are two ways that a variable in GNU @code{make} can have a value;
4756we call them the two @dfn{flavors} of variables. The two flavors are
4757distinguished in how they are defined and in what they do when expanded.
4758
4759@cindex =
4760The first flavor of variable is a @dfn{recursively expanded} variable.
4761Variables of this sort are defined by lines using @samp{=}
4762(@pxref{Setting, ,Setting Variables}) or by the @code{define} directive
4763(@pxref{Defining, ,Defining Variables Verbatim}). The value you specify
4764is installed verbatim; if it contains references to other variables,
4765these references are expanded whenever this variable is substituted (in
4766the course of expanding some other string). When this happens, it is
4767called @dfn{recursive expansion}.@refill
4768
4769For example,
4770
4771@example
4772foo = $(bar)
4773bar = $(ugh)
4774ugh = Huh?
4775
4776all:;echo $(foo)
4777@end example
4778
4779@noindent
4780will echo @samp{Huh?}: @samp{$(foo)} expands to @samp{$(bar)} which
4781expands to @samp{$(ugh)} which finally expands to @samp{Huh?}.@refill
4782
4783This flavor of variable is the only sort supported by other versions of
4784@code{make}. It has its advantages and its disadvantages. An advantage
4785(most would say) is that:
4786
4787@example
4788CFLAGS = $(include_dirs) -O
4789include_dirs = -Ifoo -Ibar
4790@end example
4791
4792@noindent
4793will do what was intended: when @samp{CFLAGS} is expanded in a recipe,
4794it will expand to @samp{-Ifoo -Ibar -O}. A major disadvantage is that you
4795cannot append something on the end of a variable, as in
4796
4797@example
4798CFLAGS = $(CFLAGS) -O
4799@end example
4800
4801@noindent
4802because it will cause an infinite loop in the variable expansion.
4803(Actually @code{make} detects the infinite loop and reports an error.)
4804@cindex loops in variable expansion
4805@cindex variables, loops in expansion
4806
4807Another disadvantage is that any functions
4808(@pxref{Functions, ,Functions for Transforming Text})
4809referenced in the definition will be executed every time the variable is
4810expanded. This makes @code{make} run slower; worse, it causes the
4811@code{wildcard} and @code{shell} functions to give unpredictable results
4812because you cannot easily control when they are called, or even how many
4813times.
4814
4815To avoid all the problems and inconveniences of recursively expanded
4816variables, there is another flavor: simply expanded variables.
4817
4818@cindex simply expanded variables
4819@cindex variables, simply expanded
4820@cindex :=
4821@dfn{Simply expanded variables} are defined by lines using @samp{:=}
4822(@pxref{Setting, ,Setting Variables}).
4823The value of a simply expanded variable is scanned
4824once and for all, expanding any references to other variables and
4825functions, when the variable is defined. The actual value of the simply
4826expanded variable is the result of expanding the text that you write.
4827It does not contain any references to other variables; it contains their
4828values @emph{as of the time this variable was defined}. Therefore,
4829
4830@example
4831x := foo
4832y := $(x) bar
4833x := later
4834@end example
4835
4836@noindent
4837is equivalent to
4838
4839@example
4840y := foo bar
4841x := later
4842@end example
4843
4844When a simply expanded variable is referenced, its value is substituted
4845verbatim.
4846
4847Here is a somewhat more complicated example, illustrating the use of
4848@samp{:=} in conjunction with the @code{shell} function.
4849(@xref{Shell Function, , The @code{shell} Function}.) This example
4850also shows use of the variable @code{MAKELEVEL}, which is changed
4851when it is passed down from level to level.
4852(@xref{Variables/Recursion, , Communicating Variables to a
4853Sub-@code{make}}, for information about @code{MAKELEVEL}.)
4854
4855@vindex MAKELEVEL
4856@vindex MAKE
4857@example
4858@group
4859ifeq (0,$@{MAKELEVEL@})
4860whoami := $(shell whoami)
4861host-type := $(shell arch)
4862MAKE := $@{MAKE@} host-type=$@{host-type@} whoami=$@{whoami@}
4863endif
4864@end group
4865@end example
4866
4867@noindent
4868An advantage of this use of @samp{:=} is that a typical
4869`descend into a directory' recipe then looks like this:
4870
4871@example
4872@group
4873$@{subdirs@}:
4874 $@{MAKE@} -C $@@ all
4875@end group
4876@end example
4877
4878Simply expanded variables generally make complicated makefile programming
4879more predictable because they work like variables in most programming
4880languages. They allow you to redefine a variable using its own value (or
4881its value processed in some way by one of the expansion functions) and to
4882use the expansion functions much more efficiently
4883(@pxref{Functions, ,Functions for Transforming Text}).
4884
4885@cindex spaces, in variable values
4886@cindex whitespace, in variable values
4887@cindex variables, spaces in values
4888You can also use them to introduce controlled leading whitespace into
4889variable values. Leading whitespace characters are discarded from your
4890input before substitution of variable references and function calls;
4891this means you can include leading spaces in a variable value by
4892protecting them with variable references, like this:
4893
4894@example
4895nullstring :=
4896space := $(nullstring) # end of the line
4897@end example
4898
4899@noindent
4900Here the value of the variable @code{space} is precisely one space. The
4901comment @w{@samp{# end of the line}} is included here just for clarity.
4902Since trailing space characters are @emph{not} stripped from variable
4903values, just a space at the end of the line would have the same effect
4904(but be rather hard to read). If you put whitespace at the end of a
4905variable value, it is a good idea to put a comment like that at the end
4906of the line to make your intent clear. Conversely, if you do @emph{not}
4907want any whitespace characters at the end of your variable value, you
4908must remember not to put a random comment on the end of the line after
4909some whitespace, such as this:
4910
4911@example
4912dir := /foo/bar # directory to put the frobs in
4913@end example
4914
4915@noindent
4916Here the value of the variable @code{dir} is @w{@samp{/foo/bar }}
4917(with four trailing spaces), which was probably not the intention.
4918(Imagine something like @w{@samp{$(dir)/file}} with this definition!)
4919
4920@cindex conditional variable assignment
4921@cindex variables, conditional assignment
4922@cindex ?=
4923There is another assignment operator for variables, @samp{?=}. This
4924is called a conditional variable assignment operator, because it only
4925has an effect if the variable is not yet defined. This statement:
4926
4927@example
4928FOO ?= bar
4929@end example
4930
4931@noindent
4932is exactly equivalent to this
4933(@pxref{Origin Function, ,The @code{origin} Function}):
4934
4935@example
4936ifeq ($(origin FOO), undefined)
4937 FOO = bar
4938endif
4939@end example
4940
4941Note that a variable set to an empty value is still defined, so
4942@samp{?=} will not set that variable.
4943
4944@node Advanced, Values, Flavors, Using Variables
4945@section Advanced Features for Reference to Variables
4946@cindex reference to variables
4947
4948This section describes some advanced features you can use to reference
4949variables in more flexible ways.
4950
4951@menu
4952* Substitution Refs:: Referencing a variable with
4953 substitutions on the value.
4954* Computed Names:: Computing the name of the variable to refer to.
4955@end menu
4956
4957@node Substitution Refs, Computed Names, Advanced, Advanced
4958@subsection Substitution References
4959@cindex modified variable reference
4960@cindex substitution variable reference
4961@cindex variables, modified reference
4962@cindex variables, substitution reference
4963
4964@cindex variables, substituting suffix in
4965@cindex suffix, substituting in variables
4966A @dfn{substitution reference} substitutes the value of a variable with
4967alterations that you specify. It has the form
4968@samp{$(@var{var}:@var{a}=@var{b})} (or
4969@samp{$@{@var{var}:@var{a}=@var{b}@}}) and its meaning is to take the value
4970of the variable @var{var}, replace every @var{a} at the end of a word with
4971@var{b} in that value, and substitute the resulting string.
4972
4973When we say ``at the end of a word'', we mean that @var{a} must appear
4974either followed by whitespace or at the end of the value in order to be
4975replaced; other occurrences of @var{a} in the value are unaltered. For
4976example:@refill
4977
4978@example
4979foo := a.o b.o c.o
4980bar := $(foo:.o=.c)
4981@end example
4982
4983@noindent
4984sets @samp{bar} to @samp{a.c b.c c.c}. @xref{Setting, ,Setting Variables}.
4985
4986A substitution reference is actually an abbreviation for use of the
4987@code{patsubst} expansion function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}). We provide
4988substitution references as well as @code{patsubst} for compatibility with
4989other implementations of @code{make}.
4990
4991@findex patsubst
4992Another type of substitution reference lets you use the full power of
4993the @code{patsubst} function. It has the same form
4994@samp{$(@var{var}:@var{a}=@var{b})} described above, except that now
4995@var{a} must contain a single @samp{%} character. This case is
4996equivalent to @samp{$(patsubst @var{a},@var{b},$(@var{var}))}.
4997@xref{Text Functions, ,Functions for String Substitution and Analysis},
4998for a description of the @code{patsubst} function.@refill
4999
5000@example
5001@group
5002@exdent For example:
5003
5004foo := a.o b.o c.o
5005bar := $(foo:%.o=%.c)
5006@end group
5007@end example
5008
5009@noindent
5010sets @samp{bar} to @samp{a.c b.c c.c}.
5011
5012@node Computed Names, , Substitution Refs, Advanced
5013@subsection Computed Variable Names
5014@cindex nested variable reference
5015@cindex computed variable name
5016@cindex variables, computed names
5017@cindex variables, nested references
5018@cindex variables, @samp{$} in name
5019@cindex @code{$}, in variable name
5020@cindex dollar sign (@code{$}), in variable name
5021
5022Computed variable names are a complicated concept needed only for
5023sophisticated makefile programming. For most purposes you need not
5024consider them, except to know that making a variable with a dollar sign
5025in its name might have strange results. However, if you are the type
5026that wants to understand everything, or you are actually interested in
5027what they do, read on.
5028
5029Variables may be referenced inside the name of a variable. This is
5030called a @dfn{computed variable name} or a @dfn{nested variable
5031reference}. For example,
5032
5033@example
5034x = y
5035y = z
5036a := $($(x))
5037@end example
5038
5039@noindent
5040defines @code{a} as @samp{z}: the @samp{$(x)} inside @samp{$($(x))} expands
5041to @samp{y}, so @samp{$($(x))} expands to @samp{$(y)} which in turn expands
5042to @samp{z}. Here the name of the variable to reference is not stated
5043explicitly; it is computed by expansion of @samp{$(x)}. The reference
5044@samp{$(x)} here is nested within the outer variable reference.
5045
5046The previous example shows two levels of nesting, but any number of levels
5047is possible. For example, here are three levels:
5048
5049@example
5050x = y
5051y = z
5052z = u
5053a := $($($(x)))
5054@end example
5055
5056@noindent
5057Here the innermost @samp{$(x)} expands to @samp{y}, so @samp{$($(x))}
5058expands to @samp{$(y)} which in turn expands to @samp{z}; now we have
5059@samp{$(z)}, which becomes @samp{u}.
5060
5061References to recursively-expanded variables within a variable name are
5062reexpanded in the usual fashion. For example:
5063
5064@example
5065x = $(y)
5066y = z
5067z = Hello
5068a := $($(x))
5069@end example
5070
5071@noindent
5072defines @code{a} as @samp{Hello}: @samp{$($(x))} becomes @samp{$($(y))}
5073which becomes @samp{$(z)} which becomes @samp{Hello}.
5074
5075Nested variable references can also contain modified references and
5076function invocations (@pxref{Functions, ,Functions for Transforming Text}),
5077just like any other reference.
5078For example, using the @code{subst} function
5079(@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
5080
5081@example
5082@group
5083x = variable1
5084variable2 := Hello
5085y = $(subst 1,2,$(x))
5086z = y
5087a := $($($(z)))
5088@end group
5089@end example
5090
5091@noindent
5092eventually defines @code{a} as @samp{Hello}. It is doubtful that anyone
5093would ever want to write a nested reference as convoluted as this one, but
5094it works: @samp{$($($(z)))} expands to @samp{$($(y))} which becomes
5095@samp{$($(subst 1,2,$(x)))}. This gets the value @samp{variable1} from
5096@code{x} and changes it by substitution to @samp{variable2}, so that the
5097entire string becomes @samp{$(variable2)}, a simple variable reference
5098whose value is @samp{Hello}.@refill
5099
5100A computed variable name need not consist entirely of a single variable
5101reference. It can contain several variable references, as well as some
5102invariant text. For example,
5103
5104@example
5105@group
5106a_dirs := dira dirb
51071_dirs := dir1 dir2
5108@end group
5109
5110@group
5111a_files := filea fileb
51121_files := file1 file2
5113@end group
5114
5115@group
5116ifeq "$(use_a)" "yes"
5117a1 := a
5118else
5119a1 := 1
5120endif
5121@end group
5122
5123@group
5124ifeq "$(use_dirs)" "yes"
5125df := dirs
5126else
5127df := files
5128endif
5129
5130dirs := $($(a1)_$(df))
5131@end group
5132@end example
5133
5134@noindent
5135will give @code{dirs} the same value as @code{a_dirs}, @code{1_dirs},
5136@code{a_files} or @code{1_files} depending on the settings of @code{use_a}
5137and @code{use_dirs}.@refill
5138
5139Computed variable names can also be used in substitution references:
5140
5141@example
5142@group
5143a_objects := a.o b.o c.o
51441_objects := 1.o 2.o 3.o
5145
5146sources := $($(a1)_objects:.o=.c)
5147@end group
5148@end example
5149
5150@noindent
5151defines @code{sources} as either @samp{a.c b.c c.c} or @samp{1.c 2.c 3.c},
5152depending on the value of @code{a1}.
5153
5154The only restriction on this sort of use of nested variable references
5155is that they cannot specify part of the name of a function to be called.
5156This is because the test for a recognized function name is done before
5157the expansion of nested references. For example,
5158
5159@example
5160@group
5161ifdef do_sort
5162func := sort
5163else
5164func := strip
5165endif
5166@end group
5167
5168@group
5169bar := a d b g q c
5170@end group
5171
5172@group
5173foo := $($(func) $(bar))
5174@end group
5175@end example
5176
5177@noindent
5178attempts to give @samp{foo} the value of the variable @samp{sort a d b g
5179q c} or @samp{strip a d b g q c}, rather than giving @samp{a d b g q c}
5180as the argument to either the @code{sort} or the @code{strip} function.
5181This restriction could be removed in the future if that change is shown
5182to be a good idea.
5183
5184You can also use computed variable names in the left-hand side of a
5185variable assignment, or in a @code{define} directive, as in:
5186
5187@example
5188dir = foo
5189$(dir)_sources := $(wildcard $(dir)/*.c)
5190define $(dir)_print
5191lpr $($(dir)_sources)
5192endef
5193@end example
5194
5195@noindent
5196This example defines the variables @samp{dir}, @samp{foo_sources}, and
5197@samp{foo_print}.
5198
5199Note that @dfn{nested variable references} are quite different from
5200@dfn{recursively expanded variables}
5201(@pxref{Flavors, ,The Two Flavors of Variables}), though both are
5202used together in complex ways when doing makefile programming.@refill
5203
5204@node Values, Setting, Advanced, Using Variables
5205@section How Variables Get Their Values
5206@cindex variables, how they get their values
5207@cindex value, how a variable gets it
5208
5209Variables can get values in several different ways:
5210
5211@itemize @bullet
5212@item
5213You can specify an overriding value when you run @code{make}.
5214@xref{Overriding, ,Overriding Variables}.
5215
5216@item
5217You can specify a value in the makefile, either
5218with an assignment (@pxref{Setting, ,Setting Variables}) or with a
5219verbatim definition (@pxref{Defining, ,Defining Variables Verbatim}).@refill
5220
5221@item
5222Variables in the environment become @code{make} variables.
5223@xref{Environment, ,Variables from the Environment}.
5224
5225@item
5226Several @dfn{automatic} variables are given new values for each rule.
5227Each of these has a single conventional use.
5228@xref{Automatic Variables}.
5229
5230@item
5231Several variables have constant initial values.
5232@xref{Implicit Variables, ,Variables Used by Implicit Rules}.
5233@end itemize
5234
5235@node Setting, Appending, Values, Using Variables
5236@section Setting Variables
5237@cindex setting variables
5238@cindex variables, setting
5239@cindex =
5240@cindex :=
5241@cindex ?=
5242
5243To set a variable from the makefile, write a line starting with the
5244variable name followed by @samp{=} or @samp{:=}. Whatever follows the
5245@samp{=} or @samp{:=} on the line becomes the value. For example,
5246
5247@example
5248objects = main.o foo.o bar.o utils.o
5249@end example
5250
5251@noindent
5252defines a variable named @code{objects}. Whitespace around the variable
5253name and immediately after the @samp{=} is ignored.
5254
5255Variables defined with @samp{=} are @dfn{recursively expanded} variables.
5256Variables defined with @samp{:=} are @dfn{simply expanded} variables; these
5257definitions can contain variable references which will be expanded before
5258the definition is made. @xref{Flavors, ,The Two Flavors of Variables}.
5259
5260The variable name may contain function and variable references, which
5261are expanded when the line is read to find the actual variable name to use.
5262
5263There is no limit on the length of the value of a variable except the
5264amount of swapping space on the computer. When a variable definition is
5265long, it is a good idea to break it into several lines by inserting
5266backslash-newline at convenient places in the definition. This will not
5267affect the functioning of @code{make}, but it will make the makefile easier
5268to read.
5269
5270Most variable names are considered to have the empty string as a value if
5271you have never set them. Several variables have built-in initial values
5272that are not empty, but you can set them in the usual ways
5273(@pxref{Implicit Variables, ,Variables Used by Implicit Rules}).
5274Several special variables are set
5275automatically to a new value for each rule; these are called the
5276@dfn{automatic} variables (@pxref{Automatic Variables}).
5277
5278If you'd like a variable to be set to a value only if it's not already
5279set, then you can use the shorthand operator @samp{?=} instead of
5280@samp{=}. These two settings of the variable @samp{FOO} are identical
5281(@pxref{Origin Function, ,The @code{origin} Function}):
5282
5283@example
5284FOO ?= bar
5285@end example
5286
5287@noindent
5288and
5289
5290@example
5291ifeq ($(origin FOO), undefined)
5292FOO = bar
5293endif
5294@end example
5295
5296@node Appending, Override Directive, Setting, Using Variables
5297@section Appending More Text to Variables
5298@cindex +=
5299@cindex appending to variables
5300@cindex variables, appending to
5301
5302Often it is useful to add more text to the value of a variable already defined.
5303You do this with a line containing @samp{+=}, like this:
5304
5305@example
5306objects += another.o
5307@end example
5308
5309@noindent
5310This takes the value of the variable @code{objects}, and adds the text
5311@samp{another.o} to it (preceded by a single space). Thus:
5312
5313@example
5314objects = main.o foo.o bar.o utils.o
5315objects += another.o
5316@end example
5317
5318@noindent
5319sets @code{objects} to @samp{main.o foo.o bar.o utils.o another.o}.
5320
5321Using @samp{+=} is similar to:
5322
5323@example
5324objects = main.o foo.o bar.o utils.o
5325objects := $(objects) another.o
5326@end example
5327
5328@noindent
5329but differs in ways that become important when you use more complex values.
5330
5331When the variable in question has not been defined before, @samp{+=}
5332acts just like normal @samp{=}: it defines a recursively-expanded
5333variable. However, when there @emph{is} a previous definition, exactly
5334what @samp{+=} does depends on what flavor of variable you defined
5335originally. @xref{Flavors, ,The Two Flavors of Variables}, for an
5336explanation of the two flavors of variables.
5337
5338When you add to a variable's value with @samp{+=}, @code{make} acts
5339essentially as if you had included the extra text in the initial
5340definition of the variable. If you defined it first with @samp{:=},
5341making it a simply-expanded variable, @samp{+=} adds to that
5342simply-expanded definition, and expands the new text before appending it
5343to the old value just as @samp{:=} does
5344(see @ref{Setting, ,Setting Variables}, for a full explanation of @samp{:=}).
5345In fact,
5346
5347@example
5348variable := value
5349variable += more
5350@end example
5351
5352@noindent
5353is exactly equivalent to:
5354
5355@noindent
5356@example
5357variable := value
5358variable := $(variable) more
5359@end example
5360
5361On the other hand, when you use @samp{+=} with a variable that you defined
5362first to be recursively-expanded using plain @samp{=}, @code{make} does
5363something a bit different. Recall that when you define a
5364recursively-expanded variable, @code{make} does not expand the value you set
5365for variable and function references immediately. Instead it stores the text
5366verbatim, and saves these variable and function references to be expanded
5367later, when you refer to the new variable (@pxref{Flavors, ,The Two Flavors
5368of Variables}). When you use @samp{+=} on a recursively-expanded variable,
5369it is this unexpanded text to which @code{make} appends the new text you
5370specify.
5371
5372@example
5373@group
5374variable = value
5375variable += more
5376@end group
5377@end example
5378
5379@noindent
5380is roughly equivalent to:
5381
5382@example
5383@group
5384temp = value
5385variable = $(temp) more
5386@end group
5387@end example
5388
5389@noindent
5390except that of course it never defines a variable called @code{temp}.
5391The importance of this comes when the variable's old value contains
5392variable references. Take this common example:
5393
5394@example
5395CFLAGS = $(includes) -O
5396@dots{}
5397CFLAGS += -pg # enable profiling
5398@end example
5399
5400@noindent
5401The first line defines the @code{CFLAGS} variable with a reference to another
5402variable, @code{includes}. (@code{CFLAGS} is used by the rules for C
5403compilation; @pxref{Catalogue of Rules, ,Catalogue of Implicit Rules}.)
5404Using @samp{=} for the definition makes @code{CFLAGS} a recursively-expanded
5405variable, meaning @w{@samp{$(includes) -O}} is @emph{not} expanded when
5406@code{make} processes the definition of @code{CFLAGS}. Thus, @code{includes}
5407need not be defined yet for its value to take effect. It only has to be
5408defined before any reference to @code{CFLAGS}. If we tried to append to the
5409value of @code{CFLAGS} without using @samp{+=}, we might do it like this:
5410
5411@example
5412CFLAGS := $(CFLAGS) -pg # enable profiling
5413@end example
5414
5415@noindent
5416This is pretty close, but not quite what we want. Using @samp{:=}
5417redefines @code{CFLAGS} as a simply-expanded variable; this means
5418@code{make} expands the text @w{@samp{$(CFLAGS) -pg}} before setting the
5419variable. If @code{includes} is not yet defined, we get @w{@samp{ -O
5420-pg}}, and a later definition of @code{includes} will have no effect.
5421Conversely, by using @samp{+=} we set @code{CFLAGS} to the
5422@emph{unexpanded} value @w{@samp{$(includes) -O -pg}}. Thus we preserve
5423the reference to @code{includes}, so if that variable gets defined at
5424any later point, a reference like @samp{$(CFLAGS)} still uses its
5425value.
5426
5427@node Override Directive, Defining, Appending, Using Variables
5428@section The @code{override} Directive
5429@findex override
5430@cindex overriding with @code{override}
5431@cindex variables, overriding
5432
5433If a variable has been set with a command argument
5434(@pxref{Overriding, ,Overriding Variables}),
5435then ordinary assignments in the makefile are ignored. If you want to set
5436the variable in the makefile even though it was set with a command
5437argument, you can use an @code{override} directive, which is a line that
5438looks like this:@refill
5439
5440@example
5441override @var{variable} = @var{value}
5442@end example
5443
5444@noindent
5445or
5446
5447@example
5448override @var{variable} := @var{value}
5449@end example
5450
5451To append more text to a variable defined on the command line, use:
5452
5453@example
5454override @var{variable} += @var{more text}
5455@end example
5456
5457@noindent
5458@xref{Appending, ,Appending More Text to Variables}.
5459
5460The @code{override} directive was not invented for escalation in the war
5461between makefiles and command arguments. It was invented so you can alter
5462and add to values that the user specifies with command arguments.
5463
5464For example, suppose you always want the @samp{-g} switch when you run the
5465C compiler, but you would like to allow the user to specify the other
5466switches with a command argument just as usual. You could use this
5467@code{override} directive:
5468
5469@example
5470override CFLAGS += -g
5471@end example
5472
5473You can also use @code{override} directives with @code{define} directives.
5474This is done as you might expect:
5475
5476@example
5477override define foo
5478bar
5479endef
5480@end example
5481
5482@noindent
5483@iftex
5484See the next section for information about @code{define}.
5485@end iftex
5486@ifnottex
5487@xref{Defining, ,Defining Variables Verbatim}.
5488@end ifnottex
5489
5490@node Defining, Environment, Override Directive, Using Variables
5491@section Defining Variables Verbatim
5492@findex define
5493@findex endef
5494@cindex verbatim variable definition
5495@cindex defining variables verbatim
5496@cindex variables, defining verbatim
5497
5498Another way to set the value of a variable is to use the @code{define}
5499directive. This directive has an unusual syntax which allows newline
5500characters to be included in the value, which is convenient for defining
5501both canned sequences of commands
5502(@pxref{Sequences, ,Defining Canned Command Sequences}), and also
5503sections of makefile syntax to use with @code{eval} (@pxref{Eval Function}).
5504
5505The @code{define} directive is followed on the same line by the name of the
5506variable and nothing more. The value to give the variable appears on the
5507following lines. The end of the value is marked by a line containing just
5508the word @code{endef}. Aside from this difference in syntax, @code{define}
5509works just like @samp{=}: it creates a recursively-expanded variable
5510(@pxref{Flavors, ,The Two Flavors of Variables}).
5511The variable name may contain function and variable references, which
5512are expanded when the directive is read to find the actual variable name
5513to use.
5514
5515You may nest @code{define} directives: @code{make} will keep track of
5516nested directives and report an error if they are not all properly
5517closed with @code{endef}. Note that lines beginning with the recipe
5518prefix character are considered part of a recipe, so any @code{define}
5519or @code{endef} strings appearing on such a line will not be
5520considered @code{make} operators.
5521
5522@example
5523define two-lines
5524echo foo
5525echo $(bar)
5526endef
5527@end example
5528
5529The value in an ordinary assignment cannot contain a newline; but the
5530newlines that separate the lines of the value in a @code{define} become
5531part of the variable's value (except for the final newline which precedes
5532the @code{endef} and is not considered part of the value).@refill
5533
5534@need 800
5535When used in a recipe, the previous example is functionally equivalent
5536to this:
5537
5538@example
5539two-lines = echo foo; echo $(bar)
5540@end example
5541
5542@noindent
5543since two commands separated by semicolon behave much like two separate
5544shell commands. However, note that using two separate lines means
5545@code{make} will invoke the shell twice, running an independent subshell
5546for each line. @xref{Execution, ,Recipe Execution}.
5547
5548If you want variable definitions made with @code{define} to take
5549precedence over command-line variable definitions, you can use the
5550@code{override} directive together with @code{define}:
5551
5552@example
5553override define two-lines
5554foo
5555$(bar)
5556endef
5557@end example
5558
5559@noindent
5560@xref{Override Directive, ,The @code{override} Directive}.
5561
5562@node Environment, Target-specific, Defining, Using Variables
5563@section Variables from the Environment
5564
5565@cindex variables, environment
5566@cindex environment
5567Variables in @code{make} can come from the environment in which
5568@code{make} is run. Every environment variable that @code{make} sees
5569when it starts up is transformed into a @code{make} variable with the
5570same name and value. However, an explicit assignment in the makefile,
5571or with a command argument, overrides the environment. (If the
5572@samp{-e} flag is specified, then values from the environment override
5573assignments in the makefile. @xref{Options Summary, ,Summary of
5574Options}. But this is not recommended practice.)
5575
5576Thus, by setting the variable @code{CFLAGS} in your environment, you can
5577cause all C compilations in most makefiles to use the compiler switches you
5578prefer. This is safe for variables with standard or conventional meanings
5579because you know that no makefile will use them for other things. (Note
5580this is not totally reliable; some makefiles set @code{CFLAGS} explicitly
5581and therefore are not affected by the value in the environment.)
5582
5583When @code{make} runs a recipe, variables defined in the
5584makefile are placed into the environment of each shell. This allows
5585you to pass values to sub-@code{make} invocations (@pxref{Recursion,
5586,Recursive Use of @code{make}}). By default, only variables that came
5587from the environment or the command line are passed to recursive
5588invocations. You can use the @code{export} directive to pass other
5589variables. @xref{Variables/Recursion, , Communicating Variables to a
5590Sub-@code{make}}, for full details.
5591
5592Other use of variables from the environment is not recommended. It is not
5593wise for makefiles to depend for their functioning on environment variables
5594set up outside their control, since this would cause different users to get
5595different results from the same makefile. This is against the whole
5596purpose of most makefiles.
5597
5598@cindex SHELL, import from environment
5599Such problems would be especially likely with the variable
5600@code{SHELL}, which is normally present in the environment to specify
5601the user's choice of interactive shell. It would be very undesirable
5602for this choice to affect @code{make}; so, @code{make} handles the
5603@code{SHELL} environment variable in a special way; see @ref{Choosing
5604the Shell}.@refill
5605
5606@node Target-specific, Pattern-specific, Environment, Using Variables
5607@section Target-specific Variable Values
5608@cindex target-specific variables
5609@cindex variables, target-specific
5610
5611Variable values in @code{make} are usually global; that is, they are the
5612same regardless of where they are evaluated (unless they're reset, of
5613course). One exception to that is automatic variables
5614(@pxref{Automatic Variables}).
5615
5616The other exception is @dfn{target-specific variable values}. This
5617feature allows you to define different values for the same variable,
5618based on the target that @code{make} is currently building. As with
5619automatic variables, these values are only available within the context
5620of a target's recipe (and in other target-specific assignments).
5621
5622Set a target-specific variable value like this:
5623
5624@example
5625@var{target} @dots{} : @var{variable-assignment}
5626@end example
5627
5628@noindent
5629or like this:
5630
5631@example
5632@var{target} @dots{} : override @var{variable-assignment}
5633@end example
5634
5635@noindent
5636or like this:
5637
5638@example
5639@var{target} @dots{} : export @var{variable-assignment}
5640@end example
5641
5642Multiple @var{target} values create a target-specific variable value for
5643each member of the target list individually.
5644
5645The @var{variable-assignment} can be any valid form of assignment;
5646recursive (@samp{=}), static (@samp{:=}), appending (@samp{+=}), or
5647conditional (@samp{?=}). All variables that appear within the
5648@var{variable-assignment} are evaluated within the context of the
5649target: thus, any previously-defined target-specific variable values
5650will be in effect. Note that this variable is actually distinct from
5651any ``global'' value: the two variables do not have to have the same
5652flavor (recursive vs.@: static).
5653
5654Target-specific variables have the same priority as any other makefile
5655variable. Variables provided on the command line (and in the
5656environment if the @samp{-e} option is in force) will take precedence.
5657Specifying the @code{override} directive will allow the target-specific
5658variable value to be preferred.
5659
5660There is one more special feature of target-specific variables: when
5661you define a target-specific variable that variable value is also in
5662effect for all prerequisites of this target, and all their
5663prerequisites, etc.@: (unless those prerequisites override that variable
5664with their own target-specific variable value). So, for example, a
5665statement like this:
5666
5667@example
5668prog : CFLAGS = -g
5669prog : prog.o foo.o bar.o
5670@end example
5671
5672@noindent
5673will set @code{CFLAGS} to @samp{-g} in the recipe for @file{prog}, but
5674it will also set @code{CFLAGS} to @samp{-g} in the recipes that create
5675@file{prog.o}, @file{foo.o}, and @file{bar.o}, and any recipes which
5676create their prerequisites.
5677
5678Be aware that a given prerequisite will only be built once per
5679invocation of make, at most. If the same file is a prerequisite of
5680multiple targets, and each of those targets has a different value for
5681the same target-specific variable, then the first target to be built
5682will cause that prerequisite to be built and the prerequisite will
5683inherit the target-specific value from the first target. It will
5684ignore the target-specific values from any other targets.
5685
5686@node Pattern-specific, Special Variables, Target-specific, Using Variables
5687@section Pattern-specific Variable Values
5688@cindex pattern-specific variables
5689@cindex variables, pattern-specific
5690
5691In addition to target-specific variable values
5692(@pxref{Target-specific, ,Target-specific Variable Values}), GNU
5693@code{make} supports pattern-specific variable values. In this form,
5694the variable is defined for any target that matches the pattern
5695specified. If a target matches more than one pattern, all the
5696matching pattern-specific variables are interpreted in the order in
5697which they were defined in the makefile, and collected together into
5698one set. Variables defined in this way are searched after any
5699target-specific variables defined explicitly for that target, and
5700before target-specific variables defined for the parent target.
5701
5702Set a pattern-specific variable value like this:
5703
5704@example
5705@var{pattern} @dots{} : @var{variable-assignment}
5706@end example
5707
5708@noindent
5709or like this:
5710
5711@example
5712@var{pattern} @dots{} : override @var{variable-assignment}
5713@end example
5714
5715@noindent
5716where @var{pattern} is a %-pattern. As with target-specific variable
5717values, multiple @var{pattern} values create a pattern-specific variable
5718value for each pattern individually. The @var{variable-assignment} can
5719be any valid form of assignment. Any command line variable setting will
5720take precedence, unless @code{override} is specified.
5721
5722For example:
5723
5724@example
5725%.o : CFLAGS = -O
5726@end example
5727
5728@noindent
5729will assign @code{CFLAGS} the value of @samp{-O} for all targets
5730matching the pattern @code{%.o}.
5731
5732@node Special Variables, , Pattern-specific, Using Variables
5733@comment node-name, next, previous, up
5734@section Other Special Variables
5735@cindex makefiles, and special variables
5736@cindex special variables
5737
5738GNU @code{make} supports some variables that have special properties.
5739
5740@table @code
5741
5742@vindex MAKEFILE_LIST @r{(list of parsed makefiles)}
5743@cindex makefiles, and @code{MAKEFILE_LIST} variable
5744@cindex including (@code{MAKEFILE_LIST} variable)
5745@item MAKEFILE_LIST
5746Contains the name of each makefile that is parsed by @code{make}, in
5747the order in which it was parsed. The name is appended just
5748before @code{make} begins to parse the makefile. Thus, if the first
5749thing a makefile does is examine the last word in this variable, it
5750will be the name of the current makefile. Once the current makefile
5751has used @code{include}, however, the last word will be the
5752just-included makefile.
5753
5754If a makefile named @code{Makefile} has this content:
5755
5756@example
5757@group
5758name1 := $(lastword $(MAKEFILE_LIST))
5759
5760include inc.mk
5761
5762name2 := $(lastword $(MAKEFILE_LIST))
5763
5764all:
5765 @@echo name1 = $(name1)
5766 @@echo name2 = $(name2)
5767@end group
5768@end example
5769
5770@noindent
5771then you would expect to see this output:
5772
5773@example
5774@group
5775name1 = Makefile
5776name2 = inc.mk
5777@end group
5778@end example
5779
5780@vindex .DEFAULT_GOAL @r{(define default goal)}
5781@item .DEFAULT_GOAL
5782Sets the default goal to be used if no targets were specified on the
5783command line (@pxref{Goals, , Arguments to Specify the Goals}). The
5784@code{.DEFAULT_GOAL} variable allows you to discover the current
5785default goal, restart the default goal selection algorithm by clearing
5786its value, or to explicitly set the default goal. The following
5787example illustrates these cases:
5788
5789@example
5790@group
5791# Query the default goal.
5792ifeq ($(.DEFAULT_GOAL),)
5793 $(warning no default goal is set)
5794endif
5795
5796.PHONY: foo
5797foo: ; @@echo $@@
5798
5799$(warning default goal is $(.DEFAULT_GOAL))
5800
5801# Reset the default goal.
5802.DEFAULT_GOAL :=
5803
5804.PHONY: bar
5805bar: ; @@echo $@@
5806
5807$(warning default goal is $(.DEFAULT_GOAL))
5808
5809# Set our own.
5810.DEFAULT_GOAL := foo
5811@end group
5812@end example
5813
5814This makefile prints:
5815
5816@example
5817@group
5818no default goal is set
5819default goal is foo
5820default goal is bar
5821foo
5822@end group
5823@end example
5824
5825Note that assigning more than one target name to @code{.DEFAULT_GOAL} is
5826illegal and will result in an error.
5827
5828@vindex MAKE_RESTARTS @r{(number of times @code{make} has restarted)}
5829@item MAKE_RESTARTS
5830This variable is set only if this instance of @code{make} has
5831restarted (@pxref{Remaking Makefiles, , How Makefiles Are Remade}): it
5832will contain the number of times this instance has restarted. Note
5833this is not the same as recursion (counted by the @code{MAKELEVEL}
5834variable). You should not set, modify, or export this variable.
5835
5836@vindex .CMDPREFIX @r{(change the recipe prefix character)}
5837@item .CMDPREFIX
5838The first character of the value of this variable is used as the
5839character make assumes is introducing a recipe line. If the variable
5840is empty (as it is by default) that character is the standard tab
5841character. For example, this is a valid makefile:
5842
5843@example
5844@group
5845.CMDPREFIX = >
5846all:
5847> @@echo Hello, world
5848@end group
5849@end example
5850
5851The value of @code{.CMDPREFIX} can be changed multiple times; once set
5852it stays in effect for all rules parsed until it is modified.
5853
5854@vindex .VARIABLES @r{(list of variables)}
5855@item .VARIABLES
5856Expands to a list of the @emph{names} of all global variables defined
5857so far. This includes variables which have empty values, as well as
5858built-in variables (@pxref{Implicit Variables, , Variables Used by
5859Implicit Rules}), but does not include any variables which are only
5860defined in a target-specific context. Note that any value you assign
5861to this variable will be ignored; it will always return its special
5862value.
5863
5864@c @vindex .TARGETS @r{(list of targets)}
5865@c @item .TARGETS
5866@c The second special variable is @code{.TARGETS}. When expanded, the
5867@c value consists of a list of all targets defined in all makefiles read
5868@c up until that point. Note it's not enough for a file to be simply
5869@c mentioned in the makefile to be listed in this variable, even if it
5870@c would match an implicit rule and become an ``implicit target''. The
5871@c file must appear as a target, on the left-hand side of a ``:'', to be
5872@c considered a target for the purposes of this variable.
5873
5874@vindex .FEATURES @r{(list of supported features)}
5875@item .FEATURES
5876Expands to a list of special features supported by this version of
5877@code{make}. Possible values include:
5878
5879@table @samp
5880
5881@item archives
5882Supports @code{ar} (archive) files using special filename syntax.
5883@xref{Archives, ,Using @code{make} to Update Archive Files}.
5884
5885@item check-symlink
5886Supports the @code{-L} (@code{--check-symlink-times}) flag.
5887@xref{Options Summary, ,Summary of Options}.
5888
5889@item else-if
5890Supports ``else if'' non-nested conditionals. @xref{Conditional
5891Syntax, ,Syntax of Conditionals}.
5892
5893@item jobserver
5894Supports ``job server'' enhanced parallel builds. @xref{Parallel,
5895,Parallel Execution}.
5896
5897@item second-expansion
5898Supports secondary expansion of prerequisite lists.
5899
5900@item order-only
5901Supports order-only prerequisites. @xref{Prerequisite Types, ,Types
5902of Prerequisites}.
5903
5904@item target-specific
5905Supports target-specific and pattern-specific variable assignments.
5906@xref{Target-specific, ,Target-specific Variable Values}.
5907
5908@end table
5909
5910@vindex .INCLUDE_DIRS @r{(list of include directories)}
5911@item .INCLUDE_DIRS
5912Expands to a list of directories that @code{make} searches for
5913included makefiles (@pxref{Include, , Including Other Makefiles}).
5914
5915@end table
5916
5917@node Conditionals, Functions, Using Variables, Top
5918@chapter Conditional Parts of Makefiles
5919
5920@cindex conditionals
5921A @dfn{conditional} directive causes part of a makefile to be obeyed
5922or ignored depending on the values of variables. Conditionals can
5923compare the value of one variable to another, or the value of a
5924variable to a constant string. Conditionals control what @code{make}
5925actually ``sees'' in the makefile, so they @emph{cannot} be used to
5926control recipes at the time of execution.@refill
5927
5928@menu
5929* Conditional Example:: Example of a conditional
5930* Conditional Syntax:: The syntax of conditionals.
5931* Testing Flags:: Conditionals that test flags.
5932@end menu
5933
5934@node Conditional Example, Conditional Syntax, Conditionals, Conditionals
5935@section Example of a Conditional
5936
5937The following example of a conditional tells @code{make} to use one
5938set of libraries if the @code{CC} variable is @samp{gcc}, and a
5939different set of libraries otherwise. It works by controlling which
5940of two recipe lines will be used for the rule. The result is that
5941@samp{CC=gcc} as an argument to @code{make} changes not only which
5942compiler is used but also which libraries are linked.
5943
5944@example
5945libs_for_gcc = -lgnu
5946normal_libs =
5947
5948foo: $(objects)
5949ifeq ($(CC),gcc)
5950 $(CC) -o foo $(objects) $(libs_for_gcc)
5951else
5952 $(CC) -o foo $(objects) $(normal_libs)
5953endif
5954@end example
5955
5956This conditional uses three directives: one @code{ifeq}, one @code{else}
5957and one @code{endif}.
5958
5959The @code{ifeq} directive begins the conditional, and specifies the
5960condition. It contains two arguments, separated by a comma and surrounded
5961by parentheses. Variable substitution is performed on both arguments and
5962then they are compared. The lines of the makefile following the
5963@code{ifeq} are obeyed if the two arguments match; otherwise they are
5964ignored.
5965
5966The @code{else} directive causes the following lines to be obeyed if the
5967previous conditional failed. In the example above, this means that the
5968second alternative linking command is used whenever the first alternative
5969is not used. It is optional to have an @code{else} in a conditional.
5970
5971The @code{endif} directive ends the conditional. Every conditional must
5972end with an @code{endif}. Unconditional makefile text follows.
5973
5974As this example illustrates, conditionals work at the textual level:
5975the lines of the conditional are treated as part of the makefile, or
5976ignored, according to the condition. This is why the larger syntactic
5977units of the makefile, such as rules, may cross the beginning or the
5978end of the conditional.
5979
5980When the variable @code{CC} has the value @samp{gcc}, the above example has
5981this effect:
5982
5983@example
5984foo: $(objects)
5985 $(CC) -o foo $(objects) $(libs_for_gcc)
5986@end example
5987
5988@noindent
5989When the variable @code{CC} has any other value, the effect is this:
5990
5991@example
5992foo: $(objects)
5993 $(CC) -o foo $(objects) $(normal_libs)
5994@end example
5995
5996Equivalent results can be obtained in another way by conditionalizing a
5997variable assignment and then using the variable unconditionally:
5998
5999@example
6000libs_for_gcc = -lgnu
6001normal_libs =
6002
6003ifeq ($(CC),gcc)
6004 libs=$(libs_for_gcc)
6005else
6006 libs=$(normal_libs)
6007endif
6008
6009foo: $(objects)
6010 $(CC) -o foo $(objects) $(libs)
6011@end example
6012
6013@node Conditional Syntax, Testing Flags, Conditional Example, Conditionals
6014@section Syntax of Conditionals
6015@findex ifdef
6016@findex ifeq
6017@findex ifndef
6018@findex ifneq
6019@findex else
6020@findex endif
6021
6022The syntax of a simple conditional with no @code{else} is as follows:
6023
6024@example
6025@var{conditional-directive}
6026@var{text-if-true}
6027endif
6028@end example
6029
6030@noindent
6031The @var{text-if-true} may be any lines of text, to be considered as part
6032of the makefile if the condition is true. If the condition is false, no
6033text is used instead.
6034
6035The syntax of a complex conditional is as follows:
6036
6037@example
6038@var{conditional-directive}
6039@var{text-if-true}
6040else
6041@var{text-if-false}
6042endif
6043@end example
6044
6045or:
6046
6047@example
6048@var{conditional-directive}
6049@var{text-if-one-is-true}
6050else @var{conditional-directive}
6051@var{text-if-true}
6052else
6053@var{text-if-false}
6054endif
6055@end example
6056
6057@noindent
6058There can be as many ``@code{else} @var{conditional-directive}''
6059clauses as necessary. Once a given condition is true,
6060@var{text-if-true} is used and no other clause is used; if no
6061condition is true then @var{text-if-false} is used. The
6062@var{text-if-true} and @var{text-if-false} can be any number of lines
6063of text.
6064
6065The syntax of the @var{conditional-directive} is the same whether the
6066conditional is simple or complex; after an @code{else} or not. There
6067are four different directives that test different conditions. Here is
6068a table of them:
6069
6070@table @code
6071@item ifeq (@var{arg1}, @var{arg2})
6072@itemx ifeq '@var{arg1}' '@var{arg2}'
6073@itemx ifeq "@var{arg1}" "@var{arg2}"
6074@itemx ifeq "@var{arg1}" '@var{arg2}'
6075@itemx ifeq '@var{arg1}' "@var{arg2}"
6076Expand all variable references in @var{arg1} and @var{arg2} and
6077compare them. If they are identical, the @var{text-if-true} is
6078effective; otherwise, the @var{text-if-false}, if any, is effective.
6079
6080Often you want to test if a variable has a non-empty value. When the
6081value results from complex expansions of variables and functions,
6082expansions you would consider empty may actually contain whitespace
6083characters and thus are not seen as empty. However, you can use the
6084@code{strip} function (@pxref{Text Functions}) to avoid interpreting
6085whitespace as a non-empty value. For example:
6086
6087@example
6088@group
6089ifeq ($(strip $(foo)),)
6090@var{text-if-empty}
6091endif
6092@end group
6093@end example
6094
6095@noindent
6096will evaluate @var{text-if-empty} even if the expansion of
6097@code{$(foo)} contains whitespace characters.
6098
6099@item ifneq (@var{arg1}, @var{arg2})
6100@itemx ifneq '@var{arg1}' '@var{arg2}'
6101@itemx ifneq "@var{arg1}" "@var{arg2}"
6102@itemx ifneq "@var{arg1}" '@var{arg2}'
6103@itemx ifneq '@var{arg1}' "@var{arg2}"
6104Expand all variable references in @var{arg1} and @var{arg2} and
6105compare them. If they are different, the @var{text-if-true} is
6106effective; otherwise, the @var{text-if-false}, if any, is effective.
6107
6108@item ifdef @var{variable-name}
6109The @code{ifdef} form takes the @emph{name} of a variable as its
6110argument, not a reference to a variable. The value of that variable
6111has a non-empty value, the @var{text-if-true} is effective; otherwise,
6112the @var{text-if-false}, if any, is effective. Variables that have
6113never been defined have an empty value. The text @var{variable-name}
6114is expanded, so it could be a variable or function that expands
6115to the name of a variable. For example:
6116
6117@example
6118bar = true
6119foo = bar
6120ifdef $(foo)
6121frobozz = yes
6122endif
6123@end example
6124
6125The variable reference @code{$(foo)} is expanded, yielding @code{bar},
6126which is considered to be the name of a variable. The variable
6127@code{bar} is not expanded, but its value is examined to determine if
6128it is non-empty.
6129
6130Note that @code{ifdef} only tests whether a variable has a value. It
6131does not expand the variable to see if that value is nonempty.
6132Consequently, tests using @code{ifdef} return true for all definitions
6133except those like @code{foo =}. To test for an empty value, use
6134@w{@code{ifeq ($(foo),)}}. For example,
6135
6136@example
6137bar =
6138foo = $(bar)
6139ifdef foo
6140frobozz = yes
6141else
6142frobozz = no
6143endif
6144@end example
6145
6146@noindent
6147sets @samp{frobozz} to @samp{yes}, while:
6148
6149@example
6150foo =
6151ifdef foo
6152frobozz = yes
6153else
6154frobozz = no
6155endif
6156@end example
6157
6158@noindent
6159sets @samp{frobozz} to @samp{no}.
6160
6161@item ifndef @var{variable-name}
6162If the variable @var{variable-name} has an empty value, the
6163@var{text-if-true} is effective; otherwise, the @var{text-if-false},
6164if any, is effective. The rules for expansion and testing of
6165@var{variable-name} are identical to the @code{ifdef} directive.
6166@end table
6167
6168Extra spaces are allowed and ignored at the beginning of the
6169conditional directive line, but a tab is not allowed. (If the line
6170begins with a tab, it will be considered part of a recipe for a rule.)
6171Aside from this, extra spaces or tabs may be inserted with no effect
6172anywhere except within the directive name or within an argument. A
6173comment starting with @samp{#} may appear at the end of the line.
6174
6175The other two directives that play a part in a conditional are @code{else}
6176and @code{endif}. Each of these directives is written as one word, with no
6177arguments. Extra spaces are allowed and ignored at the beginning of the
6178line, and spaces or tabs at the end. A comment starting with @samp{#} may
6179appear at the end of the line.
6180
6181Conditionals affect which lines of the makefile @code{make} uses. If
6182the condition is true, @code{make} reads the lines of the
6183@var{text-if-true} as part of the makefile; if the condition is false,
6184@code{make} ignores those lines completely. It follows that syntactic
6185units of the makefile, such as rules, may safely be split across the
6186beginning or the end of the conditional.@refill
6187
6188@code{make} evaluates conditionals when it reads a makefile.
6189Consequently, you cannot use automatic variables in the tests of
6190conditionals because they are not defined until recipes are run
6191(@pxref{Automatic Variables}).
6192
6193To prevent intolerable confusion, it is not permitted to start a
6194conditional in one makefile and end it in another. However, you may
6195write an @code{include} directive within a conditional, provided you do
6196not attempt to terminate the conditional inside the included file.
6197
6198@node Testing Flags, , Conditional Syntax, Conditionals
6199@section Conditionals that Test Flags
6200
6201You can write a conditional that tests @code{make} command flags such as
6202@samp{-t} by using the variable @code{MAKEFLAGS} together with the
6203@code{findstring} function
6204(@pxref{Text Functions, , Functions for String Substitution and Analysis}).
6205This is useful when @code{touch} is not enough to make a file appear up
6206to date.
6207
6208The @code{findstring} function determines whether one string appears as a
6209substring of another. If you want to test for the @samp{-t} flag,
6210use @samp{t} as the first string and the value of @code{MAKEFLAGS} as
6211the other.
6212
6213For example, here is how to arrange to use @samp{ranlib -t} to finish
6214marking an archive file up to date:
6215
6216@example
6217archive.a: @dots{}
6218ifneq (,$(findstring t,$(MAKEFLAGS)))
6219 +touch archive.a
6220 +ranlib -t archive.a
6221else
6222 ranlib archive.a
6223endif
6224@end example
6225
6226@noindent
6227The @samp{+} prefix marks those recipe lines as ``recursive'' so that
6228they will be executed despite use of the @samp{-t} flag.
6229@xref{Recursion, ,Recursive Use of @code{make}}.
6230
6231@node Functions, Running, Conditionals, Top
6232@chapter Functions for Transforming Text
6233@cindex functions
6234
6235@dfn{Functions} allow you to do text processing in the makefile to
6236compute the files to operate on or the commands to use in recipes.
6237You use a function in a @dfn{function call}, where you give the name
6238of the function and some text (the @dfn{arguments}) for the function
6239to operate on. The result of the function's processing is substituted
6240into the makefile at the point of the call, just as a variable might
6241be substituted.
6242
6243@menu
6244* Syntax of Functions:: How to write a function call.
6245* Text Functions:: General-purpose text manipulation functions.
6246* File Name Functions:: Functions for manipulating file names.
6247* Conditional Functions:: Functions that implement conditions.
6248* Foreach Function:: Repeat some text with controlled variation.
6249* Call Function:: Expand a user-defined function.
6250* Value Function:: Return the un-expanded value of a variable.
6251* Eval Function:: Evaluate the arguments as makefile syntax.
6252* Origin Function:: Find where a variable got its value.
6253* Flavor Function:: Find out the flavor of a variable.
6254* Shell Function:: Substitute the output of a shell command.
6255* Make Control Functions:: Functions that control how make runs.
6256@end menu
6257
6258@node Syntax of Functions, Text Functions, Functions, Functions
6259@section Function Call Syntax
6260@cindex @code{$}, in function call
6261@cindex dollar sign (@code{$}), in function call
6262@cindex arguments of functions
6263@cindex functions, syntax of
6264
6265A function call resembles a variable reference. It looks like this:
6266
6267@example
6268$(@var{function} @var{arguments})
6269@end example
6270
6271@noindent
6272or like this:
6273
6274@example
6275$@{@var{function} @var{arguments}@}
6276@end example
6277
6278Here @var{function} is a function name; one of a short list of names
6279that are part of @code{make}. You can also essentially create your own
6280functions by using the @code{call} builtin function.
6281
6282The @var{arguments} are the arguments of the function. They are
6283separated from the function name by one or more spaces or tabs, and if
6284there is more than one argument, then they are separated by commas.
6285Such whitespace and commas are not part of an argument's value. The
6286delimiters which you use to surround the function call, whether
6287parentheses or braces, can appear in an argument only in matching pairs;
6288the other kind of delimiters may appear singly. If the arguments
6289themselves contain other function calls or variable references, it is
6290wisest to use the same kind of delimiters for all the references; write
6291@w{@samp{$(subst a,b,$(x))}}, not @w{@samp{$(subst a,b,$@{x@})}}. This
6292is because it is clearer, and because only one type of delimiter is
6293matched to find the end of the reference.
6294
6295The text written for each argument is processed by substitution of
6296variables and function calls to produce the argument value, which
6297is the text on which the function acts. The substitution is done in the
6298order in which the arguments appear.
6299
6300Commas and unmatched parentheses or braces cannot appear in the text of an
6301argument as written; leading spaces cannot appear in the text of the first
6302argument as written. These characters can be put into the argument value
6303by variable substitution. First define variables @code{comma} and
6304@code{space} whose values are isolated comma and space characters, then
6305substitute these variables where such characters are wanted, like this:
6306
6307@example
6308@group
6309comma:= ,
6310empty:=
6311space:= $(empty) $(empty)
6312foo:= a b c
6313bar:= $(subst $(space),$(comma),$(foo))
6314# @r{bar is now `a,b,c'.}
6315@end group
6316@end example
6317
6318@noindent
6319Here the @code{subst} function replaces each space with a comma, through
6320the value of @code{foo}, and substitutes the result.
6321
6322@node Text Functions, File Name Functions, Syntax of Functions, Functions
6323@section Functions for String Substitution and Analysis
6324@cindex functions, for text
6325
6326Here are some functions that operate on strings:
6327
6328@table @code
6329@item $(subst @var{from},@var{to},@var{text})
6330@findex subst
6331Performs a textual replacement on the text @var{text}: each occurrence
6332of @var{from} is replaced by @var{to}. The result is substituted for
6333the function call. For example,
6334
6335@example
6336$(subst ee,EE,feet on the street)
6337@end example
6338
6339substitutes the string @samp{fEEt on the strEEt}.
6340
6341@item $(patsubst @var{pattern},@var{replacement},@var{text})
6342@findex patsubst
6343Finds whitespace-separated words in @var{text} that match
6344@var{pattern} and replaces them with @var{replacement}. Here
6345@var{pattern} may contain a @samp{%} which acts as a wildcard,
6346matching any number of any characters within a word. If
6347@var{replacement} also contains a @samp{%}, the @samp{%} is replaced
6348by the text that matched the @samp{%} in @var{pattern}. Only the first
6349@samp{%} in the @var{pattern} and @var{replacement} is treated this
6350way; any subsequent @samp{%} is unchanged.@refill
6351
6352@cindex @code{%}, quoting in @code{patsubst}
6353@cindex @code{%}, quoting with @code{\} (backslash)
6354@cindex @code{\} (backslash), to quote @code{%}
6355@cindex backslash (@code{\}), to quote @code{%}
6356@cindex quoting @code{%}, in @code{patsubst}
6357@samp{%} characters in @code{patsubst} function invocations can be
6358quoted with preceding backslashes (@samp{\}). Backslashes that would
6359otherwise quote @samp{%} characters can be quoted with more backslashes.
6360Backslashes that quote @samp{%} characters or other backslashes are
6361removed from the pattern before it is compared file names or has a stem
6362substituted into it. Backslashes that are not in danger of quoting
6363@samp{%} characters go unmolested. For example, the pattern
6364@file{the\%weird\\%pattern\\} has @samp{the%weird\} preceding the
6365operative @samp{%} character, and @samp{pattern\\} following it. The
6366final two backslashes are left alone because they cannot affect any
6367@samp{%} character.@refill
6368
6369Whitespace between words is folded into single space characters;
6370leading and trailing whitespace is discarded.
6371
6372For example,
6373
6374@example
6375$(patsubst %.c,%.o,x.c.c bar.c)
6376@end example
6377
6378@noindent
6379produces the value @samp{x.c.o bar.o}.
6380
6381Substitution references (@pxref{Substitution Refs, ,Substitution
6382References}) are a simpler way to get the effect of the @code{patsubst}
6383function:
6384
6385@example
6386$(@var{var}:@var{pattern}=@var{replacement})
6387@end example
6388
6389@noindent
6390is equivalent to
6391
6392@example
6393$(patsubst @var{pattern},@var{replacement},$(@var{var}))
6394@end example
6395
6396The second shorthand simplifies one of the most common uses of
6397@code{patsubst}: replacing the suffix at the end of file names.
6398
6399@example
6400$(@var{var}:@var{suffix}=@var{replacement})
6401@end example
6402
6403@noindent
6404is equivalent to
6405
6406@example
6407$(patsubst %@var{suffix},%@var{replacement},$(@var{var}))
6408@end example
6409
6410@noindent
6411For example, you might have a list of object files:
6412
6413@example
6414objects = foo.o bar.o baz.o
6415@end example
6416
6417@noindent
6418To get the list of corresponding source files, you could simply write:
6419
6420@example
6421$(objects:.o=.c)
6422@end example
6423
6424@noindent
6425instead of using the general form:
6426
6427@example
6428$(patsubst %.o,%.c,$(objects))
6429@end example
6430
6431@item $(strip @var{string})
6432@cindex stripping whitespace
6433@cindex whitespace, stripping
6434@cindex spaces, stripping
6435@findex strip
6436Removes leading and trailing whitespace from @var{string} and replaces
6437each internal sequence of one or more whitespace characters with a
6438single space. Thus, @samp{$(strip a b c )} results in @w{@samp{a b c}}.
6439
6440The function @code{strip} can be very useful when used in conjunction
6441with conditionals. When comparing something with the empty string
6442@samp{} using @code{ifeq} or @code{ifneq}, you usually want a string of
6443just whitespace to match the empty string (@pxref{Conditionals}).
6444
6445Thus, the following may fail to have the desired results:
6446
6447@example
6448.PHONY: all
6449ifneq "$(needs_made)" ""
6450all: $(needs_made)
6451else
6452all:;@@echo 'Nothing to make!'
6453endif
6454@end example
6455
6456@noindent
6457Replacing the variable reference @w{@samp{$(needs_made)}} with the
6458function call @w{@samp{$(strip $(needs_made))}} in the @code{ifneq}
6459directive would make it more robust.@refill
6460
6461@item $(findstring @var{find},@var{in})
6462@findex findstring
6463@cindex searching for strings
6464@cindex finding strings
6465@cindex strings, searching for
6466Searches @var{in} for an occurrence of @var{find}. If it occurs, the
6467value is @var{find}; otherwise, the value is empty. You can use this
6468function in a conditional to test for the presence of a specific
6469substring in a given string. Thus, the two examples,
6470
6471@example
6472$(findstring a,a b c)
6473$(findstring a,b c)
6474@end example
6475
6476@noindent
6477produce the values @samp{a} and @samp{} (the empty string),
6478respectively. @xref{Testing Flags}, for a practical application of
6479@code{findstring}.@refill
6480
6481@need 750
6482@findex filter
6483@cindex filtering words
6484@cindex words, filtering
6485@item $(filter @var{pattern}@dots{},@var{text})
6486Returns all whitespace-separated words in @var{text} that @emph{do} match
6487any of the @var{pattern} words, removing any words that @emph{do not}
6488match. The patterns are written using @samp{%}, just like the patterns
6489used in the @code{patsubst} function above.@refill
6490
6491The @code{filter} function can be used to separate out different types
6492of strings (such as file names) in a variable. For example:
6493
6494@example
6495sources := foo.c bar.c baz.s ugh.h
6496foo: $(sources)
6497 cc $(filter %.c %.s,$(sources)) -o foo
6498@end example
6499
6500@noindent
6501says that @file{foo} depends of @file{foo.c}, @file{bar.c},
6502@file{baz.s} and @file{ugh.h} but only @file{foo.c}, @file{bar.c} and
6503@file{baz.s} should be specified in the command to the
6504compiler.@refill
6505
6506@item $(filter-out @var{pattern}@dots{},@var{text})
6507@findex filter-out
6508@cindex filtering out words
6509@cindex words, filtering out
6510Returns all whitespace-separated words in @var{text} that @emph{do not}
6511match any of the @var{pattern} words, removing the words that @emph{do}
6512match one or more. This is the exact opposite of the @code{filter}
6513function.@refill
6514
6515For example, given:
6516
6517@example
6518@group
6519objects=main1.o foo.o main2.o bar.o
6520mains=main1.o main2.o
6521@end group
6522@end example
6523
6524@noindent
6525the following generates a list which contains all the object files not
6526in @samp{mains}:
6527
6528@example
6529$(filter-out $(mains),$(objects))
6530@end example
6531
6532@need 1500
6533@findex sort
6534@cindex sorting words
6535@item $(sort @var{list})
6536Sorts the words of @var{list} in lexical order, removing duplicate
6537words. The output is a list of words separated by single spaces.
6538Thus,
6539
6540@example
6541$(sort foo bar lose)
6542@end example
6543
6544@noindent
6545returns the value @samp{bar foo lose}.
6546
6547@cindex removing duplicate words
6548@cindex duplicate words, removing
6549@cindex words, removing duplicates
6550Incidentally, since @code{sort} removes duplicate words, you can use
6551it for this purpose even if you don't care about the sort order.
6552
6553@item $(word @var{n},@var{text})
6554@findex word
6555@cindex word, selecting a
6556@cindex selecting a word
6557Returns the @var{n}th word of @var{text}. The legitimate values of
6558@var{n} start from 1. If @var{n} is bigger than the number of words
6559in @var{text}, the value is empty. For example,
6560
6561@example
6562$(word 2, foo bar baz)
6563@end example
6564
6565@noindent
6566returns @samp{bar}.
6567
6568@item $(wordlist @var{s},@var{e},@var{text})
6569@findex wordlist
6570@cindex words, selecting lists of
6571@cindex selecting word lists
6572Returns the list of words in @var{text} starting with word @var{s} and
6573ending with word @var{e} (inclusive). The legitimate values of @var{s}
6574start from 1; @var{e} may start from 0. If @var{s} is bigger than the
6575number of words in @var{text}, the value is empty. If @var{e} is
6576bigger than the number of words in @var{text}, words up to the end of
6577@var{text} are returned. If @var{s} is greater than @var{e}, nothing
6578is returned. For example,
6579
6580@example
6581$(wordlist 2, 3, foo bar baz)
6582@end example
6583
6584@noindent
6585returns @samp{bar baz}.
6586
6587@c Following item phrased to prevent overfull hbox. --RJC 17 Jul 92
6588@item $(words @var{text})
6589@findex words
6590@cindex words, finding number
6591Returns the number of words in @var{text}.
6592Thus, the last word of @var{text} is
6593@w{@code{$(word $(words @var{text}),@var{text})}}.@refill
6594
6595@item $(firstword @var{names}@dots{})
6596@findex firstword
6597@cindex words, extracting first
6598The argument @var{names} is regarded as a series of names, separated
6599by whitespace. The value is the first name in the series. The rest
6600of the names are ignored.
6601
6602For example,
6603
6604@example
6605$(firstword foo bar)
6606@end example
6607
6608@noindent
6609produces the result @samp{foo}. Although @code{$(firstword
6610@var{text})} is the same as @code{$(word 1,@var{text})}, the
6611@code{firstword} function is retained for its simplicity.@refill
6612
6613
6614@item $(lastword @var{names}@dots{})
6615@findex lastword
6616@cindex words, extracting last
6617The argument @var{names} is regarded as a series of names, separated
6618by whitespace. The value is the last name in the series.
6619
6620For example,
6621
6622@example
6623$(lastword foo bar)
6624@end example
6625
6626@noindent
6627produces the result @samp{bar}. Although @code{$(lastword
6628@var{text})} is the same as @code{$(word $(words @var{text}),@var{text})},
6629the @code{lastword} function was added for its simplicity and better
6630performance.@refill
6631@end table
6632
6633
6634Here is a realistic example of the use of @code{subst} and
6635@code{patsubst}. Suppose that a makefile uses the @code{VPATH} variable
6636to specify a list of directories that @code{make} should search for
6637prerequisite files
6638(@pxref{General Search, , @code{VPATH} Search Path for All Prerequisites}).
6639This example shows how to
6640tell the C compiler to search for header files in the same list of
6641directories.@refill
6642
6643The value of @code{VPATH} is a list of directories separated by colons,
6644such as @samp{src:../headers}. First, the @code{subst} function is used to
6645change the colons to spaces:
6646
6647@example
6648$(subst :, ,$(VPATH))
6649@end example
6650
6651@noindent
6652This produces @samp{src ../headers}. Then @code{patsubst} is used to turn
6653each directory name into a @samp{-I} flag. These can be added to the
6654value of the variable @code{CFLAGS}, which is passed automatically to the C
6655compiler, like this:
6656
6657@example
6658override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH)))
6659@end example
6660
6661@noindent
6662The effect is to append the text @samp{-Isrc -I../headers} to the
6663previously given value of @code{CFLAGS}. The @code{override} directive is
6664used so that the new value is assigned even if the previous value of
6665@code{CFLAGS} was specified with a command argument (@pxref{Override
6666Directive, , The @code{override} Directive}).
6667
6668@node File Name Functions, Conditional Functions, Text Functions, Functions
6669@section Functions for File Names
6670@cindex functions, for file names
6671@cindex file name functions
6672
6673Several of the built-in expansion functions relate specifically to
6674taking apart file names or lists of file names.
6675
6676Each of the following functions performs a specific transformation on a
6677file name. The argument of the function is regarded as a series of file
6678names, separated by whitespace. (Leading and trailing whitespace is
6679ignored.) Each file name in the series is transformed in the same way and
6680the results are concatenated with single spaces between them.
6681
6682@table @code
6683@item $(dir @var{names}@dots{})
6684@findex dir
6685@cindex directory part
6686@cindex file name, directory part
6687Extracts the directory-part of each file name in @var{names}. The
6688directory-part of the file name is everything up through (and
6689including) the last slash in it. If the file name contains no slash,
6690the directory part is the string @samp{./}. For example,
6691
6692@example
6693$(dir src/foo.c hacks)
6694@end example
6695
6696@noindent
6697produces the result @samp{src/ ./}.
6698
6699@item $(notdir @var{names}@dots{})
6700@findex notdir
6701@cindex file name, nondirectory part
6702@cindex nondirectory part
6703Extracts all but the directory-part of each file name in @var{names}.
6704If the file name contains no slash, it is left unchanged. Otherwise,
6705everything through the last slash is removed from it.
6706
6707A file name that ends with a slash becomes an empty string. This is
6708unfortunate, because it means that the result does not always have the
6709same number of whitespace-separated file names as the argument had;
6710but we do not see any other valid alternative.
6711
6712For example,
6713
6714@example
6715$(notdir src/foo.c hacks)
6716@end example
6717
6718@noindent
6719produces the result @samp{foo.c hacks}.
6720
6721@item $(suffix @var{names}@dots{})
6722@findex suffix
6723@cindex suffix, function to find
6724@cindex file name suffix
6725Extracts the suffix of each file name in @var{names}. If the file name
6726contains a period, the suffix is everything starting with the last
6727period. Otherwise, the suffix is the empty string. This frequently
6728means that the result will be empty when @var{names} is not, and if
6729@var{names} contains multiple file names, the result may contain fewer
6730file names.
6731
6732For example,
6733
6734@example
6735$(suffix src/foo.c src-1.0/bar.c hacks)
6736@end example
6737
6738@noindent
6739produces the result @samp{.c .c}.
6740
6741@item $(basename @var{names}@dots{})
6742@findex basename
6743@cindex basename
6744@cindex file name, basename of
6745Extracts all but the suffix of each file name in @var{names}. If the
6746file name contains a period, the basename is everything starting up to
6747(and not including) the last period. Periods in the directory part are
6748ignored. If there is no period, the basename is the entire file name.
6749For example,
6750
6751@example
6752$(basename src/foo.c src-1.0/bar hacks)
6753@end example
6754
6755@noindent
6756produces the result @samp{src/foo src-1.0/bar hacks}.
6757
6758@c plural convention with dots (be consistent)
6759@item $(addsuffix @var{suffix},@var{names}@dots{})
6760@findex addsuffix
6761@cindex suffix, adding
6762@cindex file name suffix, adding
6763The argument @var{names} is regarded as a series of names, separated
6764by whitespace; @var{suffix} is used as a unit. The value of
6765@var{suffix} is appended to the end of each individual name and the
6766resulting larger names are concatenated with single spaces between
6767them. For example,
6768
6769@example
6770$(addsuffix .c,foo bar)
6771@end example
6772
6773@noindent
6774produces the result @samp{foo.c bar.c}.
6775
6776@item $(addprefix @var{prefix},@var{names}@dots{})
6777@findex addprefix
6778@cindex prefix, adding
6779@cindex file name prefix, adding
6780The argument @var{names} is regarded as a series of names, separated
6781by whitespace; @var{prefix} is used as a unit. The value of
6782@var{prefix} is prepended to the front of each individual name and the
6783resulting larger names are concatenated with single spaces between
6784them. For example,
6785
6786@example
6787$(addprefix src/,foo bar)
6788@end example
6789
6790@noindent
6791produces the result @samp{src/foo src/bar}.
6792
6793@item $(join @var{list1},@var{list2})
6794@findex join
6795@cindex joining lists of words
6796@cindex words, joining lists
6797Concatenates the two arguments word by word: the two first words (one
6798from each argument) concatenated form the first word of the result, the
6799two second words form the second word of the result, and so on. So the
6800@var{n}th word of the result comes from the @var{n}th word of each
6801argument. If one argument has more words that the other, the extra
6802words are copied unchanged into the result.
6803
6804For example, @samp{$(join a b,.c .o)} produces @samp{a.c b.o}.
6805
6806Whitespace between the words in the lists is not preserved; it is
6807replaced with a single space.
6808
6809This function can merge the results of the @code{dir} and
6810@code{notdir} functions, to produce the original list of files which
6811was given to those two functions.@refill
6812
6813@item $(wildcard @var{pattern})
6814@findex wildcard
6815@cindex wildcard, function
6816The argument @var{pattern} is a file name pattern, typically containing
6817wildcard characters (as in shell file name patterns). The result of
6818@code{wildcard} is a space-separated list of the names of existing files
6819that match the pattern.
6820@xref{Wildcards, ,Using Wildcard Characters in File Names}.
6821
6822@item $(realpath @var{names}@dots{})
6823@findex realpath
6824@cindex realpath
6825@cindex file name, realpath of
6826For each file name in @var{names} return the canonical absolute name.
6827A canonical name does not contain any @code{.} or @code{..} components,
6828nor any repeated path separators (@code{/}) or symlinks. In case of a
6829failure the empty string is returned. Consult the @code{realpath(3)}
6830documentation for a list of possible failure causes.
6831
6832@item $(abspath @var{names}@dots{})
6833@findex abspath
6834@cindex abspath
6835@cindex file name, abspath of
6836For each file name in @var{names} return an absolute name that does
6837not contain any @code{.} or @code{..} components, nor any repeated path
6838separators (@code{/}). Note that, in contrast to @code{realpath}
6839function, @code{abspath} does not resolve symlinks and does not require
6840the file names to refer to an existing file or directory. Use the
6841@code{wildcard} function to test for existence.
6842@end table
6843
6844@node Conditional Functions, Foreach Function, File Name Functions, Functions
6845@section Functions for Conditionals
6846@findex if
6847@cindex conditional expansion
6848There are three functions that provide conditional expansion. A key
6849aspect of these functions is that not all of the arguments are
6850expanded initially. Only those arguments which need to be expanded,
6851will be expanded.
6852
6853@table @code
6854@item $(if @var{condition},@var{then-part}[,@var{else-part}])
6855@findex if
6856The @code{if} function provides support for conditional expansion in a
6857functional context (as opposed to the GNU @code{make} makefile
6858conditionals such as @code{ifeq} (@pxref{Conditional Syntax, ,Syntax of
6859Conditionals}).
6860
6861The first argument, @var{condition}, first has all preceding and
6862trailing whitespace stripped, then is expanded. If it expands to any
6863non-empty string, then the condition is considered to be true. If it
6864expands to an empty string, the condition is considered to be false.
6865
6866If the condition is true then the second argument, @var{then-part}, is
6867evaluated and this is used as the result of the evaluation of the entire
6868@code{if} function.
6869
6870If the condition is false then the third argument, @var{else-part}, is
6871evaluated and this is the result of the @code{if} function. If there is
6872no third argument, the @code{if} function evaluates to nothing (the
6873empty string).
6874
6875Note that only one of the @var{then-part} or the @var{else-part} will be
6876evaluated, never both. Thus, either can contain side-effects (such as
6877@code{shell} function calls, etc.)
6878
6879@item $(or @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]])
6880@findex or
6881The @code{or} function provides a ``short-circuiting'' OR operation.
6882Each argument is expanded, in order. If an argument expands to a
6883non-empty string the processing stops and the result of the expansion
6884is that string. If, after all arguments are expanded, all of them are
6885false (empty), then the result of the expansion is the empty string.
6886
6887@item $(and @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]])
6888@findex and
6889The @code{and} function provides a ``short-circuiting'' AND operation.
6890Each argument is expanded, in order. If an argument expands to an
6891empty string the processing stops and the result of the expansion is
6892the empty string. If all arguments expand to a non-empty string then
6893the result of the expansion is the expansion of the last argument.
6894
6895@end table
6896
6897@node Foreach Function, Call Function, Conditional Functions, Functions
6898@section The @code{foreach} Function
6899@findex foreach
6900@cindex words, iterating over
6901
6902The @code{foreach} function is very different from other functions. It
6903causes one piece of text to be used repeatedly, each time with a different
6904substitution performed on it. It resembles the @code{for} command in the
6905shell @code{sh} and the @code{foreach} command in the C-shell @code{csh}.
6906
6907The syntax of the @code{foreach} function is:
6908
6909@example
6910$(foreach @var{var},@var{list},@var{text})
6911@end example
6912
6913@noindent
6914The first two arguments, @var{var} and @var{list}, are expanded before
6915anything else is done; note that the last argument, @var{text}, is
6916@strong{not} expanded at the same time. Then for each word of the expanded
6917value of @var{list}, the variable named by the expanded value of @var{var}
6918is set to that word, and @var{text} is expanded. Presumably @var{text}
6919contains references to that variable, so its expansion will be different
6920each time.
6921
6922The result is that @var{text} is expanded as many times as there are
6923whitespace-separated words in @var{list}. The multiple expansions of
6924@var{text} are concatenated, with spaces between them, to make the result
6925of @code{foreach}.
6926
6927This simple example sets the variable @samp{files} to the list of all files
6928in the directories in the list @samp{dirs}:
6929
6930@example
6931dirs := a b c d
6932files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
6933@end example
6934
6935Here @var{text} is @samp{$(wildcard $(dir)/*)}. The first repetition
6936finds the value @samp{a} for @code{dir}, so it produces the same result
6937as @samp{$(wildcard a/*)}; the second repetition produces the result
6938of @samp{$(wildcard b/*)}; and the third, that of @samp{$(wildcard c/*)}.
6939
6940This example has the same result (except for setting @samp{dirs}) as
6941the following example:
6942
6943@example
6944files := $(wildcard a/* b/* c/* d/*)
6945@end example
6946
6947When @var{text} is complicated, you can improve readability by giving it
6948a name, with an additional variable:
6949
6950@example
6951find_files = $(wildcard $(dir)/*)
6952dirs := a b c d
6953files := $(foreach dir,$(dirs),$(find_files))
6954@end example
6955
6956@noindent
6957Here we use the variable @code{find_files} this way. We use plain @samp{=}
6958to define a recursively-expanding variable, so that its value contains an
6959actual function call to be reexpanded under the control of @code{foreach};
6960a simply-expanded variable would not do, since @code{wildcard} would be
6961called only once at the time of defining @code{find_files}.
6962
6963The @code{foreach} function has no permanent effect on the variable
6964@var{var}; its value and flavor after the @code{foreach} function call are
6965the same as they were beforehand. The other values which are taken from
6966@var{list} are in effect only temporarily, during the execution of
6967@code{foreach}. The variable @var{var} is a simply-expanded variable
6968during the execution of @code{foreach}. If @var{var} was undefined
6969before the @code{foreach} function call, it is undefined after the call.
6970@xref{Flavors, ,The Two Flavors of Variables}.@refill
6971
6972You must take care when using complex variable expressions that result in
6973variable names because many strange things are valid variable names, but
6974are probably not what you intended. For example,
6975
6976@smallexample
6977files := $(foreach Esta escrito en espanol!,b c ch,$(find_files))
6978@end smallexample
6979
6980@noindent
6981might be useful if the value of @code{find_files} references the variable
6982whose name is @samp{Esta escrito en espanol!} (es un nombre bastante largo,
6983no?), but it is more likely to be a mistake.
6984
6985@node Call Function, Value Function, Foreach Function, Functions
6986@section The @code{call} Function
6987@findex call
6988@cindex functions, user defined
6989@cindex user defined functions
6990
6991The @code{call} function is unique in that it can be used to create new
6992parameterized functions. You can write a complex expression as the
6993value of a variable, then use @code{call} to expand it with different
6994values.
6995
6996The syntax of the @code{call} function is:
6997
6998@example
6999$(call @var{variable},@var{param},@var{param},@dots{})
7000@end example
7001
7002When @code{make} expands this function, it assigns each @var{param} to
7003temporary variables @code{$(1)}, @code{$(2)}, etc. The variable
7004@code{$(0)} will contain @var{variable}. There is no maximum number of
7005parameter arguments. There is no minimum, either, but it doesn't make
7006sense to use @code{call} with no parameters.
7007
7008Then @var{variable} is expanded as a @code{make} variable in the context
7009of these temporary assignments. Thus, any reference to @code{$(1)} in
7010the value of @var{variable} will resolve to the first @var{param} in the
7011invocation of @code{call}.
7012
7013Note that @var{variable} is the @emph{name} of a variable, not a
7014@emph{reference} to that variable. Therefore you would not normally use
7015a @samp{$} or parentheses when writing it. (You can, however, use a
7016variable reference in the name if you want the name not to be a
7017constant.)
7018
7019If @var{variable} is the name of a builtin function, the builtin function
7020is always invoked (even if a @code{make} variable by that name also
7021exists).
7022
7023The @code{call} function expands the @var{param} arguments before
7024assigning them to temporary variables. This means that @var{variable}
7025values containing references to builtin functions that have special
7026expansion rules, like @code{foreach} or @code{if}, may not work as you
7027expect.
7028
7029Some examples may make this clearer.
7030
7031This macro simply reverses its arguments:
7032
7033@smallexample
7034reverse = $(2) $(1)
7035
7036foo = $(call reverse,a,b)
7037@end smallexample
7038
7039@noindent
7040Here @var{foo} will contain @samp{b a}.
7041
7042This one is slightly more interesting: it defines a macro to search for
7043the first instance of a program in @code{PATH}:
7044
7045@smallexample
7046pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
7047
7048LS := $(call pathsearch,ls)
7049@end smallexample
7050
7051@noindent
7052Now the variable LS contains @code{/bin/ls} or similar.
7053
7054The @code{call} function can be nested. Each recursive invocation gets
7055its own local values for @code{$(1)}, etc.@: that mask the values of
7056higher-level @code{call}. For example, here is an implementation of a
7057@dfn{map} function:
7058
7059@smallexample
7060map = $(foreach a,$(2),$(call $(1),$(a)))
7061@end smallexample
7062
7063Now you can @var{map} a function that normally takes only one argument,
7064such as @code{origin}, to multiple values in one step:
7065
7066@smallexample
7067o = $(call map,origin,o map MAKE)
7068@end smallexample
7069
7070and end up with @var{o} containing something like @samp{file file default}.
7071
7072A final caution: be careful when adding whitespace to the arguments to
7073@code{call}. As with other functions, any whitespace contained in the
7074second and subsequent arguments is kept; this can cause strange
7075effects. It's generally safest to remove all extraneous whitespace when
7076providing parameters to @code{call}.
7077
7078@node Value Function, Eval Function, Call Function, Functions
7079@comment node-name, next, previous, up
7080@section The @code{value} Function
7081@findex value
7082@cindex variables, unexpanded value
7083
7084The @code{value} function provides a way for you to use the value of a
7085variable @emph{without} having it expanded. Please note that this
7086does not undo expansions which have already occurred; for example if
7087you create a simply expanded variable its value is expanded during the
7088definition; in that case the @code{value} function will return the
7089same result as using the variable directly.
7090
7091The syntax of the @code{value} function is:
7092
7093@example
7094$(value @var{variable})
7095@end example
7096
7097Note that @var{variable} is the @emph{name} of a variable; not a
7098@emph{reference} to that variable. Therefore you would not normally
7099use a @samp{$} or parentheses when writing it. (You can, however, use
7100a variable reference in the name if you want the name not to be a
7101constant.)
7102
7103The result of this function is a string containing the value of
7104@var{variable}, without any expansion occurring. For example, in this
7105makefile:
7106
7107@example
7108@group
7109FOO = $PATH
7110
7111all:
7112 @@echo $(FOO)
7113 @@echo $(value FOO)
7114@end group
7115@end example
7116
7117@noindent
7118The first output line would be @code{ATH}, since the ``$P'' would be
7119expanded as a @code{make} variable, while the second output line would
7120be the current value of your @code{$PATH} environment variable, since
7121the @code{value} function avoided the expansion.
7122
7123The @code{value} function is most often used in conjunction with the
7124@code{eval} function (@pxref{Eval Function}).
7125
7126@node Eval Function, Origin Function, Value Function, Functions
7127@comment node-name, next, previous, up
7128@section The @code{eval} Function
7129@findex eval
7130@cindex evaluating makefile syntax
7131@cindex makefile syntax, evaluating
7132
7133The @code{eval} function is very special: it allows you to define new
7134makefile constructs that are not constant; which are the result of
7135evaluating other variables and functions. The argument to the
7136@code{eval} function is expanded, then the results of that expansion
7137are parsed as makefile syntax. The expanded results can define new
7138@code{make} variables, targets, implicit or explicit rules, etc.
7139
7140The result of the @code{eval} function is always the empty string;
7141thus, it can be placed virtually anywhere in a makefile without
7142causing syntax errors.
7143
7144It's important to realize that the @code{eval} argument is expanded
7145@emph{twice}; first by the @code{eval} function, then the results of
7146that expansion are expanded again when they are parsed as makefile
7147syntax. This means you may need to provide extra levels of escaping
7148for ``$'' characters when using @code{eval}. The @code{value}
7149function (@pxref{Value Function}) can sometimes be useful in these
7150situations, to circumvent unwanted expansions.
7151
7152Here is an example of how @code{eval} can be used; this example
7153combines a number of concepts and other functions. Although it might
7154seem overly complex to use @code{eval} in this example, rather than
7155just writing out the rules, consider two things: first, the template
7156definition (in @code{PROGRAM_template}) could need to be much more
7157complex than it is here; and second, you might put the complex,
7158``generic'' part of this example into another makefile, then include
7159it in all the individual makefiles. Now your individual makefiles are
7160quite straightforward.
7161
7162@example
7163@group
7164PROGRAMS = server client
7165
7166server_OBJS = server.o server_priv.o server_access.o
7167server_LIBS = priv protocol
7168
7169client_OBJS = client.o client_api.o client_mem.o
7170client_LIBS = protocol
7171
7172# Everything after this is generic
7173
7174.PHONY: all
7175all: $(PROGRAMS)
7176
7177define PROGRAM_template
7178 $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%)
7179 ALL_OBJS += $$($(1)_OBJS)
7180endef
7181
7182$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
7183
7184$(PROGRAMS):
7185 $(LINK.o) $^ $(LDLIBS) -o $@@
7186
7187clean:
7188 rm -f $(ALL_OBJS) $(PROGRAMS)
7189@end group
7190@end example
7191
7192@node Origin Function, Flavor Function, Eval Function, Functions
7193@section The @code{origin} Function
7194@findex origin
7195@cindex variables, origin of
7196@cindex origin of variable
7197
7198The @code{origin} function is unlike most other functions in that it does
7199not operate on the values of variables; it tells you something @emph{about}
7200a variable. Specifically, it tells you where it came from.
7201
7202The syntax of the @code{origin} function is:
7203
7204@example
7205$(origin @var{variable})
7206@end example
7207
7208Note that @var{variable} is the @emph{name} of a variable to inquire about;
7209not a @emph{reference} to that variable. Therefore you would not normally
7210use a @samp{$} or parentheses when writing it. (You can, however, use a
7211variable reference in the name if you want the name not to be a constant.)
7212
7213The result of this function is a string telling you how the variable
7214@var{variable} was defined:
7215
7216@table @samp
7217@item undefined
7218
7219if @var{variable} was never defined.
7220
7221@item default
7222
7223if @var{variable} has a default definition, as is usual with @code{CC}
7224and so on. @xref{Implicit Variables, ,Variables Used by Implicit Rules}.
7225Note that if you have redefined a default variable, the @code{origin}
7226function will return the origin of the later definition.
7227
7228@item environment
7229
7230if @var{variable} was defined as an environment variable and the
7231@samp{-e} option is @emph{not} turned on (@pxref{Options Summary, ,Summary of Options}).
7232
7233@item environment override
7234
7235if @var{variable} was defined as an environment variable and the
7236@w{@samp{-e}} option @emph{is} turned on (@pxref{Options Summary,
7237,Summary of Options}).@refill
7238
7239@item file
7240
7241if @var{variable} was defined in a makefile.
7242
7243@item command line
7244
7245if @var{variable} was defined on the command line.
7246
7247@item override
7248
7249if @var{variable} was defined with an @code{override} directive in a
7250makefile (@pxref{Override Directive, ,The @code{override} Directive}).
7251
7252@item automatic
7253
7254if @var{variable} is an automatic variable defined for the execution
7255of the recipe for each rule (@pxref{Automatic Variables}).
7256@end table
7257
7258This information is primarily useful (other than for your curiosity) to
7259determine if you want to believe the value of a variable. For example,
7260suppose you have a makefile @file{foo} that includes another makefile
7261@file{bar}. You want a variable @code{bletch} to be defined in @file{bar}
7262if you run the command @w{@samp{make -f bar}}, even if the environment contains
7263a definition of @code{bletch}. However, if @file{foo} defined
7264@code{bletch} before including @file{bar}, you do not want to override that
7265definition. This could be done by using an @code{override} directive in
7266@file{foo}, giving that definition precedence over the later definition in
7267@file{bar}; unfortunately, the @code{override} directive would also
7268override any command line definitions. So, @file{bar} could
7269include:@refill
7270
7271@example
7272@group
7273ifdef bletch
7274ifeq "$(origin bletch)" "environment"
7275bletch = barf, gag, etc.
7276endif
7277endif
7278@end group
7279@end example
7280
7281@noindent
7282If @code{bletch} has been defined from the environment, this will redefine
7283it.
7284
7285If you want to override a previous definition of @code{bletch} if it came
7286from the environment, even under @samp{-e}, you could instead write:
7287
7288@example
7289@group
7290ifneq "$(findstring environment,$(origin bletch))" ""
7291bletch = barf, gag, etc.
7292endif
7293@end group
7294@end example
7295
7296Here the redefinition takes place if @samp{$(origin bletch)} returns either
7297@samp{environment} or @samp{environment override}.
7298@xref{Text Functions, , Functions for String Substitution and Analysis}.
7299
7300@node Flavor Function, Shell Function, Origin Function, Functions
7301@section The @code{flavor} Function
7302@findex flavor
7303@cindex variables, flavor of
7304@cindex flavor of variable
7305
7306The @code{flavor} function is unlike most other functions (and like
7307@code{origin} function) in that it does not operate on the values of
7308variables; it tells you something @emph{about} a variable.
7309Specifically, it tells you the flavor of a variable (@pxref{Flavors,
7310,The Two Flavors of Variables}).
7311
7312The syntax of the @code{flavor} function is:
7313
7314@example
7315$(flavor @var{variable})
7316@end example
7317
7318Note that @var{variable} is the @emph{name} of a variable to inquire about;
7319not a @emph{reference} to that variable. Therefore you would not normally
7320use a @samp{$} or parentheses when writing it. (You can, however, use a
7321variable reference in the name if you want the name not to be a constant.)
7322
7323The result of this function is a string that identifies the flavor of the
7324variable @var{variable}:
7325
7326@table @samp
7327@item undefined
7328
7329if @var{variable} was never defined.
7330
7331@item recursive
7332
7333if @var{variable} is a recursively expanded variable.
7334
7335@item simple
7336
7337if @var{variable} is a simply expanded variable.
7338
7339@end table
7340
7341
7342@node Shell Function, Make Control Functions, Flavor Function, Functions
7343@section The @code{shell} Function
7344@findex shell
7345@cindex command expansion
7346@cindex backquotes
7347@cindex shell command, function for
7348
7349The @code{shell} function is unlike any other function other than the
7350@code{wildcard} function
7351(@pxref{Wildcard Function, ,The Function @code{wildcard}}) in that it
7352communicates with the world outside of @code{make}.
7353
7354The @code{shell} function performs the same function that backquotes
7355(@samp{`}) perform in most shells: it does @dfn{command expansion}.
7356This means that it takes as an argument a shell command and evaluates
7357to the output of the command. The only processing @code{make} does on
7358the result is to convert each newline (or carriage-return / newline
7359pair) to a single space. If there is a trailing (carriage-return
7360and) newline it will simply be removed.@refill
7361
7362The commands run by calls to the @code{shell} function are run when the
7363function calls are expanded (@pxref{Reading Makefiles, , How
7364@code{make} Reads a Makefile}). Because this function involves
7365spawning a new shell, you should carefully consider the performance
7366implications of using the @code{shell} function within recursively
7367expanded variables vs.@: simply expanded variables (@pxref{Flavors, ,The
7368Two Flavors of Variables}).
7369
7370Here are some examples of the use of the @code{shell} function:
7371
7372@example
7373contents := $(shell cat foo)
7374@end example
7375
7376@noindent
7377sets @code{contents} to the contents of the file @file{foo}, with a space
7378(rather than a newline) separating each line.
7379
7380@example
7381files := $(shell echo *.c)
7382@end example
7383
7384@noindent
7385sets @code{files} to the expansion of @samp{*.c}. Unless @code{make} is
7386using a very strange shell, this has the same result as
7387@w{@samp{$(wildcard *.c)}} (as long as at least one @samp{.c} file
7388exists).@refill
7389
7390@node Make Control Functions, , Shell Function, Functions
7391@section Functions That Control Make
7392@cindex functions, for controlling make
7393@cindex controlling make
7394
7395These functions control the way make runs. Generally, they are used to
7396provide information to the user of the makefile or to cause make to stop
7397if some sort of environmental error is detected.
7398
7399@table @code
7400@item $(error @var{text}@dots{})
7401@findex error
7402@cindex error, stopping on
7403@cindex stopping make
7404Generates a fatal error where the message is @var{text}. Note that
7405the error is generated whenever this function is evaluated. So, if
7406you put it inside a recipe or on the right side of a recursive
7407variable assignment, it won't be evaluated until later. The
7408@var{text} will be expanded before the error is generated.
7409
7410For example,
7411
7412@example
7413ifdef ERROR1
7414$(error error is $(ERROR1))
7415endif
7416@end example
7417
7418@noindent
7419will generate a fatal error during the read of the makefile if the
7420@code{make} variable @code{ERROR1} is defined. Or,
7421
7422@example
7423ERR = $(error found an error!)
7424
7425.PHONY: err
7426err: ; $(ERR)
7427@end example
7428
7429@noindent
7430will generate a fatal error while @code{make} is running, if the
7431@code{err} target is invoked.
7432
7433@item $(warning @var{text}@dots{})
7434@findex warning
7435@cindex warnings, printing
7436@cindex printing user warnings
7437This function works similarly to the @code{error} function, above,
7438except that @code{make} doesn't exit. Instead, @var{text} is expanded
7439and the resulting message is displayed, but processing of the makefile
7440continues.
7441
7442The result of the expansion of this function is the empty string.
7443
7444@item $(info @var{text}@dots{})
7445@findex info
7446@cindex printing messages
7447This function does nothing more than print its (expanded) argument(s)
7448to standard output. No makefile name or line number is added. The
7449result of the expansion of this function is the empty string.
7450@end table
7451
7452@node Running, Implicit Rules, Functions, Top
7453@chapter How to Run @code{make}
7454
7455A makefile that says how to recompile a program can be used in more
7456than one way. The simplest use is to recompile every file that is out
7457of date. Usually, makefiles are written so that if you run
7458@code{make} with no arguments, it does just that.
7459
7460But you might want to update only some of the files; you might want to use
7461a different compiler or different compiler options; you might want just to
7462find out which files are out of date without changing them.
7463
7464By giving arguments when you run @code{make}, you can do any of these
7465things and many others.
7466
7467@cindex exit status of make
7468The exit status of @code{make} is always one of three values:
7469@table @code
7470@item 0
7471The exit status is zero if @code{make} is successful.
7472@item 2
7473The exit status is two if @code{make} encounters any errors.
7474It will print messages describing the particular errors.
7475@item 1
7476The exit status is one if you use the @samp{-q} flag and @code{make}
7477determines that some target is not already up to date.
7478@xref{Instead of Execution, ,Instead of Executing the Recipes}.
7479@end table
7480
7481@menu
7482* Makefile Arguments:: How to specify which makefile to use.
7483* Goals:: How to use goal arguments to specify which
7484 parts of the makefile to use.
7485* Instead of Execution:: How to use mode flags to specify what
7486 kind of thing to do with the recipes
7487 in the makefile other than simply
7488 execute them.
7489* Avoiding Compilation:: How to avoid recompiling certain files.
7490* Overriding:: How to override a variable to specify
7491 an alternate compiler and other things.
7492* Testing:: How to proceed past some errors, to
7493 test compilation.
7494* Options Summary:: Summary of Options
7495@end menu
7496
7497@node Makefile Arguments, Goals, Running, Running
7498@section Arguments to Specify the Makefile
7499@cindex @code{--file}
7500@cindex @code{--makefile}
7501@cindex @code{-f}
7502
7503The way to specify the name of the makefile is with the @samp{-f} or
7504@samp{--file} option (@samp{--makefile} also works). For example,
7505@samp{-f altmake} says to use the file @file{altmake} as the makefile.
7506
7507If you use the @samp{-f} flag several times and follow each @samp{-f}
7508with an argument, all the specified files are used jointly as
7509makefiles.
7510
7511If you do not use the @samp{-f} or @samp{--file} flag, the default is
7512to try @file{GNUmakefile}, @file{makefile}, and @file{Makefile}, in
7513that order, and use the first of these three which exists or can be made
7514(@pxref{Makefiles, ,Writing Makefiles}).@refill
7515
7516@node Goals, Instead of Execution, Makefile Arguments, Running
7517@section Arguments to Specify the Goals
7518@cindex goal, how to specify
7519
7520The @dfn{goals} are the targets that @code{make} should strive ultimately
7521to update. Other targets are updated as well if they appear as
7522prerequisites of goals, or prerequisites of prerequisites of goals, etc.
7523
7524By default, the goal is the first target in the makefile (not counting
7525targets that start with a period). Therefore, makefiles are usually
7526written so that the first target is for compiling the entire program or
7527programs they describe. If the first rule in the makefile has several
7528targets, only the first target in the rule becomes the default goal, not
7529the whole list. You can manage the selection of the default goal from
7530within your makefile using the @code{.DEFAULT_GOAL} variable
7531(@pxref{Special Variables, , Other Special Variables}).
7532
7533You can also specify a different goal or goals with command line
7534arguments to @code{make}. Use the name of the goal as an argument.
7535If you specify several goals, @code{make} processes each of them in
7536turn, in the order you name them.
7537
7538Any target in the makefile may be specified as a goal (unless it
7539starts with @samp{-} or contains an @samp{=}, in which case it will be
7540parsed as a switch or variable definition, respectively). Even
7541targets not in the makefile may be specified, if @code{make} can find
7542implicit rules that say how to make them.
7543
7544@vindex MAKECMDGOALS
7545@code{Make} will set the special variable @code{MAKECMDGOALS} to the
7546list of goals you specified on the command line. If no goals were given
7547on the command line, this variable is empty. Note that this variable
7548should be used only in special circumstances.
7549
7550An example of appropriate use is to avoid including @file{.d} files
7551during @code{clean} rules (@pxref{Automatic Prerequisites}), so
7552@code{make} won't create them only to immediately remove them
7553again:@refill
7554
7555@example
7556@group
7557sources = foo.c bar.c
7558
7559ifneq ($(MAKECMDGOALS),clean)
7560include $(sources:.c=.d)
7561endif
7562@end group
7563@end example
7564
7565One use of specifying a goal is if you want to compile only a part of
7566the program, or only one of several programs. Specify as a goal each
7567file that you wish to remake. For example, consider a directory containing
7568several programs, with a makefile that starts like this:
7569
7570@example
7571.PHONY: all
7572all: size nm ld ar as
7573@end example
7574
7575If you are working on the program @code{size}, you might want to say
7576@w{@samp{make size}} so that only the files of that program are recompiled.
7577
7578Another use of specifying a goal is to make files that are not normally
7579made. For example, there may be a file of debugging output, or a
7580version of the program that is compiled specially for testing, which has
7581a rule in the makefile but is not a prerequisite of the default goal.
7582
7583Another use of specifying a goal is to run the recipe associated with
7584a phony target (@pxref{Phony Targets}) or empty target (@pxref{Empty
7585Targets, ,Empty Target Files to Record Events}). Many makefiles contain
7586a phony target named @file{clean} which deletes everything except source
7587files. Naturally, this is done only if you request it explicitly with
7588@w{@samp{make clean}}. Following is a list of typical phony and empty
7589target names. @xref{Standard Targets}, for a detailed list of all the
7590standard target names which GNU software packages use.
7591
7592@table @file
7593@item all
7594@cindex @code{all} @r{(standard target)}
7595Make all the top-level targets the makefile knows about.
7596
7597@item clean
7598@cindex @code{clean} @r{(standard target)}
7599Delete all files that are normally created by running @code{make}.
7600
7601@item mostlyclean
7602@cindex @code{mostlyclean} @r{(standard target)}
7603Like @samp{clean}, but may refrain from deleting a few files that people
7604normally don't want to recompile. For example, the @samp{mostlyclean}
7605target for GCC does not delete @file{libgcc.a}, because recompiling it
7606is rarely necessary and takes a lot of time.
7607
7608@item distclean
7609@cindex @code{distclean} @r{(standard target)}
7610@itemx realclean
7611@cindex @code{realclean} @r{(standard target)}
7612@itemx clobber
7613@cindex @code{clobber} @r{(standard target)}
7614Any of these targets might be defined to delete @emph{more} files than
7615@samp{clean} does. For example, this would delete configuration files
7616or links that you would normally create as preparation for compilation,
7617even if the makefile itself cannot create these files.
7618
7619@item install
7620@cindex @code{install} @r{(standard target)}
7621Copy the executable file into a directory that users typically search
7622for commands; copy any auxiliary files that the executable uses into
7623the directories where it will look for them.
7624
7625@item print
7626@cindex @code{print} @r{(standard target)}
7627Print listings of the source files that have changed.
7628
7629@item tar
7630@cindex @code{tar} @r{(standard target)}
7631Create a tar file of the source files.
7632
7633@item shar
7634@cindex @code{shar} @r{(standard target)}
7635Create a shell archive (shar file) of the source files.
7636
7637@item dist
7638@cindex @code{dist} @r{(standard target)}
7639Create a distribution file of the source files. This might
7640be a tar file, or a shar file, or a compressed version of one of the
7641above, or even more than one of the above.
7642
7643@item TAGS
7644@cindex @code{TAGS} @r{(standard target)}
7645Update a tags table for this program.
7646
7647@item check
7648@cindex @code{check} @r{(standard target)}
7649@itemx test
7650@cindex @code{test} @r{(standard target)}
7651Perform self tests on the program this makefile builds.
7652@end table
7653
7654@node Instead of Execution, Avoiding Compilation, Goals, Running
7655@section Instead of Executing the Recipes
7656@cindex execution, instead of
7657@cindex recipes, instead of executing
7658
7659The makefile tells @code{make} how to tell whether a target is up to date,
7660and how to update each target. But updating the targets is not always
7661what you want. Certain options specify other activities for @code{make}.
7662
7663@comment Extra blank lines make it print better.
7664@table @samp
7665@item -n
7666@itemx --just-print
7667@itemx --dry-run
7668@itemx --recon
7669@cindex @code{--just-print}
7670@cindex @code{--dry-run}
7671@cindex @code{--recon}
7672@cindex @code{-n}
7673
7674``No-op''. The activity is to print what recipe would be used to make
7675the targets up to date, but not actually execute it.
7676
7677@item -t
7678@itemx --touch
7679@cindex @code{--touch}
7680@cindex touching files
7681@cindex target, touching
7682@cindex @code{-t}
7683
7684``Touch''. The activity is to mark the targets as up to date without
7685actually changing them. In other words, @code{make} pretends to compile
7686the targets but does not really change their contents.
7687
7688@item -q
7689@itemx --question
7690@cindex @code{--question}
7691@cindex @code{-q}
7692@cindex question mode
7693
7694``Question''. The activity is to find out silently whether the targets
7695are up to date already; but execute no recipe in either case. In other
7696words, neither compilation nor output will occur.
7697
7698@item -W @var{file}
7699@itemx --what-if=@var{file}
7700@itemx --assume-new=@var{file}
7701@itemx --new-file=@var{file}
7702@cindex @code{--what-if}
7703@cindex @code{-W}
7704@cindex @code{--assume-new}
7705@cindex @code{--new-file}
7706@cindex what if
7707@cindex files, assuming new
7708
7709``What if''. Each @samp{-W} flag is followed by a file name. The given
7710files' modification times are recorded by @code{make} as being the present
7711time, although the actual modification times remain the same.
7712You can use the @samp{-W} flag in conjunction with the @samp{-n} flag
7713to see what would happen if you were to modify specific files.@refill
7714@end table
7715
7716With the @samp{-n} flag, @code{make} prints the recipe that it would
7717normally execute but does not execute it.
7718
7719With the @samp{-t} flag, @code{make} ignores the recipes in the rules
7720and uses (in effect) the command @code{touch} for each target that needs to
7721be remade. The @code{touch} command is also printed, unless @samp{-s} or
7722@code{.SILENT} is used. For speed, @code{make} does not actually invoke
7723the program @code{touch}. It does the work directly.
7724
7725With the @samp{-q} flag, @code{make} prints nothing and executes no
7726recipes, but the exit status code it returns is zero if and only if the
7727targets to be considered are already up to date. If the exit status is
7728one, then some updating needs to be done. If @code{make} encounters an
7729error, the exit status is two, so you can distinguish an error from a
7730target that is not up to date.
7731
7732It is an error to use more than one of these three flags in the same
7733invocation of @code{make}.
7734
7735@cindex +, and recipe execution
7736The @samp{-n}, @samp{-t}, and @samp{-q} options do not affect recipe
7737lines that begin with @samp{+} characters or contain the strings
7738@samp{$(MAKE)} or @samp{$@{MAKE@}}. Note that only the line containing
7739the @samp{+} character or the strings @samp{$(MAKE)} or @samp{$@{MAKE@}}
7740is run regardless of these options. Other lines in the same rule are
7741not run unless they too begin with @samp{+} or contain @samp{$(MAKE)} or
7742@samp{$@{MAKE@}} (@xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.)
7743
7744The @samp{-W} flag provides two features:
7745
7746@itemize @bullet
7747@item
7748If you also use the @samp{-n} or @samp{-q} flag, you can see what
7749@code{make} would do if you were to modify some files.
7750
7751@item
7752Without the @samp{-n} or @samp{-q} flag, when @code{make} is actually
7753executing recipes, the @samp{-W} flag can direct @code{make} to act as
7754if some files had been modified, without actually running the recipes
7755for those files.@refill
7756@end itemize
7757
7758Note that the options @samp{-p} and @samp{-v} allow you to obtain other
7759information about @code{make} or about the makefiles in use
7760(@pxref{Options Summary, ,Summary of Options}).@refill
7761
7762@node Avoiding Compilation, Overriding, Instead of Execution, Running
7763@section Avoiding Recompilation of Some Files
7764@cindex @code{-o}
7765@cindex @code{--old-file}
7766@cindex @code{--assume-old}
7767@cindex files, assuming old
7768@cindex files, avoiding recompilation of
7769@cindex recompilation, avoiding
7770
7771Sometimes you may have changed a source file but you do not want to
7772recompile all the files that depend on it. For example, suppose you add
7773a macro or a declaration to a header file that many other files depend
7774on. Being conservative, @code{make} assumes that any change in the
7775header file requires recompilation of all dependent files, but you know
7776that they do not need to be recompiled and you would rather not waste
7777the time waiting for them to compile.
7778
7779If you anticipate the problem before changing the header file, you can
7780use the @samp{-t} flag. This flag tells @code{make} not to run the
7781recipes in the rules, but rather to mark the target up to date by
7782changing its last-modification date. You would follow this procedure:
7783
7784@enumerate
7785@item
7786Use the command @samp{make} to recompile the source files that really
7787need recompilation, ensuring that the object files are up-to-date
7788before you begin.
7789
7790@item
7791Make the changes in the header files.
7792
7793@item
7794Use the command @samp{make -t} to mark all the object files as
7795up to date. The next time you run @code{make}, the changes in the
7796header files will not cause any recompilation.
7797@end enumerate
7798
7799If you have already changed the header file at a time when some files
7800do need recompilation, it is too late to do this. Instead, you can
7801use the @w{@samp{-o @var{file}}} flag, which marks a specified file as
7802``old'' (@pxref{Options Summary, ,Summary of Options}). This means
7803that the file itself will not be remade, and nothing else will be
7804remade on its account. Follow this procedure:
7805
7806@enumerate
7807@item
7808Recompile the source files that need compilation for reasons independent
7809of the particular header file, with @samp{make -o @var{headerfile}}.
7810If several header files are involved, use a separate @samp{-o} option
7811for each header file.
7812
7813@item
7814Touch all the object files with @samp{make -t}.
7815@end enumerate
7816
7817@node Overriding, Testing, Avoiding Compilation, Running
7818@section Overriding Variables
7819@cindex overriding variables with arguments
7820@cindex variables, overriding with arguments
7821@cindex command line variables
7822@cindex variables, command line
7823
7824An argument that contains @samp{=} specifies the value of a variable:
7825@samp{@var{v}=@var{x}} sets the value of the variable @var{v} to @var{x}.
7826If you specify a value in this way, all ordinary assignments of the same
7827variable in the makefile are ignored; we say they have been
7828@dfn{overridden} by the command line argument.
7829
7830The most common way to use this facility is to pass extra flags to
7831compilers. For example, in a properly written makefile, the variable
7832@code{CFLAGS} is included in each recipe that runs the C compiler, so a
7833file @file{foo.c} would be compiled something like this:
7834
7835@example
7836cc -c $(CFLAGS) foo.c
7837@end example
7838
7839Thus, whatever value you set for @code{CFLAGS} affects each compilation
7840that occurs. The makefile probably specifies the usual value for
7841@code{CFLAGS}, like this:
7842
7843@example
7844CFLAGS=-g
7845@end example
7846
7847Each time you run @code{make}, you can override this value if you
7848wish. For example, if you say @samp{make CFLAGS='-g -O'}, each C
7849compilation will be done with @samp{cc -c -g -O}. (This also
7850illustrates how you can use quoting in the shell to enclose spaces and
7851other special characters in the value of a variable when you override
7852it.)
7853
7854The variable @code{CFLAGS} is only one of many standard variables that
7855exist just so that you can change them this way. @xref{Implicit
7856Variables, , Variables Used by Implicit Rules}, for a complete list.
7857
7858You can also program the makefile to look at additional variables of your
7859own, giving the user the ability to control other aspects of how the
7860makefile works by changing the variables.
7861
7862When you override a variable with a command line argument, you can
7863define either a recursively-expanded variable or a simply-expanded
7864variable. The examples shown above make a recursively-expanded
7865variable; to make a simply-expanded variable, write @samp{:=} instead
7866of @samp{=}. But, unless you want to include a variable reference or
7867function call in the @emph{value} that you specify, it makes no
7868difference which kind of variable you create.
7869
7870There is one way that the makefile can change a variable that you have
7871overridden. This is to use the @code{override} directive, which is a line
7872that looks like this: @samp{override @var{variable} = @var{value}}
7873(@pxref{Override Directive, ,The @code{override} Directive}).
7874
7875@node Testing, Options Summary, Overriding, Running
7876@section Testing the Compilation of a Program
7877@cindex testing compilation
7878@cindex compilation, testing
7879
7880Normally, when an error happens in executing a shell command, @code{make}
7881gives up immediately, returning a nonzero status. No further recipes are
7882executed for any target. The error implies that the goal cannot be
7883correctly remade, and @code{make} reports this as soon as it knows.
7884
7885When you are compiling a program that you have just changed, this is not
7886what you want. Instead, you would rather that @code{make} try compiling
7887every file that can be tried, to show you as many compilation errors
7888as possible.
7889
7890@cindex @code{-k}
7891@cindex @code{--keep-going}
7892On these occasions, you should use the @samp{-k} or
7893@samp{--keep-going} flag. This tells @code{make} to continue to
7894consider the other prerequisites of the pending targets, remaking them
7895if necessary, before it gives up and returns nonzero status. For
7896example, after an error in compiling one object file, @samp{make -k}
7897will continue compiling other object files even though it already
7898knows that linking them will be impossible. In addition to continuing
7899after failed shell commands, @samp{make -k} will continue as much as
7900possible after discovering that it does not know how to make a target
7901or prerequisite file. This will always cause an error message, but
7902without @samp{-k}, it is a fatal error (@pxref{Options Summary,
7903,Summary of Options}).@refill
7904
7905The usual behavior of @code{make} assumes that your purpose is to get the
7906goals up to date; once @code{make} learns that this is impossible, it might
7907as well report the failure immediately. The @samp{-k} flag says that the
7908real purpose is to test as much as possible of the changes made in the
7909program, perhaps to find several independent problems so that you can
7910correct them all before the next attempt to compile. This is why Emacs'
7911@kbd{M-x compile} command passes the @samp{-k} flag by default.
7912
7913@node Options Summary, , Testing, Running
7914@section Summary of Options
7915@cindex options
7916@cindex flags
7917@cindex switches
7918
7919Here is a table of all the options @code{make} understands:
7920
7921@table @samp
7922@item -b
7923@cindex @code{-b}
7924@itemx -m
7925@cindex @code{-m}
7926These options are ignored for compatibility with other versions of @code{make}.
7927
7928@item -B
7929@cindex @code{-B}
7930@itemx --always-make
7931@cindex @code{--always-make}
7932Consider all targets out-of-date. GNU @code{make} proceeds to
7933consider targets and their prerequisites using the normal algorithms;
7934however, all targets so considered are always remade regardless of the
7935status of their prerequisites. To avoid infinite recursion, if
7936@code{MAKE_RESTARTS} (@pxref{Special Variables, , Other Special
7937Variables}) is set to a number greater than 0 this option is disabled
7938when considering whether to remake makefiles (@pxref{Remaking
7939Makefiles, , How Makefiles Are Remade}).
7940
7941@item -C @var{dir}
7942@cindex @code{-C}
7943@itemx --directory=@var{dir}
7944@cindex @code{--directory}
7945Change to directory @var{dir} before reading the makefiles. If multiple
7946@samp{-C} options are specified, each is interpreted relative to the
7947previous one: @samp{-C / -C etc} is equivalent to @samp{-C /etc}.
7948This is typically used with recursive invocations of @code{make}
7949(@pxref{Recursion, ,Recursive Use of @code{make}}).
7950
7951@item -d
7952@cindex @code{-d}
7953@c Extra blank line here makes the table look better.
7954
7955Print debugging information in addition to normal processing. The
7956debugging information says which files are being considered for
7957remaking, which file-times are being compared and with what results,
7958which files actually need to be remade, which implicit rules are
7959considered and which are applied---everything interesting about how
7960@code{make} decides what to do. The @code{-d} option is equivalent to
7961@samp{--debug=a} (see below).
7962
7963@item --debug[=@var{options}]
7964@cindex @code{--debug}
7965@c Extra blank line here makes the table look better.
7966
7967Print debugging information in addition to normal processing. Various
7968levels and types of output can be chosen. With no arguments, print the
7969``basic'' level of debugging. Possible arguments are below; only the
7970first character is considered, and values must be comma- or
7971space-separated.
7972
7973@table @code
7974@item a (@i{all})
7975All types of debugging output are enabled. This is equivalent to using
7976@samp{-d}.
7977
7978@item b (@i{basic})
7979Basic debugging prints each target that was found to be out-of-date, and
7980whether the build was successful or not.
7981
7982@item v (@i{verbose})
7983A level above @samp{basic}; includes messages about which makefiles were
7984parsed, prerequisites that did not need to be rebuilt, etc. This option
7985also enables @samp{basic} messages.
7986
7987@item i (@i{implicit})
7988Prints messages describing the implicit rule searches for each target.
7989This option also enables @samp{basic} messages.
7990
7991@item j (@i{jobs})
7992Prints messages giving details on the invocation of specific subcommands.
7993
7994@item m (@i{makefile})
7995By default, the above messages are not enabled while trying to remake
7996the makefiles. This option enables messages while rebuilding makefiles,
7997too. Note that the @samp{all} option does enable this option. This
7998option also enables @samp{basic} messages.
7999@end table
8000
8001@item -e
8002@cindex @code{-e}
8003@itemx --environment-overrides
8004@cindex @code{--environment-overrides}
8005Give variables taken from the environment precedence
8006over variables from makefiles.
8007@xref{Environment, ,Variables from the Environment}.
8008
8009@item -f @var{file}
8010@cindex @code{-f}
8011@itemx --file=@var{file}
8012@cindex @code{--file}
8013@itemx --makefile=@var{file}
8014@cindex @code{--makefile}
8015Read the file named @var{file} as a makefile.
8016@xref{Makefiles, ,Writing Makefiles}.
8017
8018@item -h
8019@cindex @code{-h}
8020@itemx --help
8021@cindex @code{--help}
8022@c Extra blank line here makes the table look better.
8023
8024Remind you of the options that @code{make} understands and then exit.
8025
8026@item -i
8027@cindex @code{-i}
8028@itemx --ignore-errors
8029@cindex @code{--ignore-errors}
8030Ignore all errors in recipes executed to remake files.
8031@xref{Errors, ,Errors in Recipes}.
8032
8033@item -I @var{dir}
8034@cindex @code{-I}
8035@itemx --include-dir=@var{dir}
8036@cindex @code{--include-dir}
8037Specifies a directory @var{dir} to search for included makefiles.
8038@xref{Include, ,Including Other Makefiles}. If several @samp{-I}
8039options are used to specify several directories, the directories are
8040searched in the order specified.
8041
8042@item -j [@var{jobs}]
8043@cindex @code{-j}
8044@itemx --jobs[=@var{jobs}]
8045@cindex @code{--jobs}
8046Specifies the number of recipes (jobs) to run simultaneously. With no
8047argument, @code{make} runs as many recipes simultaneously as possible.
8048If there is more than one @samp{-j} option, the last one is effective.
8049@xref{Parallel, ,Parallel Execution}, for more information on how
8050recipes are run. Note that this option is ignored on MS-DOS.
8051
8052@item -k
8053@cindex @code{-k}
8054@itemx --keep-going
8055@cindex @code{--keep-going}
8056Continue as much as possible after an error. While the target that
8057failed, and those that depend on it, cannot be remade, the other
8058prerequisites of these targets can be processed all the same.
8059@xref{Testing, ,Testing the Compilation of a Program}.
8060
8061@item -l [@var{load}]
8062@cindex @code{-l}
8063@itemx --load-average[=@var{load}]
8064@cindex @code{--load-average}
8065@itemx --max-load[=@var{load}]
8066@cindex @code{--max-load}
8067Specifies that no new recipes should be started if there are other
8068recipes running and the load average is at least @var{load} (a
8069floating-point number). With no argument, removes a previous load
8070limit. @xref{Parallel, ,Parallel Execution}.
8071
8072@item -L
8073@cindex @code{-L}
8074@itemx --check-symlink-times
8075@cindex @code{--check-symlink-times}
8076On systems that support symbolic links, this option causes @code{make}
8077to consider the timestamps on any symbolic links in addition to the
8078timestamp on the file referenced by those links. When this option is
8079provided, the most recent timestamp among the file and the symbolic
8080links is taken as the modification time for this target file.
8081
8082@item -n
8083@cindex @code{-n}
8084@itemx --just-print
8085@cindex @code{--just-print}
8086@itemx --dry-run
8087@cindex @code{--dry-run}
8088@itemx --recon
8089@cindex @code{--recon}
8090@c Extra blank line here makes the table look better.
8091
8092Print the recipe that would be executed, but do not execute it.
8093@xref{Instead of Execution, ,Instead of Executing the Recipes}.
8094
8095@item -o @var{file}
8096@cindex @code{-o}
8097@itemx --old-file=@var{file}
8098@cindex @code{--old-file}
8099@itemx --assume-old=@var{file}
8100@cindex @code{--assume-old}
8101Do not remake the file @var{file} even if it is older than its
8102prerequisites, and do not remake anything on account of changes in
8103@var{file}. Essentially the file is treated as very old and its rules
8104are ignored. @xref{Avoiding Compilation, ,Avoiding Recompilation of
8105Some Files}.@refill
8106
8107@item -p
8108@cindex @code{-p}
8109@itemx --print-data-base
8110@cindex @code{--print-data-base}
8111@cindex data base of @code{make} rules
8112@cindex predefined rules and variables, printing
8113Print the data base (rules and variable values) that results from
8114reading the makefiles; then execute as usual or as otherwise
8115specified. This also prints the version information given by the
8116@samp{-v} switch (see below). To print the data base without trying
8117to remake any files, use @w{@samp{make -qp}}. To print the data base
8118of predefined rules and variables, use @w{@samp{make -p -f /dev/null}}.
8119The data base output contains filename and linenumber information for
8120recipe and variable definitions, so it can be a useful debugging tool
8121in complex environments.
8122
8123@item -q
8124@cindex @code{-q}
8125@itemx --question
8126@cindex @code{--question}
8127``Question mode''. Do not run any recipes, or print anything; just
8128return an exit status that is zero if the specified targets are already
8129up to date, one if any remaking is required, or two if an error is
8130encountered. @xref{Instead of Execution, ,Instead of Executing the
8131Recipes}.@refill
8132
8133@item -r
8134@cindex @code{-r}
8135@itemx --no-builtin-rules
8136@cindex @code{--no-builtin-rules}
8137Eliminate use of the built-in implicit rules (@pxref{Implicit Rules,
8138,Using Implicit Rules}). You can still define your own by writing
8139pattern rules (@pxref{Pattern Rules, ,Defining and Redefining Pattern
8140Rules}). The @samp{-r} option also clears out the default list of
8141suffixes for suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix
8142Rules}). But you can still define your own suffixes with a rule for
8143@code{.SUFFIXES}, and then define your own suffix rules. Note that only
8144@emph{rules} are affected by the @code{-r} option; default variables
8145remain in effect (@pxref{Implicit Variables, ,Variables Used by Implicit
8146Rules}); see the @samp{-R} option below.
8147
8148@item -R
8149@cindex @code{-R}
8150@itemx --no-builtin-variables
8151@cindex @code{--no-builtin-variables}
8152Eliminate use of the built-in rule-specific variables (@pxref{Implicit
8153Variables, ,Variables Used by Implicit Rules}). You can still define
8154your own, of course. The @samp{-R} option also automatically enables
8155the @samp{-r} option (see above), since it doesn't make sense to have
8156implicit rules without any definitions for the variables that they use.
8157
8158@item -s
8159@cindex @code{-s}
8160@itemx --silent
8161@cindex @code{--silent}
8162@itemx --quiet
8163@cindex @code{--quiet}
8164@c Extra blank line here makes the table look better.
8165
8166Silent operation; do not print the recipes as they are executed.
8167@xref{Echoing, ,Recipe Echoing}.
8168
8169@item -S
8170@cindex @code{-S}
8171@itemx --no-keep-going
8172@cindex @code{--no-keep-going}
8173@itemx --stop
8174@cindex @code{--stop}
8175@c Extra blank line here makes the table look better.
8176
8177Cancel the effect of the @samp{-k} option. This is never necessary
8178except in a recursive @code{make} where @samp{-k} might be inherited
8179from the top-level @code{make} via @code{MAKEFLAGS}
8180(@pxref{Recursion, ,Recursive Use of @code{make}})
8181or if you set @samp{-k} in @code{MAKEFLAGS} in your environment.@refill
8182
8183@item -t
8184@cindex @code{-t}
8185@itemx --touch
8186@cindex @code{--touch}
8187@c Extra blank line here makes the table look better.
8188
8189Touch files (mark them up to date without really changing them)
8190instead of running their recipes. This is used to pretend that the
8191recipes were done, in order to fool future invocations of
8192@code{make}. @xref{Instead of Execution, ,Instead of Executing the Recipes}.
8193
8194@item -v
8195@cindex @code{-v}
8196@itemx --version
8197@cindex @code{--version}
8198Print the version of the @code{make} program plus a copyright, a list
8199of authors, and a notice that there is no warranty; then exit.
8200
8201@item -w
8202@cindex @code{-w}
8203@itemx --print-directory
8204@cindex @code{--print-directory}
8205Print a message containing the working directory both before and after
8206executing the makefile. This may be useful for tracking down errors
8207from complicated nests of recursive @code{make} commands.
8208@xref{Recursion, ,Recursive Use of @code{make}}. (In practice, you
8209rarely need to specify this option since @samp{make} does it for you;
8210see @ref{-w Option, ,The @samp{--print-directory} Option}.)
8211
8212@itemx --no-print-directory
8213@cindex @code{--no-print-directory}
8214Disable printing of the working directory under @code{-w}.
8215This option is useful when @code{-w} is turned on automatically,
8216but you do not want to see the extra messages.
8217@xref{-w Option, ,The @samp{--print-directory} Option}.
8218
8219@item -W @var{file}
8220@cindex @code{-W}
8221@itemx --what-if=@var{file}
8222@cindex @code{--what-if}
8223@itemx --new-file=@var{file}
8224@cindex @code{--new-file}
8225@itemx --assume-new=@var{file}
8226@cindex @code{--assume-new}
8227Pretend that the target @var{file} has just been modified. When used
8228with the @samp{-n} flag, this shows you what would happen if you were
8229to modify that file. Without @samp{-n}, it is almost the same as
8230running a @code{touch} command on the given file before running
8231@code{make}, except that the modification time is changed only in the
8232imagination of @code{make}.
8233@xref{Instead of Execution, ,Instead of Executing the Recipes}.
8234
8235@item --warn-undefined-variables
8236@cindex @code{--warn-undefined-variables}
8237@cindex variables, warning for undefined
8238@cindex undefined variables, warning message
8239Issue a warning message whenever @code{make} sees a reference to an
8240undefined variable. This can be helpful when you are trying to debug
8241makefiles which use variables in complex ways.
8242@end table
8243
8244@node Implicit Rules, Archives, Running, Top
8245@chapter Using Implicit Rules
8246@cindex implicit rule
8247@cindex rule, implicit
8248
8249Certain standard ways of remaking target files are used very often. For
8250example, one customary way to make an object file is from a C source file
8251using the C compiler, @code{cc}.
8252
8253@dfn{Implicit rules} tell @code{make} how to use customary techniques so
8254that you do not have to specify them in detail when you want to use
8255them. For example, there is an implicit rule for C compilation. File
8256names determine which implicit rules are run. For example, C
8257compilation typically takes a @file{.c} file and makes a @file{.o} file.
8258So @code{make} applies the implicit rule for C compilation when it sees
8259this combination of file name endings.@refill
8260
8261A chain of implicit rules can apply in sequence; for example, @code{make}
8262will remake a @file{.o} file from a @file{.y} file by way of a @file{.c} file.
8263@iftex
8264@xref{Chained Rules, ,Chains of Implicit Rules}.
8265@end iftex
8266
8267The built-in implicit rules use several variables in their recipes so
8268that, by changing the values of the variables, you can change the way the
8269implicit rule works. For example, the variable @code{CFLAGS} controls the
8270flags given to the C compiler by the implicit rule for C compilation.
8271@iftex
8272@xref{Implicit Variables, ,Variables Used by Implicit Rules}.
8273@end iftex
8274
8275You can define your own implicit rules by writing @dfn{pattern rules}.
8276@iftex
8277@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.
8278@end iftex
8279
8280@dfn{Suffix rules} are a more limited way to define implicit rules.
8281Pattern rules are more general and clearer, but suffix rules are
8282retained for compatibility.
8283@iftex
8284@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
8285@end iftex
8286
8287@menu
8288* Using Implicit:: How to use an existing implicit rule
8289 to get the recipes for updating a file.
8290* Catalogue of Rules:: A list of built-in implicit rules.
8291* Implicit Variables:: How to change what predefined rules do.
8292* Chained Rules:: How to use a chain of implicit rules.
8293* Pattern Rules:: How to define new implicit rules.
8294* Last Resort:: How to define recipes for rules which
8295 cannot find any.
8296* Suffix Rules:: The old-fashioned style of implicit rule.
8297* Implicit Rule Search:: The precise algorithm for applying
8298 implicit rules.
8299@end menu
8300
8301@node Using Implicit, Catalogue of Rules, Implicit Rules, Implicit Rules
8302@section Using Implicit Rules
8303@cindex implicit rule, how to use
8304@cindex rule, implicit, how to use
8305
8306To allow @code{make} to find a customary method for updating a target
8307file, all you have to do is refrain from specifying recipes yourself.
8308Either write a rule with no recipe, or don't write a rule at all.
8309Then @code{make} will figure out which implicit rule to use based on
8310which kind of source file exists or can be made.
8311
8312For example, suppose the makefile looks like this:
8313
8314@example
8315foo : foo.o bar.o
8316 cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)
8317@end example
8318
8319@noindent
8320Because you mention @file{foo.o} but do not give a rule for it, @code{make}
8321will automatically look for an implicit rule that tells how to update it.
8322This happens whether or not the file @file{foo.o} currently exists.
8323
8324If an implicit rule is found, it can supply both a recipe and one or
8325more prerequisites (the source files). You would want to write a rule
8326for @file{foo.o} with no recipe if you need to specify additional
8327prerequisites, such as header files, that the implicit rule cannot
8328supply.
8329
8330Each implicit rule has a target pattern and prerequisite patterns. There may
8331be many implicit rules with the same target pattern. For example, numerous
8332rules make @samp{.o} files: one, from a @samp{.c} file with the C compiler;
8333another, from a @samp{.p} file with the Pascal compiler; and so on. The rule
8334that actually applies is the one whose prerequisites exist or can be made.
8335So, if you have a file @file{foo.c}, @code{make} will run the C compiler;
8336otherwise, if you have a file @file{foo.p}, @code{make} will run the Pascal
8337compiler; and so on.
8338
8339Of course, when you write the makefile, you know which implicit rule you
8340want @code{make} to use, and you know it will choose that one because you
8341know which possible prerequisite files are supposed to exist.
8342@xref{Catalogue of Rules, ,Catalogue of Implicit Rules},
8343for a catalogue of all the predefined implicit rules.
8344
8345Above, we said an implicit rule applies if the required prerequisites ``exist
8346or can be made''. A file ``can be made'' if it is mentioned explicitly in
8347the makefile as a target or a prerequisite, or if an implicit rule can be
8348recursively found for how to make it. When an implicit prerequisite is the
8349result of another implicit rule, we say that @dfn{chaining} is occurring.
8350@xref{Chained Rules, ,Chains of Implicit Rules}.
8351
8352In general, @code{make} searches for an implicit rule for each target, and
8353for each double-colon rule, that has no recipe. A file that is mentioned
8354only as a prerequisite is considered a target whose rule specifies nothing,
8355so implicit rule search happens for it. @xref{Implicit Rule Search, ,Implicit Rule Search Algorithm}, for the
8356details of how the search is done.
8357
8358Note that explicit prerequisites do not influence implicit rule search.
8359For example, consider this explicit rule:
8360
8361@example
8362foo.o: foo.p
8363@end example
8364
8365@noindent
8366The prerequisite on @file{foo.p} does not necessarily mean that
8367@code{make} will remake @file{foo.o} according to the implicit rule to
8368make an object file, a @file{.o} file, from a Pascal source file, a
8369@file{.p} file. For example, if @file{foo.c} also exists, the implicit
8370rule to make an object file from a C source file is used instead,
8371because it appears before the Pascal rule in the list of predefined
8372implicit rules (@pxref{Catalogue of Rules, , Catalogue of Implicit
8373Rules}).
8374
8375If you do not want an implicit rule to be used for a target that has no
8376recipe, you can give that target an empty recipe by writing a semicolon
8377(@pxref{Empty Recipes, ,Defining Empty Recipes}).
8378
8379@node Catalogue of Rules, Implicit Variables, Using Implicit, Implicit Rules
8380@section Catalogue of Implicit Rules
8381@cindex implicit rule, predefined
8382@cindex rule, implicit, predefined
8383
8384Here is a catalogue of predefined implicit rules which are always
8385available unless the makefile explicitly overrides or cancels them.
8386@xref{Canceling Rules, ,Canceling Implicit Rules}, for information on
8387canceling or overriding an implicit rule. The @samp{-r} or
8388@samp{--no-builtin-rules} option cancels all predefined rules.
8389
8390This manual only documents the default rules available on POSIX-based
8391operating systems. Other operating systems, such as VMS, Windows,
8392OS/2, etc. may have different sets of default rules. To see the full
8393list of default rules and variables available in your version of GNU
8394@code{make}, run @samp{make -p} in a directory with no makefile.
8395
8396Not all of these rules will always be defined, even when the @samp{-r}
8397option is not given. Many of the predefined implicit rules are
8398implemented in @code{make} as suffix rules, so which ones will be
8399defined depends on the @dfn{suffix list} (the list of prerequisites of
8400the special target @code{.SUFFIXES}). The default suffix list is:
8401@code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc},
8402@code{.C}, @code{.cpp}, @code{.p}, @code{.f}, @code{.F}, @code{.m},
8403@code{.r}, @code{.y}, @code{.l}, @code{.ym}, @code{.lm}, @code{.s},
8404@code{.S}, @code{.mod}, @code{.sym}, @code{.def}, @code{.h},
8405@code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo}, @code{.texi},
8406@code{.txinfo}, @code{.w}, @code{.ch} @code{.web}, @code{.sh},
8407@code{.elc}, @code{.el}. All of the implicit rules described below
8408whose prerequisites have one of these suffixes are actually suffix
8409rules. If you modify the suffix list, the only predefined suffix
8410rules in effect will be those named by one or two of the suffixes that
8411are on the list you specify; rules whose suffixes fail to be on the
8412list are disabled. @xref{Suffix Rules, ,Old-Fashioned Suffix Rules},
8413for full details on suffix rules.
8414
8415@table @asis
8416@item Compiling C programs
8417@cindex C, rule to compile
8418@pindex cc
8419@pindex gcc
8420@pindex .o
8421@pindex .c
8422@file{@var{n}.o} is made automatically from @file{@var{n}.c} with
8423a recipe of the form @samp{$(CC) -c $(CPPFLAGS) $(CFLAGS)}.@refill
8424
8425@item Compiling C++ programs
8426@cindex C++, rule to compile
8427@pindex g++
8428@pindex .cc
8429@pindex .cpp
8430@pindex .C
8431@file{@var{n}.o} is made automatically from @file{@var{n}.cc},
8432@file{@var{n}.cpp}, or @file{@var{n}.C} with a recipe of the form
8433@samp{$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)}. We encourage you to use the
8434suffix @samp{.cc} for C++ source files instead of @samp{.C}.@refill
8435
8436@item Compiling Pascal programs
8437@cindex Pascal, rule to compile
8438@pindex pc
8439@pindex .p
8440@file{@var{n}.o} is made automatically from @file{@var{n}.p}
8441with the recipe @samp{$(PC) -c $(PFLAGS)}.@refill
8442
8443@item Compiling Fortran and Ratfor programs
8444@cindex Fortran, rule to compile
8445@cindex Ratfor, rule to compile
8446@pindex f77
8447@pindex .f
8448@pindex .r
8449@pindex .F
8450@file{@var{n}.o} is made automatically from @file{@var{n}.r},
8451@file{@var{n}.F} or @file{@var{n}.f} by running the
8452Fortran compiler. The precise recipe used is as follows:@refill
8453
8454@table @samp
8455@item .f
8456@samp{$(FC) -c $(FFLAGS)}.
8457@item .F
8458@samp{$(FC) -c $(FFLAGS) $(CPPFLAGS)}.
8459@item .r
8460@samp{$(FC) -c $(FFLAGS) $(RFLAGS)}.
8461@end table
8462
8463@item Preprocessing Fortran and Ratfor programs
8464@file{@var{n}.f} is made automatically from @file{@var{n}.r} or
8465@file{@var{n}.F}. This rule runs just the preprocessor to convert a
8466Ratfor or preprocessable Fortran program into a strict Fortran
8467program. The precise recipe used is as follows:@refill
8468
8469@table @samp
8470@item .F
8471@samp{$(FC) -F $(CPPFLAGS) $(FFLAGS)}.
8472@item .r
8473@samp{$(FC) -F $(FFLAGS) $(RFLAGS)}.
8474@end table
8475
8476@item Compiling Modula-2 programs
8477@cindex Modula-2, rule to compile
8478@pindex m2c
8479@pindex .sym
8480@pindex .def
8481@pindex .mod
8482@file{@var{n}.sym} is made from @file{@var{n}.def} with a recipe
8483of the form @samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}. @file{@var{n}.o}
8484is made from @file{@var{n}.mod}; the form is:
8485@w{@samp{$(M2C) $(M2FLAGS) $(MODFLAGS)}}.@refill
8486
8487@need 1200
8488@item Assembling and preprocessing assembler programs
8489@cindex assembly, rule to compile
8490@pindex as
8491@pindex .s
8492@file{@var{n}.o} is made automatically from @file{@var{n}.s} by
8493running the assembler, @code{as}. The precise recipe is
8494@samp{$(AS) $(ASFLAGS)}.@refill
8495
8496@pindex .S
8497@file{@var{n}.s} is made automatically from @file{@var{n}.S} by
8498running the C preprocessor, @code{cpp}. The precise recipe is
8499@w{@samp{$(CPP) $(CPPFLAGS)}}.
8500
8501@item Linking a single object file
8502@cindex linking, predefined rule for
8503@pindex ld
8504@pindex .o
8505@file{@var{n}} is made automatically from @file{@var{n}.o} by running
8506the linker (usually called @code{ld}) via the C compiler. The precise
8507recipe used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES) $(LDLIBS)}}.
8508
8509This rule does the right thing for a simple program with only one
8510source file. It will also do the right thing if there are multiple
8511object files (presumably coming from various other source files), one
8512of which has a name matching that of the executable file. Thus,
8513
8514@example
8515x: y.o z.o
8516@end example
8517
8518@noindent
8519when @file{x.c}, @file{y.c} and @file{z.c} all exist will execute:
8520
8521@example
8522@group
8523cc -c x.c -o x.o
8524cc -c y.c -o y.o
8525cc -c z.c -o z.o
8526cc x.o y.o z.o -o x
8527rm -f x.o
8528rm -f y.o
8529rm -f z.o
8530@end group
8531@end example
8532
8533@noindent
8534In more complicated cases, such as when there is no object file whose
8535name derives from the executable file name, you must write an explicit
8536recipe for linking.
8537
8538Each kind of file automatically made into @samp{.o} object files will
8539be automatically linked by using the compiler (@samp{$(CC)},
8540@samp{$(FC)} or @samp{$(PC)}; the C compiler @samp{$(CC)} is used to
8541assemble @samp{.s} files) without the @samp{-c} option. This could be
8542done by using the @samp{.o} object files as intermediates, but it is
8543faster to do the compiling and linking in one step, so that's how it's
8544done.@refill
8545
8546@item Yacc for C programs
8547@pindex yacc
8548@cindex Yacc, rule to run
8549@pindex .y
8550@file{@var{n}.c} is made automatically from @file{@var{n}.y} by
8551running Yacc with the recipe @samp{$(YACC) $(YFLAGS)}.
8552
8553@item Lex for C programs
8554@pindex lex
8555@cindex Lex, rule to run
8556@pindex .l
8557@file{@var{n}.c} is made automatically from @file{@var{n}.l} by
8558running Lex. The actual recipe is @samp{$(LEX) $(LFLAGS)}.
8559
8560@item Lex for Ratfor programs
8561@file{@var{n}.r} is made automatically from @file{@var{n}.l} by
8562running Lex. The actual recipe is @samp{$(LEX) $(LFLAGS)}.
8563
8564The convention of using the same suffix @samp{.l} for all Lex files
8565regardless of whether they produce C code or Ratfor code makes it
8566impossible for @code{make} to determine automatically which of the two
8567languages you are using in any particular case. If @code{make} is
8568called upon to remake an object file from a @samp{.l} file, it must
8569guess which compiler to use. It will guess the C compiler, because
8570that is more common. If you are using Ratfor, make sure @code{make}
8571knows this by mentioning @file{@var{n}.r} in the makefile. Or, if you
8572are using Ratfor exclusively, with no C files, remove @samp{.c} from
8573the list of implicit rule suffixes with:@refill
8574
8575@example
8576@group
8577.SUFFIXES:
8578.SUFFIXES: .o .r .f .l @dots{}
8579@end group
8580@end example
8581
8582@item Making Lint Libraries from C, Yacc, or Lex programs
8583@pindex lint
8584@cindex @code{lint}, rule to run
8585@pindex .ln
8586@file{@var{n}.ln} is made from @file{@var{n}.c} by running @code{lint}.
8587The precise recipe is @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}.
8588The same recipe is used on the C code produced from
8589@file{@var{n}.y} or @file{@var{n}.l}.@refill
8590
8591@item @TeX{} and Web
8592@cindex @TeX{}, rule to run
8593@cindex Web, rule to run
8594@pindex tex
8595@pindex cweave
8596@pindex weave
8597@pindex tangle
8598@pindex ctangle
8599@pindex .dvi
8600@pindex .tex
8601@pindex .web
8602@pindex .w
8603@pindex .ch
8604@file{@var{n}.dvi} is made from @file{@var{n}.tex} with the recipe
8605@samp{$(TEX)}. @file{@var{n}.tex} is made from @file{@var{n}.web} with
8606@samp{$(WEAVE)}, or from @file{@var{n}.w} (and from @file{@var{n}.ch} if
8607it exists or can be made) with @samp{$(CWEAVE)}. @file{@var{n}.p} is
8608made from @file{@var{n}.web} with @samp{$(TANGLE)} and @file{@var{n}.c}
8609is made from @file{@var{n}.w} (and from @file{@var{n}.ch} if it exists
8610or can be made) with @samp{$(CTANGLE)}.@refill
8611
8612@item Texinfo and Info
8613@cindex Texinfo, rule to format
8614@cindex Info, rule to format
8615@pindex texi2dvi
8616@pindex makeinfo
8617@pindex .texinfo
8618@pindex .info
8619@pindex .texi
8620@pindex .txinfo
8621@file{@var{n}.dvi} is made from @file{@var{n}.texinfo},
8622@file{@var{n}.texi}, or @file{@var{n}.txinfo}, with the recipe
8623@w{@samp{$(TEXI2DVI) $(TEXI2DVI_FLAGS)}}. @file{@var{n}.info} is made from
8624@file{@var{n}.texinfo}, @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with
8625the recipe @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}.
8626
8627@item RCS
8628@cindex RCS, rule to extract from
8629@pindex co
8630@pindex ,v @r{(RCS file extension)}
8631Any file @file{@var{n}} is extracted if necessary from an RCS file
8632named either @file{@var{n},v} or @file{RCS/@var{n},v}. The precise
8633recipe used is @w{@samp{$(CO) $(COFLAGS)}}. @file{@var{n}} will not be
8634extracted from RCS if it already exists, even if the RCS file is
8635newer. The rules for RCS are terminal
8636(@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
8637so RCS files cannot be generated from another source; they must
8638actually exist.@refill
8639
8640@item SCCS
8641@cindex SCCS, rule to extract from
8642@pindex get
8643@pindex s. @r{(SCCS file prefix)}
8644Any file @file{@var{n}} is extracted if necessary from an SCCS file
8645named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}. The precise
8646recipe used is @w{@samp{$(GET) $(GFLAGS)}}. The rules for SCCS are
8647terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
8648so SCCS files cannot be generated from another source; they must
8649actually exist.@refill
8650
8651@pindex .sh
8652For the benefit of SCCS, a file @file{@var{n}} is copied from
8653@file{@var{n}.sh} and made executable (by everyone). This is for
8654shell scripts that are checked into SCCS. Since RCS preserves the
8655execution permission of a file, you do not need to use this feature
8656with RCS.@refill
8657
8658We recommend that you avoid using of SCCS. RCS is widely held to be
8659superior, and is also free. By choosing free software in place of
8660comparable (or inferior) proprietary software, you support the free
8661software movement.
8662@end table
8663
8664Usually, you want to change only the variables listed in the table
8665above, which are documented in the following section.
8666
8667However, the recipes in built-in implicit rules actually use
8668variables such as @code{COMPILE.c}, @code{LINK.p}, and
8669@code{PREPROCESS.S}, whose values contain the recipes listed above.
8670
8671@code{make} follows the convention that the rule to compile a
8672@file{.@var{x}} source file uses the variable @code{COMPILE.@var{x}}.
8673Similarly, the rule to produce an executable from a @file{.@var{x}}
8674file uses @code{LINK.@var{x}}; and the rule to preprocess a
8675@file{.@var{x}} file uses @code{PREPROCESS.@var{x}}.
8676
8677@vindex OUTPUT_OPTION
8678Every rule that produces an object file uses the variable
8679@code{OUTPUT_OPTION}. @code{make} defines this variable either to
8680contain @samp{-o $@@}, or to be empty, depending on a compile-time
8681option. You need the @samp{-o} option to ensure that the output goes
8682into the right file when the source file is in a different directory,
8683as when using @code{VPATH} (@pxref{Directory Search}). However,
8684compilers on some systems do not accept a @samp{-o} switch for object
8685files. If you use such a system, and use @code{VPATH}, some
8686compilations will put their output in the wrong place.
8687A possible workaround for this problem is to give @code{OUTPUT_OPTION}
8688the value @w{@samp{; mv $*.o $@@}}.
8689
8690@node Implicit Variables, Chained Rules, Catalogue of Rules, Implicit Rules
8691@section Variables Used by Implicit Rules
8692@cindex flags for compilers
8693
8694The recipes in built-in implicit rules make liberal use of certain
8695predefined variables. You can alter the values of these variables in
8696the makefile, with arguments to @code{make}, or in the environment to
8697alter how the implicit rules work without redefining the rules
8698themselves. You can cancel all variables used by implicit rules with
8699the @samp{-R} or @samp{--no-builtin-variables} option.
8700
8701For example, the recipe used to compile a C source file actually says
8702@samp{$(CC) -c $(CFLAGS) $(CPPFLAGS)}. The default values of the variables
8703used are @samp{cc} and nothing, resulting in the command @samp{cc -c}. By
8704redefining @samp{CC} to @samp{ncc}, you could cause @samp{ncc} to be
8705used for all C compilations performed by the implicit rule. By redefining
8706@samp{CFLAGS} to be @samp{-g}, you could pass the @samp{-g} option to
8707each compilation. @emph{All} implicit rules that do C compilation use
8708@samp{$(CC)} to get the program name for the compiler and @emph{all}
8709include @samp{$(CFLAGS)} among the arguments given to the compiler.@refill
8710
8711The variables used in implicit rules fall into two classes: those that are
8712names of programs (like @code{CC}) and those that contain arguments for the
8713programs (like @code{CFLAGS}). (The ``name of a program'' may also contain
8714some command arguments, but it must start with an actual executable program
8715name.) If a variable value contains more than one argument, separate them
8716with spaces.
8717
8718The following tables describe of some of the more commonly-used predefined
8719variables. This list is not exhaustive, and the default values shown here may
8720not be what @code{make} selects for your environment. To see the
8721complete list of predefined variables for your instance of GNU @code{make} you
8722can run @samp{make -p} in a directory with no makefiles.
8723
8724Here is a table of some of the more common variables used as names of
8725programs in built-in rules:
8726makefiles.
8727
8728@table @code
8729@item AR
8730@vindex AR
8731Archive-maintaining program; default @samp{ar}.
8732@pindex ar
8733
8734@item AS
8735@vindex AS
8736Program for compiling assembly files; default @samp{as}.
8737@pindex as
8738
8739@item CC
8740@vindex CC
8741Program for compiling C programs; default @samp{cc}.
8742@pindex cc
8743
8744@item CXX
8745@vindex CXX
8746Program for compiling C++ programs; default @samp{g++}.
8747@pindex g++
8748
8749@item CPP
8750@vindex CPP
8751Program for running the C preprocessor, with results to standard output;
8752default @samp{$(CC) -E}.
8753
8754@item FC
8755@vindex FC
8756Program for compiling or preprocessing Fortran and Ratfor programs;
8757default @samp{f77}.
8758@pindex f77
8759
8760@item M2C
8761@vindex M2C
8762Program to use to compile Modula-2 source code; default @samp{m2c}.
8763@pindex m2c
8764
8765@item PC
8766@vindex PC
8767Program for compiling Pascal programs; default @samp{pc}.
8768@pindex pc
8769
8770@item CO
8771@vindex CO
8772Program for extracting a file from RCS; default @samp{co}.
8773@pindex co
8774
8775@item GET
8776@vindex GET
8777Program for extracting a file from SCCS; default @samp{get}.
8778@pindex get
8779
8780@item LEX
8781@vindex LEX
8782Program to use to turn Lex grammars into source code; default @samp{lex}.
8783@pindex lex
8784
8785@item YACC
8786@vindex YACC
8787Program to use to turn Yacc grammars into source code; default @samp{yacc}.
8788@pindex yacc
8789
8790@item LINT
8791@vindex LINT
8792Program to use to run lint on source code; default @samp{lint}.
8793@pindex lint
8794
8795@item MAKEINFO
8796@vindex MAKEINFO
8797Program to convert a Texinfo source file into an Info file; default
8798@samp{makeinfo}.
8799@pindex makeinfo
8800
8801@item TEX
8802@vindex TEX
8803Program to make @TeX{} @sc{dvi} files from @TeX{} source;
8804default @samp{tex}.
8805@pindex tex
8806
8807@item TEXI2DVI
8808@vindex TEXI2DVI
8809Program to make @TeX{} @sc{dvi} files from Texinfo source;
8810default @samp{texi2dvi}.
8811@pindex texi2dvi
8812
8813@item WEAVE
8814@vindex WEAVE
8815Program to translate Web into @TeX{}; default @samp{weave}.
8816@pindex weave
8817
8818@item CWEAVE
8819@vindex CWEAVE
8820Program to translate C Web into @TeX{}; default @samp{cweave}.
8821@pindex cweave
8822
8823@item TANGLE
8824@vindex TANGLE
8825Program to translate Web into Pascal; default @samp{tangle}.
8826@pindex tangle
8827
8828@item CTANGLE
8829@vindex CTANGLE
8830Program to translate C Web into C; default @samp{ctangle}.
8831@pindex ctangle
8832
8833@item RM
8834@vindex RM
8835Command to remove a file; default @samp{rm -f}.
8836@pindex rm
8837@end table
8838
8839Here is a table of variables whose values are additional arguments for the
8840programs above. The default values for all of these is the empty
8841string, unless otherwise noted.
8842
8843@table @code
8844@item ARFLAGS
8845@vindex ARFLAGS
8846Flags to give the archive-maintaining program; default @samp{rv}.
8847
8848@item ASFLAGS
8849@vindex ASFLAGS
8850Extra flags to give to the assembler (when explicitly
8851invoked on a @samp{.s} or @samp{.S} file).
8852
8853@item CFLAGS
8854@vindex CFLAGS
8855Extra flags to give to the C compiler.
8856
8857@item CXXFLAGS
8858@vindex CXXFLAGS
8859Extra flags to give to the C++ compiler.
8860
8861@item COFLAGS
8862@vindex COFLAGS
8863Extra flags to give to the RCS @code{co} program.
8864
8865@item CPPFLAGS
8866@vindex CPPFLAGS
8867Extra flags to give to the C preprocessor and programs
8868that use it (the C and Fortran compilers).
8869
8870@item FFLAGS
8871@vindex FFLAGS
8872Extra flags to give to the Fortran compiler.
8873
8874@item GFLAGS
8875@vindex GFLAGS
8876Extra flags to give to the SCCS @code{get} program.
8877
8878@item LDFLAGS
8879@vindex LDFLAGS
8880Extra flags to give to compilers when they are supposed to invoke the linker,
8881@samp{ld}.
8882
8883@item LFLAGS
8884@vindex LFLAGS
8885Extra flags to give to Lex.
8886
8887@item YFLAGS
8888@vindex YFLAGS
8889Extra flags to give to Yacc.
8890
8891@item PFLAGS
8892@vindex PFLAGS
8893Extra flags to give to the Pascal compiler.
8894
8895@item RFLAGS
8896@vindex RFLAGS
8897Extra flags to give to the Fortran compiler for Ratfor programs.
8898
8899@item LINTFLAGS
8900@vindex LINTFLAGS
8901Extra flags to give to lint.
8902@end table
8903
8904@node Chained Rules, Pattern Rules, Implicit Variables, Implicit Rules
8905@section Chains of Implicit Rules
8906
8907@cindex chains of rules
8908@cindex rule, implicit, chains of
8909Sometimes a file can be made by a sequence of implicit rules. For example,
8910a file @file{@var{n}.o} could be made from @file{@var{n}.y} by running
8911first Yacc and then @code{cc}. Such a sequence is called a @dfn{chain}.
8912
8913If the file @file{@var{n}.c} exists, or is mentioned in the makefile, no
8914special searching is required: @code{make} finds that the object file can
8915be made by C compilation from @file{@var{n}.c}; later on, when considering
8916how to make @file{@var{n}.c}, the rule for running Yacc is
8917used. Ultimately both @file{@var{n}.c} and @file{@var{n}.o} are
8918updated.@refill
8919
8920@cindex intermediate files
8921@cindex files, intermediate
8922However, even if @file{@var{n}.c} does not exist and is not mentioned,
8923@code{make} knows how to envision it as the missing link between
8924@file{@var{n}.o} and @file{@var{n}.y}! In this case, @file{@var{n}.c} is
8925called an @dfn{intermediate file}. Once @code{make} has decided to use the
8926intermediate file, it is entered in the data base as if it had been
8927mentioned in the makefile, along with the implicit rule that says how to
8928create it.@refill
8929
8930Intermediate files are remade using their rules just like all other
8931files. But intermediate files are treated differently in two ways.
8932
8933The first difference is what happens if the intermediate file does not
8934exist. If an ordinary file @var{b} does not exist, and @code{make}
8935considers a target that depends on @var{b}, it invariably creates
8936@var{b} and then updates the target from @var{b}. But if @var{b} is an
8937intermediate file, then @code{make} can leave well enough alone. It
8938won't bother updating @var{b}, or the ultimate target, unless some
8939prerequisite of @var{b} is newer than that target or there is some other
8940reason to update that target.
8941
8942The second difference is that if @code{make} @emph{does} create @var{b}
8943in order to update something else, it deletes @var{b} later on after it
8944is no longer needed. Therefore, an intermediate file which did not
8945exist before @code{make} also does not exist after @code{make}.
8946@code{make} reports the deletion to you by printing a @samp{rm -f}
8947command showing which file it is deleting.
8948
8949Ordinarily, a file cannot be intermediate if it is mentioned in the
8950makefile as a target or prerequisite. However, you can explicitly mark a
8951file as intermediate by listing it as a prerequisite of the special target
8952@code{.INTERMEDIATE}. This takes effect even if the file is mentioned
8953explicitly in some other way.
8954
8955@cindex intermediate files, preserving
8956@cindex preserving intermediate files
8957@cindex secondary files
8958You can prevent automatic deletion of an intermediate file by marking it
8959as a @dfn{secondary} file. To do this, list it as a prerequisite of the
8960special target @code{.SECONDARY}. When a file is secondary, @code{make}
8961will not create the file merely because it does not already exist, but
8962@code{make} does not automatically delete the file. Marking a file as
8963secondary also marks it as intermediate.
8964
8965You can list the target pattern of an implicit rule (such as @samp{%.o})
8966as a prerequisite of the special target @code{.PRECIOUS} to preserve
8967intermediate files made by implicit rules whose target patterns match
8968that file's name; see @ref{Interrupts}.@refill
8969@cindex preserving with @code{.PRECIOUS}
8970@cindex @code{.PRECIOUS} intermediate files
8971
8972A chain can involve more than two implicit rules. For example, it is
8973possible to make a file @file{foo} from @file{RCS/foo.y,v} by running RCS,
8974Yacc and @code{cc}. Then both @file{foo.y} and @file{foo.c} are
8975intermediate files that are deleted at the end.@refill
8976
8977No single implicit rule can appear more than once in a chain. This means
8978that @code{make} will not even consider such a ridiculous thing as making
8979@file{foo} from @file{foo.o.o} by running the linker twice. This
8980constraint has the added benefit of preventing any infinite loop in the
8981search for an implicit rule chain.
8982
8983There are some special implicit rules to optimize certain cases that would
8984otherwise be handled by rule chains. For example, making @file{foo} from
8985@file{foo.c} could be handled by compiling and linking with separate
8986chained rules, using @file{foo.o} as an intermediate file. But what
8987actually happens is that a special rule for this case does the compilation
8988and linking with a single @code{cc} command. The optimized rule is used in
8989preference to the step-by-step chain because it comes earlier in the
8990ordering of rules.
8991
8992@node Pattern Rules, Last Resort, Chained Rules, Implicit Rules
8993@section Defining and Redefining Pattern Rules
8994
8995You define an implicit rule by writing a @dfn{pattern rule}. A pattern
8996rule looks like an ordinary rule, except that its target contains the
8997character @samp{%} (exactly one of them). The target is considered a
8998pattern for matching file names; the @samp{%} can match any nonempty
8999substring, while other characters match only themselves. The prerequisites
9000likewise use @samp{%} to show how their names relate to the target name.
9001
9002Thus, a pattern rule @samp{%.o : %.c} says how to make any file
9003@file{@var{stem}.o} from another file @file{@var{stem}.c}.@refill
9004
9005Note that expansion using @samp{%} in pattern rules occurs
9006@strong{after} any variable or function expansions, which take place
9007when the makefile is read. @xref{Using Variables, , How to Use
9008Variables}, and @ref{Functions, ,Functions for Transforming Text}.
9009
9010@menu
9011* Pattern Intro:: An introduction to pattern rules.
9012* Pattern Examples:: Examples of pattern rules.
9013* Automatic Variables:: How to use automatic variables in the
9014 recipes of implicit rules.
9015* Pattern Match:: How patterns match.
9016* Match-Anything Rules:: Precautions you should take prior to
9017 defining rules that can match any
9018 target file whatever.
9019* Canceling Rules:: How to override or cancel built-in rules.
9020@end menu
9021
9022@node Pattern Intro, Pattern Examples, Pattern Rules, Pattern Rules
9023@subsection Introduction to Pattern Rules
9024@cindex pattern rule
9025@cindex rule, pattern
9026
9027A pattern rule contains the character @samp{%} (exactly one of them)
9028in the target; otherwise, it looks exactly like an ordinary rule. The
9029target is a pattern for matching file names; the @samp{%} matches any
9030nonempty substring, while other characters match only themselves.
9031@cindex target pattern, implicit
9032@cindex @code{%}, in pattern rules
9033
9034For example, @samp{%.c} as a pattern matches any file name that ends in
9035@samp{.c}. @samp{s.%.c} as a pattern matches any file name that starts
9036with @samp{s.}, ends in @samp{.c} and is at least five characters long.
9037(There must be at least one character to match the @samp{%}.) The substring
9038that the @samp{%} matches is called the @dfn{stem}.@refill
9039
9040@samp{%} in a prerequisite of a pattern rule stands for the same stem
9041that was matched by the @samp{%} in the target. In order for the
9042pattern rule to apply, its target pattern must match the file name
9043under consideration and all of its prerequisites (after pattern
9044substitution) must name files that exist or can be made. These files
9045become prerequisites of the target.
9046@cindex prerequisite pattern, implicit
9047
9048Thus, a rule of the form
9049
9050@example
9051%.o : %.c ; @var{recipe}@dots{}
9052@end example
9053
9054@noindent
9055specifies how to make a file @file{@var{n}.o}, with another file
9056@file{@var{n}.c} as its prerequisite, provided that @file{@var{n}.c}
9057exists or can be made.
9058
9059There may also be prerequisites that do not use @samp{%}; such a prerequisite
9060attaches to every file made by this pattern rule. These unvarying
9061prerequisites are useful occasionally.
9062
9063A pattern rule need not have any prerequisites that contain @samp{%}, or
9064in fact any prerequisites at all. Such a rule is effectively a general
9065wildcard. It provides a way to make any file that matches the target
9066pattern. @xref{Last Resort}.
9067
9068@c !!! The end of of this paragraph should be rewritten. --bob
9069Pattern rules may have more than one target. Unlike normal rules,
9070this does not act as many different rules with the same prerequisites
9071and recipe. If a pattern rule has multiple targets, @code{make} knows
9072that the rule's recipe is responsible for making all of the targets.
9073The recipe is executed only once to make all the targets. When
9074searching for a pattern rule to match a target, the target patterns of
9075a rule other than the one that matches the target in need of a rule
9076are incidental: @code{make} worries only about giving a recipe and
9077prerequisites to the file presently in question. However, when this
9078file's recipe is run, the other targets are marked as having been
9079updated themselves.
9080@cindex multiple targets, in pattern rule
9081@cindex target, multiple in pattern rule
9082
9083The order in which pattern rules appear in the makefile is important
9084since this is the order in which they are considered.
9085Of equally applicable
9086rules, only the first one found is used. The rules you write take precedence
9087over those that are built in. Note however, that a rule whose
9088prerequisites actually exist or are mentioned always takes priority over a
9089rule with prerequisites that must be made by chaining other implicit rules.
9090@cindex pattern rules, order of
9091@cindex order of pattern rules
9092
9093@node Pattern Examples, Automatic Variables, Pattern Intro, Pattern Rules
9094@subsection Pattern Rule Examples
9095
9096Here are some examples of pattern rules actually predefined in
9097@code{make}. First, the rule that compiles @samp{.c} files into @samp{.o}
9098files:@refill
9099
9100@example
9101%.o : %.c
9102 $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@
9103@end example
9104
9105@noindent
9106defines a rule that can make any file @file{@var{x}.o} from
9107@file{@var{x}.c}. The recipe uses the automatic variables @samp{$@@} and
9108@samp{$<} to substitute the names of the target file and the source file
9109in each case where the rule applies (@pxref{Automatic Variables}).@refill
9110
9111Here is a second built-in rule:
9112
9113@example
9114% :: RCS/%,v
9115 $(CO) $(COFLAGS) $<
9116@end example
9117
9118@noindent
9119defines a rule that can make any file @file{@var{x}} whatsoever from a
9120corresponding file @file{@var{x},v} in the subdirectory @file{RCS}. Since
9121the target is @samp{%}, this rule will apply to any file whatever, provided
9122the appropriate prerequisite file exists. The double colon makes the rule
9123@dfn{terminal}, which means that its prerequisite may not be an intermediate
9124file (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}).@refill
9125
9126@need 500
9127This pattern rule has two targets:
9128
9129@example
9130@group
9131%.tab.c %.tab.h: %.y
9132 bison -d $<
9133@end group
9134@end example
9135
9136@noindent
9137@c The following paragraph is rewritten to avoid overfull hboxes
9138This tells @code{make} that the recipe @samp{bison -d @var{x}.y} will
9139make both @file{@var{x}.tab.c} and @file{@var{x}.tab.h}. If the file
9140@file{foo} depends on the files @file{parse.tab.o} and @file{scan.o}
9141and the file @file{scan.o} depends on the file @file{parse.tab.h},
9142when @file{parse.y} is changed, the recipe @samp{bison -d parse.y}
9143will be executed only once, and the prerequisites of both
9144@file{parse.tab.o} and @file{scan.o} will be satisfied. (Presumably
9145the file @file{parse.tab.o} will be recompiled from @file{parse.tab.c}
9146and the file @file{scan.o} from @file{scan.c}, while @file{foo} is
9147linked from @file{parse.tab.o}, @file{scan.o}, and its other
9148prerequisites, and it will execute happily ever after.)@refill
9149
9150@node Automatic Variables, Pattern Match, Pattern Examples, Pattern Rules
9151@subsection Automatic Variables
9152@cindex automatic variables
9153@cindex variables, automatic
9154@cindex variables, and implicit rule
9155
9156Suppose you are writing a pattern rule to compile a @samp{.c} file into a
9157@samp{.o} file: how do you write the @samp{cc} command so that it operates
9158on the right source file name? You cannot write the name in the recipe,
9159because the name is different each time the implicit rule is applied.
9160
9161What you do is use a special feature of @code{make}, the @dfn{automatic
9162variables}. These variables have values computed afresh for each rule that
9163is executed, based on the target and prerequisites of the rule. In this
9164example, you would use @samp{$@@} for the object file name and @samp{$<}
9165for the source file name.
9166
9167@cindex automatic variables in prerequisites
9168@cindex prerequisites, and automatic variables
9169It's very important that you recognize the limited scope in which
9170automatic variable values are available: they only have values within
9171the recipe. In particular, you cannot use them anywhere
9172within the target list of a rule; they have no value there and will
9173expand to the empty string. Also, they cannot be accessed directly
9174within the prerequisite list of a rule. A common mistake is
9175attempting to use @code{$@@} within the prerequisites list; this will
9176not work. However, there is a special feature of GNU @code{make},
9177secondary expansion (@pxref{Secondary Expansion}), which will allow
9178automatic variable values to be used in prerequisite lists.
9179
9180Here is a table of automatic variables:
9181
9182@table @code
9183@vindex $@@
9184@vindex @@ @r{(automatic variable)}
9185@item $@@
9186The file name of the target of the rule. If the target is an archive
9187member, then @samp{$@@} is the name of the archive file. In a pattern
9188rule that has multiple targets (@pxref{Pattern Intro, ,Introduction to
9189Pattern Rules}), @samp{$@@} is the name of whichever target caused the
9190rule's recipe to be run.
9191
9192@vindex $%
9193@vindex % @r{(automatic variable)}
9194@item $%
9195The target member name, when the target is an archive member.
9196@xref{Archives}. For example, if the target is @file{foo.a(bar.o)} then
9197@samp{$%} is @file{bar.o} and @samp{$@@} is @file{foo.a}. @samp{$%} is
9198empty when the target is not an archive member.
9199
9200@vindex $<
9201@vindex < @r{(automatic variable)}
9202@item $<
9203The name of the first prerequisite. If the target got its recipe from
9204an implicit rule, this will be the first prerequisite added by the
9205implicit rule (@pxref{Implicit Rules}).
9206
9207@vindex $?
9208@vindex ? @r{(automatic variable)}
9209@item $?
9210The names of all the prerequisites that are newer than the target, with
9211spaces between them. For prerequisites which are archive members, only
9212the named member is used (@pxref{Archives}).
9213@cindex prerequisites, list of changed
9214@cindex list of changed prerequisites
9215
9216@vindex $^
9217@vindex ^ @r{(automatic variable)}
9218@item $^
9219The names of all the prerequisites, with spaces between them. For
9220prerequisites which are archive members, only the named member is used
9221(@pxref{Archives}). A target has only one prerequisite on each other file
9222it depends on, no matter how many times each file is listed as a
9223prerequisite. So if you list a prerequisite more than once for a target,
9224the value of @code{$^} contains just one copy of the name. This list
9225does @strong{not} contain any of the order-only prerequisites; for those
9226see the @samp{$|} variable, below.
9227@cindex prerequisites, list of all
9228@cindex list of all prerequisites
9229
9230@vindex $+
9231@vindex + @r{(automatic variable)}
9232@item $+
9233This is like @samp{$^}, but prerequisites listed more than once are
9234duplicated in the order they were listed in the makefile. This is
9235primarily useful for use in linking commands where it is meaningful to
9236repeat library file names in a particular order.
9237
9238@vindex $|
9239@vindex | @r{(automatic variable)}
9240@item $|
9241The names of all the order-only prerequisites, with spaces between
9242them.
9243
9244@vindex $*
9245@vindex * @r{(automatic variable)}
9246@item $*
9247The stem with which an implicit rule matches (@pxref{Pattern Match, ,How
9248Patterns Match}). If the target is @file{dir/a.foo.b} and the target
9249pattern is @file{a.%.b} then the stem is @file{dir/foo}. The stem is
9250useful for constructing names of related files.@refill
9251@cindex stem, variable for
9252
9253In a static pattern rule, the stem is part of the file name that matched
9254the @samp{%} in the target pattern.
9255
9256In an explicit rule, there is no stem; so @samp{$*} cannot be determined
9257in that way. Instead, if the target name ends with a recognized suffix
9258(@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}), @samp{$*} is set to
9259the target name minus the suffix. For example, if the target name is
9260@samp{foo.c}, then @samp{$*} is set to @samp{foo}, since @samp{.c} is a
9261suffix. GNU @code{make} does this bizarre thing only for compatibility
9262with other implementations of @code{make}. You should generally avoid
9263using @samp{$*} except in implicit rules or static pattern rules.@refill
9264
9265If the target name in an explicit rule does not end with a recognized
9266suffix, @samp{$*} is set to the empty string for that rule.
9267@end table
9268
9269@samp{$?} is useful even in explicit rules when you wish to operate on only
9270the prerequisites that have changed. For example, suppose that an archive
9271named @file{lib} is supposed to contain copies of several object files.
9272This rule copies just the changed object files into the archive:
9273
9274@example
9275@group
9276lib: foo.o bar.o lose.o win.o
9277 ar r lib $?
9278@end group
9279@end example
9280
9281Of the variables listed above, four have values that are single file
9282names, and three have values that are lists of file names. These seven
9283have variants that get just the file's directory name or just the file
9284name within the directory. The variant variables' names are formed by
9285appending @samp{D} or @samp{F}, respectively. These variants are
9286semi-obsolete in GNU @code{make} since the functions @code{dir} and
9287@code{notdir} can be used to get a similar effect (@pxref{File Name
9288Functions, , Functions for File Names}). Note, however, that the
9289@samp{D} variants all omit the trailing slash which always appears in
9290the output of the @code{dir} function. Here is a table of the variants:
9291
9292@table @samp
9293@vindex $(@@D)
9294@vindex @@D @r{(automatic variable)}
9295@item $(@@D)
9296The directory part of the file name of the target, with the trailing
9297slash removed. If the value of @samp{$@@} is @file{dir/foo.o} then
9298@samp{$(@@D)} is @file{dir}. This value is @file{.} if @samp{$@@} does
9299not contain a slash.
9300
9301@vindex $(@@F)
9302@vindex @@F @r{(automatic variable)}
9303@item $(@@F)
9304The file-within-directory part of the file name of the target. If the
9305value of @samp{$@@} is @file{dir/foo.o} then @samp{$(@@F)} is
9306@file{foo.o}. @samp{$(@@F)} is equivalent to @samp{$(notdir $@@)}.
9307
9308@vindex $(*D)
9309@vindex *D @r{(automatic variable)}
9310@item $(*D)
9311@vindex $(*F)
9312@vindex *F @r{(automatic variable)}
9313@itemx $(*F)
9314The directory part and the file-within-directory
9315part of the stem; @file{dir} and @file{foo} in this example.
9316
9317@vindex $(%D)
9318@vindex %D @r{(automatic variable)}
9319@item $(%D)
9320@vindex $(%F)
9321@vindex %F @r{(automatic variable)}
9322@itemx $(%F)
9323The directory part and the file-within-directory part of the target
9324archive member name. This makes sense only for archive member targets
9325of the form @file{@var{archive}(@var{member})} and is useful only when
9326@var{member} may contain a directory name. (@xref{Archive Members,
9327,Archive Members as Targets}.)
9328
9329@vindex $(<D)
9330@vindex <D @r{(automatic variable)}
9331@item $(<D)
9332@vindex $(<F)
9333@vindex <F @r{(automatic variable)}
9334@itemx $(<F)
9335The directory part and the file-within-directory
9336part of the first prerequisite.
9337
9338@vindex $(^D)
9339@vindex ^D @r{(automatic variable)}
9340@item $(^D)
9341@vindex $(^F)
9342@vindex ^F @r{(automatic variable)}
9343@itemx $(^F)
9344Lists of the directory parts and the file-within-directory
9345parts of all prerequisites.
9346
9347@vindex $(+D)
9348@vindex +D @r{(automatic variable)}
9349@item $(+D)
9350@vindex $(+F)
9351@vindex +F @r{(automatic variable)}
9352@itemx $(+F)
9353Lists of the directory parts and the file-within-directory
9354parts of all prerequisites, including multiple instances of duplicated
9355prerequisites.
9356
9357@vindex $(?D)
9358@vindex ?D @r{(automatic variable)}
9359@item $(?D)
9360@vindex $(?F)
9361@vindex ?F @r{(automatic variable)}
9362@itemx $(?F)
9363Lists of the directory parts and the file-within-directory parts of
9364all prerequisites that are newer than the target.
9365@end table
9366
9367Note that we use a special stylistic convention when we talk about these
9368automatic variables; we write ``the value of @samp{$<}'', rather than
9369@w{``the variable @code{<}''} as we would write for ordinary variables
9370such as @code{objects} and @code{CFLAGS}. We think this convention
9371looks more natural in this special case. Please do not assume it has a
9372deep significance; @samp{$<} refers to the variable named @code{<} just
9373as @samp{$(CFLAGS)} refers to the variable named @code{CFLAGS}.
9374You could just as well use @samp{$(<)} in place of @samp{$<}.
9375
9376@node Pattern Match, Match-Anything Rules, Automatic Variables, Pattern Rules
9377@subsection How Patterns Match
9378
9379@cindex stem
9380A target pattern is composed of a @samp{%} between a prefix and a suffix,
9381either or both of which may be empty. The pattern matches a file name only
9382if the file name starts with the prefix and ends with the suffix, without
9383overlap. The text between the prefix and the suffix is called the
9384@dfn{stem}. Thus, when the pattern @samp{%.o} matches the file name
9385@file{test.o}, the stem is @samp{test}. The pattern rule prerequisites are
9386turned into actual file names by substituting the stem for the character
9387@samp{%}. Thus, if in the same example one of the prerequisites is written
9388as @samp{%.c}, it expands to @samp{test.c}.@refill
9389
9390When the target pattern does not contain a slash (and it usually does
9391not), directory names in the file names are removed from the file name
9392before it is compared with the target prefix and suffix. After the
9393comparison of the file name to the target pattern, the directory
9394names, along with the slash that ends them, are added on to the
9395prerequisite file names generated from the pattern rule's prerequisite
9396patterns and the file name. The directories are ignored only for the
9397purpose of finding an implicit rule to use, not in the application of
9398that rule. Thus, @samp{e%t} matches the file name @file{src/eat},
9399with @samp{src/a} as the stem. When prerequisites are turned into file
9400names, the directories from the stem are added at the front, while the
9401rest of the stem is substituted for the @samp{%}. The stem
9402@samp{src/a} with a prerequisite pattern @samp{c%r} gives the file name
9403@file{src/car}.@refill
9404
9405@node Match-Anything Rules, Canceling Rules, Pattern Match, Pattern Rules
9406@subsection Match-Anything Pattern Rules
9407
9408@cindex match-anything rule
9409@cindex terminal rule
9410When a pattern rule's target is just @samp{%}, it matches any file name
9411whatever. We call these rules @dfn{match-anything} rules. They are very
9412useful, but it can take a lot of time for @code{make} to think about them,
9413because it must consider every such rule for each file name listed either
9414as a target or as a prerequisite.
9415
9416Suppose the makefile mentions @file{foo.c}. For this target, @code{make}
9417would have to consider making it by linking an object file @file{foo.c.o},
9418or by C compilation-and-linking in one step from @file{foo.c.c}, or by
9419Pascal compilation-and-linking from @file{foo.c.p}, and many other
9420possibilities.
9421
9422We know these possibilities are ridiculous since @file{foo.c} is a C source
9423file, not an executable. If @code{make} did consider these possibilities,
9424it would ultimately reject them, because files such as @file{foo.c.o} and
9425@file{foo.c.p} would not exist. But these possibilities are so
9426numerous that @code{make} would run very slowly if it had to consider
9427them.@refill
9428
9429To gain speed, we have put various constraints on the way @code{make}
9430considers match-anything rules. There are two different constraints that
9431can be applied, and each time you define a match-anything rule you must
9432choose one or the other for that rule.
9433
9434One choice is to mark the match-anything rule as @dfn{terminal} by defining
9435it with a double colon. When a rule is terminal, it does not apply unless
9436its prerequisites actually exist. Prerequisites that could be made with
9437other implicit rules are not good enough. In other words, no further
9438chaining is allowed beyond a terminal rule.
9439
9440For example, the built-in implicit rules for extracting sources from RCS
9441and SCCS files are terminal; as a result, if the file @file{foo.c,v} does
9442not exist, @code{make} will not even consider trying to make it as an
9443intermediate file from @file{foo.c,v.o} or from @file{RCS/SCCS/s.foo.c,v}.
9444RCS and SCCS files are generally ultimate source files, which should not be
9445remade from any other files; therefore, @code{make} can save time by not
9446looking for ways to remake them.@refill
9447
9448If you do not mark the match-anything rule as terminal, then it is
9449nonterminal. A nonterminal match-anything rule cannot apply to a file name
9450that indicates a specific type of data. A file name indicates a specific
9451type of data if some non-match-anything implicit rule target matches it.
9452
9453For example, the file name @file{foo.c} matches the target for the pattern
9454rule @samp{%.c : %.y} (the rule to run Yacc). Regardless of whether this
9455rule is actually applicable (which happens only if there is a file
9456@file{foo.y}), the fact that its target matches is enough to prevent
9457consideration of any nonterminal match-anything rules for the file
9458@file{foo.c}. Thus, @code{make} will not even consider trying to make
9459@file{foo.c} as an executable file from @file{foo.c.o}, @file{foo.c.c},
9460@file{foo.c.p}, etc.@refill
9461
9462The motivation for this constraint is that nonterminal match-anything
9463rules are used for making files containing specific types of data (such as
9464executable files) and a file name with a recognized suffix indicates some
9465other specific type of data (such as a C source file).
9466
9467Special built-in dummy pattern rules are provided solely to recognize
9468certain file names so that nonterminal match-anything rules will not be
9469considered. These dummy rules have no prerequisites and no recipes, and
9470they are ignored for all other purposes. For example, the built-in
9471implicit rule
9472
9473@example
9474%.p :
9475@end example
9476
9477@noindent
9478exists to make sure that Pascal source files such as @file{foo.p} match a
9479specific target pattern and thereby prevent time from being wasted looking
9480for @file{foo.p.o} or @file{foo.p.c}.
9481
9482Dummy pattern rules such as the one for @samp{%.p} are made for every
9483suffix listed as valid for use in suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}).
9484
9485@node Canceling Rules, , Match-Anything Rules, Pattern Rules
9486@subsection Canceling Implicit Rules
9487
9488You can override a built-in implicit rule (or one you have defined
9489yourself) by defining a new pattern rule with the same target and
9490prerequisites, but a different recipe. When the new rule is defined, the
9491built-in one is replaced. The new rule's position in the sequence of
9492implicit rules is determined by where you write the new rule.
9493
9494You can cancel a built-in implicit rule by defining a pattern rule with the
9495same target and prerequisites, but no recipe. For example, the following
9496would cancel the rule that runs the assembler:
9497
9498@example
9499%.o : %.s
9500@end example
9501
9502@node Last Resort, Suffix Rules, Pattern Rules, Implicit Rules
9503@section Defining Last-Resort Default Rules
9504@cindex last-resort default rules
9505@cindex default rules, last-resort
9506
9507You can define a last-resort implicit rule by writing a terminal
9508match-anything pattern rule with no prerequisites (@pxref{Match-Anything
9509Rules}). This is just like any other pattern rule; the only thing
9510special about it is that it will match any target. So such a rule's
9511recipe is used for all targets and prerequisites that have no recipe
9512of their own and for which no other implicit rule applies.
9513
9514For example, when testing a makefile, you might not care if the source
9515files contain real data, only that they exist. Then you might do this:
9516
9517@example
9518%::
9519 touch $@@
9520@end example
9521
9522@noindent
9523to cause all the source files needed (as prerequisites) to be created
9524automatically.
9525
9526@findex .DEFAULT
9527You can instead define a recipe to be used for targets for which there
9528are no rules at all, even ones which don't specify recipes. You do
9529this by writing a rule for the target @code{.DEFAULT}. Such a rule's
9530recipe is used for all prerequisites which do not appear as targets in
9531any explicit rule, and for which no implicit rule applies. Naturally,
9532there is no @code{.DEFAULT} rule unless you write one.
9533
9534If you use @code{.DEFAULT} with no recipe or prerequisites:
9535
9536@example
9537.DEFAULT:
9538@end example
9539
9540@noindent
9541the recipe previously stored for @code{.DEFAULT} is cleared. Then
9542@code{make} acts as if you had never defined @code{.DEFAULT} at all.
9543
9544If you do not want a target to get the recipe from a match-anything
9545pattern rule or @code{.DEFAULT}, but you also do not want any recipe
9546to be run for the target, you can give it an empty recipe
9547(@pxref{Empty Recipes, ,Defining Empty Recipes}).@refill
9548
9549You can use a last-resort rule to override part of another makefile.
9550@xref{Overriding Makefiles, , Overriding Part of Another Makefile}.
9551
9552@node Suffix Rules, Implicit Rule Search, Last Resort, Implicit Rules
9553@section Old-Fashioned Suffix Rules
9554@cindex old-fashioned suffix rules
9555@cindex suffix rule
9556
9557@dfn{Suffix rules} are the old-fashioned way of defining implicit rules for
9558@code{make}. Suffix rules are obsolete because pattern rules are more
9559general and clearer. They are supported in GNU @code{make} for
9560compatibility with old makefiles. They come in two kinds:
9561@dfn{double-suffix} and @dfn{single-suffix}.@refill
9562
9563A double-suffix rule is defined by a pair of suffixes: the target suffix
9564and the source suffix. It matches any file whose name ends with the
9565target suffix. The corresponding implicit prerequisite is made by
9566replacing the target suffix with the source suffix in the file name. A
9567two-suffix rule whose target and source suffixes are @samp{.o} and
9568@samp{.c} is equivalent to the pattern rule @samp{%.o : %.c}.
9569
9570A single-suffix rule is defined by a single suffix, which is the source
9571suffix. It matches any file name, and the corresponding implicit
9572prerequisite name is made by appending the source suffix. A single-suffix
9573rule whose source suffix is @samp{.c} is equivalent to the pattern rule
9574@samp{% : %.c}.
9575
9576Suffix rule definitions are recognized by comparing each rule's target
9577against a defined list of known suffixes. When @code{make} sees a rule
9578whose target is a known suffix, this rule is considered a single-suffix
9579rule. When @code{make} sees a rule whose target is two known suffixes
9580concatenated, this rule is taken as a double-suffix rule.
9581
9582For example, @samp{.c} and @samp{.o} are both on the default list of
9583known suffixes. Therefore, if you define a rule whose target is
9584@samp{.c.o}, @code{make} takes it to be a double-suffix rule with source
9585suffix @samp{.c} and target suffix @samp{.o}. Here is the old-fashioned
9586way to define the rule for compiling a C source file:@refill
9587
9588@example
9589.c.o:
9590 $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
9591@end example
9592
9593Suffix rules cannot have any prerequisites of their own. If they have any,
9594they are treated as normal files with funny names, not as suffix rules.
9595Thus, the rule:
9596
9597@example
9598.c.o: foo.h
9599 $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
9600@end example
9601
9602@noindent
9603tells how to make the file @file{.c.o} from the prerequisite file
9604@file{foo.h}, and is not at all like the pattern rule:
9605
9606@example
9607%.o: %.c foo.h
9608 $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
9609@end example
9610
9611@noindent
9612which tells how to make @samp{.o} files from @samp{.c} files, and makes all
9613@samp{.o} files using this pattern rule also depend on @file{foo.h}.
9614
9615Suffix rules with no recipe are also meaningless. They do not remove
9616previous rules as do pattern rules with no recipe (@pxref{Canceling
9617Rules, , Canceling Implicit Rules}). They simply enter the suffix or
9618pair of suffixes concatenated as a target in the data base.@refill
9619
9620@findex .SUFFIXES
9621The known suffixes are simply the names of the prerequisites of the special
9622target @code{.SUFFIXES}. You can add your own suffixes by writing a rule
9623for @code{.SUFFIXES} that adds more prerequisites, as in:
9624
9625@example
9626.SUFFIXES: .hack .win
9627@end example
9628
9629@noindent
9630which adds @samp{.hack} and @samp{.win} to the end of the list of suffixes.
9631
9632If you wish to eliminate the default known suffixes instead of just adding
9633to them, write a rule for @code{.SUFFIXES} with no prerequisites. By
9634special dispensation, this eliminates all existing prerequisites of
9635@code{.SUFFIXES}. You can then write another rule to add the suffixes you
9636want. For example,
9637
9638@example
9639@group
9640.SUFFIXES: # @r{Delete the default suffixes}
9641.SUFFIXES: .c .o .h # @r{Define our suffix list}
9642@end group
9643@end example
9644
9645The @samp{-r} or @samp{--no-builtin-rules} flag causes the default
9646list of suffixes to be empty.
9647
9648@vindex SUFFIXES
9649The variable @code{SUFFIXES} is defined to the default list of suffixes
9650before @code{make} reads any makefiles. You can change the list of suffixes
9651with a rule for the special target @code{.SUFFIXES}, but that does not alter
9652this variable.
9653
9654@node Implicit Rule Search, , Suffix Rules, Implicit Rules
9655@section Implicit Rule Search Algorithm
9656@cindex implicit rule, search algorithm
9657@cindex search algorithm, implicit rule
9658
9659Here is the procedure @code{make} uses for searching for an implicit rule
9660for a target @var{t}. This procedure is followed for each double-colon
9661rule with no recipe, for each target of ordinary rules none of which have
9662a recipe, and for each prerequisite that is not the target of any rule. It
9663is also followed recursively for prerequisites that come from implicit
9664rules, in the search for a chain of rules.
9665
9666Suffix rules are not mentioned in this algorithm because suffix rules are
9667converted to equivalent pattern rules once the makefiles have been read in.
9668
9669For an archive member target of the form
9670@samp{@var{archive}(@var{member})}, the following algorithm is run
9671twice, first using the entire target name @var{t}, and second using
9672@samp{(@var{member})} as the target @var{t} if the first run found no
9673rule.@refill
9674
9675@enumerate
9676@item
9677Split @var{t} into a directory part, called @var{d}, and the rest,
9678called @var{n}. For example, if @var{t} is @samp{src/foo.o}, then
9679@var{d} is @samp{src/} and @var{n} is @samp{foo.o}.@refill
9680
9681@item
9682Make a list of all the pattern rules one of whose targets matches
9683@var{t} or @var{n}. If the target pattern contains a slash, it is
9684matched against @var{t}; otherwise, against @var{n}.
9685
9686@item
9687If any rule in that list is @emph{not} a match-anything rule, then
9688remove all nonterminal match-anything rules from the list.
9689
9690@item
9691Remove from the list all rules with no recipe.
9692
9693@item
9694For each pattern rule in the list:
9695
9696@enumerate a
9697@item
9698Find the stem @var{s}, which is the nonempty part of @var{t} or @var{n}
9699matched by the @samp{%} in the target pattern.@refill
9700
9701@item
9702Compute the prerequisite names by substituting @var{s} for @samp{%}; if
9703the target pattern does not contain a slash, append @var{d} to
9704the front of each prerequisite name.@refill
9705
9706@item
9707Test whether all the prerequisites exist or ought to exist. (If a
9708file name is mentioned in the makefile as a target or as an explicit
9709prerequisite, then we say it ought to exist.)
9710
9711If all prerequisites exist or ought to exist, or there are no prerequisites,
9712then this rule applies.
9713@end enumerate
9714
9715@item
9716If no pattern rule has been found so far, try harder.
9717For each pattern rule in the list:
9718
9719@enumerate a
9720@item
9721If the rule is terminal, ignore it and go on to the next rule.
9722
9723@item
9724Compute the prerequisite names as before.
9725
9726@item
9727Test whether all the prerequisites exist or ought to exist.
9728
9729@item
9730For each prerequisite that does not exist, follow this algorithm
9731recursively to see if the prerequisite can be made by an implicit
9732rule.
9733
9734@item
9735If all prerequisites exist, ought to exist, or can be
9736made by implicit rules, then this rule applies.
9737@end enumerate
9738
9739@item
9740If no implicit rule applies, the rule for @code{.DEFAULT}, if any,
9741applies. In that case, give @var{t} the same recipe that
9742@code{.DEFAULT} has. Otherwise, there is no recipe for @var{t}.
9743@end enumerate
9744
9745Once a rule that applies has been found, for each target pattern of
9746the rule other than the one that matched @var{t} or @var{n}, the
9747@samp{%} in the pattern is replaced with @var{s} and the resultant
9748file name is stored until the recipe to remake the target file @var{t}
9749is executed. After the recipe is executed, each of these stored file
9750names are entered into the data base and marked as having been updated
9751and having the same update status as the file @var{t}.
9752
9753When the recipe of a pattern rule is executed for @var{t}, the
9754automatic variables are set corresponding to the target and
9755prerequisites. @xref{Automatic Variables}.
9756
9757@node Archives, Features, Implicit Rules, Top
9758@chapter Using @code{make} to Update Archive Files
9759@cindex archive
9760
9761@dfn{Archive files} are files containing named subfiles called
9762@dfn{members}; they are maintained with the program @code{ar} and their
9763main use is as subroutine libraries for linking.
9764
9765@menu
9766* Archive Members:: Archive members as targets.
9767* Archive Update:: The implicit rule for archive member targets.
9768* Archive Pitfalls:: Dangers to watch out for when using archives.
9769* Archive Suffix Rules:: You can write a special kind of suffix rule
9770 for updating archives.
9771@end menu
9772
9773@node Archive Members, Archive Update, Archives, Archives
9774@section Archive Members as Targets
9775@cindex archive member targets
9776
9777An individual member of an archive file can be used as a target or
9778prerequisite in @code{make}. You specify the member named @var{member} in
9779archive file @var{archive} as follows:
9780
9781@example
9782@var{archive}(@var{member})
9783@end example
9784
9785@noindent
9786This construct is available only in targets and prerequisites, not in
9787recipes! Most programs that you might use in recipes do not support
9788this syntax and cannot act directly on archive members. Only
9789@code{ar} and other programs specifically designed to operate on
9790archives can do so. Therefore, valid recipes to update an archive
9791member target probably must use @code{ar}. For example, this rule
9792says to create a member @file{hack.o} in archive @file{foolib} by
9793copying the file @file{hack.o}:
9794
9795@example
9796foolib(hack.o) : hack.o
9797 ar cr foolib hack.o
9798@end example
9799
9800In fact, nearly all archive member targets are updated in just this way
9801and there is an implicit rule to do it for you. @strong{Please note:} The
9802@samp{c} flag to @code{ar} is required if the archive file does not
9803already exist.
9804
9805To specify several members in the same archive, you can write all the
9806member names together between the parentheses. For example:
9807
9808@example
9809foolib(hack.o kludge.o)
9810@end example
9811
9812@noindent
9813is equivalent to:
9814
9815@example
9816foolib(hack.o) foolib(kludge.o)
9817@end example
9818
9819@cindex wildcard, in archive member
9820You can also use shell-style wildcards in an archive member reference.
9821@xref{Wildcards, ,Using Wildcard Characters in File Names}. For
9822example, @w{@samp{foolib(*.o)}} expands to all existing members of the
9823@file{foolib} archive whose names end in @samp{.o}; perhaps
9824@samp{@w{foolib(hack.o)} @w{foolib(kludge.o)}}.
9825
9826@node Archive Update, Archive Pitfalls, Archive Members, Archives
9827@section Implicit Rule for Archive Member Targets
9828
9829Recall that a target that looks like @file{@var{a}(@var{m})} stands for the
9830member named @var{m} in the archive file @var{a}.
9831
9832When @code{make} looks for an implicit rule for such a target, as a special
9833feature it considers implicit rules that match @file{(@var{m})}, as well as
9834those that match the actual target @file{@var{a}(@var{m})}.
9835
9836This causes one special rule whose target is @file{(%)} to match. This
9837rule updates the target @file{@var{a}(@var{m})} by copying the file @var{m}
9838into the archive. For example, it will update the archive member target
9839@file{foo.a(bar.o)} by copying the @emph{file} @file{bar.o} into the
9840archive @file{foo.a} as a @emph{member} named @file{bar.o}.
9841
9842When this rule is chained with others, the result is very powerful.
9843Thus, @samp{make "foo.a(bar.o)"} (the quotes are needed to protect the
9844@samp{(} and @samp{)} from being interpreted specially by the shell) in
9845the presence of a file @file{bar.c} is enough to cause the following
9846recipe to be run, even without a makefile:
9847
9848@example
9849cc -c bar.c -o bar.o
9850ar r foo.a bar.o
9851rm -f bar.o
9852@end example
9853
9854@noindent
9855Here @code{make} has envisioned the file @file{bar.o} as an intermediate
9856file. @xref{Chained Rules, ,Chains of Implicit Rules}.
9857
9858Implicit rules such as this one are written using the automatic variable
9859@samp{$%}. @xref{Automatic Variables}.
9860
9861An archive member name in an archive cannot contain a directory name, but
9862it may be useful in a makefile to pretend that it does. If you write an
9863archive member target @file{foo.a(dir/file.o)}, @code{make} will perform
9864automatic updating with this recipe:
9865
9866@example
9867ar r foo.a dir/file.o
9868@end example
9869
9870@noindent
9871which has the effect of copying the file @file{dir/file.o} into a member
9872named @file{file.o}. In connection with such usage, the automatic variables
9873@code{%D} and @code{%F} may be useful.
9874
9875@menu
9876* Archive Symbols:: How to update archive symbol directories.
9877@end menu
9878
9879@node Archive Symbols, , Archive Update, Archive Update
9880@subsection Updating Archive Symbol Directories
9881@cindex @code{__.SYMDEF}
9882@cindex updating archive symbol directories
9883@cindex archive symbol directory updating
9884@cindex symbol directories, updating archive
9885@cindex directories, updating archive symbol
9886
9887An archive file that is used as a library usually contains a special member
9888named @file{__.SYMDEF} that contains a directory of the external symbol
9889names defined by all the other members. After you update any other
9890members, you need to update @file{__.SYMDEF} so that it will summarize the
9891other members properly. This is done by running the @code{ranlib} program:
9892
9893@example
9894ranlib @var{archivefile}
9895@end example
9896
9897Normally you would put this command in the rule for the archive file,
9898and make all the members of the archive file prerequisites of that rule.
9899For example,
9900
9901@example
9902libfoo.a: libfoo.a(x.o) libfoo.a(y.o) @dots{}
9903 ranlib libfoo.a
9904@end example
9905
9906@noindent
9907The effect of this is to update archive members @file{x.o}, @file{y.o},
9908etc., and then update the symbol directory member @file{__.SYMDEF} by
9909running @code{ranlib}. The rules for updating the members are not shown
9910here; most likely you can omit them and use the implicit rule which copies
9911files into the archive, as described in the preceding section.
9912
9913This is not necessary when using the GNU @code{ar} program, which
9914updates the @file{__.SYMDEF} member automatically.
9915
9916@node Archive Pitfalls, Archive Suffix Rules, Archive Update, Archives
9917@section Dangers When Using Archives
9918@cindex archive, and parallel execution
9919@cindex parallel execution, and archive update
9920@cindex archive, and @code{-j}
9921@cindex @code{-j}, and archive update
9922
9923It is important to be careful when using parallel execution (the
9924@code{-j} switch; @pxref{Parallel, ,Parallel Execution}) and archives.
9925If multiple @code{ar} commands run at the same time on the same archive
9926file, they will not know about each other and can corrupt the file.
9927
9928Possibly a future version of @code{make} will provide a mechanism to
9929circumvent this problem by serializing all recipes that operate on the
9930same archive file. But for the time being, you must either write your
9931makefiles to avoid this problem in some other way, or not use @code{-j}.
9932
9933@node Archive Suffix Rules, , Archive Pitfalls, Archives
9934@section Suffix Rules for Archive Files
9935@cindex suffix rule, for archive
9936@cindex archive, suffix rule for
9937@cindex library archive, suffix rule for
9938@cindex @code{.a} (archives)
9939
9940You can write a special kind of suffix rule for dealing with archive
9941files. @xref{Suffix Rules}, for a full explanation of suffix rules.
9942Archive suffix rules are obsolete in GNU @code{make}, because pattern
9943rules for archives are a more general mechanism (@pxref{Archive
9944Update}). But they are retained for compatibility with other
9945@code{make}s.
9946
9947To write a suffix rule for archives, you simply write a suffix rule
9948using the target suffix @samp{.a} (the usual suffix for archive files).
9949For example, here is the old-fashioned suffix rule to update a library
9950archive from C source files:
9951
9952@example
9953@group
9954.c.a:
9955 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
9956 $(AR) r $@@ $*.o
9957 $(RM) $*.o
9958@end group
9959@end example
9960
9961@noindent
9962This works just as if you had written the pattern rule:
9963
9964@example
9965@group
9966(%.o): %.c
9967 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
9968 $(AR) r $@@ $*.o
9969 $(RM) $*.o
9970@end group
9971@end example
9972
9973In fact, this is just what @code{make} does when it sees a suffix rule
9974with @samp{.a} as the target suffix. Any double-suffix rule
9975@w{@samp{.@var{x}.a}} is converted to a pattern rule with the target
9976pattern @samp{(%.o)} and a prerequisite pattern of @samp{%.@var{x}}.
9977
9978Since you might want to use @samp{.a} as the suffix for some other kind
9979of file, @code{make} also converts archive suffix rules to pattern rules
9980in the normal way (@pxref{Suffix Rules}). Thus a double-suffix rule
9981@w{@samp{.@var{x}.a}} produces two pattern rules: @samp{@w{(%.o):}
9982@w{%.@var{x}}} and @samp{@w{%.a}: @w{%.@var{x}}}.@refill
9983
9984@node Features, Missing, Archives, Top
9985@chapter Features of GNU @code{make}
9986@cindex features of GNU @code{make}
9987@cindex portability
9988@cindex compatibility
9989
9990Here is a summary of the features of GNU @code{make}, for comparison
9991with and credit to other versions of @code{make}. We consider the
9992features of @code{make} in 4.2 BSD systems as a baseline. If you are
9993concerned with writing portable makefiles, you should not use the
9994features of @code{make} listed here, nor the ones in @ref{Missing}.
9995
9996Many features come from the version of @code{make} in System V.
9997
9998@itemize @bullet
9999@item
10000The @code{VPATH} variable and its special meaning.
10001@xref{Directory Search, , Searching Directories for Prerequisites}.
10002This feature exists in System V @code{make}, but is undocumented.
10003It is documented in 4.3 BSD @code{make} (which says it mimics System V's
10004@code{VPATH} feature).@refill
10005
10006@item
10007Included makefiles. @xref{Include, ,Including Other Makefiles}.
10008Allowing multiple files to be included with a single directive is a GNU
10009extension.
10010
10011@item
10012Variables are read from and communicated via the environment.
10013@xref{Environment, ,Variables from the Environment}.
10014
10015@item
10016Options passed through the variable @code{MAKEFLAGS} to recursive
10017invocations of @code{make}.
10018@xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
10019
10020@item
10021The automatic variable @code{$%} is set to the member name
10022in an archive reference. @xref{Automatic Variables}.
10023
10024@item
10025The automatic variables @code{$@@}, @code{$*}, @code{$<}, @code{$%},
10026and @code{$?} have corresponding forms like @code{$(@@F)} and
10027@code{$(@@D)}. We have generalized this to @code{$^} as an obvious
10028extension. @xref{Automatic Variables}.@refill
10029
10030@item
10031Substitution variable references.
10032@xref{Reference, ,Basics of Variable References}.
10033
10034@item
10035The command line options @samp{-b} and @samp{-m}, accepted and
10036ignored. In System V @code{make}, these options actually do something.
10037
10038@item
10039Execution of recursive commands to run @code{make} via the variable
10040@code{MAKE} even if @samp{-n}, @samp{-q} or @samp{-t} is specified.
10041@xref{Recursion, ,Recursive Use of @code{make}}.
10042
10043@item
10044Support for suffix @samp{.a} in suffix rules. @xref{Archive Suffix
10045Rules}. This feature is obsolete in GNU @code{make}, because the
10046general feature of rule chaining (@pxref{Chained Rules, ,Chains of
10047Implicit Rules}) allows one pattern rule for installing members in an
10048archive (@pxref{Archive Update}) to be sufficient.
10049
10050@item
10051The arrangement of lines and backslash-newline combinations in
10052recipes is retained when the recipes are printed, so they appear as
10053they do in the makefile, except for the stripping of initial
10054whitespace.
10055@end itemize
10056
10057The following features were inspired by various other versions of
10058@code{make}. In some cases it is unclear exactly which versions inspired
10059which others.
10060
10061@itemize @bullet
10062@item
10063Pattern rules using @samp{%}.
10064This has been implemented in several versions of @code{make}.
10065We're not sure who invented it first, but it's been spread around a bit.
10066@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.@refill
10067
10068@item
10069Rule chaining and implicit intermediate files.
10070This was implemented by Stu Feldman in his version of @code{make}
10071for AT&T Eighth Edition Research Unix, and later by Andrew Hume of
10072AT&T Bell Labs in his @code{mk} program (where he terms it
10073``transitive closure''). We do not really know if
10074we got this from either of them or thought it up ourselves at the
10075same time. @xref{Chained Rules, ,Chains of Implicit Rules}.
10076
10077@item
10078The automatic variable @code{$^} containing a list of all prerequisites
10079of the current target. We did not invent this, but we have no idea who
10080did. @xref{Automatic Variables}. The automatic variable
10081@code{$+} is a simple extension of @code{$^}.
10082
10083@item
10084The ``what if'' flag (@samp{-W} in GNU @code{make}) was (as far as we know)
10085invented by Andrew Hume in @code{mk}.
10086@xref{Instead of Execution, ,Instead of Executing the Recipes}.
10087
10088@item
10089The concept of doing several things at once (parallelism) exists in
10090many incarnations of @code{make} and similar programs, though not in the
10091System V or BSD implementations. @xref{Execution, ,Recipe Execution}.
10092
10093@item
10094Modified variable references using pattern substitution come from
10095SunOS 4. @xref{Reference, ,Basics of Variable References}.
10096This functionality was provided in GNU @code{make} by the
10097@code{patsubst} function before the alternate syntax was implemented
10098for compatibility with SunOS 4. It is not altogether clear who
10099inspired whom, since GNU @code{make} had @code{patsubst} before SunOS
101004 was released.@refill
10101
10102@item
10103The special significance of @samp{+} characters preceding recipe lines
10104(@pxref{Instead of Execution, ,Instead of Executing the Recipes}) is
10105mandated by @cite{IEEE Standard 1003.2-1992} (POSIX.2).
10106
10107@item
10108The @samp{+=} syntax to append to the value of a variable comes from SunOS
101094 @code{make}. @xref{Appending, , Appending More Text to Variables}.
10110
10111@item
10112The syntax @w{@samp{@var{archive}(@var{mem1} @var{mem2}@dots{})}} to list
10113multiple members in a single archive file comes from SunOS 4 @code{make}.
10114@xref{Archive Members}.
10115
10116@item
10117The @code{-include} directive to include makefiles with no error for a
10118nonexistent file comes from SunOS 4 @code{make}. (But note that SunOS 4
10119@code{make} does not allow multiple makefiles to be specified in one
10120@code{-include} directive.) The same feature appears with the name
10121@code{sinclude} in SGI @code{make} and perhaps others.
10122@end itemize
10123
10124The remaining features are inventions new in GNU @code{make}:
10125
10126@itemize @bullet
10127@item
10128Use the @samp{-v} or @samp{--version} option to print version and
10129copyright information.
10130
10131@item
10132Use the @samp{-h} or @samp{--help} option to summarize the options to
10133@code{make}.
10134
10135@item
10136Simply-expanded variables. @xref{Flavors, ,The Two Flavors of Variables}.
10137
10138@item
10139Pass command line variable assignments automatically through the
10140variable @code{MAKE} to recursive @code{make} invocations.
10141@xref{Recursion, ,Recursive Use of @code{make}}.
10142
10143@item
10144Use the @samp{-C} or @samp{--directory} command option to change
10145directory. @xref{Options Summary, ,Summary of Options}.
10146
10147@item
10148Make verbatim variable definitions with @code{define}.
10149@xref{Defining, ,Defining Variables Verbatim}.
10150
10151@item
10152Declare phony targets with the special target @code{.PHONY}.
10153
10154Andrew Hume of AT&T Bell Labs implemented a similar feature with a
10155different syntax in his @code{mk} program. This seems to be a case of
10156parallel discovery. @xref{Phony Targets, ,Phony Targets}.
10157
10158@item
10159Manipulate text by calling functions.
10160@xref{Functions, ,Functions for Transforming Text}.
10161
10162@item
10163Use the @samp{-o} or @samp{--old-file}
10164option to pretend a file's modification-time is old.
10165@xref{Avoiding Compilation, ,Avoiding Recompilation of Some Files}.
10166
10167@item
10168Conditional execution.
10169
10170This feature has been implemented numerous times in various versions
10171of @code{make}; it seems a natural extension derived from the features
10172of the C preprocessor and similar macro languages and is not a
10173revolutionary concept. @xref{Conditionals, ,Conditional Parts of Makefiles}.
10174
10175@item
10176Specify a search path for included makefiles.
10177@xref{Include, ,Including Other Makefiles}.
10178
10179@item
10180Specify extra makefiles to read with an environment variable.
10181@xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}.
10182
10183@item
10184Strip leading sequences of @samp{./} from file names, so that
10185@file{./@var{file}} and @file{@var{file}} are considered to be the
10186same file.@refill
10187
10188@item
10189Use a special search method for library prerequisites written in the
10190form @samp{-l@var{name}}.
10191@xref{Libraries/Search, ,Directory Search for Link Libraries}.
10192
10193@item
10194Allow suffixes for suffix rules
10195(@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}) to contain any
10196characters. In other versions of @code{make}, they must begin with
10197@samp{.} and not contain any @samp{/} characters.
10198
10199@item
10200Keep track of the current level of @code{make} recursion using the
10201variable @code{MAKELEVEL}. @xref{Recursion, ,Recursive Use of @code{make}}.
10202
10203@item
10204Provide any goals given on the command line in the variable
10205@code{MAKECMDGOALS}. @xref{Goals, ,Arguments to Specify the Goals}.
10206
10207@item
10208Specify static pattern rules. @xref{Static Pattern, ,Static Pattern Rules}.
10209
10210@item
10211Provide selective @code{vpath} search.
10212@xref{Directory Search, ,Searching Directories for Prerequisites}.
10213
10214@item
10215Provide computed variable references.
10216@xref{Reference, ,Basics of Variable References}.
10217
10218@item
10219Update makefiles. @xref{Remaking Makefiles, ,How Makefiles Are Remade}.
10220System V @code{make} has a very, very limited form of this
10221functionality in that it will check out SCCS files for makefiles.
10222
10223@item
10224Various new built-in implicit rules.
10225@xref{Catalogue of Rules, ,Catalogue of Implicit Rules}.
10226
10227@item
10228The built-in variable @samp{MAKE_VERSION} gives the version number of
10229@code{make}.
10230@vindex MAKE_VERSION
10231@end itemize
10232
10233@node Missing, Makefile Conventions, Features, Top
10234@chapter Incompatibilities and Missing Features
10235@cindex incompatibilities
10236@cindex missing features
10237@cindex features, missing
10238
10239The @code{make} programs in various other systems support a few features
10240that are not implemented in GNU @code{make}. The POSIX.2 standard
10241(@cite{IEEE Standard 1003.2-1992}) which specifies @code{make} does not
10242require any of these features.@refill
10243
10244@itemize @bullet
10245@item
10246A target of the form @samp{@var{file}((@var{entry}))} stands for a member
10247of archive file @var{file}. The member is chosen, not by name, but by
10248being an object file which defines the linker symbol @var{entry}.@refill
10249
10250This feature was not put into GNU @code{make} because of the
10251nonmodularity of putting knowledge into @code{make} of the internal
10252format of archive file symbol tables.
10253@xref{Archive Symbols, ,Updating Archive Symbol Directories}.
10254
10255@item
10256Suffixes (used in suffix rules) that end with the character @samp{~}
10257have a special meaning to System V @code{make};
10258they refer to the SCCS file that corresponds
10259to the file one would get without the @samp{~}. For example, the
10260suffix rule @samp{.c~.o} would make the file @file{@var{n}.o} from
10261the SCCS file @file{s.@var{n}.c}. For complete coverage, a whole
10262series of such suffix rules is required.
10263@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
10264
10265In GNU @code{make}, this entire series of cases is handled by two
10266pattern rules for extraction from SCCS, in combination with the
10267general feature of rule chaining.
10268@xref{Chained Rules, ,Chains of Implicit Rules}.
10269
10270@item
10271In System V and 4.3 BSD @code{make}, files found by @code{VPATH}
10272search (@pxref{Directory Search, ,Searching Directories for
10273Prerequisites}) have their names changed inside recipes. We feel it
10274is much cleaner to always use automatic variables and thus make this
10275feature obsolete.@refill
10276
10277@item
10278In some Unix @code{make}s, the automatic variable @code{$*} appearing in
10279the prerequisites of a rule has the amazingly strange ``feature'' of
10280expanding to the full name of the @emph{target of that rule}. We cannot
10281imagine what went on in the minds of Unix @code{make} developers to do
10282this; it is utterly inconsistent with the normal definition of @code{$*}.
10283@vindex * @r{(automatic variable), unsupported bizarre usage}
10284
10285@item
10286In some Unix @code{make}s, implicit rule search (@pxref{Implicit
10287Rules, ,Using Implicit Rules}) is apparently done for @emph{all}
10288targets, not just those without recipes. This means you can
10289do:@refill
10290
10291@example
10292@group
10293foo.o:
10294 cc -c foo.c
10295@end group
10296@end example
10297
10298@noindent
10299and Unix @code{make} will intuit that @file{foo.o} depends on
10300@file{foo.c}.@refill
10301
10302We feel that such usage is broken. The prerequisite properties of
10303@code{make} are well-defined (for GNU @code{make}, at least),
10304and doing such a thing simply does not fit the model.@refill
10305
10306@item
10307GNU @code{make} does not include any built-in implicit rules for
10308compiling or preprocessing EFL programs. If we hear of anyone who is
10309using EFL, we will gladly add them.
10310
10311@item
10312It appears that in SVR4 @code{make}, a suffix rule can be specified
10313with no recipe, and it is treated as if it had an empty recipe
10314(@pxref{Empty Recipes}). For example:
10315
10316@example
10317.c.a:
10318@end example
10319
10320@noindent
10321will override the built-in @file{.c.a} suffix rule.
10322
10323We feel that it is cleaner for a rule without a recipe to always simply
10324add to the prerequisite list for the target. The above example can be
10325easily rewritten to get the desired behavior in GNU @code{make}:
10326
10327@example
10328.c.a: ;
10329@end example
10330
10331@item
10332Some versions of @code{make} invoke the shell with the @samp{-e} flag,
10333except under @samp{-k} (@pxref{Testing, ,Testing the Compilation of a
10334Program}). The @samp{-e} flag tells the shell to exit as soon as any
10335program it runs returns a nonzero status. We feel it is cleaner to
10336write each line of the recipe to stand on its own and not require this
10337special treatment.
10338@end itemize
10339
10340@comment The makefile standards are in a separate file that is also
10341@comment included by standards.texi.
10342@include make-stds.texi
10343
10344@node Quick Reference, Error Messages, Makefile Conventions, Top
10345@appendix Quick Reference
10346
10347This appendix summarizes the directives, text manipulation functions,
10348and special variables which GNU @code{make} understands.
10349@xref{Special Targets}, @ref{Catalogue of Rules, ,Catalogue of Implicit Rules},
10350and @ref{Options Summary, ,Summary of Options},
10351for other summaries.
10352
10353Here is a summary of the directives GNU @code{make} recognizes:
10354
10355@table @code
10356@item define @var{variable}
10357@itemx endef
10358
10359Define a multi-line, recursively-expanded variable.@*
10360@xref{Sequences}.
10361
10362@item ifdef @var{variable}
10363@itemx ifndef @var{variable}
10364@itemx ifeq (@var{a},@var{b})
10365@itemx ifeq "@var{a}" "@var{b}"
10366@itemx ifeq '@var{a}' '@var{b}'
10367@itemx ifneq (@var{a},@var{b})
10368@itemx ifneq "@var{a}" "@var{b}"
10369@itemx ifneq '@var{a}' '@var{b}'
10370@itemx else
10371@itemx endif
10372
10373Conditionally evaluate part of the makefile.@*
10374@xref{Conditionals}.
10375
10376@item include @var{file}
10377@itemx -include @var{file}
10378@itemx sinclude @var{file}
10379
10380Include another makefile.@*
10381@xref{Include, ,Including Other Makefiles}.
10382
10383@item override @var{variable} = @var{value}
10384@itemx override @var{variable} := @var{value}
10385@itemx override @var{variable} += @var{value}
10386@itemx override @var{variable} ?= @var{value}
10387@itemx override define @var{variable}
10388@itemx endef
10389
10390Define a variable, overriding any previous definition, even one from
10391the command line.@*
10392@xref{Override Directive, ,The @code{override} Directive}.
10393
10394@item export
10395
10396Tell @code{make} to export all variables to child processes by default.@*
10397@xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
10398
10399@item export @var{variable}
10400@itemx export @var{variable} = @var{value}
10401@itemx export @var{variable} := @var{value}
10402@itemx export @var{variable} += @var{value}
10403@itemx export @var{variable} ?= @var{value}
10404@itemx unexport @var{variable}
10405Tell @code{make} whether or not to export a particular variable to child
10406processes.@*
10407@xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
10408
10409@item vpath @var{pattern} @var{path}
10410Specify a search path for files matching a @samp{%} pattern.@*
10411@xref{Selective Search, , The @code{vpath} Directive}.
10412
10413@item vpath @var{pattern}
10414Remove all search paths previously specified for @var{pattern}.
10415
10416@item vpath
10417Remove all search paths previously specified in any @code{vpath}
10418directive.
10419@end table
10420
10421Here is a summary of the built-in functions (@pxref{Functions}):
10422
10423@table @code
10424@item $(subst @var{from},@var{to},@var{text})
10425Replace @var{from} with @var{to} in @var{text}.@*
10426@xref{Text Functions, , Functions for String Substitution and Analysis}.
10427
10428@item $(patsubst @var{pattern},@var{replacement},@var{text})
10429Replace words matching @var{pattern} with @var{replacement} in @var{text}.@*
10430@xref{Text Functions, , Functions for String Substitution and Analysis}.
10431
10432@item $(strip @var{string})
10433Remove excess whitespace characters from @var{string}.@*
10434@xref{Text Functions, , Functions for String Substitution and Analysis}.
10435
10436@item $(findstring @var{find},@var{text})
10437Locate @var{find} in @var{text}.@*
10438@xref{Text Functions, , Functions for String Substitution and Analysis}.
10439
10440@item $(filter @var{pattern}@dots{},@var{text})
10441Select words in @var{text} that match one of the @var{pattern} words.@*
10442@xref{Text Functions, , Functions for String Substitution and Analysis}.
10443
10444@item $(filter-out @var{pattern}@dots{},@var{text})
10445Select words in @var{text} that @emph{do not} match any of the @var{pattern} words.@*
10446@xref{Text Functions, , Functions for String Substitution and Analysis}.
10447
10448@item $(sort @var{list})
10449Sort the words in @var{list} lexicographically, removing duplicates.@*
10450@xref{Text Functions, , Functions for String Substitution and Analysis}.
10451
10452@item $(word @var{n},@var{text})
10453Extract the @var{n}th word (one-origin) of @var{text}.@*
10454@xref{Text Functions, , Functions for String Substitution and Analysis}.
10455
10456@item $(words @var{text})
10457Count the number of words in @var{text}.@*
10458@xref{Text Functions, , Functions for String Substitution and Analysis}.
10459
10460@item $(wordlist @var{s},@var{e},@var{text})
10461Returns the list of words in @var{text} from @var{s} to @var{e}.@*
10462@xref{Text Functions, , Functions for String Substitution and Analysis}.
10463
10464@item $(firstword @var{names}@dots{})
10465Extract the first word of @var{names}.@*
10466@xref{Text Functions, , Functions for String Substitution and Analysis}.
10467
10468@item $(lastword @var{names}@dots{})
10469Extract the last word of @var{names}.@*
10470@xref{Text Functions, , Functions for String Substitution and Analysis}.
10471
10472@item $(dir @var{names}@dots{})
10473Extract the directory part of each file name.@*
10474@xref{File Name Functions, ,Functions for File Names}.
10475
10476@item $(notdir @var{names}@dots{})
10477Extract the non-directory part of each file name.@*
10478@xref{File Name Functions, ,Functions for File Names}.
10479
10480@item $(suffix @var{names}@dots{})
10481Extract the suffix (the last @samp{.} and following characters) of each file name.@*
10482@xref{File Name Functions, ,Functions for File Names}.
10483
10484@item $(basename @var{names}@dots{})
10485Extract the base name (name without suffix) of each file name.@*
10486@xref{File Name Functions, ,Functions for File Names}.
10487
10488@item $(addsuffix @var{suffix},@var{names}@dots{})
10489Append @var{suffix} to each word in @var{names}.@*
10490@xref{File Name Functions, ,Functions for File Names}.
10491
10492@item $(addprefix @var{prefix},@var{names}@dots{})
10493Prepend @var{prefix} to each word in @var{names}.@*
10494@xref{File Name Functions, ,Functions for File Names}.
10495
10496@item $(join @var{list1},@var{list2})
10497Join two parallel lists of words.@*
10498@xref{File Name Functions, ,Functions for File Names}.
10499
10500@item $(wildcard @var{pattern}@dots{})
10501Find file names matching a shell file name pattern (@emph{not} a
10502@samp{%} pattern).@*
10503@xref{Wildcard Function, ,The Function @code{wildcard}}.
10504
10505@item $(realpath @var{names}@dots{})
10506For each file name in @var{names}, expand to an absolute name that
10507does not contain any @code{.}, @code{..}, nor symlinks.@*
10508@xref{File Name Functions, ,Functions for File Names}.
10509
10510@item $(abspath @var{names}@dots{})
10511For each file name in @var{names}, expand to an absolute name that
10512does not contain any @code{.} or @code{..} components, but preserves
10513symlinks.@*
10514@xref{File Name Functions, ,Functions for File Names}.
10515
10516@item $(error @var{text}@dots{})
10517
10518When this function is evaluated, @code{make} generates a fatal error
10519with the message @var{text}.@*
10520@xref{Make Control Functions, ,Functions That Control Make}.
10521
10522@item $(warning @var{text}@dots{})
10523
10524When this function is evaluated, @code{make} generates a warning with
10525the message @var{text}.@*
10526@xref{Make Control Functions, ,Functions That Control Make}.
10527
10528@item $(shell @var{command})
10529
10530Execute a shell command and return its output.@*
10531@xref{Shell Function, , The @code{shell} Function}.
10532
10533@item $(origin @var{variable})
10534
10535Return a string describing how the @code{make} variable @var{variable} was
10536defined.@*
10537@xref{Origin Function, , The @code{origin} Function}.
10538
10539@item $(flavor @var{variable})
10540
10541Return a string describing the flavor of the @code{make} variable
10542@var{variable}.@*
10543@xref{Flavor Function, , The @code{flavor} Function}.
10544
10545@item $(foreach @var{var},@var{words},@var{text})
10546
10547Evaluate @var{text} with @var{var} bound to each word in @var{words},
10548and concatenate the results.@*
10549@xref{Foreach Function, ,The @code{foreach} Function}.
10550
10551@item $(call @var{var},@var{param},@dots{})
10552
10553Evaluate the variable @var{var} replacing any references to @code{$(1)},
10554@code{$(2)} with the first, second, etc.@: @var{param} values.@*
10555@xref{Call Function, ,The @code{call} Function}.
10556
10557@item $(eval @var{text})
10558
10559Evaluate @var{text} then read the results as makefile commands.
10560Expands to the empty string.@*
10561@xref{Eval Function, ,The @code{eval} Function}.
10562
10563@item $(value @var{var})
10564
10565Evaluates to the contents of the variable @var{var}, with no expansion
10566performed on it.@*
10567@xref{Value Function, ,The @code{value} Function}.
10568@end table
10569
10570Here is a summary of the automatic variables.
10571@xref{Automatic Variables},
10572for full information.
10573
10574@table @code
10575@item $@@
10576The file name of the target.
10577
10578@item $%
10579The target member name, when the target is an archive member.
10580
10581@item $<
10582The name of the first prerequisite.
10583
10584@item $?
10585The names of all the prerequisites that are
10586newer than the target, with spaces between them.
10587For prerequisites which are archive members, only
10588the named member is used (@pxref{Archives}).
10589
10590@item $^
10591@itemx $+
10592The names of all the prerequisites, with spaces between them. For
10593prerequisites which are archive members, only the named member is used
10594(@pxref{Archives}). The value of @code{$^} omits duplicate
10595prerequisites, while @code{$+} retains them and preserves their order.
10596
10597@item $*
10598The stem with which an implicit rule matches
10599(@pxref{Pattern Match, ,How Patterns Match}).
10600
10601@item $(@@D)
10602@itemx $(@@F)
10603The directory part and the file-within-directory part of @code{$@@}.
10604
10605@item $(*D)
10606@itemx $(*F)
10607The directory part and the file-within-directory part of @code{$*}.
10608
10609@item $(%D)
10610@itemx $(%F)
10611The directory part and the file-within-directory part of @code{$%}.
10612
10613@item $(<D)
10614@itemx $(<F)
10615The directory part and the file-within-directory part of @code{$<}.
10616
10617@item $(^D)
10618@itemx $(^F)
10619The directory part and the file-within-directory part of @code{$^}.
10620
10621@item $(+D)
10622@itemx $(+F)
10623The directory part and the file-within-directory part of @code{$+}.
10624
10625@item $(?D)
10626@itemx $(?F)
10627The directory part and the file-within-directory part of @code{$?}.
10628@end table
10629
10630These variables are used specially by GNU @code{make}:
10631
10632@table @code
10633@item MAKEFILES
10634
10635Makefiles to be read on every invocation of @code{make}.@*
10636@xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}.
10637
10638@item VPATH
10639
10640Directory search path for files not found in the current directory.@*
10641@xref{General Search, , @code{VPATH} Search Path for All Prerequisites}.
10642
10643@item SHELL
10644
10645The name of the system default command interpreter, usually @file{/bin/sh}.
10646You can set @code{SHELL} in the makefile to change the shell used to run
10647recipes. @xref{Execution, ,Recipe Execution}. The @code{SHELL}
10648variable is handled specially when importing from and exporting to the
10649environment. @xref{Choosing the Shell}.
10650
10651@item MAKESHELL
10652
10653On MS-DOS only, the name of the command interpreter that is to be used
10654by @code{make}. This value takes precedence over the value of
10655@code{SHELL}. @xref{Execution, ,MAKESHELL variable}.
10656
10657@item MAKE
10658
10659The name with which @code{make} was invoked. Using this variable in
10660recipes has special meaning. @xref{MAKE Variable, ,How the
10661@code{MAKE} Variable Works}.
10662
10663@item MAKELEVEL
10664
10665The number of levels of recursion (sub-@code{make}s).@*
10666@xref{Variables/Recursion}.
10667
10668@item MAKEFLAGS
10669
10670The flags given to @code{make}. You can set this in the environment or
10671a makefile to set flags.@*
10672@xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
10673
10674It is @emph{never} appropriate to use @code{MAKEFLAGS} directly in a
10675recipe line: its contents may not be quoted correctly for use in the
10676shell. Always allow recursive @code{make}'s to obtain these values
10677through the environment from its parent.
10678
10679@item MAKECMDGOALS
10680
10681The targets given to @code{make} on the command line. Setting this
10682variable has no effect on the operation of @code{make}.@*
10683@xref{Goals, ,Arguments to Specify the Goals}.
10684
10685@item CURDIR
10686
10687Set to the pathname of the current working directory (after all
10688@code{-C} options are processed, if any). Setting this variable has no
10689effect on the operation of @code{make}.@*
10690@xref{Recursion, ,Recursive Use of @code{make}}.
10691
10692@item SUFFIXES
10693
10694The default list of suffixes before @code{make} reads any makefiles.
10695
10696@item .LIBPATTERNS
10697Defines the naming of the libraries @code{make} searches for, and their
10698order.@*
10699@xref{Libraries/Search, ,Directory Search for Link Libraries}.
10700@end table
10701
10702@node Error Messages, Complex Makefile, Quick Reference, Top
10703@comment node-name, next, previous, up
10704@appendix Errors Generated by Make
10705
10706Here is a list of the more common errors you might see generated by
10707@code{make}, and some information about what they mean and how to fix
10708them.
10709
10710Sometimes @code{make} errors are not fatal, especially in the presence
10711of a @code{-} prefix on a recipe line, or the @code{-k} command line
10712option. Errors that are fatal are prefixed with the string
10713@code{***}.
10714
10715Error messages are all either prefixed with the name of the program
10716(usually @samp{make}), or, if the error is found in a makefile, the name
10717of the file and linenumber containing the problem.
10718
10719In the table below, these common prefixes are left off.
10720
10721@table @samp
10722
10723@item [@var{foo}] Error @var{NN}
10724@itemx [@var{foo}] @var{signal description}
10725These errors are not really @code{make} errors at all. They mean that a
10726program that @code{make} invoked as part of a recipe returned a
10727non-0 error code (@samp{Error @var{NN}}), which @code{make} interprets
10728as failure, or it exited in some other abnormal fashion (with a
10729signal of some type). @xref{Errors, ,Errors in Recipes}.
10730
10731If no @code{***} is attached to the message, then the subprocess failed
10732but the rule in the makefile was prefixed with the @code{-} special
10733character, so @code{make} ignored the error.
10734
10735@item missing separator. Stop.
10736@itemx missing separator (did you mean TAB instead of 8 spaces?). Stop.
10737This means that @code{make} could not understand much of anything
10738about the makefile line it just read. GNU @code{make} looks for
10739various separators (@code{:}, @code{=}, recipe prefix characters,
10740etc.) to indicate what kind of line it's parsing. This message means
10741it couldn't find a valid one.
10742
10743One of the most common reasons for this message is that you (or
10744perhaps your oh-so-helpful editor, as is the case with many MS-Windows
10745editors) have attempted to indent your recipe lines with spaces
10746instead of a tab character. In this case, @code{make} will use the
10747second form of the error above. Remember that every line in the
10748recipe must begin with a tab character (unless you set
10749@code{.CMDPREFIX}; @pxref{Special Variables}). Eight spaces do not
10750count. @xref{Rule Syntax}.
10751
10752@item recipe commences before first target. Stop.
10753@itemx missing rule before recipe. Stop.
10754This means the first thing in the makefile seems to be part of a
10755recipe: it begins with a recipe prefix character and doesn't appear to
10756be a legal @code{make} directive (such as a variable assignment).
10757Recipes must always be associated with a target.
10758
10759The second form is generated if the line has a semicolon as the first
10760non-whitespace character; @code{make} interprets this to mean you left
10761out the "target: prerequisite" section of a rule. @xref{Rule Syntax}.
10762
10763@item No rule to make target `@var{xxx}'.
10764@itemx No rule to make target `@var{xxx}', needed by `@var{yyy}'.
10765This means that @code{make} decided it needed to build a target, but
10766then couldn't find any instructions in the makefile on how to do that,
10767either explicit or implicit (including in the default rules database).
10768
10769If you want that file to be built, you will need to add a rule to your
10770makefile describing how that target can be built. Other possible
10771sources of this problem are typos in the makefile (if that filename is
10772wrong) or a corrupted source tree (if that file is not supposed to be
10773built, but rather only a prerequisite).
10774
10775@item No targets specified and no makefile found. Stop.
10776@itemx No targets. Stop.
10777The former means that you didn't provide any targets to be built on the
10778command line, and @code{make} couldn't find any makefiles to read in.
10779The latter means that some makefile was found, but it didn't contain any
10780default goal and none was given on the command line. GNU @code{make}
10781has nothing to do in these situations.
10782@xref{Makefile Arguments, ,Arguments to Specify the Makefile}.@refill
10783
10784@item Makefile `@var{xxx}' was not found.
10785@itemx Included makefile `@var{xxx}' was not found.
10786A makefile specified on the command line (first form) or included
10787(second form) was not found.
10788
10789@item warning: overriding recipe for target `@var{xxx}'
10790@itemx warning: ignoring old recipe for target `@var{xxx}'
10791GNU @code{make} allows only one recipe to be specified per target
10792(except for double-colon rules). If you give a recipe for a target
10793which already has been defined to have one, this warning is issued and
10794the second recipe will overwrite the first. @xref{Multiple Rules,
10795,Multiple Rules for One Target}.
10796
10797@item Circular @var{xxx} <- @var{yyy} dependency dropped.
10798This means that @code{make} detected a loop in the dependency graph:
10799after tracing the prerequisite @var{yyy} of target @var{xxx}, and its
10800prerequisites, etc., one of them depended on @var{xxx} again.
10801
10802@item Recursive variable `@var{xxx}' references itself (eventually). Stop.
10803This means you've defined a normal (recursive) @code{make} variable
10804@var{xxx} that, when it's expanded, will refer to itself (@var{xxx}).
10805This is not allowed; either use simply-expanded variables (@code{:=}) or
10806use the append operator (@code{+=}). @xref{Using Variables, ,How to Use
10807Variables}.
10808
10809@item Unterminated variable reference. Stop.
10810This means you forgot to provide the proper closing parenthesis
10811or brace in your variable or function reference.
10812
10813@item insufficient arguments to function `@var{xxx}'. Stop.
10814This means you haven't provided the requisite number of arguments for
10815this function. See the documentation of the function for a description
10816of its arguments. @xref{Functions, ,Functions for Transforming Text}.
10817
10818@item missing target pattern. Stop.
10819@itemx multiple target patterns. Stop.
10820@itemx target pattern contains no `%'. Stop.
10821@itemx mixed implicit and static pattern rules. Stop.
10822These are generated for malformed static pattern rules. The first means
10823there's no pattern in the target section of the rule; the second means
10824there are multiple patterns in the target section; the third means
10825the target doesn't contain a pattern character (@code{%}); and the
10826fourth means that all three parts of the static pattern rule contain
10827pattern characters (@code{%})--only the first two parts should.
10828@xref{Static Usage, ,Syntax of Static Pattern Rules}.
10829
10830@item warning: -jN forced in submake: disabling jobserver mode.
10831This warning and the next are generated if @code{make} detects error
10832conditions related to parallel processing on systems where
10833sub-@code{make}s can communicate (@pxref{Options/Recursion,
10834,Communicating Options to a Sub-@code{make}}). This warning is
10835generated if a recursive invocation of a @code{make} process is forced
10836to have @samp{-j@var{N}} in its argument list (where @var{N} is greater
10837than one). This could happen, for example, if you set the @code{MAKE}
10838environment variable to @samp{make -j2}. In this case, the
10839sub-@code{make} doesn't communicate with other @code{make} processes and
10840will simply pretend it has two jobs of its own.
10841
10842@item warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
10843In order for @code{make} processes to communicate, the parent will pass
10844information to the child. Since this could result in problems if the
10845child process isn't actually a @code{make}, the parent will only do this
10846if it thinks the child is a @code{make}. The parent uses the normal
10847algorithms to determine this (@pxref{MAKE Variable, ,How the @code{MAKE}
10848Variable Works}). If the makefile is constructed such that the parent
10849doesn't know the child is a @code{make} process, then the child will
10850receive only part of the information necessary. In this case, the child
10851will generate this warning message and proceed with its build in a
10852sequential manner.
10853
10854@end table
10855
10856@node Complex Makefile, GNU Free Documentation License, Error Messages, Top
10857@appendix Complex Makefile Example
10858
10859Here is the makefile for the GNU @code{tar} program. This is a
10860moderately complex makefile.
10861
10862Because it is the first target, the default goal is @samp{all}. An
10863interesting feature of this makefile is that @file{testpad.h} is a
10864source file automatically created by the @code{testpad} program,
10865itself compiled from @file{testpad.c}.
10866
10867If you type @samp{make} or @samp{make all}, then @code{make} creates
10868the @file{tar} executable, the @file{rmt} daemon that provides
10869remote tape access, and the @file{tar.info} Info file.
10870
10871If you type @samp{make install}, then @code{make} not only creates
10872@file{tar}, @file{rmt}, and @file{tar.info}, but also installs
10873them.
10874
10875If you type @samp{make clean}, then @code{make} removes the @samp{.o}
10876files, and the @file{tar}, @file{rmt}, @file{testpad},
10877@file{testpad.h}, and @file{core} files.
10878
10879If you type @samp{make distclean}, then @code{make} not only removes
10880the same files as does @samp{make clean} but also the
10881@file{TAGS}, @file{Makefile}, and @file{config.status} files.
10882(Although it is not evident, this makefile (and
10883@file{config.status}) is generated by the user with the
10884@code{configure} program, which is provided in the @code{tar}
10885distribution, but is not shown here.)
10886
10887If you type @samp{make realclean}, then @code{make} removes the same
10888files as does @samp{make distclean} and also removes the Info files
10889generated from @file{tar.texinfo}.
10890
10891In addition, there are targets @code{shar} and @code{dist} that create
10892distribution kits.
10893
10894@example
10895@group
10896# Generated automatically from Makefile.in by configure.
10897# Un*x Makefile for GNU tar program.
10898# Copyright (C) 1991 Free Software Foundation, Inc.
10899@end group
10900
10901@group
10902# This program is free software; you can redistribute
10903# it and/or modify it under the terms of the GNU
10904# General Public License @dots{}
10905@dots{}
10906@dots{}
10907@end group
10908
10909SHELL = /bin/sh
10910
10911#### Start of system configuration section. ####
10912
10913srcdir = .
10914
10915@group
10916# If you use gcc, you should either run the
10917# fixincludes script that comes with it or else use
10918# gcc with the -traditional option. Otherwise ioctl
10919# calls will be compiled incorrectly on some systems.
10920CC = gcc -O
10921YACC = bison -y
10922INSTALL = /usr/local/bin/install -c
10923INSTALLDATA = /usr/local/bin/install -c -m 644
10924@end group
10925
10926# Things you might add to DEFS:
10927# -DSTDC_HEADERS If you have ANSI C headers and
10928# libraries.
10929# -DPOSIX If you have POSIX.1 headers and
10930# libraries.
10931# -DBSD42 If you have sys/dir.h (unless
10932# you use -DPOSIX), sys/file.h,
10933# and st_blocks in `struct stat'.
10934# -DUSG If you have System V/ANSI C
10935# string and memory functions
10936# and headers, sys/sysmacros.h,
10937# fcntl.h, getcwd, no valloc,
10938# and ndir.h (unless
10939# you use -DDIRENT).
10940# -DNO_MEMORY_H If USG or STDC_HEADERS but do not
10941# include memory.h.
10942# -DDIRENT If USG and you have dirent.h
10943# instead of ndir.h.
10944# -DSIGTYPE=int If your signal handlers
10945# return int, not void.
10946# -DNO_MTIO If you lack sys/mtio.h
10947# (magtape ioctls).
10948# -DNO_REMOTE If you do not have a remote shell
10949# or rexec.
10950# -DUSE_REXEC To use rexec for remote tape
10951# operations instead of
10952# forking rsh or remsh.
10953# -DVPRINTF_MISSING If you lack vprintf function
10954# (but have _doprnt).
10955# -DDOPRNT_MISSING If you lack _doprnt function.
10956# Also need to define
10957# -DVPRINTF_MISSING.
10958# -DFTIME_MISSING If you lack ftime system call.
10959# -DSTRSTR_MISSING If you lack strstr function.
10960# -DVALLOC_MISSING If you lack valloc function.
10961# -DMKDIR_MISSING If you lack mkdir and
10962# rmdir system calls.
10963# -DRENAME_MISSING If you lack rename system call.
10964# -DFTRUNCATE_MISSING If you lack ftruncate
10965# system call.
10966# -DV7 On Version 7 Unix (not
10967# tested in a long time).
10968# -DEMUL_OPEN3 If you lack a 3-argument version
10969# of open, and want to emulate it
10970# with system calls you do have.
10971# -DNO_OPEN3 If you lack the 3-argument open
10972# and want to disable the tar -k
10973# option instead of emulating open.
10974# -DXENIX If you have sys/inode.h
10975# and need it 94 to be included.
10976
10977DEFS = -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
10978 -DVPRINTF_MISSING -DBSD42
10979# Set this to rtapelib.o unless you defined NO_REMOTE,
10980# in which case make it empty.
10981RTAPELIB = rtapelib.o
10982LIBS =
10983DEF_AR_FILE = /dev/rmt8
10984DEFBLOCKING = 20
10985
10986@group
10987CDEBUG = -g
10988CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
10989 -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \
10990 -DDEFBLOCKING=$(DEFBLOCKING)
10991LDFLAGS = -g
10992@end group
10993
10994@group
10995prefix = /usr/local
10996# Prefix for each installed program,
10997# normally empty or `g'.
10998binprefix =
10999
11000# The directory to install tar in.
11001bindir = $(prefix)/bin
11002
11003# The directory to install the info files in.
11004infodir = $(prefix)/info
11005@end group
11006
11007#### End of system configuration section. ####
11008
11009SRC1 = tar.c create.c extract.c buffer.c \
11010 getoldopt.c update.c gnu.c mangle.c
11011SRC2 = version.c list.c names.c diffarch.c \
11012 port.c wildmat.c getopt.c
11013SRC3 = getopt1.c regex.c getdate.y
11014SRCS = $(SRC1) $(SRC2) $(SRC3)
11015OBJ1 = tar.o create.o extract.o buffer.o \
11016 getoldopt.o update.o gnu.o mangle.o
11017OBJ2 = version.o list.o names.o diffarch.o \
11018 port.o wildmat.o getopt.o
11019OBJ3 = getopt1.o regex.o getdate.o $(RTAPELIB)
11020OBJS = $(OBJ1) $(OBJ2) $(OBJ3)
11021@group
11022AUX = README COPYING ChangeLog Makefile.in \
11023 makefile.pc configure configure.in \
11024 tar.texinfo tar.info* texinfo.tex \
11025 tar.h port.h open3.h getopt.h regex.h \
11026 rmt.h rmt.c rtapelib.c alloca.c \
11027 msd_dir.h msd_dir.c tcexparg.c \
11028 level-0 level-1 backup-specs testpad.c
11029@end group
11030
11031.PHONY: all
11032all: tar rmt tar.info
11033
11034@group
11035tar: $(OBJS)
11036 $(CC) $(LDFLAGS) -o $@@ $(OBJS) $(LIBS)
11037@end group
11038
11039@group
11040rmt: rmt.c
11041 $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ rmt.c
11042@end group
11043
11044@group
11045tar.info: tar.texinfo
11046 makeinfo tar.texinfo
11047@end group
11048
11049@group
11050.PHONY: install
11051install: all
11052 $(INSTALL) tar $(bindir)/$(binprefix)tar
11053 -test ! -f rmt || $(INSTALL) rmt /etc/rmt
11054 $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
11055@end group
11056
11057@group
11058$(OBJS): tar.h port.h testpad.h
11059regex.o buffer.o tar.o: regex.h
11060# getdate.y has 8 shift/reduce conflicts.
11061@end group
11062
11063@group
11064testpad.h: testpad
11065 ./testpad
11066@end group
11067
11068@group
11069testpad: testpad.o
11070 $(CC) -o $@@ testpad.o
11071@end group
11072
11073@group
11074TAGS: $(SRCS)
11075 etags $(SRCS)
11076@end group
11077
11078@group
11079.PHONY: clean
11080clean:
11081 rm -f *.o tar rmt testpad testpad.h core
11082@end group
11083
11084@group
11085.PHONY: distclean
11086distclean: clean
11087 rm -f TAGS Makefile config.status
11088@end group
11089
11090@group
11091.PHONY: realclean
11092realclean: distclean
11093 rm -f tar.info*
11094@end group
11095
11096@group
11097.PHONY: shar
11098shar: $(SRCS) $(AUX)
11099 shar $(SRCS) $(AUX) | compress \
11100 > tar-`sed -e '/version_string/!d' \
11101 -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
11102 -e q
11103 version.c`.shar.Z
11104@end group
11105
11106@group
11107.PHONY: dist
11108dist: $(SRCS) $(AUX)
11109 echo tar-`sed \
11110 -e '/version_string/!d' \
11111 -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
11112 -e q
11113 version.c` > .fname
11114 -rm -rf `cat .fname`
11115 mkdir `cat .fname`
11116 ln $(SRCS) $(AUX) `cat .fname`
11117 tar chZf `cat .fname`.tar.Z `cat .fname`
11118 -rm -rf `cat .fname` .fname
11119@end group
11120
11121@group
11122tar.zoo: $(SRCS) $(AUX)
11123 -rm -rf tmp.dir
11124 -mkdir tmp.dir
11125 -rm tar.zoo
11126 for X in $(SRCS) $(AUX) ; do \
11127 echo $$X ; \
11128 sed 's/$$/^M/' $$X \
11129 > tmp.dir/$$X ; done
11130 cd tmp.dir ; zoo aM ../tar.zoo *
11131 -rm -rf tmp.dir
11132@end group
11133@end example
11134
11135@node GNU Free Documentation License, Concept Index, Complex Makefile, Top
11136@appendixsec GNU Free Documentation License
11137@cindex FDL, GNU Free Documentation License
11138@include fdl.texi
11139
11140@node Concept Index, Name Index, GNU Free Documentation License, Top
11141@unnumbered Index of Concepts
11142
11143@printindex cp
11144
11145@node Name Index, , Concept Index, Top
11146@unnumbered Index of Functions, Variables, & Directives
11147
11148@printindex fn
11149
11150@bye
Note: See TracBrowser for help on using the repository browser.

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