1 \input texinfo @c -*- Texinfo -*-
4 @settitle GNU @code{make}
8 @c FSF publishers: format makebook.texi instead of using this file directly.
10 @set RCSID $Id: make.texinfo,v 2.139 1994/05/17 03:50:09 roland Beta $
12 @set VERSION 3.71 Beta
13 @set UPDATED 11 May 1994
14 @set UPDATE-MONTH May 1994
18 @c ISPELL CHECK: done, 10 June 1993 --roland
20 @c Combine the variable and function indices:
22 @c Combine the program and concept indices:
26 This file documents the GNU Make utility, which determines
27 automatically which pieces of a large program need to be recompiled,
28 and issues the commands to recompile them.
30 This is Edition @value{EDITION}, last updated @value{UPDATED},
31 of @cite{The GNU Make Manual}, for @code{make}, Version @value{VERSION}.
33 Copyright (C) 1988, '89, '90, '91, '92, '93, '94 Free Software Foundation, Inc.
35 Permission is granted to make and distribute verbatim copies of
36 this manual provided the copyright notice and this permission notice
37 are preserved on all copies.
40 Permission is granted to process this file through TeX and print the
41 results, provided the printed document carries copying permission
42 notice identical to this one except for the removal of this paragraph
43 (this paragraph not being relevant to the printed manual).
46 Permission is granted to copy and distribute modified versions of this
47 manual under the conditions for verbatim copying, provided that the entire
48 resulting derived work is distributed under the terms of a permission
49 notice identical to this one.
51 Permission is granted to copy and distribute translations of this manual
52 into another language, under the above conditions for modified versions,
53 except that this permission notice may be stated in a translation approved
54 by the Free Software Foundation.
58 @shorttitlepage GNU Make
62 @subtitle A Program for Directing Recompilation
63 @subtitle Edition @value{EDITION}, for @code{make} Version @value{VERSION}.
64 @subtitle @value{UPDATE-MONTH}
65 @author Richard M. Stallman and Roland McGrath
67 @vskip 0pt plus 1filll
68 Copyright @copyright{} 1988, '89, '90, '91, '92, '93, '94 Free Software Foundation, Inc.
70 Published by the Free Software Foundation @*
71 675 Massachusetts Avenue, @*
72 Cambridge, MA 02139 USA @*
73 Printed copies are available for $20 each. @*
76 Permission is granted to make and distribute verbatim copies of
77 this manual provided the copyright notice and this permission notice
78 are preserved on all copies.
80 Permission is granted to copy and distribute modified versions of this
81 manual under the conditions for verbatim copying, provided that the entire
82 resulting derived work is distributed under the terms of a permission
83 notice identical to this one.
85 Permission is granted to copy and distribute translations of this manual
86 into another language, under the above conditions for modified versions,
87 except that this permission notice may be stated in a translation approved
88 by the Free Software Foundation.
90 Cover art by Etienne Suvasa.
95 @node Top, Overview, (dir), (dir)
98 The GNU @code{make} utility automatically determines which pieces of a
99 large program need to be recompiled, and issues the commands to
100 recompile them.@refill
102 This is Edition @value{EDITION} of the @cite{GNU Make Manual},
103 last updated @value{UPDATED}
104 for @code{make} Version @value{VERSION}.@refill
106 This manual describes @code{make} and contains the following chapters:@refill
110 * Overview:: Overview of @code{make}.
111 * Introduction:: An introduction to @code{make}.
112 * Makefiles:: Makefiles tell @code{make} what to do.
113 * Rules:: Rules describe when a file must be remade.
114 * Commands:: Commands say how to remake a file.
115 * Using Variables:: You can use variables to avoid repetition.
116 * Conditionals:: Use or ignore parts of the makefile based
117 on the values of variables.
118 * Functions:: Many powerful ways to manipulate text.
119 * make Invocation: Running. How to invoke @code{make} on the command line.
120 * Implicit Rules:: Use implicit rules to treat many files alike,
121 based on their file names.
122 * Archives:: How @code{make} can update library archives.
123 * Features:: Features GNU @code{make} has over other @code{make}s.
124 * Missing:: What GNU @code{make} lacks from other @code{make}s.
125 * Makefile Conventions:: Conventions for makefiles in GNU programs.
126 * Quick Reference:: A quick reference for experienced users.
127 * Complex Makefile:: A real example of a straightforward,
128 but nontrivial, makefile.
129 * Concept Index:: Index of Concepts
130 * Name Index:: Index of Functions, Variables, & Directives
132 --- The Detailed Node Listing ---
134 Overview of @code{make}
136 * Preparing:: Preparing and Running Make
137 * Reading:: On Reading this Text
138 * Bugs:: Problems and Bugs
140 An Introduction to Makefiles
142 * Rule Introduction:: What a rule looks like.
143 * Simple Makefile:: A Simple Makefile
144 * How Make Works:: How @code{make} Processes This Makefile
145 * Variables Simplify:: Variables Make Makefiles Simpler
146 * make Deduces:: Letting @code{make} Deduce the Commands
147 * Combine By Dependency:: Another Style of Makefile
148 * Cleanup:: Rules for Cleaning the Directory
152 * Makefile Contents:: What makefiles contain.
153 * Makefile Names:: How to name your makefile.
154 * Include:: How one makefile can use another makefile.
155 * MAKEFILES Variable:: The environment can specify extra makefiles.
156 * Remaking Makefiles:: How makefiles get remade.
157 * Overriding Makefiles:: How to override part of one makefile
158 with another makefile.
162 * Rule Example:: An example explained.
163 * Rule Syntax:: General syntax explained.
164 * Wildcards:: Using wildcard characters such as `*'.
165 * Directory Search:: Searching other directories for source files.
166 * Phony Targets:: Using a target that is not a real file's name.
167 * Force Targets:: You can use a target without commands
168 or dependencies to mark other
170 * Empty Targets:: When only the date matters and the
172 * Special Targets:: Targets with special built-in meanings.
173 * Multiple Targets:: When to make use of several targets in a rule.
174 * Multiple Rules:: How to use several rules with the same target.
175 * Static Pattern:: Static pattern rules apply to multiple targets
176 and can vary the dependencies according to
178 * Double-Colon:: How to use a special kind of rule to allow
179 several independent rules for one target.
180 * Automatic Dependencies:: How to automatically generate rules giving
181 dependencies from the source files themselves.
183 Using Wildcard Characters in File Names
185 * Wildcard Examples:: Several examples
186 * Wildcard Pitfall:: Problems to avoid.
187 * Wildcard Function:: How to cause wildcard expansion where
188 it does not normally take place.
190 Searching Directories for Dependencies
192 * General Search:: Specifying a search path that applies
194 * Selective Search:: Specifying a search path
195 for a specified class of names.
196 * Commands/Search:: How to write shell commands that work together
198 * Implicit/Search:: How search paths affect implicit rules.
199 * Libraries/Search:: Directory search for link libraries.
203 * Static Usage:: The syntax of static pattern rules.
204 * Static versus Implicit:: When are they better than implicit rules?
206 Writing the Commands in Rules
208 * Echoing:: How to control when commands are echoed.
209 * Execution:: How commands are executed.
210 * Parallel:: How commands can be executed in parallel.
211 * Errors:: What happens after a command execution error.
212 * Interrupts:: What happens when a command is interrupted.
213 * Recursion:: Invoking @code{make} from makefiles.
214 * Sequences:: Defining canned sequences of commands.
215 * Empty Commands:: Defining useful, do-nothing commands.
217 Recursive Use of @code{make}
219 * MAKE Variable:: The special effects of using @samp{$(MAKE)}.
220 * Variables/Recursion:: How to communicate variables to a sub-@code{make}.
221 * Options/Recursion:: How to communicate options to a sub-@code{make}.
222 * -w Option:: How the @samp{-w} or @samp{--print-directory} option
223 helps debug use of recursive @code{make} commands.
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
234 * Override Directive:: How to set a variable in the makefile even if
235 the user has set it with a command argument.
236 * Defining:: An alternate way to set a variable
237 to a verbatim string.
238 * Environment:: Variable values can come from the environment.
240 Advanced Features for Reference to Variables
242 * Substitution Refs:: Referencing a variable with
243 substitutions on the value.
244 * Computed Names:: Computing the name of the variable to refer to.
246 Conditional Parts of Makefiles
248 * Conditional Example:: Example of a conditional
249 * Conditional Syntax:: The syntax of conditionals.
250 * Testing Flags:: Conditionals that test flags.
252 Functions for Transforming Text
254 * Syntax of Functions:: How to write a function call.
255 * Text Functions:: General-purpose text manipulation functions.
256 * Filename Functions:: Functions for manipulating file names.
257 * Foreach Function:: Repeat some text with controlled variation.
258 * Origin Function:: Find where a variable got its value.
259 * Shell Function:: Substitute the output of a shell command.
261 How to Run @code{make}
263 * Makefile Arguments:: How to specify which makefile to use.
264 * Goals:: How to use goal arguments to specify which
265 parts of the makefile to use.
266 * Instead of Execution:: How to use mode flags to specify what
267 kind of thing to do with the commands
268 in the makefile other than simply
270 * Avoiding Compilation:: How to avoid recompiling certain files.
271 * Overriding:: How to override a variable to specify
272 an alternate compiler and other things.
273 * Testing:: How to proceed past some errors, to
275 * Options Summary:: Summary of Options
279 * Using Implicit:: How to use an existing implicit rule
280 to get the commands for updating a file.
281 * Catalogue of Rules:: A list of built-in implicit rules.
282 * Implicit Variables:: How to change what predefined rules do.
283 * Chained Rules:: How to use a chain of implicit rules.
284 * Pattern Rules:: How to define new implicit rules.
285 * Last Resort:: How to defining commands for rules
286 which cannot find any.
287 * Suffix Rules:: The old-fashioned style of implicit rule.
288 * Search Algorithm:: The precise algorithm for applying
291 Defining and Redefining Pattern Rules
293 * Pattern Intro:: An introduction to pattern rules.
294 * Pattern Examples:: Examples of pattern rules.
295 * Automatic:: How to use automatic variables in the
296 commands of implicit rules.
297 * Pattern Match:: How patterns match.
298 * Match-Anything Rules:: Precautions you should take prior to
299 defining rules that can match any
300 target file whatever.
301 * Canceling Rules:: How to override or cancel built-in rules.
303 Using @code{make} to Update Archive Files
305 * Archive Members:: Archive members as targets.
306 * Archive Update:: The implicit rule for archive member targets.
307 * Archive Suffix Rules:: You can write a special kind of suffix rule
308 for updating archives.
310 Implicit Rule for Archive Member Targets
312 * Archive Symbols:: How to update archive symbol directories.
315 @node Overview, Introduction, Top, Top
316 @comment node-name, next, previous, up
317 @chapter Overview of @code{make}
319 The @code{make} utility automatically determines which pieces of a large
320 program need to be recompiled, and issues commands to recompile them.
321 This manual describes GNU @code{make}, which was implemented by Richard
322 Stallman and Roland McGrath. GNU @code{make} conforms to section 6.2 of
323 @cite{IEEE Standard 1003.2-1992} (POSIX.2).
325 @cindex IEEE Standard 1003.2
326 @cindex standards conformance
328 Our examples show C programs, since they are most common, but you can use
329 @code{make} with any programming language whose compiler can be run with a
330 shell command. Indeed, @code{make} is not limited to programs. You can
331 use it to describe any task where some files must be updated automatically
332 from others whenever the others change.
335 * Preparing:: Preparing and Running Make
336 * Reading:: On Reading this Text
337 * Bugs:: Problems and Bugs
340 @node Preparing, Reading, , Overview
342 @heading Preparing and Running Make
345 To prepare to use @code{make}, you must write a file called
346 the @dfn{makefile} that describes the relationships among files
347 in your program and provides commands for updating each file.
348 In a program, typically, the executable file is updated from object
349 files, which are in turn made by compiling source files.@refill
351 Once a suitable makefile exists, each time you change some source files,
352 this simple shell command:
359 suffices to perform all necessary recompilations. The @code{make} program
360 uses the makefile data base and the last-modification times of the files to
361 decide which of the files need to be updated. For each of those files, it
362 issues the commands recorded in the data base.
364 You can provide command line arguments to @code{make} to control which
365 files should be recompiled, or how. @xref{Running, ,How to Run
368 @node Reading, Bugs, Preparing, Overview
369 @section How to Read This Manual
371 If you are new to @code{make}, or are looking for a general
372 introduction, read the first few sections of each chapter, skipping the
373 later sections. In each chapter, the first few sections contain
374 introductory or general information and the later sections contain
375 specialized or technical information.
377 The exception is the second chapter, @ref{Introduction, ,An
378 Introduction to Makefiles}, all of which is introductory.
381 The exception is @ref{Introduction, ,An Introduction to Makefiles},
382 all of which is introductory.
385 If you are familiar with other @code{make} programs, see @ref{Features,
386 ,Features of GNU @code{make}}, which lists the enhancements GNU
387 @code{make} has, and @ref{Missing, ,Incompatibilities and Missing
388 Features}, which explains the few things GNU @code{make} lacks that
391 For a quick summary, see @ref{Options Summary}, @ref{Quick Reference},
392 and @ref{Special Targets}.
394 @node Bugs, , Reading, Overview
395 @section Problems and Bugs
396 @cindex reporting bugs
397 @cindex bugs, reporting
398 @cindex problems and bugs, reporting
400 If you have problems with GNU @code{make} or think you've found a bug,
401 please report it to the developers; we cannot promise to do anything but
402 we might well want to fix it.
404 Before reporting a bug, make sure you've actually found a real bug.
405 Carefully reread the documentation and see if it really says you can do
406 what you're trying to do. If it's not clear whether you should be able
407 to do something or not, report that too; it's a bug in the
410 Before reporting a bug or trying to fix it yourself, try to isolate it
411 to the smallest possible makefile that reproduces the problem. Then
412 send us the makefile and the exact results @code{make} gave you. Also
413 say what you expected to occur; this will help us decide whether the
414 problem was really in the documentation.
416 Once you've got a precise problem, please send electronic mail either
417 through the Internet or via UUCP:
421 @r{Internet address:}
422 bug-gnu-utils@@prep.ai.mit.edu
425 mit-eddie!prep.ai.mit.edu!bug-gnu-utils
430 Please include the version number of @code{make} you are using. You can
431 get this information with the command @samp{make --version}.
432 Be sure also to include the type of machine and operating system you are
433 using. If possible, include the contents of the file @file{config.h}
434 that is generated by the configuration process.
436 Non-bug suggestions are always welcome as well. If you have questions
437 about things that are unclear in the documentation or are just obscure
438 features, send a message to the bug reporting address. We cannot
439 guarantee you'll get help with your problem, but many seasoned
440 @code{make} users read the mailing list and they will probably try to
441 help you out. The maintainers sometimes answer such questions as well,
444 @node Introduction, Makefiles, Overview, Top
445 @comment node-name, next, previous, up
446 @chapter An Introduction to Makefiles
448 You need a file called a @dfn{makefile} to tell @code{make} what to do.
449 Most often, the makefile tells @code{make} how to compile and link a
453 In this chapter, we will discuss a simple makefile that describes how to
454 compile and link a text editor which consists of eight C source files
455 and three header files. The makefile can also tell @code{make} how to
456 run miscellaneous commands when explicitly asked (for example, to remove
457 certain files as a clean-up operation). To see a more complex example
458 of a makefile, see @ref{Complex Makefile}.
460 When @code{make} recompiles the editor, each changed C source file
461 must be recompiled. If a header file has changed, each C source file
462 that includes the header file must be recompiled to be safe. Each
463 compilation produces an object file corresponding to the source file.
464 Finally, if any source file has been recompiled, all the object files,
465 whether newly made or saved from previous compilations, must be linked
466 together to produce the new executable editor.
467 @cindex recompilation
471 * Rule Introduction:: What a rule looks like.
472 * Simple Makefile:: A Simple Makefile
473 * How Make Works:: How @code{make} Processes This Makefile
474 * Variables Simplify:: Variables Make Makefiles Simpler
475 * make Deduces:: Letting @code{make} Deduce the Commands
476 * Combine By Dependency:: Another Style of Makefile
477 * Cleanup:: Rules for Cleaning the Directory
480 @node Rule Introduction, Simple Makefile, , Introduction
481 @comment node-name, next, previous, up
482 @section What a Rule Looks Like
483 @cindex rule, introduction to
484 @cindex makefile rule parts
485 @cindex parts of makefile rule
487 A simple makefile consists of ``rules'' with the following shape:
489 @cindex targets, introduction to
490 @cindex dependencies, introduction to
491 @cindex commands, introduction to
494 @var{target} @dots{} : @var{dependencies} @dots{}
501 A @dfn{target} is usually the name of a file that is generated by a
502 program; examples of targets are executable or object files. A target
503 can also be the name of an action to carry out, such as @samp{clean}
504 (@pxref{Phony Targets}).
506 A @dfn{dependency} is a file that is used as input to create the
507 target. A target often depends on several files.
509 @cindex tabs in rules
510 A @dfn{command} is an action that @code{make} carries out.
511 A rule may have more than one command, each on its own line.
512 @strong{Please note:} you need to put a tab character at the beginning of
513 every command line! This is an obscurity that catches the unwary.
515 Usually a command is in a rule with dependencies and serves to create a
516 target file if any of the dependencies change. However, the rule that
517 specifies commands for the target need not have dependencies. For
518 example, the rule containing the delete command associated with the
519 target @samp{clean} does not have dependencies.
521 A @dfn{rule}, then, explains how and when to remake certain files
522 which are the targets of the particular rule. @code{make} carries out
523 the commands on the dependencies to create or update the target. A
524 rule can also explain how and when to carry out an action.
525 @xref{Rules, , Writing Rules}.
527 A makefile may contain other text besides rules, but a simple makefile
528 need only contain rules. Rules may look somewhat more complicated
529 than shown in this template, but all fit the pattern more or less.
531 @node Simple Makefile, How Make Works, Rule Introduction, Introduction
532 @section A Simple Makefile
533 @cindex simple makefile
534 @cindex makefile, simple
536 Here is a straightforward makefile that describes the way an
537 executable file called @code{edit} depends on eight object files
538 which, in turn, depend on eight C source and three header files.
540 In this example, all the C files include @file{defs.h}, but only those
541 defining editing commands include @file{command.h}, and only low
542 level files that change the editor buffer include @file{buffer.h}.
546 edit : main.o kbd.o command.o display.o \
547 insert.o search.o files.o utils.o
548 cc -o edit main.o kbd.o command.o display.o \
549 insert.o search.o files.o utils.o
551 main.o : main.c defs.h
553 kbd.o : kbd.c defs.h command.h
555 command.o : command.c defs.h command.h
557 display.o : display.c defs.h buffer.h
559 insert.o : insert.c defs.h buffer.h
561 search.o : search.c defs.h buffer.h
563 files.o : files.c defs.h buffer.h command.h
565 utils.o : utils.c defs.h
568 rm edit main.o kbd.o command.o display.o \
569 insert.o search.o files.o utils.o
574 We split each long line into two lines using backslash-newline; this is
575 like using one long line, but is easier to read.
576 @cindex continuation lines
577 @cindex @code{\} (backslash), for continuation lines
578 @cindex backslash (@code{\}), for continuation lines
579 @cindex quoting newline, in makefile
580 @cindex newline, quoting, in makefile
582 To use this makefile to create the executable file called @file{edit},
589 To use this makefile to delete the executable file and all the object
590 files from the directory, type:
596 In the example makefile, the targets include the executable file
597 @samp{edit}, and the object files @samp{main.o} and @samp{kbd.o}. The
598 dependencies are files such as @samp{main.c} and @samp{defs.h}.
599 In fact, each @samp{.o} file is both a target and a dependency.
600 Commands include @w{@samp{cc -c main.c}} and @w{@samp{cc -c kbd.c}}.
602 When a target is a file, it needs to be recompiled or relinked if any
603 of its dependencies change. In addition, any dependencies that are
604 themselves automatically generated should be updated first. In this
605 example, @file{edit} depends on each of the eight object files; the
606 object file @file{main.o} depends on the source file @file{main.c} and
607 on the header file @file{defs.h}.
609 A shell command follows each line that contains a target and
610 dependencies. These shell commands say how to update the target file.
611 A tab character must come at the beginning of every command line to
612 distinguish commands lines from other lines in the makefile. (Bear in
613 mind that @code{make} does not know anything about how the commands
614 work. It is up to you to supply commands that will update the target
615 file properly. All @code{make} does is execute the commands in the rule
616 you have specified when the target file needs to be updated.)
617 @cindex shell command
619 The target @samp{clean} is not a file, but merely the name of an
622 do not want to carry out the actions in this rule, @samp{clean} is not a dependency of any other rule.
623 Consequently, @code{make} never does anything with it unless you tell
624 it specifically. Note that this rule not only is not a dependency, it
625 also does not have any dependencies, so the only purpose of the rule
626 is to run the specified commands. Targets that do not refer to files
627 but are just actions are called @dfn{phony targets}. @xref{Phony
628 Targets}, for information about this kind of target. @xref{Errors, ,
629 Errors in Commands}, to see how to cause @code{make} to ignore errors
630 from @code{rm} or any other command.
631 @cindex @code{clean} target
632 @cindex @code{rm} (shell command)
634 @node How Make Works, Variables Simplify, Simple Makefile, Introduction
635 @comment node-name, next, previous, up
636 @section How @code{make} Processes a Makefile
637 @cindex processing a makefile
638 @cindex makefile, how @code{make} processes
640 By default, @code{make} starts with the first rule (not counting rules
641 whose target names start with @samp{.}). This is called the
642 @dfn{default goal}. (@dfn{Goals} are the targets that @code{make}
643 strives ultimately to update. @xref{Goals, , Arguments to Specify the
646 @cindex goal, default
649 In the simple example of the previous section, the default goal is to
650 update the executable program @file{edit}; therefore, we put that rule
653 Thus, when you give the command:
660 @code{make} reads the makefile in the current directory and begins by
661 processing the first rule. In the example, this rule is for relinking
662 @file{edit}; but before @code{make} can fully process this rule, it
663 must process the rules for the files that @file{edit} depends on,
664 which in this case are the object files. Each of these files is
665 processed according to its own rule. These rules say to update each
666 @samp{.o} file by compiling its source file. The recompilation must
667 be done if the source file, or any of the header files named as
668 dependencies, is more recent than the object file, or if the object
671 The other rules are processed because their targets appear as
672 dependencies of the goal. If some other rule is not depended on by the
673 goal (or anything it depends on, etc.), that rule is not processed,
674 unless you tell @code{make} to do so (with a command such as
675 @w{@code{make clean}}).
677 Before recompiling an object file, @code{make} considers updating its
678 dependencies, the source file and header files. This makefile does not
679 specify anything to be done for them---the @samp{.c} and @samp{.h} files
680 are not the targets of any rules---so @code{make} does nothing for these
681 files. But @code{make} would update automatically generated C programs,
682 such as those made by Bison or Yacc, by their own rules at this time.
684 After recompiling whichever object files need it, @code{make} decides
685 whether to relink @file{edit}. This must be done if the file
686 @file{edit} does not exist, or if any of the object files are newer than
687 it. If an object file was just recompiled, it is now newer than
688 @file{edit}, so @file{edit} is relinked.
691 Thus, if we change the file @file{insert.c} and run @code{make},
692 @code{make} will compile that file to update @file{insert.o}, and then
693 link @file{edit}. If we change the file @file{command.h} and run
694 @code{make}, @code{make} will recompile the object files @file{kbd.o},
695 @file{command.o} and @file{files.o} and then link the file @file{edit}.
697 @node Variables Simplify, make Deduces, How Make Works, Introduction
698 @section Variables Make Makefiles Simpler
700 @cindex simplifying with variables
702 In our example, we had to list all the object files twice in the rule for
703 @file{edit} (repeated here):
707 edit : main.o kbd.o command.o display.o \
708 insert.o search.o files.o utils.o
709 cc -o edit main.o kbd.o command.o display.o \
710 insert.o search.o files.o utils.o
714 @cindex @code{objects}
715 Such duplication is error-prone; if a new object file is added to the
716 system, we might add it to one list and forget the other. We can eliminate
717 the risk and simplify the makefile by using a variable. @dfn{Variables}
718 allow a text string to be defined once and substituted in multiple places
719 later (@pxref{Using Variables, ,How to Use Variables}).
721 @cindex @code{OBJECTS}
726 It is standard practice for every makefile to have a variable named
727 @code{objects}, @code{OBJECTS}, @code{objs}, @code{OBJS}, @code{obj},
728 or @code{OBJ} which is a list of all object file names. We would
729 define such a variable @code{objects} with a line like this in the
734 objects = main.o kbd.o command.o display.o \
735 insert.o search.o files.o utils.o
740 Then, each place we want to put a list of the object file names, we can
741 substitute the variable's value by writing @samp{$(objects)}
742 (@pxref{Using Variables, ,How to Use Variables}).
744 Here is how the complete simple makefile looks when you use a variable
745 for the object files:
749 objects = main.o kbd.o command.o display.o \
750 insert.o search.o files.o utils.o
753 cc -o edit $(objects)
754 main.o : main.c defs.h
756 kbd.o : kbd.c defs.h command.h
758 command.o : command.c defs.h command.h
760 display.o : display.c defs.h buffer.h
762 insert.o : insert.c defs.h buffer.h
764 search.o : search.c defs.h buffer.h
766 files.o : files.c defs.h buffer.h command.h
768 utils.o : utils.c defs.h
775 @node make Deduces, Combine By Dependency, Variables Simplify, Introduction
776 @section Letting @code{make} Deduce the Commands
777 @cindex deducing commands (implicit rules)
778 @cindex implicit rule, introduction to
779 @cindex rule, implicit, introduction to
781 It is not necessary to spell out the commands for compiling the individual
782 C source files, because @code{make} can figure them out: it has an
783 @dfn{implicit rule} for updating a @samp{.o} file from a correspondingly
784 named @samp{.c} file using a @samp{cc -c} command. For example, it will
785 use the command @samp{cc -c main.c -o main.o} to compile @file{main.c} into
786 @file{main.o}. We can therefore omit the commands from the rules for the
787 object files. @xref{Implicit Rules, ,Using Implicit Rules}.@refill
789 When a @samp{.c} file is used automatically in this way, it is also
790 automatically added to the list of dependencies. We can therefore omit
791 the @samp{.c} files from the dependencies, provided we omit the commands.
793 Here is the entire example, with both of these changes, and a variable
794 @code{objects} as suggested above:
798 objects = main.o kbd.o command.o display.o \
799 insert.o search.o files.o utils.o
802 cc -o edit $(objects)
805 kbd.o : defs.h command.h
806 command.o : defs.h command.h
807 display.o : defs.h buffer.h
808 insert.o : defs.h buffer.h
809 search.o : defs.h buffer.h
810 files.o : defs.h buffer.h command.h
820 This is how we would write the makefile in actual practice. (The
821 complications associated with @samp{clean} are described elsewhere.
822 See @ref{Phony Targets}, and @ref{Errors, ,Errors in Commands}.)
824 Because implicit rules are so convenient, they are important. You
825 will see them used frequently.@refill
827 @node Combine By Dependency, Cleanup, make Deduces, Introduction
828 @section Another Style of Makefile
829 @cindex combining rules by dependency
831 When the objects of a makefile are created only by implicit rules, an
832 alternative style of makefile is possible. In this style of makefile,
833 you group entries by their dependencies instead of by their targets.
834 Here is what one looks like:
838 objects = main.o kbd.o command.o display.o \
839 insert.o search.o files.o utils.o
842 cc -o edit $(objects)
845 kbd.o command.o files.o : command.h
846 display.o insert.o search.o files.o : buffer.h
851 Here @file{defs.h} is given as a dependency of all the object files;
852 @file{command.h} and @file{buffer.h} are dependencies of the specific
853 object files listed for them.
855 Whether this is better is a matter of taste: it is more compact, but some
856 people dislike it because they find it clearer to put all the information
857 about each target in one place.
859 @node Cleanup, , Combine By Dependency, Introduction
860 @section Rules for Cleaning the Directory
862 @cindex removing, to clean up
864 Compiling a program is not the only thing you might want to write rules
865 for. Makefiles commonly tell how to do a few other things besides
866 compiling a program: for example, how to delete all the object files
867 and executables so that the directory is @samp{clean}.
869 @cindex @code{clean} target
871 could write a @code{make} rule for cleaning our example editor:
880 In practice, we might want to write the rule in a somewhat more
881 complicated manner to handle unanticipated situations. We would do this:
892 This prevents @code{make} from getting confused by an actual file
893 called @file{clean} and causes it to continue in spite of errors from
894 @code{rm}. (See @ref{Phony Targets}, and @ref{Errors, ,Errors in
898 A rule such as this should not be placed at the beginning of the
899 makefile, because we do not want it to run by default! Thus, in the
900 example makefile, we want the rule for @code{edit}, which recompiles
901 the editor, to remain the default goal.
903 Since @code{clean} is not a dependency of @code{edit}, this rule will not
904 run at all if we give the command @samp{make} with no arguments. In
905 order to make the rule run, we have to type @samp{make clean}.
906 @xref{Running, ,How to Run @code{make}}.
908 @node Makefiles, Rules, Introduction, Top
909 @chapter Writing Makefiles
911 @cindex makefile, how to write
912 The information that tells @code{make} how to recompile a system comes from
913 reading a data base called the @dfn{makefile}.
916 * Makefile Contents:: What makefiles contain.
917 * Makefile Names:: How to name your makefile.
918 * Include:: How one makefile can use another makefile.
919 * MAKEFILES Variable:: The environment can specify extra makefiles.
920 * Remaking Makefiles:: How makefiles get remade.
921 * Overriding Makefiles:: How to override part of one makefile
922 with another makefile.
925 @node Makefile Contents, Makefile Names, , Makefiles
926 @section What Makefiles Contain
928 Makefiles contain five kinds of things: @dfn{explicit rules},
929 @dfn{implicit rules}, @dfn{variable definitions}, @dfn{directives},
930 and @dfn{comments}. Rules, variables, and directives are described at
931 length in later chapters.@refill
934 @cindex rule, explicit, definition of
935 @cindex explicit rule, definition of
937 An @dfn{explicit rule} says when and how to remake one or more files,
938 called the rule's targets. It lists the other files that the targets
939 @dfn{depend on}, and may also give commands to use to create or update
940 the targets. @xref{Rules, ,Writing Rules}.
942 @cindex rule, implicit, definition of
943 @cindex implicit rule, definition of
945 An @dfn{implicit rule} says when and how to remake a class of files
946 based on their names. It describes how a target may depend on a file
947 with a name similar to the target and gives commands to create or
948 update such a target. @xref{Implicit Rules, ,Using Implicit Rules}.
950 @cindex variable definition
952 A @dfn{variable definition} is a line that specifies a text string
953 value for a variable that can be substituted into the text later. The
954 simple makefile example shows a variable definition for @code{objects}
955 as a list of all object files (@pxref{Variables Simplify, , Variables
956 Make Makefiles Simpler}).
960 A @dfn{directive} is a command for @code{make} to do something special while
961 reading the makefile. These include:
965 Reading another makefile (@pxref{Include, ,Including Other Makefiles}).
968 Deciding (based on the values of variables) whether to use or
969 ignore a part of the makefile (@pxref{Conditionals, ,Conditional Parts of Makefiles}).
972 Defining a variable from a verbatim string containing multiple lines
973 (@pxref{Defining, ,Defining Variables Verbatim}).
976 @cindex comments, in makefile
977 @cindex @code{#} (comments), in makefile
979 @samp{#} in a line of a makefile starts a @dfn{comment}. It and the rest of
980 the line are ignored, except that a trailing backslash not escaped by
981 another backslash will continue the comment across multiple lines.
982 Comments may appear on any of the lines in the makefile, except within a
983 @code{define} directive, and perhaps within commands (where the shell
984 decides what is a comment). A line containing just a comment (with
985 perhaps spaces before it) is effectively blank, and is ignored.@refill
988 @node Makefile Names, Include, Makefile Contents, Makefiles
989 @section What Name to Give Your Makefile
990 @cindex makefile name
991 @cindex name of makefile
992 @cindex default makefile name
993 @cindex file name of makefile
995 @c following paragraph rewritten to avoid overfull hbox
996 By default, when @code{make} looks for the makefile, it tries the
997 following names, in order: @file{GNUmakefile}, @file{makefile}
998 and @file{Makefile}.@refill
1003 @cindex @code{README}
1004 Normally you should call your makefile either @file{makefile} or
1005 @file{Makefile}. (We recommend @file{Makefile} because it appears
1006 prominently near the beginning of a directory listing, right near other
1007 important files such as @file{README}.) The first name checked,
1008 @file{GNUmakefile}, is not recommended for most makefiles. You should
1009 use this name if you have a makefile that is specific to GNU
1010 @code{make}, and will not be understood by other versions of
1011 @code{make}. Other @code{make} programs look for @file{makefile} and
1012 @file{Makefile}, but not @file{GNUmakefile}.
1014 If @code{make} finds none of these names, it does not use any makefile.
1015 Then you must specify a goal with a command argument, and @code{make}
1016 will attempt to figure out how to remake it using only its built-in
1017 implicit rules. @xref{Implicit Rules, ,Using Implicit Rules}.
1020 @cindex @code{--file}
1021 @cindex @code{--makefile}
1022 If you want to use a nonstandard name for your makefile, you can specify
1023 the makefile name with the @samp{-f} or @samp{--file} option. The
1024 arguments @w{@samp{-f @var{name}}} or @w{@samp{--file=@var{name}}} tell
1025 @code{make} to read the file @var{name} as the makefile. If you use
1026 more than one @samp{-f} or @samp{--file} option, you can specify several
1027 makefiles. All the makefiles are effectively concatenated in the order
1028 specified. The default makefile names @file{GNUmakefile},
1029 @file{makefile} and @file{Makefile} are not checked automatically if you
1030 specify @samp{-f} or @samp{--file}.@refill
1031 @cindex specifying makefile name
1032 @cindex makefile name, how to specify
1033 @cindex name of makefile, how to specify
1034 @cindex file name of makefile, how to specify
1036 @node Include, MAKEFILES Variable, Makefile Names, Makefiles
1037 @section Including Other Makefiles
1038 @cindex including other makefiles
1039 @cindex makefile, including
1042 The @code{include} directive tells @code{make} to suspend reading the
1043 current makefile and read one or more other makefiles before continuing.
1044 The directive is a line in the makefile that looks like this:
1047 include @var{filenames}@dots{}
1051 @var{filenames} can contain shell file name patterns.
1052 @cindex shell file name pattern (in @code{include})
1053 @cindex shell wildcards (in @code{include})
1054 @cindex wildcard, in @code{include}
1056 Extra spaces are allowed and ignored at the beginning of the line, but
1057 a tab is not allowed. (If the line begins with a tab, it will be
1058 considered a command line.) Whitespace is required between
1059 @code{include} and the file names, and between file names; extra
1060 whitespace is ignored there and at the end of the directive. A
1061 comment starting with @samp{#} is allowed at the end of the line. If
1062 the file names contain any variable or function references, they are
1063 expanded. @xref{Using Variables, ,How to Use Variables}.
1065 For example, if you have three @file{.mk} files, @file{a.mk},
1066 @file{b.mk}, and @file{c.mk}, and @code{$(bar)} expands to
1067 @code{bish bash}, then the following expression
1070 include foo *.mk $(bar)
1076 include foo a.mk b.mk c.mk bish bash
1079 When @code{make} processes an @code{include} directive, it suspends
1080 reading of the containing makefile and reads from each listed file in
1081 turn. When that is finished, @code{make} resumes reading the
1082 makefile in which the directive appears.
1084 One occasion for using @code{include} directives is when several programs,
1085 handled by individual makefiles in various directories, need to use a
1086 common set of variable definitions
1087 (@pxref{Setting, ,Setting Variables}) or pattern rules
1088 (@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}).
1090 Another such occasion is when you want to generate dependencies from
1091 source files automatically; the dependencies can be put in a file that
1092 is included by the main makefile. This practice is generally cleaner
1093 than that of somehow appending the dependencies to the end of the main
1094 makefile as has been traditionally done with other versions of
1095 @code{make}. @xref{Automatic Dependencies}.
1096 @cindex dependencies, automatic generation
1097 @cindex automatic generation of dependencies
1098 @cindex generating dependencies automatically
1101 @cindex @code{--include-dir}
1102 @findex /usr/gnu/include
1103 @findex /usr/local/include
1104 @findex /usr/include
1105 If the specified name does not start with a slash, and the file is not
1106 found in the current directory, several other directories are searched.
1107 First, any directories you have specified with the @samp{-I} or
1108 @samp{--include-dir} option are searched
1109 (@pxref{Options Summary, ,Summary of Options}).
1110 Then the following directories (if they exist)
1111 are searched, in this order:
1112 @file{@var{prefix}/include} (normally @file{/usr/local/include})
1113 @file{/usr/gnu/include},
1114 @file{/usr/local/include}, @file{/usr/include}.
1116 If an included makefile cannot be found in any of these directories, a
1117 warning message is generated, but it is not an immediately fatal error;
1118 processing of the makefile containing the @code{include} continues.
1119 Once it has finished reading makefiles, @code{make} will try to remake
1120 any that are out of date or don't exist.
1121 @xref{Remaking Makefiles, ,How Makefiles Are Remade}.
1122 Only after it has tried to find a way to remake a makefile and failed,
1123 will @code{make} diagnose the missing makefile as a fatal error.
1125 If you want @code{make} to simply ignore a makefile which does not exist
1126 and cannot be remade, with no error message, use the @w{@code{-include}}
1127 directive instead of @code{include}, like this:
1130 -include @var{filenames}@dots{}
1133 This is acts like @code{include} in every way except that there is no
1134 error (not even a warning) if any of the @var{filenames} do not exist.
1136 @node MAKEFILES Variable, Remaking Makefiles, Include, Makefiles
1137 @section The Variable @code{MAKEFILES}
1138 @cindex makefile, and @code{MAKEFILES} variable
1139 @cindex including (@code{MAKEFILES} variable)
1142 If the environment variable @code{MAKEFILES} is defined, @code{make}
1143 considers its value as a list of names (separated by whitespace) of
1144 additional makefiles to be read before the others. This works much like
1145 the @code{include} directive: various directories are searched for those
1146 files (@pxref{Include, ,Including Other Makefiles}). In addition, the
1147 default goal is never taken from one of these makefiles and it is not an
1148 error if the files listed in @code{MAKEFILES} are not found.@refill
1150 @cindex recursion, and @code{MAKEFILES} variable
1151 The main use of @code{MAKEFILES} is in communication between recursive
1152 invocations of @code{make} (@pxref{Recursion, ,Recursive Use of
1153 @code{make}}). It usually is not desirable to set the environment
1154 variable before a top-level invocation of @code{make}, because it is
1155 usually better not to mess with a makefile from outside. However, if
1156 you are running @code{make} without a specific makefile, a makefile in
1157 @code{MAKEFILES} can do useful things to help the built-in implicit
1158 rules work better, such as defining search paths (@pxref{Directory Search}).
1160 Some users are tempted to set @code{MAKEFILES} in the environment
1161 automatically on login, and program makefiles to expect this to be done.
1162 This is a very bad idea, because such makefiles will fail to work if run by
1163 anyone else. It is much better to write explicit @code{include} directives
1164 in the makefiles. @xref{Include, , Including Other Makefiles}.
1166 @node Remaking Makefiles, Overriding Makefiles, MAKEFILES Variable, Makefiles
1167 @section How Makefiles Are Remade
1169 @cindex updating makefiles
1170 @cindex remaking makefiles
1171 @cindex makefile, remaking of
1172 Sometimes makefiles can be remade from other files, such as RCS or SCCS
1173 files. If a makefile can be remade from other files, you probably want
1174 @code{make} to get an up-to-date version of the makefile to read in.
1176 To this end, after reading in all makefiles, @code{make} will consider
1177 each as a goal target and attempt to update it. If a makefile has a
1178 rule which says how to update it (found either in that very makefile or
1179 in another one) or if an implicit rule applies to it (@pxref{Implicit
1180 Rules, ,Using Implicit Rules}), it will be updated if necessary. After
1181 all makefiles have been checked, if any have actually been changed,
1182 @code{make} starts with a clean slate and reads all the makefiles over
1183 again. (It will also attempt to update each of them over again, but
1184 normally this will not change them again, since they are already up to
1187 If the makefiles specify a double-colon rule to remake a file with
1188 commands but no dependencies, that file will always be remade
1189 (@pxref{Double-Colon}). In the case of makefiles, a makefile that has a
1190 double-colon rule with commands but no dependencies will be remade every
1191 time @code{make} is run, and then again after @code{make} starts over
1192 and reads the makefiles in again. This would cause an infinite loop:
1193 @code{make} would constantly remake the makefile, and never do anything
1194 else. So, to avoid this, @code{make} will @strong{not} attempt to
1195 remake makefiles which are specified as double-colon targets but have no
1196 dependencies.@refill
1198 If you do not specify any makefiles to be read with @samp{-f} or
1199 @samp{--file} options, @code{make} will try the default makefile names;
1200 @pxref{Makefile Names, ,What Name to Give Your Makefile}. Unlike
1201 makefiles explicitly requested with @samp{-f} or @samp{--file} options,
1202 @code{make} is not certain that these makefiles should exist. However,
1203 if a default makefile does not exist but can be created by running
1204 @code{make} rules, you probably want the rules to be run so that the
1205 makefile can be used.
1207 Therefore, if none of the default makefiles exists, @code{make} will try
1208 to make each of them in the same order in which they are searched for
1209 (@pxref{Makefile Names, ,What Name to Give Your Makefile})
1210 until it succeeds in making one, or it runs out of names to try. Note
1211 that it is not an error if @code{make} cannot find or make any makefile;
1212 a makefile is not always necessary.@refill
1214 When you use the @samp{-t} or @samp{--touch} option
1215 (@pxref{Instead of Execution, ,Instead of Executing the Commands}),
1216 you would not want to use an out-of-date makefile to decide which
1217 targets to touch. So the @samp{-t} option has no effect on updating
1218 makefiles; they are really updated even if @samp{-t} is specified.
1219 Likewise, @samp{-q} (or @samp{--question}) and @samp{-n} (or
1220 @samp{--just-print}) do not prevent updating of makefiles, because an
1221 out-of-date makefile would result in the wrong output for other targets.
1222 Thus, @samp{make -f mfile -n foo} will update @file{mfile}, read it in,
1223 and then print the commands to update @file{foo} and its dependencies
1224 without running them. The commands printed for @file{foo} will be those
1225 specified in the updated contents of @file{mfile}.
1227 However, on occasion you might actually wish to prevent updating of even
1228 the makefiles. You can do this by specifying the makefiles as goals in
1229 the command line as well as specifying them as makefiles. When the
1230 makefile name is specified explicitly as a goal, the options @samp{-t}
1231 and so on do apply to them.
1233 Thus, @samp{make -f mfile -n mfile foo} would read the makefile
1234 @file{mfile}, print the commands needed to update it without actually
1235 running them, and then print the commands needed to update @file{foo}
1236 without running them. The commands for @file{foo} will be those
1237 specified by the existing contents of @file{mfile}.
1239 @node Overriding Makefiles, , Remaking Makefiles, Makefiles
1240 @section Overriding Part of Another Makefile
1242 @cindex overriding makefiles
1243 @cindex makefile, overriding
1244 Sometimes it is useful to have a makefile that is mostly just like
1245 another makefile. You can often use the @samp{include} directive to
1246 include one in the other, and add more targets or variable definitions.
1247 However, if the two makefiles give different commands for the same
1248 target, @code{make} will not let you just do this. But there is another way.
1250 @cindex match-anything rule, used to override
1251 In the containing makefile (the one that wants to include the other),
1252 you can use a match-anything pattern rule to say that to remake any
1253 target that cannot be made from the information in the containing
1254 makefile, @code{make} should look in another makefile.
1255 @xref{Pattern Rules}, for more information on pattern rules.
1257 For example, if you have a makefile called @file{Makefile} that says how
1258 to make the target @samp{foo} (and other targets), you can write a
1259 makefile called @file{GNUmakefile} that contains:
1266 @@$(MAKE) -f Makefile $@@
1270 If you say @samp{make foo}, @code{make} will find @file{GNUmakefile},
1271 read it, and see that to make @file{foo}, it needs to run the command
1272 @samp{frobnicate > foo}. If you say @samp{make bar}, @code{make} will
1273 find no way to make @file{bar} in @file{GNUmakefile}, so it will use the
1274 commands from the pattern rule: @samp{make -f Makefile bar}. If
1275 @file{Makefile} provides a rule for updating @file{bar}, @code{make}
1276 will apply the rule. And likewise for any other target that
1277 @file{GNUmakefile} does not say how to make.
1279 The way this works is that the pattern rule has a pattern of just
1280 @samp{%}, so it matches any target whatever. The rule specifies a
1281 dependency @file{force}, to guarantee that the commands will be run even
1282 if the target file already exists. We give @file{force} target empty
1283 commands to prevent @code{make} from searching for an implicit rule to
1284 build it---otherwise it would apply the same match-anything rule to
1285 @file{force} itself and create a dependency loop!
1287 @node Rules, Commands, Makefiles, Top
1288 @chapter Writing Rules
1289 @cindex writing rules
1290 @cindex rule, how to write
1294 A @dfn{rule} appears in the makefile and says when and how to remake
1295 certain files, called the rule's @dfn{targets} (most often only one per rule).
1296 It lists the other files that are the @dfn{dependencies} of the target, and
1297 @dfn{commands} to use to create or update the target.
1299 @cindex default goal
1300 @cindex goal, default
1301 The order of rules is not significant, except for determining the
1302 @dfn{default goal}: the target for @code{make} to consider, if you do
1303 not otherwise specify one. The default goal is the target of the first
1304 rule in the first makefile. If the first rule has multiple targets,
1305 only the first target is taken as the default. There are two
1306 exceptions: a target starting with a period is not a default unless it
1307 contains one or more slashes, @samp{/}, as well; and, a target that
1308 defines a pattern rule has no effect on the default goal.
1309 (@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.)
1311 Therefore, we usually write the makefile so that the first rule is the
1312 one for compiling the entire program or all the programs described by
1313 the makefile (often with a target called @samp{all}).
1314 @xref{Goals, ,Arguments to Specify the Goals}.
1317 * Rule Example:: An example explained.
1318 * Rule Syntax:: General syntax explained.
1319 * Wildcards:: Using wildcard characters such as `*'.
1320 * Directory Search:: Searching other directories for source files.
1321 * Phony Targets:: Using a target that is not a real file's name.
1322 * Force Targets:: You can use a target without commands
1323 or dependencies to mark other
1325 * Empty Targets:: When only the date matters and the
1327 * Special Targets:: Targets with special built-in meanings.
1328 * Multiple Targets:: When to make use of several targets in a rule.
1329 * Multiple Rules:: How to use several rules with the same target.
1330 * Static Pattern:: Static pattern rules apply to multiple targets
1331 and can vary the dependencies according to
1333 * Double-Colon:: How to use a special kind of rule to allow
1334 several independent rules for one target.
1335 * Automatic Dependencies:: How to automatically generate rules giving
1336 dependencies from the source files themselves.
1340 @node Rule Example, Rule Syntax, , Rules
1341 @section Rule Example
1343 Here is an example of a rule:
1346 foo.o : foo.c defs.h # module for twiddling the frobs
1350 Its target is @file{foo.o} and its dependencies are @file{foo.c} and
1351 @file{defs.h}. It has one command, which is @samp{cc -c -g foo.c}.
1352 The command line starts with a tab to identify it as a command.
1354 This rule says two things:
1358 How to decide whether @file{foo.o} is out of date: it is out of date
1359 if it does not exist, or if either @file{foo.c} or @file{defs.h} is
1360 more recent than it.
1363 How to update the file @file{foo.o}: by running @code{cc} as stated.
1364 The command does not explicitly mention @file{defs.h}, but we presume
1365 that @file{foo.c} includes it, and that that is why @file{defs.h} was
1366 added to the dependencies.
1370 @node Rule Syntax, Wildcards, Rule Example, Rules
1371 @section Rule Syntax
1374 @cindex syntax of rules
1375 In general, a rule looks like this:
1378 @var{targets} : @var{dependencies}
1387 @var{targets} : @var{dependencies} ; @var{command}
1393 @cindex rule targets
1394 The @var{targets} are file names, separated by spaces. Wildcard
1395 characters may be used (@pxref{Wildcards, ,Using Wildcard Characters
1396 in File Names}) and a name of the form @file{@var{a}(@var{m})}
1397 represents member @var{m} in archive file @var{a}
1398 (@pxref{Archive Members, ,Archive Members as Targets}).
1399 Usually there is only one
1400 target per rule, but occasionally there is a reason to have more
1401 (@pxref{Multiple Targets, , Multiple Targets in a Rule}).@refill
1404 @cindex tab character (in commands)
1405 The @var{command} lines start with a tab character. The first command may
1406 appear on the line after the dependencies, with a tab character, or may
1407 appear on the same line, with a semicolon. Either way, the effect is the
1408 same. @xref{Commands, ,Writing the Commands in Rules}.
1410 @cindex dollar sign (@code{$}), in rules
1411 @cindex @code{$}, in rules
1412 @cindex rule, and @code{$}
1413 Because dollar signs are used to start variable references, if you really
1414 want a dollar sign in a rule you must write two of them, @samp{$$}
1415 (@pxref{Using Variables, ,How to Use Variables}).
1416 You may split a long line by inserting a backslash
1417 followed by a newline, but this is not required, as @code{make} places no
1418 limit on the length of a line in a makefile.
1420 A rule tells @code{make} two things: when the targets are out of date,
1421 and how to update them when necessary.
1423 @cindex dependencies
1424 @cindex rule dependencies
1425 The criterion for being out of date is specified in terms of the
1426 @var{dependencies}, which consist of file names separated by spaces.
1427 (Wildcards and archive members (@pxref{Archives}) are allowed here too.)
1428 A target is out of date if it does not exist or if it is older than any
1429 of the dependencies (by comparison of last-modification times). The
1430 idea is that the contents of the target file are computed based on
1431 information in the dependencies, so if any of the dependencies changes,
1432 the contents of the existing target file are no longer necessarily
1435 How to update is specified by @var{commands}. These are lines to be
1436 executed by the shell (normally @samp{sh}), but with some extra features
1437 (@pxref{Commands, ,Writing the Commands in Rules}).
1439 @node Wildcards, Directory Search, Rule Syntax, Rules
1440 @section Using Wildcard Characters in File Names
1442 @cindex file name with wildcards
1443 @cindex globbing (wildcards)
1445 @cindex @code{*} (wildcard character)
1446 @cindex @code{?} (wildcard character)
1447 @cindex @code{[@dots{}]} (wildcard characters)
1448 A single file name can specify many files using @dfn{wildcard characters}.
1449 The wildcard characters in @code{make} are @samp{*}, @samp{?} and
1450 @samp{[@dots{}]}, the same as in the Bourne shell. For example, @file{*.c}
1451 specifies a list of all the files (in the working directory) whose names
1452 end in @samp{.c}.@refill
1454 @cindex @code{~} (tilde)
1455 @cindex tilde (@code{~})
1456 @cindex home directory
1457 The character @samp{~} at the beginning of a file name also has special
1458 significance. If alone, or followed by a slash, it represents your home
1459 directory. For example @file{~/bin} expands to @file{/home/you/bin}.
1460 If the @samp{~} is followed by a word, the string represents the home
1461 directory of the user named by that word. For example @file{~john/bin}
1462 expands to @file{/home/john/bin}.@refill
1464 Wildcard expansion happens automatically in targets, in dependencies,
1465 and in commands (where the shell does the expansion). In other
1466 contexts, wildcard expansion happens only if you request it explicitly
1467 with the @code{wildcard} function.
1469 The special significance of a wildcard character can be turned off by
1470 preceding it with a backslash. Thus, @file{foo\*bar} would refer to a
1471 specific file whose name consists of @samp{foo}, an asterisk, and
1475 * Wildcard Examples:: Several examples
1476 * Wildcard Pitfall:: Problems to avoid.
1477 * Wildcard Function:: How to cause wildcard expansion where
1478 it does not normally take place.
1481 @node Wildcard Examples, Wildcard Pitfall, , Wildcards
1482 @subsection Wildcard Examples
1484 Wildcards can be used in the commands of a rule, where they are expanded
1485 by the shell. For example, here is a rule to delete all the object files:
1493 @cindex @code{rm} (shell command)
1495 Wildcards are also useful in the dependencies of a rule. With the
1496 following rule in the makefile, @samp{make print} will print all the
1497 @samp{.c} files that have changed since the last time you printed them:
1505 @cindex @code{print} target
1506 @cindex @code{lpr} (shell command)
1507 @cindex @code{touch} (shell command)
1509 This rule uses @file{print} as an empty target file; see @ref{Empty
1510 Targets, ,Empty Target Files to Record Events}. (The automatic variable
1511 @samp{$?} is used to print only those files that have changed; see
1512 @ref{Automatic, ,Automatic Variables}.)@refill
1514 Wildcard expansion does not happen when you define a variable. Thus, if
1522 then the value of the variable @code{objects} is the actual string
1523 @samp{*.o}. However, if you use the value of @code{objects} in a target,
1524 dependency or command, wildcard expansion will take place at that time.
1525 To set @code{objects} to the expansion, instead use:
1528 objects := $(wildcard *.o)
1532 @xref{Wildcard Function}.
1534 @node Wildcard Pitfall, Wildcard Function, Wildcard Examples, Wildcards
1535 @subsection Pitfalls of Using Wildcards
1536 @cindex wildcard pitfalls
1537 @cindex pitfalls of wildcards
1538 @cindex mistakes with wildcards
1539 @cindex errors with wildcards
1540 @cindex problems with wildcards
1542 Now here is an example of a naive way of using wildcard expansion, that
1543 does not do what you would intend. Suppose you would like to say that the
1544 executable file @file{foo} is made from all the object files in the
1545 directory, and you write this:
1551 cc -o foo $(CFLAGS) $(objects)
1555 The value of @code{objects} is the actual string @samp{*.o}. Wildcard
1556 expansion happens in the rule for @file{foo}, so that each @emph{existing}
1557 @samp{.o} file becomes a dependency of @file{foo} and will be recompiled if
1560 But what if you delete all the @samp{.o} files? When a wildcard matches
1561 no files, it is left as it is, so then @file{foo} will depend on the
1562 oddly-named file @file{*.o}. Since no such file is likely to exist,
1563 @code{make} will give you an error saying it cannot figure out how to
1564 make @file{*.o}. This is not what you want!
1566 Actually it is possible to obtain the desired result with wildcard
1567 expansion, but you need more sophisticated techniques, including the
1568 @code{wildcard} function and string substitution.
1570 @xref{Wildcard Function, ,The Function @code{wildcard}}.
1573 These are described in the following section.
1576 @node Wildcard Function, , Wildcard Pitfall, Wildcards
1577 @subsection The Function @code{wildcard}
1580 Wildcard expansion happens automatically in rules. But wildcard expansion
1581 does not normally take place when a variable is set, or inside the
1582 arguments of a function. If you want to do wildcard expansion in such
1583 places, you need to use the @code{wildcard} function, like this:
1586 $(wildcard @var{pattern}@dots{})
1590 This string, used anywhere in a makefile, is replaced by a
1591 space-separated list of names of existing files that match one of the
1592 given file name patterns. If no existing file name matches a pattern,
1593 then that pattern is omitted from the output of the @code{wildcard}
1594 function. Note that this is different from how unmatched wildcards
1595 behave in rules, where they are used verbatim rather than ignored
1596 (@pxref{Wildcard Pitfall}).
1598 One use of the @code{wildcard} function is to get a list of all the C source
1599 files in a directory, like this:
1605 We can change the list of C source files into a list of object files by
1606 replacing the @samp{.o} suffix with @samp{.c} in the result, like this:
1609 $(patsubst %.c,%.o,$(wildcard *.c))
1613 (Here we have used another function, @code{patsubst}.
1614 @xref{Text Functions, ,Functions for String Substitution and Analysis}.)@refill
1616 Thus, a makefile to compile all C source files in the directory and then
1617 link them together could be written as follows:
1620 objects := $(patsubst %.c,%.o,$(wildcard *.c))
1623 cc -o foo $(objects)
1627 (This takes advantage of the implicit rule for compiling C programs, so
1628 there is no need to write explicit rules for compiling the files.
1629 @xref{Flavors, ,The Two Flavors of Variables}, for an explanation of
1630 @samp{:=}, which is a variant of @samp{=}.)
1632 @node Directory Search, Phony Targets, Wildcards, Rules
1633 @section Searching Directories for Dependencies
1637 @cindex search path for dependencies (@code{VPATH})
1638 @cindex directory search (@code{VPATH})
1640 For large systems, it is often desirable to put sources in a separate
1641 directory from the binaries. The @dfn{directory search} features of
1642 @code{make} facilitate this by searching several directories
1643 automatically to find a dependency. When you redistribute the files
1644 among directories, you do not need to change the individual rules,
1645 just the search paths.
1648 * General Search:: Specifying a search path that applies
1649 to every dependency.
1650 * Selective Search:: Specifying a search path
1651 for a specified class of names.
1652 * Commands/Search:: How to write shell commands that work together
1654 * Implicit/Search:: How search paths affect implicit rules.
1655 * Libraries/Search:: Directory search for link libraries.
1658 @node General Search, Selective Search, , Directory Search
1659 @subsection @code{VPATH}: Search Path for All Dependencies
1662 The value of the @code{make} variable @code{VPATH} specifies a list of
1663 directories that @code{make} should search. Most often, the
1664 directories are expected to contain dependency files that are not in the
1665 current directory; however, @code{VPATH} specifies a search list that
1666 @code{make} applies for all files, including files which are targets of
1669 Thus, if a file that is listed as a target or dependency does not exist
1670 in the current directory, @code{make} searches the directories listed in
1671 @code{VPATH} for a file with that name. If a file is found in one of
1672 them, that file becomes the dependency. Rules may then specify the
1673 names of source files in the dependencies as if they all existed in the
1674 current directory. @xref{Commands/Search, ,Writing Shell Commands with
1677 In the @code{VPATH} variable, directory names are separated by colons or
1678 blanks. The order in which directories are listed is the order followed
1679 by @code{make} in its search.
1684 VPATH = src:../headers
1688 specifies a path containing two directories, @file{src} and
1689 @file{../headers}, which @code{make} searches in that order.
1691 With this value of @code{VPATH}, the following rule,
1698 is interpreted as if it were written like this:
1705 assuming the file @file{foo.c} does not exist in the current directory but
1706 is found in the directory @file{src}.
1708 @node Selective Search, Commands/Search, General Search, Directory Search
1709 @subsection The @code{vpath} Directive
1712 Similar to the @code{VPATH} variable but more selective is the @code{vpath}
1713 directive (note lower case), which allows you to specify a search path for a particular class
1714 of file names, those that match a particular pattern. Thus you can supply
1715 certain search directories for one class of file names and other directories
1716 (or none) for other file names.
1718 There are three forms of the @code{vpath} directive:
1721 @item vpath @var{pattern} @var{directories}
1722 Specify the search path @var{directories} for file names that match
1725 The search path, @var{directories}, is a list of directories to be
1726 searched, separated by colons or blanks, just like the search path used
1727 in the @code{VPATH} variable.
1729 @item vpath @var{pattern}
1730 Clear out the search path associated with @var{pattern}.
1732 @c Extra blank line makes sure this gets two lines.
1735 Clear all search paths previously specified with @code{vpath} directives.
1738 A @code{vpath} pattern is a string containing a @samp{%} character. The
1739 string must match the file name of a dependency that is being searched
1740 for, the @samp{%} character matching any sequence of zero or more
1741 characters (as in pattern rules; @pxref{Pattern Rules, ,Defining and
1742 Redefining Pattern Rules}). For example, @code{%.h} matches files that
1743 end in @code{.h}. (If there is no @samp{%}, the pattern must match the
1744 dependency exactly, which is not useful very often.)
1746 @cindex @code{%}, quoting in @code{vpath}
1747 @cindex @code{%}, quoting with @code{\} (backslash)
1748 @cindex @code{\} (backslash), to quote @code{%}
1749 @cindex backslash (@code{\}), to quote @code{%}
1750 @cindex quoting @code{%}, in @code{vpath}
1751 @samp{%} characters in a @code{vpath} directive's pattern can be quoted
1752 with preceding backslashes (@samp{\}). Backslashes that would otherwise
1753 quote @samp{%} characters can be quoted with more backslashes.
1754 Backslashes that quote @samp{%} characters or other backslashes are
1755 removed from the pattern before it is compared to file names. Backslashes
1756 that are not in danger of quoting @samp{%} characters go unmolested.@refill
1758 When a dependency fails to exist in the current directory, if the
1759 @var{pattern} in a @code{vpath} directive matches the name of the
1760 dependency file, then the @var{directories} in that directive are searched
1761 just like (and before) the directories in the @code{VPATH} variable.
1766 vpath %.h ../headers
1770 tells @code{make} to look for any dependency whose name ends in @file{.h}
1771 in the directory @file{../headers} if the file is not found in the current
1774 If several @code{vpath} patterns match the dependency file's name, then
1775 @code{make} processes each matching @code{vpath} directive one by one,
1776 searching all the directories mentioned in each directive. @code{make}
1777 handles multiple @code{vpath} directives in the order in which they
1778 appear in the makefile; multiple directives with the same pattern are
1779 independent of each other.
1793 will look for a file ending in @samp{.c} in @file{foo}, then
1794 @file{blish}, then @file{bar}, while
1804 will look for a file ending in @samp{.c} in @file{foo}, then
1805 @file{bar}, then @file{blish}.
1807 @node Commands/Search, Implicit/Search, Selective Search, Directory Search
1808 @subsection Writing Shell Commands with Directory Search
1809 @cindex shell command, and directory search
1810 @cindex directory search (@code{VPATH}), and shell commands
1812 When a dependency is found in another directory through directory search,
1813 this cannot change the commands of the rule; they will execute as written.
1814 Therefore, you must write the commands with care so that they will look for
1815 the dependency in the directory where @code{make} finds it.
1817 This is done with the @dfn{automatic variables} such as @samp{$^}
1818 (@pxref{Automatic, ,Automatic Variables}).
1819 For instance, the value of @samp{$^} is a
1820 list of all the dependencies of the rule, including the names of
1821 the directories in which they were found, and the value of
1822 @samp{$@@} is the target. Thus:@refill
1826 cc -c $(CFLAGS) $^ -o $@@
1830 (The variable @code{CFLAGS} exists so you can specify flags for C
1831 compilation by implicit rules; we use it here for consistency so it will
1832 affect all C compilations uniformly;
1833 @pxref{Implicit Variables, ,Variables Used by Implicit Rules}.)
1835 Often the dependencies include header files as well, which you do not
1836 want to mention in the commands. The automatic variable @samp{$<} is
1837 just the first dependency:
1840 VPATH = src:../headers
1841 foo.o : foo.c defs.h hack.h
1842 cc -c $(CFLAGS) $< -o $@@
1845 @node Implicit/Search, Libraries/Search, Commands/Search, Directory Search
1846 @subsection Directory Search and Implicit Rules
1847 @cindex @code{VPATH}, and implicit rules
1848 @cindex directory search (@code{VPATH}), and implicit rules
1849 @cindex search path for dependencies (@code{VPATH}), and implicit rules
1850 @cindex implicit rule, and directory search
1851 @cindex implicit rule, and @code{VPATH}
1852 @cindex rule, implicit, and directory search
1853 @cindex rule, implicit, and @code{VPATH}
1855 The search through the directories specified in @code{VPATH} or with
1856 @code{vpath} also happens during consideration of implicit rules
1857 (@pxref{Implicit Rules, ,Using Implicit Rules}).
1859 For example, when a file @file{foo.o} has no explicit rule, @code{make}
1860 considers implicit rules, such as the built-in rule to compile
1861 @file{foo.c} if that file exists. If such a file is lacking in the
1862 current directory, the appropriate directories are searched for it. If
1863 @file{foo.c} exists (or is mentioned in the makefile) in any of the
1864 directories, the implicit rule for C compilation is applied.
1866 The commands of implicit rules normally use automatic variables as a
1867 matter of necessity; consequently they will use the file names found by
1868 directory search with no extra effort.
1870 @node Libraries/Search, , Implicit/Search, Directory Search
1871 @subsection Directory Search for Link Libraries
1872 @cindex link libraries, and directory search
1873 @cindex libraries for linking, directory search
1874 @cindex directory search (@code{VPATH}), and link libraries
1875 @cindex @code{VPATH}, and link libraries
1876 @cindex search path for dependencies (@code{VPATH}), and link libraries
1877 @cindex @code{-l} (library search)
1879 Directory search applies in a special way to libraries used with the
1880 linker. This special feature comes into play when you write a dependency
1881 whose name is of the form @samp{-l@var{name}}. (You can tell something
1882 strange is going on here because the dependency is normally the name of a
1883 file, and the @emph{file name} of the library looks like
1884 @file{lib@var{name}.a}, not like @samp{-l@var{name}}.)@refill
1886 When a dependency's name has the form @samp{-l@var{name}}, @code{make}
1887 handles it specially by searching for the file @file{lib@var{name}.a} in
1888 the current directory, in directories specified by matching @code{vpath}
1889 search paths and the @code{VPATH} search path, and then in the
1890 directories @file{/lib}, @file{/usr/lib}, and @file{@var{prefix}/lib}
1891 (normally @file{/usr/local/lib}).
1897 foo : foo.c -lcurses
1903 would cause the command @samp{cc foo.c /usr/lib/libcurses.a -o foo} to
1904 be executed when @file{foo} is older than @file{foo.c} or than
1905 @file{/usr/lib/libcurses.a}.@refill
1907 @node Phony Targets, Force Targets, Directory Search, Rules
1908 @section Phony Targets
1909 @cindex phony targets
1910 @cindex targets, phony
1911 @cindex targets without a file
1913 A phony target is one that is not really the name of a file. It is just a
1914 name for some commands to be executed when you make an explicit request.
1915 There are two reasons to use a phony target: to avoid a conflict with
1916 a file of the same name, and to improve performance.
1918 If you write a rule whose commands will not create the target file, the
1919 commands will be executed every time the target comes up for remaking.
1930 Because the @code{rm} command does not create a file named @file{clean},
1931 probably no such file will ever exist. Therefore, the @code{rm} command
1932 will be executed every time you say @samp{make clean}.
1933 @cindex @code{rm} (shell command)
1936 The phony target will cease to work if anything ever does create a file
1937 named @file{clean} in this directory. Since it has no dependencies, the
1938 file @file{clean} would inevitably be considered up to date, and its
1939 commands would not be executed. To avoid this problem, you can explicitly
1940 declare the target to be phony, using the special target @code{.PHONY}
1941 (@pxref{Special Targets, ,Special Built-in Target Names}) as follows:
1948 Once this is done, @samp{make clean} will run the commands regardless of
1949 whether there is a file named @file{clean}.
1951 Since it knows that phony targets do not name actual files that could be
1952 remade from other files, @code{make} skips the implicit rule search for
1953 phony targets (@pxref{Implicit Rules}). This is why declaring a target
1954 phony is good for performance, even if you are not worried about the
1955 actual file existing.
1957 Thus, you first write the line that states that @code{clean} is a
1958 phony target, then you write the rule, like this:
1968 A phony target should not be a dependency of a real target file; if it
1969 is, its commands are run every time @code{make} goes to update that
1970 file. As long as a phony target is never a dependency of a real
1971 target, the phony target commands will be executed only when the phony
1972 target is a specified goal (@pxref{Goals, ,Arguments to Specify the
1975 Phony targets can have dependencies. When one directory contains multiple
1976 programs, it is most convenient to describe all of the programs in one
1977 makefile @file{./Makefile}. Since the target remade by default will be the
1978 first one in the makefile, it is common to make this a phony target named
1979 @samp{all} and give it, as dependencies, all the individual programs. For
1983 all : prog1 prog2 prog3
1986 prog1 : prog1.o utils.o
1987 cc -o prog1 prog1.o utils.o
1992 prog3 : prog3.o sort.o utils.o
1993 cc -o prog3 prog3.o sort.o utils.o
1997 Now you can say just @samp{make} to remake all three programs, or specify
1998 as arguments the ones to remake (as in @samp{make prog1 prog3}).
2000 When one phony target is a dependency of another, it serves as a subroutine
2001 of the other. For example, here @samp{make cleanall} will delete the
2002 object files, the difference files, and the file @file{program}:
2005 .PHONY: cleanall cleanobj cleandiff
2007 cleanall : cleanobj cleandiff
2017 @node Force Targets, Empty Targets, Phony Targets, Rules
2018 @section Rules without Commands or Dependencies
2019 @cindex force targets
2020 @cindex targets, force
2021 @cindex @code{FORCE}
2022 @cindex rule, no commands or dependencies
2024 If a rule has no dependencies or commands, and the target of the rule
2025 is a nonexistent file, then @code{make} imagines this target to have
2026 been updated whenever its rule is run. This implies that all targets
2027 depending on this one will always have their commands run.
2029 An example will illustrate this:
2039 Here the target @samp{FORCE} satisfies the special conditions, so the
2040 target @file{clean} that depends on it is forced to run its commands.
2041 There is nothing special about the name @samp{FORCE}, but that is one name
2042 commonly used this way.
2044 As you can see, using @samp{FORCE} this way has the same results as using
2045 @samp{.PHONY: clean}.
2047 Using @samp{.PHONY} is more explicit and more efficient. However,
2048 other versions of @code{make} do not support @samp{.PHONY}; thus
2049 @samp{FORCE} appears in many makefiles. @xref{Phony Targets}.
2051 @node Empty Targets, Special Targets, Force Targets, Rules
2052 @section Empty Target Files to Record Events
2053 @cindex empty targets
2054 @cindex targets, empty
2055 @cindex recording events with empty targets
2057 The @dfn{empty target} is a variant of the phony target; it is used to hold
2058 commands for an action that you request explicitly from time to time.
2059 Unlike a phony target, this target file can really exist; but the file's
2060 contents do not matter, and usually are empty.
2062 The purpose of the empty target file is to record, with its
2063 last-modification time, when the rule's commands were last executed. It
2064 does so because one of the commands is a @code{touch} command to update the
2067 The empty target file must have some dependencies. When you ask to remake
2068 the empty target, the commands are executed if any dependency is more
2069 recent than the target; in other words, if a dependency has changed since
2070 the last time you remade the target. Here is an example:
2077 @cindex @code{print} target
2078 @cindex @code{lpr} (shell command)
2079 @cindex @code{touch} (shell command)
2082 With this rule, @samp{make print} will execute the @code{lpr} command if
2083 either source file has changed since the last @samp{make print}. The
2084 automatic variable @samp{$?} is used to print only those files that have
2085 changed (@pxref{Automatic, ,Automatic Variables}).
2087 @node Special Targets, Multiple Targets, Empty Targets, Rules
2088 @section Special Built-in Target Names
2089 @cindex special targets
2090 @cindex built-in special targets
2091 @cindex targets, built-in special
2093 Certain names have special meanings if they appear as targets.
2099 The dependencies of the special target @code{.PHONY} are considered to
2100 be phony targets. When it is time to consider such a target,
2101 @code{make} will run its commands unconditionally, regardless of
2102 whether a file with that name exists or what its last-modification
2103 time is. @xref{Phony Targets, ,Phony Targets}.
2108 The dependencies of the special target @code{.SUFFIXES} are the list
2109 of suffixes to be used in checking for suffix rules.
2110 @xref{Suffix Rules, , Old-Fashioned Suffix Rules}.
2115 The commands specified for @code{.DEFAULT} are used for any target for
2116 which no rules are found (either explicit rules or implicit rules).
2117 @xref{Last Resort}. If @code{.DEFAULT} commands are specified, every
2118 file mentioned as a dependency, but not as a target in a rule, will have
2119 these commands executed on its behalf. @xref{Search Algorithm,
2120 ,Implicit Rule Search Algorithm}.
2124 @cindex precious targets
2125 @cindex preserving with @code{.PRECIOUS}
2127 The targets which @code{.PRECIOUS} depends on are given the following
2128 special treatment: if @code{make} is killed or interrupted during the
2129 execution of their commands, the target is not deleted.
2130 @xref{Interrupts, ,Interrupting or Killing @code{make}}.
2131 Also, if the target is an intermediate file, it will not be deleted
2132 after it is no longer needed, as is normally done.
2133 @xref{Chained Rules, ,Chains of Implicit Rules}.
2135 You can also list the target pattern of an implicit rule (such as
2136 @samp{%.o}) as a dependency file of the special target @code{.PRECIOUS}
2137 to preserve intermediate files created by rules whose target patterns
2138 match that file's name.
2143 Simply by being mentioned as a target, @code{.IGNORE} says to ignore
2144 errors in execution of commands. The dependencies and commands for
2145 @code{.IGNORE} are not meaningful.
2147 @samp{.IGNORE} exists for historical compatibility. Since
2148 @code{.IGNORE} affects every command in the makefile, it is not very
2149 useful; we recommend you use the more selective ways to ignore errors
2150 in specific commands. @xref{Errors, ,Errors in Commands}.
2155 Simply by being mentioned as a target, @code{.SILENT} says not to
2156 print commands before executing them. The dependencies and commands
2157 for @code{.SILENT} are not meaningful.
2159 @samp{.SILENT} exists for historical compatibility. We recommend you
2160 use the more selective ways to silence specific commands.
2161 @xref{Echoing, ,Command Echoing}. If you want to silence all commands
2162 for a particular run of @code{make}, use the @samp{-s} or
2163 @w{@samp{--silent}} option (@pxref{Options Summary}).
2165 @findex .EXPORT_ALL_VARIABLES
2166 @item .EXPORT_ALL_VARIABLES
2168 Simply by being mentioned as a target, this tells @code{make} to
2169 export all variables to child processes by default.
2170 @xref{Variables/Recursion, ,Communicating Variables to a
2174 Any defined implicit rule suffix also counts as a special target if it
2175 appears as a target, and so does the concatenation of two suffixes, such
2176 as @samp{.c.o}. These targets are suffix rules, an obsolete way of
2177 defining implicit rules (but a way still widely used). In principle, any
2178 target name could be special in this way if you break it in two and add
2179 both pieces to the suffix list. In practice, suffixes normally begin with
2180 @samp{.}, so these special target names also begin with @samp{.}.
2181 @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
2183 @node Multiple Targets, Multiple Rules, Special Targets, Rules
2184 @section Multiple Targets in a Rule
2185 @cindex multiple targets
2186 @cindex several targets in a rule
2187 @cindex targets, multiple
2188 @cindex rule, with multiple targets
2190 A rule with multiple targets is equivalent to writing many rules, each with
2191 one target, and all identical aside from that. The same commands apply to
2192 all the targets, but their effects may vary because you can substitute the
2193 actual target name into the command using @samp{$@@}. The rule contributes
2194 the same dependencies to all the targets also.
2196 This is useful in two cases.
2200 You want just dependencies, no commands. For example:
2203 kbd.o command.o files.o: command.h
2207 gives an additional dependency to each of the three object files
2211 Similar commands work for all the targets. The commands do not need
2212 to be absolutely identical, since the automatic variable @samp{$@@}
2213 can be used to substitute the particular target to be remade into the
2214 commands (@pxref{Automatic, ,Automatic Variables}). For example:
2218 bigoutput littleoutput : text.g
2219 generate text.g -$(subst output,,$@@) > $@@
2229 generate text.g -big > bigoutput
2230 littleoutput : text.g
2231 generate text.g -little > littleoutput
2235 Here we assume the hypothetical program @code{generate} makes two
2236 types of output, one if given @samp{-big} and one if given
2238 @xref{Text Functions, ,Functions for String Substitution and Analysis},
2239 for an explanation of the @code{subst} function.
2242 Suppose you would like to vary the dependencies according to the target,
2243 much as the variable @samp{$@@} allows you to vary the commands.
2244 You cannot do this with multiple targets in an ordinary rule, but you can
2245 do it with a @dfn{static pattern rule}.
2246 @xref{Static Pattern, ,Static Pattern Rules}.
2248 @node Multiple Rules, Static Pattern, Multiple Targets, Rules
2249 @section Multiple Rules for One Target
2250 @cindex multiple rules for one target
2251 @cindex several rules for one target
2252 @cindex rule, multiple for one target
2253 @cindex target, multiple rules for one
2255 One file can be the target of several rules. All the dependencies
2256 mentioned in all the rules are merged into one list of dependencies for
2257 the target. If the target is older than any dependency from any rule,
2258 the commands are executed.
2260 There can only be one set of commands to be executed for a file.
2261 If more than one rule gives commands for the same file,
2262 @code{make} uses the last set given and prints an error message.
2263 (As a special case, if the file's name begins with a dot, no
2264 error message is printed. This odd behavior is only for
2265 compatibility with other implementations of @code{make}.)
2266 There is no reason to
2267 write your makefiles this way; that is why @code{make} gives you
2268 an error message.@refill
2270 An extra rule with just dependencies can be used to give a few extra
2271 dependencies to many files at once. For example, one usually has a
2272 variable named @code{objects} containing a list of all the compiler output
2273 files in the system being made. An easy way to say that all of them must
2274 be recompiled if @file{config.h} changes is to write the following:
2277 objects = foo.o bar.o
2279 bar.o : defs.h test.h
2280 $(objects) : config.h
2283 This could be inserted or taken out without changing the rules that really
2284 specify how to make the object files, making it a convenient form to use if
2285 you wish to add the additional dependency intermittently.
2287 Another wrinkle is that the additional dependencies could be specified with
2288 a variable that you set with a command argument to @code{make}
2289 (@pxref{Overriding, ,Overriding Variables}). For example,
2294 $(objects) : $(extradeps)
2299 means that the command @samp{make extradeps=foo.h} will consider
2300 @file{foo.h} as a dependency of each object file, but plain @samp{make}
2303 If none of the explicit rules for a target has commands, then @code{make}
2304 searches for an applicable implicit rule to find some commands
2305 @pxref{Implicit Rules, ,Using Implicit Rules}).
2307 @node Static Pattern, Double-Colon, Multiple Rules, Rules
2308 @section Static Pattern Rules
2309 @cindex static pattern rule
2310 @cindex rule, static pattern
2311 @cindex pattern rules, static (not implicit)
2312 @cindex varying dependencies
2313 @cindex dependencies, varying (static pattern)
2315 @dfn{Static pattern rules} are rules which specify multiple targets and
2316 construct the dependency names for each target based on the target name.
2317 They are more general than ordinary rules with multiple targets because the
2318 targets do not have to have identical dependencies. Their dependencies must
2319 be @emph{analogous}, but not necessarily @emph{identical}.
2322 * Static Usage:: The syntax of static pattern rules.
2323 * Static versus Implicit:: When are they better than implicit rules?
2326 @node Static Usage, Static versus Implicit, , Static Pattern
2327 @subsection Syntax of Static Pattern Rules
2328 @cindex static pattern rule, syntax of
2329 @cindex pattern rules, static, syntax of
2331 Here is the syntax of a static pattern rule:
2334 @var{targets} @dots{}: @var{target-pattern}: @var{dep-patterns} @dots{}
2340 The @var{targets} list specifies the targets that the rule applies to.
2341 The targets can contain wildcard characters, just like the targets of
2342 ordinary rules (@pxref{Wildcards, ,Using Wildcard Characters in File
2345 @cindex target pattern, static (not implicit)
2347 The @var{target-pattern} and @var{dep-patterns} say how to compute the
2348 dependencies of each target. Each target is matched against the
2349 @var{target-pattern} to extract a part of the target name, called the
2350 @dfn{stem}. This stem is substituted into each of the @var{dep-patterns}
2351 to make the dependency names (one from each @var{dep-pattern}).
2353 Each pattern normally contains the character @samp{%} just once. When the
2354 @var{target-pattern} matches a target, the @samp{%} can match any part of
2355 the target name; this part is called the @dfn{stem}. The rest of the
2356 pattern must match exactly. For example, the target @file{foo.o} matches
2357 the pattern @samp{%.o}, with @samp{foo} as the stem. The targets
2358 @file{foo.c} and @file{foo.out} do not match that pattern.@refill
2360 @cindex dependency pattern, static (not implicit)
2361 The dependency names for each target are made by substituting the stem
2362 for the @samp{%} in each dependency pattern. For example, if one
2363 dependency pattern is @file{%.c}, then substitution of the stem
2364 @samp{foo} gives the dependency name @file{foo.c}. It is legitimate
2365 to write a dependency pattern that does not contain @samp{%}; then this
2366 dependency is the same for all targets.
2368 @cindex @code{%}, quoting in static pattern
2369 @cindex @code{%}, quoting with @code{\} (backslash)
2370 @cindex @code{\} (backslash), to quote @code{%}
2371 @cindex backslash (@code{\}), to quote @code{%}
2372 @cindex quoting @code{%}, in static pattern
2373 @samp{%} characters in pattern rules can be quoted with preceding
2374 backslashes (@samp{\}). Backslashes that would otherwise quote @samp{%}
2375 characters can be quoted with more backslashes. Backslashes that quote
2376 @samp{%} characters or other backslashes are removed from the pattern
2377 before it is compared to file names or has a stem substituted into it.
2378 Backslashes that are not in danger of quoting @samp{%} characters go
2379 unmolested. For example, the pattern @file{the\%weird\\%pattern\\} has
2380 @samp{the%weird\} preceding the operative @samp{%} character, and
2381 @samp{pattern\\} following it. The final two backslashes are left alone
2382 because they cannot affect any @samp{%} character.@refill
2384 Here is an example, which compiles each of @file{foo.o} and @file{bar.o}
2385 from the corresponding @file{.c} file:
2389 objects = foo.o bar.o
2391 $(objects): %.o: %.c
2392 $(CC) -c $(CFLAGS) $< -o $@@
2397 Here @samp{$<} is the automatic variable that holds the name of the
2398 dependency and @samp{$@@} is the automatic variable that holds the name
2399 of the target; see @ref{Automatic, , Automatic Variables}.
2401 Each target specified must match the target pattern; a warning is issued
2402 for each target that does not. If you have a list of files, only some of
2403 which will match the pattern, you can use the @code{filter} function to
2404 remove nonmatching file names (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
2407 files = foo.elc bar.o lose.o
2409 $(filter %.o,$(files)): %.o: %.c
2410 $(CC) -c $(CFLAGS) $< -o $@@
2411 $(filter %.elc,$(files)): %.elc: %.el
2412 emacs -f batch-byte-compile $<
2416 In this example the result of @samp{$(filter %.o,$(files))} is
2417 @file{bar.o lose.o}, and the first static pattern rule causes each of
2418 these object files to be updated by compiling the corresponding C source
2419 file. The result of @w{@samp{$(filter %.elc,$(files))}} is
2420 @file{foo.elc}, so that file is made from @file{foo.el}.@refill
2422 Another example shows how to use @code{$*} in static pattern rules:
2423 @vindex $*@r{, and static pattern}
2427 bigoutput littleoutput : %output : text.g
2428 generate text.g -$* > $@@
2433 When the @code{generate} command is run, @code{$*} will expand to the
2434 stem, either @samp{big} or @samp{little}.
2436 @node Static versus Implicit, , Static Usage, Static Pattern
2437 @subsection Static Pattern Rules versus Implicit Rules
2438 @cindex rule, static pattern versus implicit
2439 @cindex static pattern rule, versus implicit
2441 A static pattern rule has much in common with an implicit rule defined as a
2442 pattern rule (@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}).
2443 Both have a pattern for the target and patterns for constructing the
2444 names of dependencies. The difference is in how @code{make} decides
2445 @emph{when} the rule applies.
2447 An implicit rule @emph{can} apply to any target that matches its pattern,
2448 but it @emph{does} apply only when the target has no commands otherwise
2449 specified, and only when the dependencies can be found. If more than one
2450 implicit rule appears applicable, only one applies; the choice depends on
2453 By contrast, a static pattern rule applies to the precise list of targets
2454 that you specify in the rule. It cannot apply to any other target and it
2455 invariably does apply to each of the targets specified. If two conflicting
2456 rules apply, and both have commands, that's an error.
2458 The static pattern rule can be better than an implicit rule for these
2463 You may wish to override the usual implicit rule for a few
2464 files whose names cannot be categorized syntactically but
2465 can be given in an explicit list.
2468 If you cannot be sure of the precise contents of the directories
2469 you are using, you may not be sure which other irrelevant files
2470 might lead @code{make} to use the wrong implicit rule. The choice
2471 might depend on the order in which the implicit rule search is done.
2472 With static pattern rules, there is no uncertainty: each rule applies
2473 to precisely the targets specified.
2476 @node Double-Colon, Automatic Dependencies, Static Pattern, Rules
2477 @section Double-Colon Rules
2478 @cindex double-colon rules
2479 @cindex rule, double-colon (@code{::})
2480 @cindex multiple rules for one target (@code{::})
2481 @cindex @code{::} rules (double-colon)
2483 @dfn{Double-colon} rules are rules written with @samp{::} instead of
2484 @samp{:} after the target names. They are handled differently from
2485 ordinary rules when the same target appears in more than one rule.
2487 When a target appears in multiple rules, all the rules must be the same
2488 type: all ordinary, or all double-colon. If they are double-colon, each of
2489 them is independent of the others. Each double-colon rule's commands are
2490 executed if the target is older than any dependencies of that rule. This
2491 can result in executing none, any, or all of the double-colon rules.
2493 Double-colon rules with the same target are in fact completely separate
2494 from one another. Each double-colon rule is processed individually, just
2495 as rules with different targets are processed.
2497 The double-colon rules for a target are executed in the order they appear
2498 in the makefile. However, the cases where double-colon rules really make
2499 sense are those where the order of executing the commands would not matter.
2501 Double-colon rules are somewhat obscure and not often very useful; they
2502 provide a mechanism for cases in which the method used to update a target
2503 differs depending on which dependency files caused the update, and such
2506 Each double-colon rule should specify commands; if it does not, an
2507 implicit rule will be used if one applies.
2508 @xref{Implicit Rules, ,Using Implicit Rules}.
2510 @node Automatic Dependencies, , Double-Colon, Rules
2511 @section Generating Dependencies Automatically
2512 @cindex dependencies, automatic generation
2513 @cindex automatic generation of dependencies
2514 @cindex generating dependencies automatically
2516 In the makefile for a program, many of the rules you need to write often
2517 say only that some object file depends on some header
2518 file. For example, if @file{main.c} uses @file{defs.h} via an
2519 @code{#include}, you would write:
2526 You need this rule so that @code{make} knows that it must remake
2527 @file{main.o} whenever @file{defs.h} changes. You can see that for a
2528 large program you would have to write dozens of such rules in your
2529 makefile. And, you must always be very careful to update the makefile
2530 every time you add or remove an @code{#include}.
2531 @cindex @code{#include}
2533 @cindex @code{-M} (to compiler)
2534 To avoid this hassle, most modern C compilers can write these rules for
2535 you, by looking at the @code{#include} lines in the source files.
2536 Usually this is done with the @samp{-M} option to the compiler.
2537 For example, the command:
2544 generates the output:
2547 main.o : main.c defs.h
2551 Thus you no longer have to write all those rules yourself.
2552 The compiler will do it for you.
2554 Note that such a dependency constitutes mentioning @file{main.o} in a
2555 makefile, so it can never be considered an intermediate file by implicit
2556 rule search. This means that @code{make} won't ever remove the file
2557 after using it; @pxref{Chained Rules, ,Chains of Implicit Rules}.
2559 @cindex @code{make depend}
2560 With old @code{make} programs, it was traditional practice to use this
2561 compiler feature to generate dependencies on demand with a command like
2562 @samp{make depend}. That command would create a file @file{depend}
2563 containing all the automatically-generated dependencies; then the
2564 makefile could use @code{include} to read them in (@pxref{Include}).
2566 In GNU @code{make}, the feature of remaking makefiles makes this
2567 practice obsolete---you need never tell @code{make} explicitly to
2568 regenerate the dependencies, because it always regenerates any makefile
2569 that is out of date. @xref{Remaking Makefiles}.
2571 The practice we recommend for automatic dependency generation is to have
2572 one makefile corresponding to each source file. For each source file
2573 @file{@var{name}.c} there is a makefile @file{@var{name}.d} which lists
2574 what files the object file @file{@var{name}.o} depends on. That way
2575 only the source files that have changed need to be rescanned to produce
2576 the new dependencies.
2578 Here is the pattern rule to generate a file of dependencies (i.e., a makefile)
2579 called @file{@var{name}.d} from a C source file called @file{@var{name}.c}:
2584 $(SHELL) -ec '$(CC) -M $(CPPFLAGS) $< | sed '\''s/$*.o/& $@@/g'\'' > $@@'
2589 @xref{Pattern Rules}, for information on defining pattern rules. The
2590 @samp{-e} flag to the shell makes it exit immediately if the
2591 @code{$(CC)} command fails (exits with a nonzero status). Normally the
2592 shell exits with the status of the last command in the pipeline
2593 (@code{sed} in this case), so @code{make} would not notice a nonzero
2594 status from the compiler.
2595 @cindex @code{-e} (shell flag)
2597 @cindex @code{sed} (shell command)
2598 The purpose of the @code{sed} command is to translate (for example):
2601 main.o : main.c defs.h
2608 main.o main.d : main.c defs.h
2613 This makes each @samp{.d} file depend on all the source and header files
2614 that the corresponding @samp{.o} file depends on. @code{make} then
2615 knows it must regenerate the dependencies whenever any of the source or
2616 header files changes.
2618 Once you've defined the rule to remake the @samp{.d} files,
2619 you then use the @code{include} directive to read them all in.
2620 @xref{Include}. For example:
2624 sources = foo.c bar.c
2626 include $(sources:.c=.d)
2631 (This example uses a substitution variable reference to translate the
2632 list of source files @samp{foo.c bar.c} into a list of dependency
2633 makefiles, @samp{foo.d bar.d}. @xref{Substitution Refs}, for full
2634 information on substitution references.) Since the @samp{.d} files are
2635 makefiles like any others, @code{make} will remake them as necessary
2636 with no further work from you. @xref{Remaking Makefiles}.
2638 @node Commands, Using Variables, Rules, Top
2639 @chapter Writing the Commands in Rules
2640 @cindex commands, how to write
2641 @cindex rule commands
2642 @cindex writing rule commands
2644 The commands of a rule consist of shell command lines to be executed one by
2645 one. Each command line must start with a tab, except that the first
2646 command line may be attached to the target-and-dependencies line with a
2647 semicolon in between. Blank lines and lines of just comments may appear
2648 among the command lines; they are ignored.
2650 Users use many different shell programs, but commands in makefiles are
2651 always interpreted by @file{/bin/sh} unless the makefile specifies
2652 otherwise. @xref{Execution, ,Command Execution}.
2654 @cindex comments, in commands
2655 @cindex commands, comments in
2656 @cindex @code{#} (comments), in commands
2657 The shell that is in use determines whether comments can be written on
2658 command lines, and what syntax they use. When the shell is
2659 @file{/bin/sh}, a @samp{#} starts a comment that extends to the end of
2660 the line. The @samp{#} does not have to be at the beginning of a line.
2661 Text on a line before a @samp{#} is not part of the comment.
2664 * Echoing:: How to control when commands are echoed.
2665 * Execution:: How commands are executed.
2666 * Parallel:: How commands can be executed in parallel.
2667 * Errors:: What happens after a command execution error.
2668 * Interrupts:: What happens when a command is interrupted.
2669 * Recursion:: Invoking @code{make} from makefiles.
2670 * Sequences:: Defining canned sequences of commands.
2671 * Empty Commands:: Defining useful, do-nothing commands.
2674 @node Echoing, Execution, , Commands
2675 @section Command Echoing
2676 @cindex echoing of commands
2677 @cindex silent operation
2678 @cindex @code{@@} (in commands)
2679 @cindex commands, echoing
2680 @cindex printing of commands
2682 Normally @code{make} prints each command line before it is executed.
2683 We call this @dfn{echoing} because it gives the appearance that you
2684 are typing the commands yourself.
2686 When a line starts with @samp{@@}, the echoing of that line is suppressed.
2687 The @samp{@@} is discarded before the command is passed to the shell.
2688 Typically you would use this for a command whose only effect is to print
2689 something, such as an @code{echo} command to indicate progress through
2693 @@echo About to make distribution files
2697 @cindex @code{--just-print}
2698 @cindex @code{--dry-run}
2699 @cindex @code{--recon}
2700 When @code{make} is given the flag @samp{-n} or @samp{--just-print},
2701 echoing is all that happens, no execution. @xref{Options Summary,
2702 ,Summary of Options}. In this case and only this case, even the
2703 commands starting with @samp{@@} are printed. This flag is useful for
2704 finding out which commands @code{make} thinks are necessary without
2705 actually doing them.
2708 @cindex @code{--silent}
2709 @cindex @code{--quiet}
2711 The @samp{-s} or @samp{--silent}
2712 flag to @code{make} prevents all echoing, as if all commands
2713 started with @samp{@@}. A rule in the makefile for the special target
2714 @code{.SILENT} has the same effect
2715 (@pxref{Special Targets, ,Special Built-in Target Names}).
2716 @code{.SILENT} is essentially obsolete since @samp{@@} is more flexible.@refill
2718 @node Execution, Parallel, Echoing, Commands
2719 @section Command Execution
2720 @cindex commands, execution
2721 @cindex execution, of commands
2722 @cindex shell command, execution
2723 @vindex SHELL @r{(command execution)}
2725 When it is time to execute commands to update a target, they are executed
2726 by making a new subshell for each line. (In practice, @code{make} may
2727 take shortcuts that do not affect the results.)
2729 @cindex @code{cd} (shell command)
2730 @strong{Please note:} this implies that shell commands such as
2731 @code{cd} that set variables local to each process will not affect the
2732 following command lines. If you want to use @code{cd} to affect the
2733 next command, put the two on a single line with a semicolon between
2734 them. Then @code{make} will consider them a single command and pass
2735 them, together, to a shell which will execute them in sequence. For
2740 cd bar; gobble lose > ../foo
2743 @cindex commands, backslash (@code{\}) in
2744 @cindex commands, quoting newlines in
2745 @cindex backslash (@code{\}), in commands
2746 @cindex @code{\} (backslash), in commands
2747 @cindex quoting newline, in commands
2748 @cindex newline, quoting, in commands
2749 If you would like to split a single shell command into multiple lines of
2750 text, you must use a backslash at the end of all but the last subline.
2751 Such a sequence of lines is combined into a single line, by deleting the
2752 backslash-newline sequences, before passing it to the shell. Thus, the
2753 following is equivalent to the preceding example:
2759 gobble lose > ../foo
2764 The program used as the shell is taken from the variable @code{SHELL}.
2765 By default, the program @file{/bin/sh} is used.
2767 @cindex environment, @code{SHELL} in
2768 Unlike most variables, the variable @code{SHELL} is never set from the
2769 environment. This is because the @code{SHELL} environment variable is
2770 used to specify your personal choice of shell program for interactive
2771 use. It would be very bad for personal choices like this to affect
2772 the functioning of makefiles. @xref{Environment, ,Variables from the
2775 @node Parallel, Errors, Execution, Commands
2776 @section Parallel Execution
2777 @cindex commands, execution in parallel
2778 @cindex parallel execution
2779 @cindex execution, in parallel
2782 @cindex @code{--jobs}
2784 GNU @code{make} knows how to execute several commands at once.
2785 Normally, @code{make} will execute only one command at a time, waiting
2786 for it to finish before executing the next. However, the @samp{-j} or
2787 @samp{--jobs} option tells @code{make} to execute many commands
2788 simultaneously.@refill
2790 If the @samp{-j} option is followed by an integer, this is the number of
2791 commands to execute at once; this is called the number of @dfn{job slots}.
2792 If there is nothing looking like an integer after the @samp{-j} option,
2793 there is no limit on the number of job slots. The default number of job
2794 slots is one, which means serial execution (one thing at a time).
2796 One unpleasant consequence of running several commands simultaneously is
2797 that output from all of the commands comes when the commands send it, so
2798 messages from different commands may be interspersed.
2800 Another problem is that two processes cannot both take input from the
2801 same device; so to make sure that only one command tries to take input
2802 from the terminal at once, @code{make} will invalidate the standard
2803 input streams of all but one running command. This means that
2804 attempting to read from standard input will usually be a fatal error (a
2805 @samp{Broken pipe} signal) for most child processes if there are
2808 @cindex standard input
2810 It is unpredictable which command will have a valid standard input stream
2811 (which will come from the terminal, or wherever you redirect the standard
2812 input of @code{make}). The first command run will always get it first, and
2813 the first command started after that one finishes will get it next, and so
2816 We will change how this aspect of @code{make} works if we find a better
2817 alternative. In the mean time, you should not rely on any command using
2818 standard input at all if you are using the parallel execution feature; but
2819 if you are not using this feature, then standard input works normally in
2822 If a command fails (is killed by a signal or exits with a nonzero
2823 status), and errors are not ignored for that command
2824 (@pxref{Errors, ,Errors in Commands}),
2825 the remaining command lines to remake the same target will not be run.
2826 If a command fails and the @samp{-k} or @samp{--keep-going}
2827 option was not given
2828 (@pxref{Options Summary, ,Summary of Options}),
2829 @code{make} aborts execution. If make
2830 terminates for any reason (including a signal) with child processes
2831 running, it waits for them to finish before actually exiting.@refill
2833 @cindex load average
2834 @cindex limiting jobs based on load
2835 @cindex jobs, limiting based on load
2836 @cindex @code{-l} (load average)
2837 @cindex @code{--max-load}
2838 @cindex @code{--load-average}
2839 When the system is heavily loaded, you will probably want to run fewer jobs
2840 than when it is lightly loaded. You can use the @samp{-l} option to tell
2841 @code{make} to limit the number of jobs to run at once, based on the load
2842 average. The @samp{-l} or @samp{--max-load}
2843 option is followed by a floating-point number. For
2851 will not let @code{make} start more than one job if the load average is
2852 above 2.5. The @samp{-l} option with no following number removes the
2853 load limit, if one was given with a previous @samp{-l} option.@refill
2855 More precisely, when @code{make} goes to start up a job, and it already has
2856 at least one job running, it checks the current load average; if it is not
2857 lower than the limit given with @samp{-l}, @code{make} waits until the load
2858 average goes below that limit, or until all the other jobs finish.
2860 By default, there is no load limit.
2862 @node Errors, Interrupts, Parallel, Commands
2863 @section Errors in Commands
2864 @cindex errors (in commands)
2865 @cindex commands, errors in
2866 @cindex exit status (errors)
2868 After each shell command returns, @code{make} looks at its exit status.
2869 If the command completed successfully, the next command line is executed
2870 in a new shell; after the last command line is finished, the rule is
2873 If there is an error (the exit status is nonzero), @code{make} gives up on
2874 the current rule, and perhaps on all rules.
2876 Sometimes the failure of a certain command does not indicate a problem.
2877 For example, you may use the @code{mkdir} command to ensure that a
2878 directory exists. If the directory already exists, @code{mkdir} will
2879 report an error, but you probably want @code{make} to continue regardless.
2881 @cindex @code{-} (in commands)
2882 To ignore errors in a command line, write a @samp{-} at the beginning of
2883 the line's text (after the initial tab). The @samp{-} is discarded before
2884 the command is passed to the shell for execution.
2894 @cindex @code{rm} (shell command)
2897 This causes @code{rm} to continue even if it is unable to remove a file.
2900 @cindex @code{--ignore-errors}
2902 When you run @code{make} with the @samp{-i} or @samp{--ignore-errors}
2903 flag, errors are ignored in
2904 all commands of all rules. A rule in the makefile for the special target
2905 @code{.IGNORE} has the same effect. These ways of ignoring errors are
2906 obsolete because @samp{-} is more flexible.
2908 When errors are to be ignored, because of either a @samp{-} or the
2909 @samp{-i} flag, @code{make} treats an error return just like success,
2910 except that it prints out a message that tells you the status code
2911 the command exited with, and says that the error has been ignored.
2913 When an error happens that @code{make} has not been told to ignore,
2914 it implies that the current target cannot be correctly remade, and neither
2915 can any other that depends on it either directly or indirectly. No further
2916 commands will be executed for these targets, since their preconditions
2917 have not been achieved.
2920 @cindex @code{--keep-going}
2921 Normally @code{make} gives up immediately in this circumstance, returning a
2922 nonzero status. However, if the @samp{-k} or @samp{--keep-going}
2923 flag is specified, @code{make}
2924 continues to consider the other dependencies of the pending targets,
2925 remaking them if necessary, before it gives up and returns nonzero status.
2926 For example, after an error in compiling one object file, @samp{make -k}
2927 will continue compiling other object files even though it already knows
2928 that linking them will be impossible. @xref{Options Summary, ,Summary of Options}.
2930 The usual behavior assumes that your purpose is to get the specified
2931 targets up to date; once @code{make} learns that this is impossible, it
2932 might as well report the failure immediately. The @samp{-k} option says
2933 that the real purpose is to test as many of the changes made in the
2934 program as possible, perhaps to find several independent problems so
2935 that you can correct them all before the next attempt to compile. This
2936 is why Emacs' @code{compile} command passes the @samp{-k} flag by
2938 @cindex Emacs (@code{M-x compile})
2940 @node Interrupts, Recursion, Errors, Commands
2941 @section Interrupting or Killing @code{make}
2944 @cindex deletion of target files
2945 @cindex target, deleting on interrupt
2946 @cindex killing (interruption)
2948 If @code{make} gets a fatal signal while a command is executing, it may
2949 delete the target file that the command was supposed to update. This is
2950 done if the target file's last-modification time has changed since
2951 @code{make} first checked it.
2953 The purpose of deleting the target is to make sure that it is remade from
2954 scratch when @code{make} is next run. Why is this? Suppose you type
2955 @kbd{Ctrl-c} while a compiler is running, and it has begun to write an
2956 object file @file{foo.o}. The @kbd{Ctrl-c} kills the compiler, resulting
2957 in an incomplete file whose last-modification time is newer than the source
2958 file @file{foo.c}. But @code{make} also receives the @kbd{Ctrl-c} signal
2959 and deletes this incomplete file. If @code{make} did not do this, the next
2960 invocation of @code{make} would think that @file{foo.o} did not require
2961 updating---resulting in a strange error message from the linker when it
2962 tries to link an object file half of which is missing.
2965 You can prevent the deletion of a target file in this way by making the
2966 special target @code{.PRECIOUS} depend on it. Before remaking a target,
2967 @code{make} checks to see whether it appears on the dependencies of
2968 @code{.PRECIOUS}, and thereby decides whether the target should be deleted
2969 if a signal happens. Some reasons why you might do this are that the
2970 target is updated in some atomic fashion, or exists only to record a
2971 modification-time (its contents do not matter), or must exist at all
2972 times to prevent other sorts of trouble.
2974 @node Recursion, Sequences, Interrupts, Commands
2975 @section Recursive Use of @code{make}
2977 @cindex subdirectories, recursion for
2979 Recursive use of @code{make} means using @code{make} as a command in a
2980 makefile. This technique is useful when you want separate makefiles for
2981 various subsystems that compose a larger system. For example, suppose you
2982 have a subdirectory @file{subdir} which has its own makefile, and you would
2983 like the containing directory's makefile to run @code{make} on the
2984 subdirectory. You can do it by writing this:
2992 or, equivalently, this (@pxref{Options Summary, ,Summary of Options}):
2999 @cindex @code{--directory}
3001 You can write recursive @code{make} commands just by copying this example,
3002 but there are many things to know about how they work and why, and about
3003 how the sub-@code{make} relates to the top-level @code{make}.
3006 * MAKE Variable:: The special effects of using @samp{$(MAKE)}.
3007 * Variables/Recursion:: How to communicate variables to a sub-@code{make}.
3008 * Options/Recursion:: How to communicate options to a sub-@code{make}.
3009 * -w Option:: How the @samp{-w} or @samp{--print-directory} option
3010 helps debug use of recursive @code{make} commands.
3013 @node MAKE Variable, Variables/Recursion, , Recursion
3014 @subsection How the @code{MAKE} Variable Works
3016 @cindex recursion, and @code{MAKE} variable
3018 Recursive @code{make} commands should always use the variable @code{MAKE},
3019 not the explicit command name @samp{make}, as shown here:
3028 The value of this variable is the file name with which @code{make} was
3029 invoked. If this file name was @file{/bin/make}, then the command executed
3030 is @samp{cd subdir; /bin/make}. If you use a special version of
3031 @code{make} to run the top-level makefile, the same special version will be
3032 executed for recursive invocations.
3033 @cindex @code{cd} (shell command)
3035 Also, any arguments that define variable values are added to @code{MAKE},
3036 so the sub-@code{make} gets them too. Thus, if you do @samp{make
3037 CFLAGS=-O}, so that all C compilations will be optimized, the
3038 sub-@code{make} is run with @samp{cd subdir; /bin/make CFLAGS=-O}.@refill
3040 @vindex MAKE_COMMAND
3041 @vindex MAKEOVERRIDES
3042 The @code{MAKE} variable actually just refers to two other variables
3043 which contain these special values. In fact, @code{MAKE} is always
3044 defined as @samp{$(MAKE_COMMAND) $(MAKEOVERRIDES)}. The variable
3045 @code{MAKE_COMMAND} is the file name with which @code{make} was invoked
3046 (such as @file{/bin/make}, above). The variable @code{MAKEOVERRIDES}
3047 contains definitions for the variables defined on the command line; in
3048 the above example, its value is @samp{CFLAGS=-O}. If you @emph{do not}
3049 want these variable definitions done in all recursive @code{make}
3050 invocations, you can redefine the @code{MAKEOVERRIDES} variable to
3051 remove them. You do this in any of the normal ways for defining
3052 variables: in a makefile (@pxref{Setting, ,Setting Variables}); on the command
3053 line with an argument like @samp{MAKEOVERRIDES=}
3054 (@pxref{Overriding, ,Overriding Variables}); or with an environment variable
3055 (@pxref{Environment, ,Variables from the Environment}).
3057 As a special feature, using the variable @code{MAKE} in the commands of
3058 a rule alters the effects of the @samp{-t} (@samp{--touch}), @samp{-n}
3059 (@samp{--just-print}), or @samp{-q} (@w{@samp{--question}}) option.
3060 Using the @code{MAKE} variable has the same effect as using a @samp{+}
3061 character at the beginning of the command line. @xref{Instead of
3062 Execution, ,Instead of Executing the Commands}.@refill
3064 Consider the command @samp{make -t} in the above example. (The
3065 @samp{-t} option marks targets as up to date without actually running
3066 any commands; see @ref{Instead of Execution}.) Following the usual
3067 definition of @samp{-t}, a @samp{make -t} command in the example would
3068 create a file named @file{subsystem} and do nothing else. What you
3069 really want it to do is run @samp{@w{cd subdir;} @w{make -t}}; but that would
3070 require executing the command, and @samp{-t} says not to execute
3072 @cindex @code{-t}, and recursion
3073 @cindex recursion, and @code{-t}
3074 @cindex @code{--touch}, and recursion
3076 The special feature makes this do what you want: whenever a command
3077 line of a rule contains the variable @code{MAKE}, the flags @samp{-t},
3078 @samp{-n} and @samp{-q} do not apply to that line. Command lines
3079 containing @code{MAKE} are executed normally despite the presence of a
3080 flag that causes most commands not to be run. The usual
3081 @code{MAKEFLAGS} mechanism passes the flags to the sub-@code{make}
3082 (@pxref{Options/Recursion, ,Communicating Options to a
3083 Sub-@code{make}}), so your request to touch the files, or print the
3084 commands, is propagated to the subsystem.@refill
3086 @node Variables/Recursion, Options/Recursion, MAKE Variable, Recursion
3087 @subsection Communicating Variables to a Sub-@code{make}
3088 @cindex sub-@code{make}
3089 @cindex environment, and recursion
3090 @cindex exporting variables
3091 @cindex variables, environment
3092 @cindex variables, exporting
3093 @cindex recursion, and environment
3094 @cindex recursion, and variables
3096 Variable values of the top-level @code{make} can be passed to the
3097 sub-@code{make} through the environment by explicit request. These
3098 variables are defined in the sub-@code{make} as defaults, but do not
3099 override what is specified in the sub-@code{make}'s makefile unless
3100 you use the @samp{-e} switch
3101 (@pxref{Options Summary, ,Summary of Options}).@refill
3103 To pass down, or @dfn{export}, a variable, @code{make} adds the variable
3104 and its value to the environment for running each command. The
3105 sub-@code{make}, in turn, uses the environment to initialize its table
3106 of variable values. @xref{Environment, ,Variables from the
3109 Except by explicit request, @code{make} exports a variable only if it
3110 is either defined in the environment initially or set on the command
3111 line, and if its name consists only of letters, numbers, and underscores.
3112 Some shells cannot cope with environment variable names consisting of
3113 characters other than letters, numbers, and underscores.
3115 The special variables @code{SHELL} and @code{MAKEFLAGS} are always
3116 exported (unless you unexport them).
3117 @code{MAKEFILES} is exported if you set it to anything.
3119 Variables are @emph{not} normally passed down if they were created by
3120 default by @code{make} (@pxref{Implicit Variables, ,Variables Used by
3121 Implicit Rules}). The sub-@code{make} will define these for
3125 If you want to export specific variables to a sub-@code{make}, use the
3126 @code{export} directive, like this:
3129 export @var{variable} @dots{}
3134 If you want to @emph{prevent} a variable from being exported, use the
3135 @code{unexport} directive, like this:
3138 unexport @var{variable} @dots{}
3142 As a convenience, you can define a variable and export it at the same
3146 export @var{variable} = value
3150 has the same result as:
3153 @var{variable} = value
3154 export @var{variable}
3161 export @var{variable} := value
3165 has the same result as:
3168 @var{variable} := value
3169 export @var{variable}
3175 export @var{variable} += value
3182 @var{variable} += value
3183 export @var{variable}
3187 @xref{Appending, ,Appending More Text to Variables}.
3189 You may notice that the @code{export} and @code{unexport} directives
3190 work in @code{make} in the same way they work in the shell, @code{sh}.
3192 If you want all variables to be exported by default, you can use
3193 @code{export} by itself:
3200 This tells @code{make} that variables which are not explicitly mentioned
3201 in an @code{export} or @code{unexport} directive should be exported.
3202 Any variable given in an @code{unexport} directive will still @emph{not}
3203 be exported. If you use @code{export} by itself to export variables by
3204 default, variables whose names contain characters other than
3205 alphanumerics and underscores will not be exported unless specifically
3206 mentioned in an @code{export} directive.@refill
3208 @findex .EXPORT_ALL_VARIABLES
3209 The behavior elicited by an @code{export} directive by itself was the
3210 default in older versions of GNU @code{make}. If your makefiles depend
3211 on this behavior and you want to be compatible with old versions of
3212 @code{make}, you can write a rule for the special target
3213 @code{.EXPORT_ALL_VARIABLES} instead of using the @code{export} directive.
3214 This will be ignored by old @code{make}s, while the @code{export}
3215 directive will cause a syntax error.@refill
3216 @cindex compatibility in exporting
3218 Likewise, you can use @code{unexport} by itself to tell @code{make}
3219 @emph{not} to export variables by default. Since this is the default
3220 behavior, you would only need to do this if @code{export} had been used
3221 by itself earlier (in an included makefile, perhaps). You
3222 @strong{cannot} use @code{export} and @code{unexport} by themselves to
3223 have variables exported for some commands and not for others. The last
3224 @code{export} or @code{unexport} directive that appears by itself
3225 determines the behavior for the entire run of @code{make}.@refill
3228 @cindex recursion, level of
3229 As a special feature, the variable @code{MAKELEVEL} is changed when it
3230 is passed down from level to level. This variable's value is a string
3231 which is the depth of the level as a decimal number. The value is
3232 @samp{0} for the top-level @code{make}; @samp{1} for a sub-@code{make},
3233 @samp{2} for a sub-sub-@code{make}, and so on. The incrementation
3234 happens when @code{make} sets up the environment for a command.@refill
3236 The main use of @code{MAKELEVEL} is to test it in a conditional
3237 directive (@pxref{Conditionals, ,Conditional Parts of Makefiles}); this
3238 way you can write a makefile that behaves one way if run recursively and
3239 another way if run directly by you.@refill
3242 You can use the variable @code{MAKEFILES} to cause all sub-@code{make}
3243 commands to use additional makefiles. The value of @code{MAKEFILES} is
3244 a whitespace-separated list of file names. This variable, if defined in
3245 the outer-level makefile, is passed down through the environment; then
3246 it serves as a list of extra makefiles for the sub-@code{make} to read
3247 before the usual or specified ones. @xref{MAKEFILES Variable, ,The
3248 Variable @code{MAKEFILES}}.@refill
3250 @node Options/Recursion, -w Option, Variables/Recursion, Recursion
3251 @subsection Communicating Options to a Sub-@code{make}
3252 @cindex options, and recursion
3253 @cindex recursion, and options
3256 Flags such as @samp{-s} and @samp{-k} are passed automatically to the
3257 sub-@code{make} through the variable @code{MAKEFLAGS}. This variable is
3258 set up automatically by @code{make} to contain the flag letters that
3259 @code{make} received. Thus, if you do @w{@samp{make -ks}} then
3260 @code{MAKEFLAGS} gets the value @samp{ks}.@refill
3262 As a consequence, every sub-@code{make} gets a value for @code{MAKEFLAGS}
3263 in its environment. In response, it takes the flags from that value and
3264 processes them as if they had been given as arguments.
3265 @xref{Options Summary, ,Summary of Options}.
3267 @cindex @code{-C}, and recursion
3268 @cindex @code{-f}, and recursion
3269 @cindex @code{-I}, and recursion
3270 @cindex @code{-o}, and recursion
3271 @cindex @code{-W}, and recursion
3272 @cindex @code{--directory}, and recursion
3273 @cindex @code{--file}, and recursion
3274 @cindex @code{--include-dir}, and recursion
3275 @cindex @code{--old-file}, and recursion
3276 @cindex @code{--assume-old}, and recursion
3277 @cindex @code{--assume-new}, and recursion
3278 @cindex @code{--new-file}, and recursion
3279 @cindex recursion, and @code{-C}
3280 @cindex recursion, and @code{-f}
3281 @cindex recursion, and @code{-I}
3282 @cindex recursion, and @code{-o}
3283 @cindex recursion, and @code{-W}
3284 The options @samp{-C}, @samp{-f}, @samp{-I}, @samp{-o}, and @samp{-W}
3285 are not put into @code{MAKEFLAGS}; these options are not passed down.@refill
3287 @cindex @code{-j}, and recursion
3288 @cindex @code{--jobs}, and recursion
3289 @cindex recursion, and @code{-j}
3290 @cindex job slots, and recursion
3291 The @samp{-j} option is a special case (@pxref{Parallel, ,Parallel Execution}).
3292 If you set it to some numeric value, @samp{-j 1} is always put into
3293 @code{MAKEFLAGS} instead of the value you specified. This is because if
3294 the @w{@samp{-j}} option were passed down to sub-@code{make}s, you would
3295 get many more jobs running in parallel than you asked for. If you give
3296 @samp{-j} with no numeric argument, meaning to run as many jobs as
3297 possible in parallel, this is passed down, since multiple infinities are
3298 no more than one.@refill
3300 If you do not want to pass the other flags down, you must change the
3301 value of @code{MAKEFLAGS}, like this:
3313 cd subdir; $(MAKE) MAKEFLAGS=
3317 A similar variable @code{MFLAGS} exists also, for historical compatibility.
3318 It has the same value as @code{MAKEFLAGS} except that it always begins with
3319 a hyphen unless it is empty (@code{MAKEFLAGS} begins with a hyphen only when
3320 it begins with an option that has no single-letter version, such as
3321 @samp{--warn-undefined-variables}). @code{MFLAGS} was traditionally used
3322 explicitly in the recursive @code{make} command, like this:
3326 cd subdir; $(MAKE) $(MFLAGS)
3330 but now @code{MAKEFLAGS} makes this usage redundant. If you want your
3331 makefiles to be compatible with old @code{make} programs, use this
3332 technique; it will work fine with more modern @code{make} versions too.
3334 @cindex setting options from environment
3335 @cindex options, setting from environment
3336 @cindex setting options in makefiles
3337 @cindex options, setting in makefiles
3338 The @code{MAKEFLAGS} variable can also be useful if you want to have
3339 certain options, such as @samp{-k} (@pxref{Options Summary, ,Summary of
3340 Options}), set each time you run @code{make}. You simply put a value for
3341 @code{MAKEFLAGS} in your environment. You can also set @code{MAKEFLAGS} in
3342 a makefile, to specify additional flags that should also be in effect for
3343 that makefile. (Note that you cannot use @code{MFLAGS} this way. That
3344 variable is set only for compatibility; @code{make} does not interpret a
3345 value you set for it in any way.)
3347 When @code{make} interprets the value of @code{MAKEFLAGS} (either from the
3348 environment or from a makefile), it first prepends a hyphen if the value
3349 does not already begin with one. Then it chops the value into words
3350 separated by blanks, and parses these words as if they were options given
3351 on the command line (except that @samp{-C}, @samp{-f}, @samp{-h},
3352 @samp{-o}, @samp{-W}, and their long-named versions are ignored; and there
3353 is no error for an invalid option).
3355 If you do put @code{MAKEFLAGS} in your environment, you should be sure not
3356 to include any options that will drastically affect the actions of
3357 @code{make} and undermine the purpose of makefiles and of @code{make}
3358 itself. For instance, the @samp{-t}, @samp{-n}, and @samp{-q} options, if
3359 put in one of these variables, could have disastrous consequences and would
3360 certainly have at least surprising and probably annoying effects.@refill
3362 @node -w Option, , Options/Recursion, Recursion
3363 @subsection The @samp{--print-directory} Option
3364 @cindex directories, printing them
3365 @cindex printing directories
3366 @cindex recursion, and printing directories
3368 If you use several levels of recursive @code{make} invocations, the
3369 @samp{-w} or @w{@samp{--print-directory}} option can make the output a
3370 lot easier to understand by showing each directory as @code{make}
3371 starts processing it and as @code{make} finishes processing it. For
3372 example, if @samp{make -w} is run in the directory @file{/u/gnu/make},
3373 @code{make} will print a line of the form:@refill
3376 make: Entering directory `/u/gnu/make'.
3380 before doing anything else, and a line of the form:
3383 make: Leaving directory `/u/gnu/make'.
3387 when processing is completed.
3389 @cindex @code{-C}, and @code{-w}
3390 @cindex @code{--directory}, and @code{--print-directory}
3391 @cindex recursion, and @code{-w}
3392 @cindex @code{-w}, and @code{-C}
3393 @cindex @code{-w}, and recursion
3394 @cindex @code{--print-directory}, and @code{--directory}
3395 @cindex @code{--print-directory}, and recursion
3396 @cindex @code{--no-print-directory}
3397 @cindex @code{--print-directory}, disabling
3398 @cindex @code{-w}, disabling
3399 Normally, you do not need to specify this option because @samp{make}
3400 does it for you: @samp{-w} is turned on automatically when you use the
3401 @samp{-C} option, and in sub-@code{make}s. @code{make} will not
3402 automatically turn on @samp{-w} if you also use @samp{-s}, which says to
3403 be silent, or if you use @samp{--no-print-directory} to explicitly
3406 @node Sequences, Empty Commands, Recursion, Commands
3407 @section Defining Canned Command Sequences
3408 @cindex sequences of commands
3409 @cindex commands, sequences of
3411 When the same sequence of commands is useful in making various targets, you
3412 can define it as a canned sequence with the @code{define} directive, and
3413 refer to the canned sequence from the rules for those targets. The canned
3414 sequence is actually a variable, so the name must not conflict with other
3417 Here is an example of defining a canned sequence of commands:
3421 yacc $(firstword $^)
3428 Here @code{run-yacc} is the name of the variable being defined;
3429 @code{endef} marks the end of the definition; the lines in between are the
3430 commands. The @code{define} directive does not expand variable references
3431 and function calls in the canned sequence; the @samp{$} characters,
3432 parentheses, variable names, and so on, all become part of the value of the
3433 variable you are defining.
3434 @xref{Defining, ,Defining Variables Verbatim},
3435 for a complete explanation of @code{define}.
3437 The first command in this example runs Yacc on the first dependency of
3438 whichever rule uses the canned sequence. The output file from Yacc is
3439 always named @file{y.tab.c}. The second command moves the output to the
3440 rule's target file name.
3442 To use the canned sequence, substitute the variable into the commands of a
3443 rule. You can substitute it like any other variable
3444 (@pxref{Reference, ,Basics of Variable References}).
3445 Because variables defined by @code{define} are recursively expanded
3446 variables, all the variable references you wrote inside the @code{define}
3447 are expanded now. For example:
3455 @samp{foo.y} will be substituted for the variable @samp{$^} when it occurs in
3456 @code{run-yacc}'s value, and @samp{foo.c} for @samp{$@@}.@refill
3458 This is a realistic example, but this particular one is not needed in
3459 practice because @code{make} has an implicit rule to figure out these
3460 commands based on the file names involved
3461 (@pxref{Implicit Rules, ,Using Implicit Rules}).
3463 @cindex @@, and @code{define}
3464 @cindex -, and @code{define}
3465 @cindex +, and @code{define}
3466 In command execution, each line of a canned sequence is treated just as
3467 if the line appeared on its own in the rule, preceded by a tab. In
3468 particular, @code{make} invokes a separate subshell for each line. You
3469 can use the special prefix characters that affect command lines
3470 (@samp{@@}, @samp{-}, and @samp{+}) on each line of a canned sequence.
3471 @xref{Commands, ,Writing the Commands in Rules}.
3472 For example, using this canned sequence:
3476 @@echo "frobnicating target $@@"
3477 frob-step-1 $< -o $@@-step-1
3478 frob-step-2 $@@-step-1 -o $@@
3483 @code{make} will not echo the first line, the @code{echo} command.
3484 But it @emph{will} echo the following two command lines.
3486 On the other hand, prefix characters on the command line that refers to
3487 a canned sequence apply to every line in the sequence. So the rule:
3495 does not echo @emph{any} commands.
3496 (@xref{Echoing, ,Command Echoing}, for a full explanation of @samp{@@}.)
3498 @node Empty Commands, , Sequences, Commands
3499 @section Using Empty Commands
3500 @cindex empty commands
3501 @cindex commands, empty
3503 It is sometimes useful to define commands which do nothing. This is done
3504 simply by giving a command that consists of nothing but whitespace. For
3512 defines an empty command string for @file{target}. You could also use a
3513 line beginning with a tab character to define an empty command string,
3514 but this would be confusing because such a line looks empty.
3516 @findex .DEFAULT@r{, and empty commands}
3517 You may be wondering why you would want to define a command string that
3518 does nothing. The only reason this is useful is to prevent a target
3519 from getting implicit commands (from implicit rules or the
3520 @code{.DEFAULT} special target; @pxref{Implicit Rules} and
3521 @pxref{Last Resort, ,Defining Last-Resort Default Rules}).@refill
3523 You may be inclined to define empty command strings for targets that are
3524 not actual files, but only exist so that their dependencies can be
3525 remade. However, this is not the best way to do that, because the
3526 dependencies may not be remade properly if the target file actually does exist.
3527 @xref{Phony Targets, ,Phony Targets}, for a better way to do this.
3529 @node Using Variables, Conditionals, Commands, Top
3530 @chapter How to Use Variables
3533 @cindex recursive variable expansion
3534 @cindex simple variable expansion
3536 A @dfn{variable} is a name defined in a makefile to represent a string
3537 of text, called the variable's @dfn{value}. These values are
3538 substituted by explicit request into targets, dependencies, commands,
3539 and other parts of the makefile. (In some other versions of @code{make},
3540 variables are called @dfn{macros}.)
3543 Variables and functions in all parts of a makefile are expanded when
3544 read, except for the shell commands in rules, the right-hand sides of
3545 variable definitions using @samp{=}, and the bodies of variable
3546 definitions using the @code{define} directive.@refill
3548 Variables can represent lists of file names, options to pass to compilers,
3549 programs to run, directories to look in for source files, directories to
3550 write output in, or anything else you can imagine.
3552 A variable name may be any sequence of characters not containing @samp{:},
3553 @samp{#}, @samp{=}, or leading or trailing whitespace. However,
3554 variable names containing characters other than letters, numbers, and
3555 underscores should be avoided, as they may be given special meanings in the
3556 future, and with some shells they cannot be passed through the environment to a
3558 (@pxref{Variables/Recursion, ,Communicating Variables to a Sub-@code{make}}).
3560 Variable names are case-sensitive. The names @samp{foo}, @samp{FOO},
3561 and @samp{Foo} all refer to different variables.
3563 It is traditional to use upper case letters in variable names, but we
3564 recommend using lower case letters for variable names that serve internal
3565 purposes in the makefile, and reserving upper case for parameters that
3566 control implicit rules or for parameters that the user should override with
3567 command options (@pxref{Overriding, ,Overriding Variables}).
3569 A few variables have names that are a single punctuation character or
3570 just a few characters. These are the @dfn{automatic variables}, and
3571 they have particular specialized uses. @xref{Automatic, ,Automatic Variables}.
3574 * Reference:: How to use the value of a variable.
3575 * Flavors:: Variables come in two flavors.
3576 * Advanced:: Advanced features for referencing a variable.
3577 * Values:: All the ways variables get their values.
3578 * Setting:: How to set a variable in the makefile.
3579 * Appending:: How to append more text to the old value
3581 * Override Directive:: How to set a variable in the makefile even if
3582 the user has set it with a command argument.
3583 * Defining:: An alternate way to set a variable
3584 to a verbatim string.
3585 * Environment:: Variable values can come from the environment.
3586 * Automatic:: Some special variables have predefined
3587 meanings for use with implicit rules.
3590 @node Reference, Flavors, , Using Variables
3591 @section Basics of Variable References
3592 @cindex variables, how to reference
3593 @cindex reference to variables
3594 @cindex @code{$}, in variable reference
3595 @cindex dollar sign (@code{$}), in variable reference
3597 To substitute a variable's value, write a dollar sign followed by the name
3598 of the variable in parentheses or braces: either @samp{$(foo)} or
3599 @samp{$@{foo@}} is a valid reference to the variable @code{foo}. This
3600 special significance of @samp{$} is why you must write @samp{$$} to have
3601 the effect of a single dollar sign in a file name or command.
3603 Variable references can be used in any context: targets, dependencies,
3604 commands, most directives, and new variable values. Here is an
3605 example of a common case, where a variable holds the names of all the
3606 object files in a program:
3610 objects = program.o foo.o utils.o
3611 program : $(objects)
3612 cc -o program $(objects)
3618 Variable references work by strict textual substitution. Thus, the rule
3623 prog.o : prog.$(foo)
3624 $(foo)$(foo) -$(foo) prog.$(foo)
3629 could be used to compile a C program @file{prog.c}. Since spaces before
3630 the variable value are ignored in variable assignments, the value of
3631 @code{foo} is precisely @samp{c}. (Don't actually write your makefiles
3634 A dollar sign followed by a character other than a dollar sign,
3635 open-parenthesis or open-brace treats that single character as the
3636 variable name. Thus, you could reference the variable @code{x} with
3637 @samp{$x}. However, this practice is strongly discouraged, except in
3638 the case of the automatic variables (@pxref{Automatic, ,Automatic Variables}).
3640 @node Flavors, Advanced, Reference, Using Variables
3641 @section The Two Flavors of Variables
3642 @cindex flavors of variables
3643 @cindex recursive variable expansion
3644 @cindex variables, flavors
3645 @cindex recursively expanded variables
3646 @cindex variables, recursively expanded
3648 There are two ways that a variable in GNU @code{make} can have a value;
3649 we call them the two @dfn{flavors} of variables. The two flavors are
3650 distinguished in how they are defined and in what they do when expanded.
3653 The first flavor of variable is a @dfn{recursively expanded} variable.
3654 Variables of this sort are defined by lines using @samp{=}
3655 (@pxref{Setting, ,Setting Variables}) or by the @code{define} directive
3656 (@pxref{Defining, ,Defining Variables Verbatim}). The value you specify
3657 is installed verbatim; if it contains references to other variables,
3658 these references are expanded whenever this variable is substituted (in
3659 the course of expanding some other string). When this happens, it is
3660 called @dfn{recursive expansion}.@refill
3673 will echo @samp{Huh?}: @samp{$(foo)} expands to @samp{$(bar)} which
3674 expands to @samp{$(ugh)} which finally expands to @samp{Huh?}.@refill
3676 This flavor of variable is the only sort supported by other versions of
3677 @code{make}. It has its advantages and its disadvantages. An advantage
3678 (most would say) is that:
3681 CFLAGS = $(include_dirs) -O
3682 include_dirs = -Ifoo -Ibar
3686 will do what was intended: when @samp{CFLAGS} is expanded in a command,
3687 it will expand to @samp{-Ifoo -Ibar -O}. A major disadvantage is that you
3688 cannot append something on the end of a variable, as in
3691 CFLAGS = $(CFLAGS) -O
3695 because it will cause an infinite loop in the variable expansion.
3696 (Actually @code{make} detects the infinite loop and reports an error.)
3697 @cindex loops in variable expansion
3698 @cindex variables, loops in expansion
3700 Another disadvantage is that any functions
3701 (@pxref{Functions, ,Functions for Transforming Text})
3702 referenced in the definition will be executed every time the variable is
3703 expanded. This makes @code{make} run slower; worse, it causes the
3704 @code{wildcard} and @code{shell} functions to give unpredictable results
3705 because you cannot easily control when they are called, or even how many
3708 To avoid all the problems and inconveniences of recursively expanded
3709 variables, there is another flavor: simply expanded variables.
3711 @cindex simply expanded variables
3712 @cindex variables, simply expanded
3714 @dfn{Simply expanded variables} are defined by lines using @samp{:=}
3715 (@pxref{Setting, ,Setting Variables}).
3716 The value of a simply expanded variable is scanned
3717 once and for all, expanding any references to other variables and
3718 functions, when the variable is defined. The actual value of the simply
3719 expanded variable is the result of expanding the text that you write.
3720 It does not contain any references to other variables; it contains their
3721 values @emph{as of the time this variable was defined}. Therefore,
3737 When a simply expanded variable is referenced, its value is substituted
3740 Here is a somewhat more complicated example, illustrating the use of
3741 @samp{:=} in conjunction with the @code{shell} function.
3742 (@xref{Shell Function, , The @code{shell} Function}.) This example
3743 also shows use of the variable @code{MAKELEVEL}, which is changed
3744 when it is passed down from level to level.
3745 (@xref{Variables/Recursion, , Communicating Variables to a
3746 Sub-@code{make}}, for information about @code{MAKELEVEL}.)
3752 ifeq (0,$@{MAKELEVEL@})
3753 cur-dir := $(shell pwd)
3754 whoami := $(shell whoami)
3755 host-type := $(shell arch)
3756 MAKE := $@{MAKE@} host-type=$@{host-type@} whoami=$@{whoami@}
3762 An advantage of this use of @samp{:=} is that a typical
3763 `descend into a directory' command then looks like this:
3768 $@{MAKE@} cur-dir=$@{cur-dir@}/$@@ -C $@@ all
3772 Simply expanded variables generally make complicated makefile programming
3773 more predictable because they work like variables in most programming
3774 languages. They allow you to redefine a variable using its own value (or
3775 its value processed in some way by one of the expansion functions) and to
3776 use the expansion functions much more efficiently
3777 (@pxref{Functions, ,Functions for Transforming Text}).
3779 @cindex spaces, in variable values
3780 @cindex whitespace, in variable values
3781 @cindex variables, spaces in values
3782 You can also use them to introduce controlled leading whitespace into
3783 variable values. Leading whitespace characters are discarded from your
3784 input before substitution of variable references and function calls;
3785 this means you can include leading spaces in a variable value by
3786 protecting them with variable references, like this:
3790 space := $(nullstring) # end of the line
3794 Here the value of the variable @code{space} is precisely one space. The
3795 comment @w{@samp{# end of the line}} is included here just for clarity.
3796 Since trailing space characters are @emph{not} stripped from variable
3797 values, just a space at the end of the line would have the same effect
3798 (but be rather hard to read). If you put whitespace at the end of a
3799 variable value, it is a good idea to put a comment like that at the end
3800 of the line to make your intent clear. Conversely, if you do @emph{not}
3801 want any whitespace characters at the end of your variable value, you
3802 must remember not to put a random comment on the end of the line after
3803 some whitespace, such as this:
3806 dir := /foo/bar # directory to put the frobs in
3810 Here the value of the variable @code{dir} is @w{@samp{/foo/bar }}
3811 (with four trailing spaces), which was probably not the intention.
3812 (Imagine something like @w{@samp{$(dir)/file}} with this definition!)
3814 @node Advanced, Values, Flavors, Using Variables
3815 @section Advanced Features for Reference to Variables
3816 @cindex reference to variables
3818 This section describes some advanced features you can use to reference
3819 variables in more flexible ways.
3822 * Substitution Refs:: Referencing a variable with
3823 substitutions on the value.
3824 * Computed Names:: Computing the name of the variable to refer to.
3827 @node Substitution Refs, Computed Names, , Advanced
3828 @subsection Substitution References
3829 @cindex modified variable reference
3830 @cindex substitution variable reference
3831 @cindex variables, modified reference
3832 @cindex variables, substitution reference
3834 @cindex variables, substituting suffix in
3835 @cindex suffix, substituting in variables
3836 A @dfn{substitution reference} substitutes the value of a variable with
3837 alterations that you specify. It has the form
3838 @samp{$(@var{var}:@var{a}=@var{b})} (or
3839 @samp{$@{@var{var}:@var{a}=@var{b}@}}) and its meaning is to take the value
3840 of the variable @var{var}, replace every @var{a} at the end of a word with
3841 @var{b} in that value, and substitute the resulting string.
3843 When we say ``at the end of a word'', we mean that @var{a} must appear
3844 either followed by whitespace or at the end of the value in order to be
3845 replaced; other occurrences of @var{a} in the value are unaltered. For
3854 sets @samp{bar} to @samp{a.c b.c c.c}. @xref{Setting, ,Setting Variables}.
3856 A substitution reference is actually an abbreviation for use of the
3857 @code{patsubst} expansion function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}). We provide
3858 substitution references as well as @code{patsubst} for compatibility with
3859 other implementations of @code{make}.
3862 Another type of substitution reference lets you use the full power of
3863 the @code{patsubst} function. It has the same form
3864 @samp{$(@var{var}:@var{a}=@var{b})} described above, except that now
3865 @var{a} must contain a single @samp{%} character. This case is
3866 equivalent to @samp{$(patsubst @var{a},@var{b},$(@var{var}))}.
3867 @xref{Text Functions, ,Functions for String Substitution and Analysis},
3868 for a description of the @code{patsubst} function.@refill
3872 @exdent For example:
3875 bar := $(foo:%.o=%.c)
3880 sets @samp{bar} to @samp{a.c b.c c.c}.
3882 @node Computed Names, , Substitution Refs, Advanced
3883 @subsection Computed Variable Names
3884 @cindex nested variable reference
3885 @cindex computed variable name
3886 @cindex variables, computed names
3887 @cindex variables, nested references
3888 @cindex variables, @samp{$} in name
3889 @cindex @code{$}, in variable name
3890 @cindex dollar sign (@code{$}), in variable name
3892 Computed variable names are a complicated concept needed only for
3893 sophisticated makefile programming. For most purposes you need not
3894 consider them, except to know that making a variable with a dollar sign
3895 in its name might have strange results. However, if you are the type
3896 that wants to understand everything, or you are actually interested in
3897 what they do, read on.
3899 Variables may be referenced inside the name of a variable. This is
3900 called a @dfn{computed variable name} or a @dfn{nested variable
3901 reference}. For example,
3910 defines @code{a} as @samp{z}: the @samp{$(x)} inside @samp{$($(x))} expands
3911 to @samp{y}, so @samp{$($(x))} expands to @samp{$(y)} which in turn expands
3912 to @samp{z}. Here the name of the variable to reference is not stated
3913 explicitly; it is computed by expansion of @samp{$(x)}. The reference
3914 @samp{$(x)} here is nested within the outer variable reference.
3916 The previous example shows two levels of nesting, but any number of levels
3917 is possible. For example, here are three levels:
3927 Here the innermost @samp{$(x)} expands to @samp{y}, so @samp{$($(x))}
3928 expands to @samp{$(y)} which in turn expands to @samp{z}; now we have
3929 @samp{$(z)}, which becomes @samp{u}.
3931 References to recursively-expanded variables within a variable name are
3932 reexpanded in the usual fashion. For example:
3942 defines @code{a} as @samp{Hello}: @samp{$($(x))} becomes @samp{$($(y))}
3943 which becomes @samp{$(z)} which becomes @samp{Hello}.
3945 Nested variable references can also contain modified references and
3946 function invocations (@pxref{Functions, ,Functions for Transforming Text}),
3947 just like any other reference.
3948 For example, using the @code{subst} function
3949 (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
3955 y = $(subst 1,2,$(x))
3962 eventually defines @code{a} as @samp{Hello}. It is doubtful that anyone
3963 would ever want to write a nested reference as convoluted as this one, but
3964 it works: @samp{$($($(z)))} expands to @samp{$($(y))} which becomes
3965 @samp{$($(subst 1,2,$(x)))}. This gets the value @samp{variable1} from
3966 @code{x} and changes it by substitution to @samp{variable2}, so that the
3967 entire string becomes @samp{$(variable2)}, a simple variable reference
3968 whose value is @samp{Hello}.@refill
3970 A computed variable name need not consist entirely of a single variable
3971 reference. It can contain several variable references, as well as some
3972 invariant text. For example,
3981 a_files := filea fileb
3982 1_files := file1 file2
3986 ifeq "$(use_a)" "yes"
3994 ifeq "$(use_dirs)" "yes"
4000 dirs := $($(a1)_$(df))
4005 will give @code{dirs} the same value as @code{a_dirs}, @code{1_dirs},
4006 @code{a_files} or @code{1_files} depending on the settings of @code{use_a}
4007 and @code{use_dirs}.@refill
4009 Computed variable names can also be used in substitution references:
4013 a_objects := a.o b.o c.o
4014 1_objects := 1.o 2.o 3.o
4016 sources := $($(a1)_objects:.o=.c)
4021 defines @code{sources} as either @samp{a.c b.c c.c} or @samp{1.c 2.c 3.c},
4022 depending on the value of @code{a1}.
4024 The only restriction on this sort of use of nested variable references
4025 is that they cannot specify part of the name of a function to be called.
4026 This is because the test for a recognized function name is done before
4027 the expansion of nested references. For example,
4043 foo := $($(func) $(bar))
4048 attempts to give @samp{foo} the value of the variable @samp{sort a d b g
4049 q c} or @samp{strip a d b g q c}, rather than giving @samp{a d b g q c}
4050 as the argument to either the @code{sort} or the @code{strip} function.
4051 This restriction could be removed in the future if that change is shown
4054 You can also use computed variable names in the left-hand side of a
4055 variable assignment, or in a @code{define} directive, as in:
4059 $(dir)_sources := $(wildcard $(dir)/*.c)
4061 lpr $($(dir)_sources)
4066 This example defines the variables @samp{dir}, @samp{foo_sources}, and
4069 Note that @dfn{nested variable references} are quite different from
4070 @dfn{recursively expanded variables}
4071 (@pxref{Flavors, ,The Two Flavors of Variables}), though both are
4072 used together in complex ways when doing makefile programming.@refill
4074 @node Values, Setting, Advanced, Using Variables
4075 @section How Variables Get Their Values
4076 @cindex variables, how they get their values
4077 @cindex value, how a variable gets it
4079 Variables can get values in several different ways:
4083 You can specify an overriding value when you run @code{make}.
4084 @xref{Overriding, ,Overriding Variables}.
4087 You can specify a value in the makefile, either
4088 with an assignment (@pxref{Setting, ,Setting Variables}) or with a
4089 verbatim definition (@pxref{Defining, ,Defining Variables Verbatim}).@refill
4092 Variables in the environment become @code{make} variables.
4093 @xref{Environment, ,Variables from the Environment}.
4096 Several @dfn{automatic} variables are given new values for each rule.
4097 Each of these has a single conventional use.
4098 @xref{Automatic, ,Automatic Variables}.
4101 Several variables have constant initial values.
4102 @xref{Implicit Variables, ,Variables Used by Implicit Rules}.
4105 @node Setting, Appending, Values, Using Variables
4106 @section Setting Variables
4107 @cindex setting variables
4108 @cindex variables, setting
4112 To set a variable from the makefile, write a line starting with the
4113 variable name followed by @samp{=} or @samp{:=}. Whatever follows the
4114 @samp{=} or @samp{:=} on the line becomes the value. For example,
4117 objects = main.o foo.o bar.o utils.o
4121 defines a variable named @code{objects}. Whitespace around the variable
4122 name and immediately after the @samp{=} is ignored.
4124 Variables defined with @samp{=} are @dfn{recursively expanded} variables.
4125 Variables defined with @samp{:=} are @dfn{simply expanded} variables; these
4126 definitions can contain variable references which will be expanded before
4127 the definition is made. @xref{Flavors, ,The Two Flavors of Variables}.
4129 The variable name may contain function and variable references, which
4130 are expanded when the line is read to find the actual variable name to use.
4132 There is no limit on the length of the value of a variable except the
4133 amount of swapping space on the computer. When a variable definition is
4134 long, it is a good idea to break it into several lines by inserting
4135 backslash-newline at convenient places in the definition. This will not
4136 affect the functioning of @code{make}, but it will make the makefile easier
4139 Most variable names are considered to have the empty string as a value if
4140 you have never set them. Several variables have built-in initial values
4141 that are not empty, but you can set them in the usual ways
4142 (@pxref{Implicit Variables, ,Variables Used by Implicit Rules}).
4143 Several special variables are set
4144 automatically to a new value for each rule; these are called the
4145 @dfn{automatic} variables (@pxref{Automatic, ,Automatic Variables}).
4147 @node Appending, Override Directive, Setting, Using Variables
4148 @section Appending More Text to Variables
4150 @cindex appending to variables
4151 @cindex variables, appending to
4153 Often it is useful to add more text to the value of a variable already defined.
4154 You do this with a line containing @samp{+=}, like this:
4157 objects += another.o
4161 This takes the value of the variable @code{objects}, and adds the text
4162 @samp{another.o} to it (preceded by a single space). Thus:
4165 objects = main.o foo.o bar.o utils.o
4166 objects += another.o
4170 sets @code{objects} to @samp{main.o foo.o bar.o utils.o another.o}.
4172 Using @samp{+=} is similar to:
4175 objects = main.o foo.o bar.o utils.o
4176 objects := $(objects) another.o
4180 but differs in ways that become important when you use more complex values.
4182 When the variable in question has not been defined before, @samp{+=}
4183 acts just like normal @samp{=}: it defines a recursively-expanded
4184 variable. However, when there @emph{is} a previous definition, exactly
4185 what @samp{+=} does depends on what flavor of variable you defined
4186 originally. @xref{Flavors, ,The Two Flavors of Variables}, for an
4187 explanation of the two flavors of variables.
4189 When you add to a variable's value with @samp{+=}, @code{make} acts
4190 essentially as if you had included the extra text in the initial
4191 definition of the variable. If you defined it first with @samp{:=},
4192 making it a simply-expanded variable, @samp{+=} adds to that
4193 simply-expanded definition, and expands the new text before appending it
4194 to the old value just as @samp{:=} does
4195 (@pxref{Setting, ,Setting Variables}, for a full explanation of @samp{:=}).
4204 is exactly equivalent to:
4209 variable := $(variable) more
4212 On the other hand, when you use @samp{+=} with a variable that you defined
4213 first to be recursively-expanded using plain @samp{=}, @code{make} does
4214 something a bit different. Recall that when you define a
4215 recursively-expanded variable, @code{make} does not expand the value you set
4216 for variable and function references immediately. Instead it stores the text
4217 verbatim, and saves these variable and function references to be expanded
4218 later, when you refer to the new variable (@pxref{Flavors, ,The Two Flavors
4219 of Variables}). When you use @samp{+=} on a recursively-expanded variable,
4220 it is this unexpanded text to which @code{make} appends the new text you
4231 is roughly equivalent to:
4236 variable = $(temp) more
4241 except that of course it never defines a variable called @code{temp}.
4242 The importance of this comes when the variable's old value contains
4243 variable references. Take this common example:
4246 CFLAGS = $(includes) -O
4248 CFLAGS += -pg # enable profiling
4252 The first line defines the @code{CFLAGS} variable with a reference to another
4253 variable, @code{includes}. (@code{CFLAGS} is used by the rules for C
4254 compilation; @pxref{Catalogue of Rules, ,Catalogue of Implicit Rules}.)
4255 Using @samp{=} for the definition makes @code{CFLAGS} a recursively-expanded
4256 variable, meaning @w{@samp{$(includes) -O}} is @emph{not} expanded when
4257 @code{make} processes the definition of @code{CFLAGS}. Thus, @code{includes}
4258 need not be defined yet for its value to take effect. It only has to be
4259 defined before any reference to @code{CFLAGS}. If we tried to append to the
4260 value of @code{CFLAGS} without using @samp{+=}, we might do it like this:
4263 CFLAGS := $(CFLAGS) -pg # enable profiling
4267 This is pretty close, but not quite what we want. Using @samp{:=}
4268 redefines @code{CFLAGS} as a simply-expanded variable; this means
4269 @code{make} expands the text @w{@samp{$(CFLAGS) -pg}} before setting the
4270 variable. If @code{includes} is not yet defined, we get @w{@samp{ -O
4271 -pg}}, and a later definition of @code{includes} will have no effect.
4272 Conversely, by using @samp{+=} we set @code{CFLAGS} to the
4273 @emph{unexpanded} value @w{@samp{$(includes) -O -pg}}. Thus we preserve
4274 the reference to @code{includes}, so if that variable gets defined at
4275 any later point, a reference like @samp{$(CFLAGS)} still uses its
4278 @node Override Directive, Defining, Appending, Using Variables
4279 @section The @code{override} Directive
4281 @cindex overriding with @code{override}
4282 @cindex variables, overriding
4284 If a variable has been set with a command argument
4285 (@pxref{Overriding, ,Overriding Variables}),
4286 then ordinary assignments in the makefile are ignored. If you want to set
4287 the variable in the makefile even though it was set with a command
4288 argument, you can use an @code{override} directive, which is a line that
4289 looks like this:@refill
4292 override @var{variable} = @var{value}
4299 override @var{variable} := @var{value}
4302 To append more text to a variable defined on the command line, use:
4305 override @var{variable} += @var{more text}
4309 @xref{Appending, ,Appending More Text to Variables}.
4311 The @code{override} directive was not invented for escalation in the war
4312 between makefiles and command arguments. It was invented so you can alter
4313 and add to values that the user specifies with command arguments.
4315 For example, suppose you always want the @samp{-g} switch when you run the
4316 C compiler, but you would like to allow the user to specify the other
4317 switches with a command argument just as usual. You could use this
4318 @code{override} directive:
4321 override CFLAGS += -g
4324 You can also use @code{override} directives with @code{define} directives.
4325 This is done as you might expect:
4335 See the next section for information about @code{define}.
4338 @xref{Defining, ,Defining Variables Verbatim}.
4341 @node Defining, Environment, Override Directive, Using Variables
4342 @section Defining Variables Verbatim
4345 @cindex verbatim variable definition
4346 @cindex defining variables verbatim
4347 @cindex variables, defining verbatim
4349 Another way to set the value of a variable is to use the @code{define}
4350 directive. This directive has an unusual syntax which allows newline
4351 characters to be included in the value, which is convenient for defining
4352 canned sequences of commands
4353 (@pxref{Sequences, ,Defining Canned Command Sequences}).
4355 The @code{define} directive is followed on the same line by the name of the
4356 variable and nothing more. The value to give the variable appears on the
4357 following lines. The end of the value is marked by a line containing just
4358 the word @code{endef}. Aside from this difference in syntax, @code{define}
4359 works just like @samp{=}: it creates a recursively-expanded variable
4360 (@pxref{Flavors, ,The Two Flavors of Variables}).
4361 The variable name may contain function and variable references, which
4362 are expanded when the directive is read to find the actual variable name
4372 The value in an ordinary assignment cannot contain a newline; but the
4373 newlines that separate the lines of the value in a @code{define} become
4374 part of the variable's value (except for the final newline which precedes
4375 the @code{endef} and is not considered part of the value).@refill
4378 The previous example is functionally equivalent to this:
4381 two-lines = echo foo; echo $(bar)
4385 since two commands separated by semicolon behave much like two separate
4386 shell commands. However, note that using two separate lines means
4387 @code{make} will invoke the shell twice, running an independent subshell
4388 for each line. @xref{Execution, ,Command Execution}.
4390 If you want variable definitions made with @code{define} to take
4391 precedence over command-line variable definitions, you can use the
4392 @code{override} directive together with @code{define}:
4395 override define two-lines
4402 @xref{Override Directive, ,The @code{override} Directive}.
4404 @node Environment, , Defining, Using Variables
4405 @section Variables from the Environment
4407 @cindex variables, environment
4409 Variables in @code{make} can come from the environment in which
4410 @code{make} is run. Every environment variable that @code{make} sees when
4411 it starts up is transformed into a @code{make} variable with the same name
4412 and value. But an explicit assignment in the makefile, or with a command
4413 argument, overrides the environment. (If the @samp{-e} flag is specified,
4414 then values from the environment override assignments in the makefile.
4415 @xref{Options Summary, ,Summary of Options}.
4416 But this is not recommended practice.)
4418 Thus, by setting the variable @code{CFLAGS} in your environment, you can
4419 cause all C compilations in most makefiles to use the compiler switches you
4420 prefer. This is safe for variables with standard or conventional meanings
4421 because you know that no makefile will use them for other things. (But
4422 this is not totally reliable; some makefiles set @code{CFLAGS} explicitly
4423 and therefore are not affected by the value in the environment.)
4425 When @code{make} is invoked recursively, variables defined in the
4426 outer invocation can be passed to inner invocations through the
4427 environment (@pxref{Recursion, ,Recursive Use of @code{make}}). By
4428 default, only variables that came from the environment or the command
4429 line are passed to recursive invocations. You can use the
4430 @code{export} directive to pass other variables.
4431 @xref{Variables/Recursion, , Communicating Variables to a
4432 Sub-@code{make}}, for full details.
4434 Other use of variables from the environment is not recommended. It is not
4435 wise for makefiles to depend for their functioning on environment variables
4436 set up outside their control, since this would cause different users to get
4437 different results from the same makefile. This is against the whole
4438 purpose of most makefiles.
4440 Such problems would be especially likely with the variable @code{SHELL},
4441 which is normally present in the environment to specify the user's choice
4442 of interactive shell. It would be very undesirable for this choice to
4443 affect @code{make}. So @code{make} ignores the environment value of
4444 @code{SHELL}.@refill
4446 @node Conditionals, Functions, Using Variables, Top
4447 @chapter Conditional Parts of Makefiles
4449 @cindex conditionals
4450 A @dfn{conditional} causes part of a makefile to be obeyed or ignored
4451 depending on the values of variables. Conditionals can compare the
4452 value of one variable to another, or the value of a variable to
4453 a constant string. Conditionals control what @code{make} actually
4454 ``sees'' in the makefile, so they @emph{cannot} be used to control shell
4455 commands at the time of execution.@refill
4458 * Conditional Example:: Example of a conditional
4459 * Conditional Syntax:: The syntax of conditionals.
4460 * Testing Flags:: Conditionals that test flags.
4463 @node Conditional Example, Conditional Syntax, , Conditionals
4464 @section Example of a Conditional
4466 The following example of a conditional tells @code{make} to use one set
4467 of libraries if the @code{CC} variable is @samp{gcc}, and a different
4468 set of libraries otherwise. It works by controlling which of two
4469 command lines will be used as the command for a rule. The result is
4470 that @samp{CC=gcc} as an argument to @code{make} changes not only which
4471 compiler is used but also which libraries are linked.
4474 libs_for_gcc = -lgnu
4479 $(CC) -o foo $(objects) $(libs_for_gcc)
4481 $(CC) -o foo $(objects) $(normal_libs)
4485 This conditional uses three directives: one @code{ifeq}, one @code{else}
4486 and one @code{endif}.
4488 The @code{ifeq} directive begins the conditional, and specifies the
4489 condition. It contains two arguments, separated by a comma and surrounded
4490 by parentheses. Variable substitution is performed on both arguments and
4491 then they are compared. The lines of the makefile following the
4492 @code{ifeq} are obeyed if the two arguments match; otherwise they are
4495 The @code{else} directive causes the following lines to be obeyed if the
4496 previous conditional failed. In the example above, this means that the
4497 second alternative linking command is used whenever the first alternative
4498 is not used. It is optional to have an @code{else} in a conditional.
4500 The @code{endif} directive ends the conditional. Every conditional must
4501 end with an @code{endif}. Unconditional makefile text follows.
4503 As this example illustrates, conditionals work at the textual level:
4504 the lines of the conditional are treated as part of the makefile, or
4505 ignored, according to the condition. This is why the larger syntactic
4506 units of the makefile, such as rules, may cross the beginning or the
4507 end of the conditional.
4509 When the variable @code{CC} has the value @samp{gcc}, the above example has
4514 $(CC) -o foo $(objects) $(libs_for_gcc)
4518 When the variable @code{CC} has any other value, the effect is this:
4522 $(CC) -o foo $(objects) $(normal_libs)
4525 Equivalent results can be obtained in another way by conditionalizing a
4526 variable assignment and then using the variable unconditionally:
4529 libs_for_gcc = -lgnu
4533 libs=$(libs_for_gcc)
4539 $(CC) -o foo $(objects) $(libs)
4542 @node Conditional Syntax, Testing Flags, Conditional Example, Conditionals
4543 @section Syntax of Conditionals
4551 The syntax of a simple conditional with no @code{else} is as follows:
4554 @var{conditional-directive}
4560 The @var{text-if-true} may be any lines of text, to be considered as part
4561 of the makefile if the condition is true. If the condition is false, no
4562 text is used instead.
4564 The syntax of a complex conditional is as follows:
4567 @var{conditional-directive}
4575 If the condition is true, @var{text-if-true} is used; otherwise,
4576 @var{text-if-false} is used instead. The @var{text-if-false} can be any
4577 number of lines of text.
4579 The syntax of the @var{conditional-directive} is the same whether the
4580 conditional is simple or complex. There are four different directives that
4581 test different conditions. Here is a table of them:
4584 @item ifeq (@var{arg1}, @var{arg2})
4585 @itemx ifeq '@var{arg1}' '@var{arg2}'
4586 @itemx ifeq "@var{arg1}" "@var{arg2}"
4587 @itemx ifeq "@var{arg1}" '@var{arg2}'
4588 @itemx ifeq '@var{arg1}' "@var{arg2}"
4589 Expand all variable references in @var{arg1} and @var{arg2} and
4590 compare them. If they are identical, the @var{text-if-true} is
4591 effective; otherwise, the @var{text-if-false}, if any, is effective.
4593 Often you want to test if a variable has a non-empty value. When the
4594 value results from complex expansions of variables and functions,
4595 expansions you would consider empty may actually contain whitespace
4596 characters and thus are not seen as empty. However, you can use the
4597 @code{strip} function (@pxref{Text Functions}) to avoid interpreting
4598 whitespace as a non-empty value. For example:
4602 ifeq ($(strip $(foo)),)
4609 will evaluate @var{text-if-empty} even if the expansion of
4610 @code{$(foo)} contains whitespace characters.
4612 @item ifneq (@var{arg1}, @var{arg2})
4613 @itemx ifneq '@var{arg1}' '@var{arg2}'
4614 @itemx ifneq "@var{arg1}" "@var{arg2}"
4615 @itemx ifneq "@var{arg1}" '@var{arg2}'
4616 @itemx ifneq '@var{arg1}' "@var{arg2}"
4617 Expand all variable references in @var{arg1} and @var{arg2} and
4618 compare them. If they are different, the @var{text-if-true} is
4619 effective; otherwise, the @var{text-if-false}, if any, is effective.
4621 @item ifdef @var{variable-name}
4622 If the variable @var{variable-name} has a non-empty value, the
4623 @var{text-if-true} is effective; otherwise, the @var{text-if-false},
4624 if any, is effective. Variables that have never been defined have an
4627 Note that @code{ifdef} only tests whether a variable has a value. It
4628 does not expand the variable to see if that value is nonempty.
4629 Consequently, tests using @code{ifdef} return true for all definitions
4630 except those like @code{foo =}. To test for an empty value, use
4631 @w{@code{ifeq ($(foo),)}}. For example,
4644 sets @samp{frobozz} to @samp{yes}, while:
4656 sets @samp{frobozz} to @samp{no}.
4658 @item ifndef @var{variable-name}
4659 If the variable @var{variable-name} has an empty value, the
4660 @var{text-if-true} is effective; otherwise, the @var{text-if-false},
4661 if any, is effective.
4664 Extra spaces are allowed and ignored at the beginning of the conditional
4665 directive line, but a tab is not allowed. (If the line begins with a tab,
4666 it will be considered a command for a rule.) Aside from this, extra spaces
4667 or tabs may be inserted with no effect anywhere except within the directive
4668 name or within an argument. A comment starting with @samp{#} may appear at
4669 the end of the line.
4671 The other two directives that play a part in a conditional are @code{else}
4672 and @code{endif}. Each of these directives is written as one word, with no
4673 arguments. Extra spaces are allowed and ignored at the beginning of the
4674 line, and spaces or tabs at the end. A comment starting with @samp{#} may
4675 appear at the end of the line.
4677 Conditionals affect which lines of the makefile @code{make} uses. If
4678 the condition is true, @code{make} reads the lines of the
4679 @var{text-if-true} as part of the makefile; if the condition is false,
4680 @code{make} ignores those lines completely. It follows that syntactic
4681 units of the makefile, such as rules, may safely be split across the
4682 beginning or the end of the conditional.@refill
4684 @code{make} evaluates conditionals when it reads a makefile.
4685 Consequently, you cannot use automatic variables in the tests of
4686 conditionals because they are not defined until commands are run
4687 (@pxref{Automatic, , Automatic Variables}).
4689 To prevent intolerable confusion, it is not permitted to start a
4690 conditional in one makefile and end it in another. However, you may
4691 write an @code{include} directive within a conditional, provided you do
4692 not attempt to terminate the conditional inside the included file.
4694 @node Testing Flags, , Conditional Syntax, Conditionals
4695 @section Conditionals that Test Flags
4697 You can write a conditional that tests @code{make} command flags such as
4698 @samp{-t} by using the variable @code{MAKEFLAGS} together with the
4699 @code{findstring} function
4700 (@pxref{Text Functions, , Functions for String Substitution and Analysis}).
4701 This is useful when @code{touch} is not enough to make a file appear up
4704 The @code{findstring} function determines whether one string appears as a
4705 substring of another. If you want to test for the @samp{-t} flag,
4706 use @samp{t} as the first string and the value of @code{MAKEFLAGS} as
4709 For example, here is how to arrange to use @samp{ranlib -t} to finish
4710 marking an archive file up to date:
4714 ifneq (,$(findstring t,$(MAKEFLAGS)))
4716 +ranlib -t archive.a
4723 The @samp{+} prefix marks those command lines as ``recursive'' so
4724 that they will be executed despite use of the @samp{-t} flag.
4725 @xref{Recursion, ,Recursive Use of @code{make}}.
4727 @node Functions, Running, Conditionals, Top
4728 @chapter Functions for Transforming Text
4731 @dfn{Functions} allow you to do text processing in the makefile to compute
4732 the files to operate on or the commands to use. You use a function in a
4733 @dfn{function call}, where you give the name of the function and some text
4734 (the @dfn{arguments}) for the function to operate on. The result of the
4735 function's processing is substituted into the makefile at the point of the
4736 call, just as a variable might be substituted.
4739 * Syntax of Functions:: How to write a function call.
4740 * Text Functions:: General-purpose text manipulation functions.
4741 * Filename Functions:: Functions for manipulating file names.
4742 * Foreach Function:: Repeat some text with controlled variation.
4743 * Origin Function:: Find where a variable got its value.
4744 * Shell Function:: Substitute the output of a shell command.
4747 @node Syntax of Functions, Text Functions, , Functions
4748 @section Function Call Syntax
4749 @cindex @code{$}, in function call
4750 @cindex dollar sign (@code{$}), in function call
4751 @cindex arguments of functions
4752 @cindex functions, syntax of
4754 A function call resembles a variable reference. It looks like this:
4757 $(@var{function} @var{arguments})
4764 $@{@var{function} @var{arguments}@}
4767 Here @var{function} is a function name; one of a short list of names that
4768 are part of @code{make}. There is no provision for defining new functions.
4770 The @var{arguments} are the arguments of the function. They are
4771 separated from the function name by one or more spaces or tabs, and if
4772 there is more than one argument, then they are separated by commas.
4773 Such whitespace and commas are not part of an argument's value. The
4774 delimiters which you use to surround the function call, whether
4775 parentheses or braces, can appear in an argument only in matching pairs;
4776 the other kind of delimiters may appear singly. If the arguments
4777 themselves contain other function calls or variable references, it is
4778 wisest to use the same kind of delimiters for all the references; write
4779 @w{@samp{$(subst a,b,$(x))}}, not @w{@samp{$(subst a,b,$@{x@})}}. This
4780 is because it is clearer, and because only one type of delimiter is
4781 matched to find the end of the reference.
4783 The text written for each argument is processed by substitution of
4784 variables and function calls to produce the argument value, which
4785 is the text on which the function acts. The substitution is done in the
4786 order in which the arguments appear.
4788 Commas and unmatched parentheses or braces cannot appear in the text of an
4789 argument as written; leading spaces cannot appear in the text of the first
4790 argument as written. These characters can be put into the argument value
4791 by variable substitution. First define variables @code{comma} and
4792 @code{space} whose values are isolated comma and space characters, then
4793 substitute these variables where such characters are wanted, like this:
4799 space:= $(empty) $(empty)
4801 bar:= $(subst $(space),$(comma),$(foo))
4802 # @r{bar is now `a,b,c'.}
4807 Here the @code{subst} function replaces each space with a comma, through
4808 the value of @code{foo}, and substitutes the result.
4810 @node Text Functions, Filename Functions, Syntax of Functions, Functions
4811 @section Functions for String Substitution and Analysis
4812 @cindex functions, for text
4814 Here are some functions that operate on strings:
4817 @item $(subst @var{from},@var{to},@var{text})
4819 Performs a textual replacement on the text @var{text}: each occurrence
4820 of @var{from} is replaced by @var{to}. The result is substituted for
4821 the function call. For example,
4824 $(subst ee,EE,feet on the street)
4827 substitutes the string @samp{fEEt on the strEEt}.
4829 @item $(patsubst @var{pattern},@var{replacement},@var{text})
4831 Finds whitespace-separated words in @var{text} that match
4832 @var{pattern} and replaces them with @var{replacement}. Here
4833 @var{pattern} may contain a @samp{%} which acts as a wildcard,
4834 matching any number of any characters within a word. If
4835 @var{replacement} also contains a @samp{%}, the @samp{%} is replaced
4836 by the text that matched the @samp{%} in @var{pattern}.@refill
4838 @cindex @code{%}, quoting in @code{patsubst}
4839 @cindex @code{%}, quoting with @code{\} (backslash)
4840 @cindex @code{\} (backslash), to quote @code{%}
4841 @cindex backslash (@code{\}), to quote @code{%}
4842 @cindex quoting @code{%}, in @code{patsubst}
4843 @samp{%} characters in @code{patsubst} function invocations can be
4844 quoted with preceding backslashes (@samp{\}). Backslashes that would
4845 otherwise quote @samp{%} characters can be quoted with more backslashes.
4846 Backslashes that quote @samp{%} characters or other backslashes are
4847 removed from the pattern before it is compared file names or has a stem
4848 substituted into it. Backslashes that are not in danger of quoting
4849 @samp{%} characters go unmolested. For example, the pattern
4850 @file{the\%weird\\%pattern\\} has @samp{the%weird\} preceding the
4851 operative @samp{%} character, and @samp{pattern\\} following it. The
4852 final two backslashes are left alone because they cannot affect any
4853 @samp{%} character.@refill
4855 Whitespace between words is folded into single space characters;
4856 leading and trailing whitespace is discarded.
4861 $(patsubst %.c,%.o,x.c.c bar.c)
4865 produces the value @samp{x.c.o bar.o}.
4867 Substitution references (@pxref{Substitution Refs, ,Substitution
4868 References}) are a simpler way to get the effect of the @code{patsubst}
4872 $(@var{var}:@var{pattern}=@var{replacement})
4879 $(patsubst @var{pattern},@var{replacement},$(@var{var}))
4882 The second shorthand simplifies one of the most common uses of
4883 @code{patsubst}: replacing the suffix at the end of file names.
4886 $(@var{var}:@var{suffix}=@var{replacement})
4893 $(patsubst %@var{suffix},%@var{replacement},$(@var{var}))
4897 For example, you might have a list of object files:
4900 objects = foo.o bar.o baz.o
4904 To get the list of corresponding source files, you could simply write:
4911 instead of using the general form:
4914 $(patsubst %.o,%.c,$(objects))
4917 @item $(strip @var{string})
4918 @cindex stripping whitespace
4919 @cindex whitespace, stripping
4920 @cindex spaces, stripping
4922 Removes leading and trailing whitespace from @var{string} and replaces
4923 each internal sequence of one or more whitespace characters with a
4924 single space. Thus, @samp{$(strip a b c )} results in @w{@samp{a b c}}.
4926 The function @code{strip} can be very useful when used in conjunction
4927 with conditionals. When comparing something with the empty string
4928 @samp{} using @code{ifeq} or @code{ifneq}, you usually want a string of
4929 just whitespace to match the empty string (@pxref{Conditionals}).
4931 Thus, the following may fail to have the desired results:
4935 ifneq "$(needs_made)" ""
4938 all:;@@echo 'Nothing to make!'
4943 Replacing the variable reference @w{@samp{$(needs_made)}} with the
4944 function call @w{@samp{$(strip $(needs_made))}} in the @code{ifneq}
4945 directive would make it more robust.@refill
4947 @item $(findstring @var{find},@var{in})
4949 @cindex searching for strings
4950 @cindex finding strings
4951 @cindex strings, searching for
4952 Searches @var{in} for an occurrence of @var{find}. If it occurs, the
4953 value is @var{find}; otherwise, the value is empty. You can use this
4954 function in a conditional to test for the presence of a specific
4955 substring in a given string. Thus, the two examples,
4958 $(findstring a,a b c)
4963 produce the values @samp{a} and @samp{} (the empty string),
4964 respectively. @xref{Testing Flags}, for a practical application of
4965 @code{findstring}.@refill
4969 @cindex filtering words
4970 @cindex words, filtering
4971 @item $(filter @var{pattern}@dots{},@var{text})
4972 Removes all whitespace-separated words in @var{text} that do
4973 @emph{not} match any of the @var{pattern} words, returning only
4974 matching words. The patterns are written using @samp{%}, just like
4975 the patterns used in the @code{patsubst} function above.@refill
4977 The @code{filter} function can be used to separate out different types
4978 of strings (such as file names) in a variable. For example:
4981 sources := foo.c bar.c baz.s ugh.h
4983 cc $(filter %.c %.s,$(sources)) -o foo
4987 says that @file{foo} depends of @file{foo.c}, @file{bar.c},
4988 @file{baz.s} and @file{ugh.h} but only @file{foo.c}, @file{bar.c} and
4989 @file{baz.s} should be specified in the command to the
4992 @item $(filter-out @var{pattern}@dots{},@var{text})
4994 @cindex filtering out words
4995 @cindex words, filtering out
4996 Removes all whitespace-separated words in @var{text} that @emph{do}
4997 match the @var{pattern} words, returning only the words that @emph{do
4998 not} match. This is the exact opposite of the @code{filter}
5005 objects=main1.o foo.o main2.o bar.o
5006 mains=main1.o main2.o
5011 the following generates a list which contains all the object files not
5015 $(filter-out $(mains),$(objects))
5020 @cindex sorting words
5021 @item $(sort @var{list})
5022 Sorts the words of @var{list} in lexical order, removing duplicate
5023 words. The output is a list of words separated by single spaces.
5027 $(sort foo bar lose)
5031 returns the value @samp{bar foo lose}.
5033 @cindex removing duplicate words
5034 @cindex duplicate words, removing
5035 @cindex words, removing duplicates
5036 Incidentally, since @code{sort} removes duplicate words, you can use
5037 it for this purpose even if you don't care about the sort order.
5040 Here is a realistic example of the use of @code{subst} and
5041 @code{patsubst}. Suppose that a makefile uses the @code{VPATH} variable
5042 to specify a list of directories that @code{make} should search for
5044 (@pxref{General Search, , @code{VPATH} Search Path for All Dependencies}).
5045 This example shows how to
5046 tell the C compiler to search for header files in the same list of
5049 The value of @code{VPATH} is a list of directories separated by colons,
5050 such as @samp{src:../headers}. First, the @code{subst} function is used to
5051 change the colons to spaces:
5054 $(subst :, ,$(VPATH))
5058 This produces @samp{src ../headers}. Then @code{patsubst} is used to turn
5059 each directory name into a @samp{-I} flag. These can be added to the
5060 value of the variable @code{CFLAGS}, which is passed automatically to the C
5061 compiler, like this:
5064 override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH)))
5068 The effect is to append the text @samp{-Isrc -I../headers} to the
5069 previously given value of @code{CFLAGS}. The @code{override} directive is
5070 used so that the new value is assigned even if the previous value of
5071 @code{CFLAGS} was specified with a command argument (@pxref{Override
5072 Directive, , The @code{override} Directive}).
5074 @node Filename Functions, Foreach Function, Text Functions, Functions
5075 @section Functions for File Names
5076 @cindex functions, for file names
5077 @cindex file name functions
5079 Several of the built-in expansion functions relate specifically to
5080 taking apart file names or lists of file names.
5082 Each of the following functions performs a specific transformation on a
5083 file name. The argument of the function is regarded as a series of file
5084 names, separated by whitespace. (Leading and trailing whitespace is
5085 ignored.) Each file name in the series is transformed in the same way and
5086 the results are concatenated with single spaces between them.
5089 @item $(dir @var{names}@dots{})
5091 @cindex directory part
5092 @cindex file name, directory part
5093 Extracts the directory-part of each file name in @var{names}. The
5094 directory-part of the file name is everything up through (and
5095 including) the last slash in it. If the file name contains no slash,
5096 the directory part is the string @samp{./}. For example,
5099 $(dir src/foo.c hacks)
5103 produces the result @samp{src/ ./}.
5105 @item $(notdir @var{names}@dots{})
5107 @cindex file name, nondirectory part
5108 @cindex nondirectory part
5109 Extracts all but the directory-part of each file name in @var{names}.
5110 If the file name contains no slash, it is left unchanged. Otherwise,
5111 everything through the last slash is removed from it.
5113 A file name that ends with a slash becomes an empty string. This is
5114 unfortunate, because it means that the result does not always have the
5115 same number of whitespace-separated file names as the argument had;
5116 but we do not see any other valid alternative.
5121 $(notdir src/foo.c hacks)
5125 produces the result @samp{foo.c hacks}.
5127 @item $(suffix @var{names}@dots{})
5129 @cindex suffix, function to find
5130 @cindex file name suffix
5131 Extracts the suffix of each file name in @var{names}. If the file name
5132 contains a period, the suffix is everything starting with the last
5133 period. Otherwise, the suffix is the empty string. This frequently
5134 means that the result will be empty when @var{names} is not, and if
5135 @var{names} contains multiple file names, the result may contain fewer
5141 $(suffix src/foo.c hacks)
5145 produces the result @samp{.c}.
5147 @item $(basename @var{names}@dots{})
5150 @cindex file name, basename of
5151 Extracts all but the suffix of each file name in @var{names}. If the
5152 file name contains a period, the basename is everything starting up to
5153 (and not including) the last period. Otherwise, the basename is the
5154 entire file name. For example,
5157 $(basename src/foo.c hacks)
5161 produces the result @samp{src/foo hacks}.
5163 @c plural convention with dots (be consistent)
5164 @item $(addsuffix @var{suffix},@var{names}@dots{})
5166 @cindex suffix, adding
5167 @cindex file name suffix, adding
5168 The argument @var{names} is regarded as a series of names, separated
5169 by whitespace; @var{suffix} is used as a unit. The value of
5170 @var{suffix} is appended to the end of each individual name and the
5171 resulting larger names are concatenated with single spaces between
5175 $(addsuffix .c,foo bar)
5179 produces the result @samp{foo.c bar.c}.
5181 @item $(addprefix @var{prefix},@var{names}@dots{})
5183 @cindex prefix, adding
5184 @cindex file name prefix, adding
5185 The argument @var{names} is regarded as a series of names, separated
5186 by whitespace; @var{prefix} is used as a unit. The value of
5187 @var{prefix} is prepended to the front of each individual name and the
5188 resulting larger names are concatenated with single spaces between
5192 $(addprefix src/,foo bar)
5196 produces the result @samp{src/foo src/bar}.
5198 @item $(join @var{list1},@var{list2})
5200 @cindex joining lists of words
5201 @cindex words, joining lists
5202 Concatenates the two arguments word by word: the two first words (one
5203 from each argument) concatenated form the first word of the result, the
5204 two second words form the second word of the result, and so on. So the
5205 @var{n}th word of the result comes from the @var{n}th word of each
5206 argument. If one argument has more words that the other, the extra
5207 words are copied unchanged into the result.
5209 For example, @samp{$(join a b,.c .o)} produces @samp{a.c b.o}.
5211 Whitespace between the words in the lists is not preserved; it is
5212 replaced with a single space.
5214 This function can merge the results of the @code{dir} and
5215 @code{notdir} functions, to produce the original list of files which
5216 was given to those two functions.@refill
5218 @item $(word @var{n},@var{text})
5220 @cindex words, selecting
5221 @cindex selecting words
5222 Returns the @var{n}th word of @var{text}. The legitimate values of
5223 @var{n} start from 1. If @var{n} is bigger than the number of words
5224 in @var{text}, the value is empty. For example,
5227 $(word 2, foo bar baz)
5233 @c Following item phrased to prevent overfull hbox. --RJC 17 Jul 92
5234 @item $(words @var{text})
5236 @cindex words, finding number
5237 Returns the number of words in @var{text}.
5238 Thus, the last word of @var{text} is
5239 @w{@code{$(word $(words @var{text}),@var{text})}}.@refill
5241 @item $(firstword @var{names}@dots{})
5243 @cindex words, extracting first
5244 The argument @var{names} is regarded as a series of names, separated
5245 by whitespace. The value is the first name in the series. The rest
5246 of the names are ignored.
5251 $(firstword foo bar)
5255 produces the result @samp{foo}. Although @code{$(firstword
5256 @var{text})} is the same as @code{$(word 1,@var{text})}, the
5257 @code{firstword} function is retained for its simplicity.@refill
5259 @item $(wildcard @var{pattern})
5261 @cindex wildcard, function
5262 The argument @var{pattern} is a file name pattern, typically containing
5263 wildcard characters (as in shell file name patterns). The result of
5264 @code{wildcard} is a space-separated list of the names of existing files
5265 that match the pattern.
5266 @xref{Wildcards, ,Using Wildcard Characters in File Names}.
5269 @node Foreach Function, Origin Function, Filename Functions, Functions
5270 @section The @code{foreach} Function
5272 @cindex words, iterating over
5274 The @code{foreach} function is very different from other functions. It
5275 causes one piece of text to be used repeatedly, each time with a different
5276 substitution performed on it. It resembles the @code{for} command in the
5277 shell @code{sh} and the @code{foreach} command in the C-shell @code{csh}.
5279 The syntax of the @code{foreach} function is:
5282 $(foreach @var{var},@var{list},@var{text})
5286 The first two arguments, @var{var} and @var{list}, are expanded before
5287 anything else is done; note that the last argument, @var{text}, is
5288 @strong{not} expanded at the same time. Then for each word of the expanded
5289 value of @var{list}, the variable named by the expanded value of @var{var}
5290 is set to that word, and @var{text} is expanded. Presumably @var{text}
5291 contains references to that variable, so its expansion will be different
5294 The result is that @var{text} is expanded as many times as there are
5295 whitespace-separated words in @var{list}. The multiple expansions of
5296 @var{text} are concatenated, with spaces between them, to make the result
5299 This simple example sets the variable @samp{files} to the list of all files
5300 in the directories in the list @samp{dirs}:
5304 files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
5307 Here @var{text} is @samp{$(wildcard $(dir)/*)}. The first repetition
5308 finds the value @samp{a} for @code{dir}, so it produces the same result
5309 as @samp{$(wildcard a/*)}; the second repetition produces the result
5310 of @samp{$(wildcard b/*)}; and the third, that of @samp{$(wildcard c/*)}.
5312 This example has the same result (except for setting @samp{dirs}) as
5313 the following example:
5316 files := $(wildcard a/* b/* c/* d/*)
5319 When @var{text} is complicated, you can improve readability by giving it
5320 a name, with an additional variable:
5323 find_files = $(wildcard $(dir)/*)
5325 files := $(foreach dir,$(dirs),$(find_files))
5329 Here we use the variable @code{find_files} this way. We use plain @samp{=}
5330 to define a recursively-expanding variable, so that its value contains an
5331 actual function call to be reexpanded under the control of @code{foreach};
5332 a simply-expanded variable would not do, since @code{wildcard} would be
5333 called only once at the time of defining @code{find_files}.
5335 The @code{foreach} function has no permanent effect on the variable
5336 @var{var}; its value and flavor after the @code{foreach} function call are
5337 the same as they were beforehand. The other values which are taken from
5338 @var{list} are in effect only temporarily, during the execution of
5339 @code{foreach}. The variable @var{var} is a simply-expanded variable
5340 during the execution of @code{foreach}. If @var{var} was undefined
5341 before the @code{foreach} function call, it is undefined after the call.
5342 @xref{Flavors, ,The Two Flavors of Variables}.@refill
5344 You must take care when using complex variable expressions that result in
5345 variable names because many strange things are valid variable names, but
5346 are probably not what you intended. For example,
5349 files := $(foreach Es escrito en espanol!,b c ch,$(find_files))
5353 might be useful if the value of @code{find_files} references the variable
5354 whose name is @samp{Es escrito en espanol!} (es un nombre bastante largo,
5355 no?), but it is more likely to be a mistake.
5357 @node Origin Function, Shell Function, Foreach Function, Functions
5358 @section The @code{origin} Function
5360 @cindex variables, origin of
5361 @cindex origin of variable
5363 The @code{origin} function is unlike most other functions in that it does
5364 not operate on the values of variables; it tells you something @emph{about}
5365 a variable. Specifically, it tells you where it came from.
5367 The syntax of the @code{origin} function is:
5370 $(origin @var{variable})
5373 Note that @var{variable} is the @emph{name} of a variable to inquire about;
5374 not a @emph{reference} to that variable. Therefore you would not normally
5375 use a @samp{$} or parentheses when writing it. (You can, however, use a
5376 variable reference in the name if you want the name not to be a constant.)
5378 The result of this function is a string telling you how the variable
5379 @var{variable} was defined:
5384 if @var{variable} was never defined.
5388 if @var{variable} has a default definition, as is usual with @code{CC}
5389 and so on. @xref{Implicit Variables, ,Variables Used by Implicit Rules}.
5390 Note that if you have redefined a default variable, the @code{origin}
5391 function will return the origin of the later definition.
5395 if @var{variable} was defined as an environment variable and the
5396 @samp{-e} option is @emph{not} turned on (@pxref{Options Summary, ,Summary of Options}).
5398 @item environment override
5400 if @var{variable} was defined as an environment variable and the
5401 @w{@samp{-e}} option @emph{is} turned on (@pxref{Options Summary,
5402 ,Summary of Options}).@refill
5406 if @var{variable} was defined in a makefile.
5410 if @var{variable} was defined on the command line.
5414 if @var{variable} was defined with an @code{override} directive in a
5415 makefile (@pxref{Override Directive, ,The @code{override} Directive}).
5419 if @var{variable} is an automatic variable defined for the
5420 execution of the commands for each rule
5421 (@pxref{Automatic, , Automatic Variables}).
5424 This information is primarily useful (other than for your curiosity) to
5425 determine if you want to believe the value of a variable. For example,
5426 suppose you have a makefile @file{foo} that includes another makefile
5427 @file{bar}. You want a variable @code{bletch} to be defined in @file{bar}
5428 if you run the command @w{@samp{make -f bar}}, even if the environment contains
5429 a definition of @code{bletch}. However, if @file{foo} defined
5430 @code{bletch} before including @file{bar}, you do not want to override that
5431 definition. This could be done by using an @code{override} directive in
5432 @file{foo}, giving that definition precedence over the later definition in
5433 @file{bar}; unfortunately, the @code{override} directive would also
5434 override any command line definitions. So, @file{bar} could
5440 ifeq "$(origin bletch)" "environment"
5441 bletch = barf, gag, etc.
5448 If @code{bletch} has been defined from the environment, this will redefine
5451 If you want to override a previous definition of @code{bletch} if it came
5452 from the environment, even under @samp{-e}, you could instead write:
5456 ifneq "$(findstring environment,$(origin bletch))" ""
5457 bletch = barf, gag, etc.
5462 Here the redefinition takes place if @samp{$(origin bletch)} returns either
5463 @samp{environment} or @samp{environment override}.
5464 @xref{Text Functions, , Functions for String Substitution and Analysis}.
5466 @node Shell Function, , Origin Function, Functions
5467 @section The @code{shell} Function
5469 @cindex commands, expansion
5471 @cindex shell command, function for
5473 The @code{shell} function is unlike any other function except the
5474 @code{wildcard} function
5475 (@pxref{Wildcard Function, ,The Function @code{wildcard}}) in that it
5476 communicates with the world outside of @code{make}.
5478 The @code{shell} function performs the same function that backquotes
5479 (@samp{`}) perform in most shells: it does @dfn{command expansion}. This
5480 means that it takes an argument that is a shell command and returns the
5481 output of the command. The only processing @code{make} does on the result,
5482 before substituting it into the surrounding text, is to convert newlines to
5485 The commands run by calls to the @code{shell} function are run when the
5486 function calls are expanded. In most cases, this is when the makefile is
5487 read in. The exception is that function calls in the commands of the rules
5488 are expanded when the commands are run, and this applies to @code{shell}
5489 function calls like all others.
5491 Here are some examples of the use of the @code{shell} function:
5494 contents := $(shell cat foo)
5498 sets @code{contents} to the contents of the file @file{foo}, with a space
5499 (rather than a newline) separating each line.
5502 files := $(shell echo *.c)
5506 sets @code{files} to the expansion of @samp{*.c}. Unless @code{make} is
5507 using a very strange shell, this has the same result as
5508 @w{@samp{$(wildcard *.c)}}.@refill
5510 @node Running, Implicit Rules, Functions, Top
5511 @chapter How to Run @code{make}
5513 A makefile that says how to recompile a program can be used in more
5514 than one way. The simplest use is to recompile every file that is out
5515 of date. Usually, makefiles are written so that if you run
5516 @code{make} with no arguments, it does just that.
5518 But you might want to update only some of the files; you might want to use
5519 a different compiler or different compiler options; you might want just to
5520 find out which files are out of date without changing them.
5522 By giving arguments when you run @code{make}, you can do any of these
5523 things and many others.
5525 The exit status of @code{make} is always one of three values:
5528 The exit status is zero if @code{make} is successful.
5530 The exit status is two if @code{make} encounters any errors.
5531 It will print messages describing the particular errors.
5533 The exit status is one if you use the @samp{-q} flag and @code{make}
5534 determines that some target is not already up to date.
5535 @xref{Instead of Execution, ,Instead of Executing the Commands}.
5539 * Makefile Arguments:: How to specify which makefile to use.
5540 * Goals:: How to use goal arguments to specify which
5541 parts of the makefile to use.
5542 * Instead of Execution:: How to use mode flags to specify what
5543 kind of thing to do with the commands
5544 in the makefile other than simply
5546 * Avoiding Compilation:: How to avoid recompiling certain files.
5547 * Overriding:: How to override a variable to specify
5548 an alternate compiler and other things.
5549 * Testing:: How to proceed past some errors, to
5551 * Options Summary:: Summary of Options
5554 @node Makefile Arguments, Goals, , Running
5555 @section Arguments to Specify the Makefile
5556 @cindex @code{--file}
5557 @cindex @code{--makefile}
5560 The way to specify the name of the makefile is with the @samp{-f} or
5561 @samp{--file} option (@samp{--makefile} also works). For example,
5562 @samp{-f altmake} says to use the file @file{altmake} as the makefile.
5564 If you use the @samp{-f} flag several times and follow each @samp{-f}
5565 with an argument, all the specified files are used jointly as
5568 If you do not use the @samp{-f} or @samp{--file} flag, the default is
5569 to try @file{GNUmakefile}, @file{makefile}, and @file{Makefile}, in
5570 that order, and use the first of these three which exists or can be made
5571 (@pxref{Makefiles, ,Writing Makefiles}).@refill
5573 @node Goals, Instead of Execution, Makefile Arguments, Running
5574 @section Arguments to Specify the Goals
5575 @cindex goal, how to specify
5577 The @dfn{goals} are the targets that @code{make} should strive ultimately
5578 to update. Other targets are updated as well if they appear as
5579 dependencies of goals, or dependencies of dependencies of goals, etc.
5581 By default, the goal is the first target in the makefile (not counting
5582 targets that start with a period). Therefore, makefiles are usually
5583 written so that the first target is for compiling the entire program or
5584 programs they describe.
5586 You can specify a different goal or goals with arguments to @code{make}.
5587 Use the name of the goal as an argument. If you specify several goals,
5588 @code{make} processes each of them in turn, in the order you name them.
5590 Any target in the makefile may be specified as a goal (unless it
5591 starts with @samp{-} or contains an @samp{=}, in which case it will be
5592 parsed as a switch or variable definition, respectively). Even
5593 targets not in the makefile may be specified, if @code{make} can find
5594 implicit rules that say how to make them.
5596 One use of specifying a goal is if you want to compile only a part of
5597 the program, or only one of several programs. Specify as a goal each
5598 file that you wish to remake. For example, consider a directory containing
5599 several programs, with a makefile that starts like this:
5603 all: size nm ld ar as
5606 If you are working on the program @code{size}, you might want to say
5607 @w{@samp{make size}} so that only the files of that program are recompiled.
5609 Another use of specifying a goal is to make files that are not normally
5610 made. For example, there may be a file of debugging output, or a
5611 version of the program that is compiled specially for testing, which has
5612 a rule in the makefile but is not a dependency of the default goal.
5614 Another use of specifying a goal is to run the commands associated with
5615 a phony target (@pxref{Phony Targets}) or empty target (@pxref{Empty
5616 Targets, ,Empty Target Files to Record Events}). Many makefiles contain
5617 a phony target named @file{clean} which deletes everything except source
5618 files. Naturally, this is done only if you request it explicitly with
5619 @w{@samp{make clean}}. Following is a list of typical phony and empty
5620 target names. @xref{Standard Targets}, for a detailed list of all the
5621 standard target names which GNU software packages use.
5625 @cindex @code{all} @r{(standard target)}
5626 Make all the top-level targets the makefile knows about.
5629 @cindex @code{clean} @r{(standard target)}
5630 Delete all files that are normally created by running @code{make}.
5633 @cindex @code{mostlyclean} @r{(standard target)}
5634 Like @samp{clean}, but may refrain from deleting a few files that people
5635 normally don't want to recompile. For example, the @samp{mostlyclean}
5636 target for GCC does not delete @file{libgcc.a}, because recompiling it
5637 is rarely necessary and takes a lot of time.
5640 @cindex @code{distclean} @r{(standard target)}
5642 @cindex @code{realclean} @r{(standard target)}
5644 @cindex @code{clobber} @r{(standard target)}
5645 Any of these targets might be defined to delete @emph{more} files than
5646 @samp{clean} does. For example, this would delete configuration files
5647 or links that you would normally create as preparation for compilation,
5648 even if the makefile itself cannot create these files.
5651 @cindex @code{install} @r{(standard target)}
5652 Copy the executable file into a directory that users typically search
5653 for commands; copy any auxiliary files that the executable uses into
5654 the directories where it will look for them.
5657 @cindex @code{print} @r{(standard target)}
5658 Print listings of the source files that have changed.
5661 @cindex @code{tar} @r{(standard target)}
5662 Create a tar file of the source files.
5665 @cindex @code{shar} @r{(standard target)}
5666 Create a shell archive (shar file) of the source files.
5669 @cindex @code{dist} @r{(standard target)}
5670 Create a distribution file of the source files. This might
5671 be a tar file, or a shar file, or a compressed version of one of the
5672 above, or even more than one of the above.
5675 @cindex @code{TAGS} @r{(standard target)}
5676 Update a tags table for this program.
5679 @cindex @code{check} @r{(standard target)}
5681 @cindex @code{test} @r{(standard target)}
5682 Perform self tests on the program this makefile builds.
5685 @node Instead of Execution, Avoiding Compilation, Goals, Running
5686 @section Instead of Executing the Commands
5687 @cindex execution, instead of
5688 @cindex commands, instead of executing
5690 The makefile tells @code{make} how to tell whether a target is up to date,
5691 and how to update each target. But updating the targets is not always
5692 what you want. Certain options specify other activities for @code{make}.
5694 @comment Extra blank lines make it print better.
5700 @cindex @code{--just-print}
5701 @cindex @code{--dry-run}
5702 @cindex @code{--recon}
5705 ``No-op''. The activity is to print what commands would be used to make
5706 the targets up to date, but not actually execute them.
5710 @cindex @code{--touch}
5711 @cindex touching files
5712 @cindex target, touching
5715 ``Touch''. The activity is to mark the targets as up to date without
5716 actually changing them. In other words, @code{make} pretends to compile
5717 the targets but does not really change their contents.
5721 @cindex @code{--question}
5723 @cindex question mode
5725 ``Question''. The activity is to find out silently whether the targets
5726 are up to date already; but execute no commands in either case. In other
5727 words, neither compilation nor output will occur.
5730 @itemx --what-if=@var{file}
5731 @itemx --assume-new=@var{file}
5732 @itemx --new-file=@var{file}
5733 @cindex @code{--what-if}
5735 @cindex @code{--assume-new}
5736 @cindex @code{--new-file}
5738 @cindex files, assuming new
5740 ``What if''. Each @samp{-W} flag is followed by a file name. The given
5741 files' modification times are recorded by @code{make} as being the present
5742 time, although the actual modification times remain the same.
5743 You can use the @samp{-W} flag in conjunction with the @samp{-n} flag
5744 to see what would happen if you were to modify specific files.@refill
5747 With the @samp{-n} flag, @code{make} prints the commands that it would
5748 normally execute but does not execute them.
5750 With the @samp{-t} flag, @code{make} ignores the commands in the rules
5751 and uses (in effect) the command @code{touch} for each target that needs to
5752 be remade. The @code{touch} command is also printed, unless @samp{-s} or
5753 @code{.SILENT} is used. For speed, @code{make} does not actually invoke
5754 the program @code{touch}. It does the work directly.
5756 With the @samp{-q} flag, @code{make} prints nothing and executes no
5757 commands, but the exit status code it returns is zero if and only if the
5758 targets to be considered are already up to date. If the exit status is
5759 one, then some updating needs to be done. If @code{make} encounters an
5760 error, the exit status is two, so you can distinguish an error from a
5761 target that is not up to date.
5763 It is an error to use more than one of these three flags in the same
5764 invocation of @code{make}.
5766 The @samp{-n}, @samp{-t}, and @samp{-q} options do not affect command
5767 lines that begin with @samp{+} characters or contain the strings
5768 @samp{$(MAKE)} or @samp{$@{MAKE@}}. Note that only the line containing
5769 the @samp{+} character or the strings @samp{$(MAKE)} or @samp{$@{MAKE@}}
5770 is run regardless of these options. Other lines in the same rule are
5771 not run unless they too begin with @samp{+} or contain @samp{$(MAKE)} or
5772 @samp{$@{MAKE@}} (@xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.)
5774 The @samp{-W} flag provides two features:
5778 If you also use the @samp{-n} or @samp{-q} flag, you can see what
5779 @code{make} would do if you were to modify some files.
5782 Without the @samp{-n} or @samp{-q} flag, when @code{make} is actually
5783 executing commands, the @samp{-W} flag can direct @code{make} to act
5784 as if some files had been modified, without actually modifying the
5788 Note that the options @samp{-p} and @samp{-v} allow you to obtain other
5789 information about @code{make} or about the makefiles in use
5790 (@pxref{Options Summary, ,Summary of Options}).@refill
5792 @node Avoiding Compilation, Overriding, Instead of Execution, Running
5793 @section Avoiding Recompilation of Some Files
5795 @cindex @code{--old-file}
5796 @cindex @code{--assume-old}
5797 @cindex files, assuming old
5798 @cindex files, avoiding recompilation of
5799 @cindex recompilation, avoiding
5801 Sometimes you may have changed a source file but you do not want to
5802 recompile all the files that depend on it. For example, suppose you add a
5803 macro or a declaration to a header file that many other files depend on.
5804 Being conservative, @code{make} assumes that any change in the header file
5805 requires recompilation of all dependent files, but you know that they do not
5806 need to be recompiled and you would rather not waste the time waiting for
5809 If you anticipate the problem before changing the header file, you can
5810 use the @samp{-t} flag. This flag tells @code{make} not to run the
5811 commands in the rules, but rather to mark the target up to date by
5812 changing its last-modification date. You would follow this procedure:
5816 Use the command @samp{make} to recompile the source files that really
5820 Make the changes in the header files.
5823 Use the command @samp{make -t} to mark all the object files as
5824 up to date. The next time you run @code{make}, the changes in the
5825 header files will not cause any recompilation.
5828 If you have already changed the header file at a time when some files
5829 do need recompilation, it is too late to do this. Instead, you can
5830 use the @w{@samp{-o @var{file}}} flag, which marks a specified file as
5831 ``old'' (@pxref{Options Summary, ,Summary of Options}). This means
5832 that the file itself will not be remade, and nothing else will be
5833 remade on its account. Follow this procedure:
5837 Recompile the source files that need compilation for reasons independent
5838 of the particular header file, with @samp{make -o @var{headerfile}}.
5839 If several header files are involved, use a separate @samp{-o} option
5840 for each header file.
5843 Touch all the object files with @samp{make -t}.
5846 @node Overriding, Testing, Avoiding Compilation, Running
5847 @section Overriding Variables
5848 @cindex overriding variables with arguments
5849 @cindex variables, overriding with arguments
5850 @cindex command line variables
5851 @cindex variables, command line
5853 An argument that contains @samp{=} specifies the value of a variable:
5854 @samp{@var{v}=@var{x}} sets the value of the variable @var{v} to @var{x}.
5855 If you specify a value in this way, all ordinary assignments of the same
5856 variable in the makefile are ignored; we say they have been
5857 @dfn{overridden} by the command line argument.
5859 The most common way to use this facility is to pass extra flags to
5860 compilers. For example, in a properly written makefile, the variable
5861 @code{CFLAGS} is included in each command that runs the C compiler, so a
5862 file @file{foo.c} would be compiled something like this:
5865 cc -c $(CFLAGS) foo.c
5868 Thus, whatever value you set for @code{CFLAGS} affects each compilation
5869 that occurs. The makefile probably specifies the usual value for
5870 @code{CFLAGS}, like this:
5876 Each time you run @code{make}, you can override this value if you
5877 wish. For example, if you say @samp{make CFLAGS='-g -O'}, each C
5878 compilation will be done with @samp{cc -c -g -O}. (This illustrates
5879 how you can use quoting in the shell to enclose spaces and other
5880 special characters in the value of a variable when you override it.)
5882 The variable @code{CFLAGS} is only one of many standard variables that
5883 exist just so that you can change them this way. @xref{Implicit
5884 Variables, , Variables Used by Implicit Rules}, for a complete list.
5886 You can also program the makefile to look at additional variables of your
5887 own, giving the user the ability to control other aspects of how the
5888 makefile works by changing the variables.
5890 When you override a variable with a command argument, you can define either
5891 a recursively-expanded variable or a simply-expanded variable. The
5892 examples shown above make a recursively-expanded variable; to make a
5893 simply-expanded variable, write @samp{:=} instead of @samp{=}. But, unless
5894 you want to include a variable reference or function call in the
5895 @emph{value} that you specify, it makes no difference which kind of
5896 variable you create.
5898 There is one way that the makefile can change a variable that you have
5899 overridden. This is to use the @code{override} directive, which is a line
5900 that looks like this: @samp{override @var{variable} = @var{value}}
5901 (@pxref{Override Directive, ,The @code{override} Directive}).
5903 @node Testing, Options Summary, Overriding, Running
5904 @section Testing the Compilation of a Program
5905 @cindex testing compilation
5906 @cindex compilation, testing
5908 Normally, when an error happens in executing a shell command, @code{make}
5909 gives up immediately, returning a nonzero status. No further commands are
5910 executed for any target. The error implies that the goal cannot be
5911 correctly remade, and @code{make} reports this as soon as it knows.
5913 When you are compiling a program that you have just changed, this is not
5914 what you want. Instead, you would rather that @code{make} try compiling
5915 every file that can be tried, to show you as many compilation errors
5919 @cindex @code{--keep-going}
5920 On these occasions, you should use the @samp{-k} or
5921 @samp{--keep-going} flag. This tells @code{make} to continue to
5922 consider the other dependencies of the pending targets, remaking them
5923 if necessary, before it gives up and returns nonzero status. For
5924 example, after an error in compiling one object file, @samp{make -k}
5925 will continue compiling other object files even though it already
5926 knows that linking them will be impossible. In addition to continuing
5927 after failed shell commands, @samp{make -k} will continue as much as
5928 possible after discovering that it does not know how to make a target
5929 or dependency file. This will always cause an error message, but
5930 without @samp{-k}, it is a fatal error (@pxref{Options Summary,
5931 ,Summary of Options}).@refill
5933 The usual behavior of @code{make} assumes that your purpose is to get the
5934 goals up to date; once @code{make} learns that this is impossible, it might
5935 as well report the failure immediately. The @samp{-k} flag says that the
5936 real purpose is to test as much as possible of the changes made in the
5937 program, perhaps to find several independent problems so that you can
5938 correct them all before the next attempt to compile. This is why Emacs'
5939 @kbd{M-x compile} command passes the @samp{-k} flag by default.
5941 @node Options Summary, , Testing, Running
5942 @section Summary of Options
5947 Here is a table of all the options @code{make} understands:
5954 These options are ignored for compatibility with other versions of @code{make}.
5958 @itemx --directory=@var{dir}
5959 @cindex @code{--directory}
5960 Change to directory @var{dir} before reading the makefiles. If multiple
5961 @samp{-C} options are specified, each is interpreted relative to the
5962 previous one: @samp{-C / -C etc} is equivalent to @samp{-C /etc}.
5963 This is typically used with recursive invocations of @code{make}
5964 (@pxref{Recursion, ,Recursive Use of @code{make}}).
5969 @cindex @code{--debug}
5970 @c Extra blank line here makes the table look better.
5972 Print debugging information in addition to normal processing. The
5973 debugging information says which files are being considered for
5974 remaking, which file-times are being compared and with what results,
5975 which files actually need to be remade, which implicit rules are
5976 considered and which are applied---everything interesting about how
5977 @code{make} decides what to do.
5981 @itemx --environment-overrides
5982 @cindex @code{--environment-overrides}
5983 Give variables taken from the environment precedence
5984 over variables from makefiles.
5985 @xref{Environment, ,Variables from the Environment}.
5989 @itemx --file=@var{file}
5990 @cindex @code{--file}
5991 @itemx --makefile=@var{file}
5992 @cindex @code{--makefile}
5993 Read the file named @var{file} as a makefile.
5994 @xref{Makefiles, ,Writing Makefiles}.
5999 @cindex @code{--help}
6000 @c Extra blank line here makes the table look better.
6002 Remind you of the options that @code{make} understands and then exit.
6006 @itemx --ignore-errors
6007 @cindex @code{--ignore-errors}
6008 Ignore all errors in commands executed to remake files.
6009 @xref{Errors, ,Errors in Commands}.
6013 @itemx --include-dir=@var{dir}
6014 @cindex @code{--include-dir}
6015 Specifies a directory @var{dir} to search for included makefiles.
6016 @xref{Include, ,Including Other Makefiles}. If several @samp{-I}
6017 options are used to specify several directories, the directories are
6018 searched in the order specified.
6020 @item -j [@var{jobs}]
6022 @itemx --jobs=[@var{jobs}]
6023 @cindex @code{--jobs}
6024 Specifies the number of jobs (commands) to run simultaneously. With no
6025 argument, @code{make} runs as many jobs simultaneously as possible. If
6026 there is more than one @samp{-j} option, the last one is effective.
6027 @xref{Parallel, ,Parallel Execution},
6028 for more information on how commands are run.
6033 @cindex @code{--keep-going}
6034 Continue as much as possible after an error. While the target that
6035 failed, and those that depend on it, cannot be remade, the other
6036 dependencies of these targets can be processed all the same.
6037 @xref{Testing, ,Testing the Compilation of a Program}.
6039 @item -l [@var{load}]
6041 @itemx --load-average[=@var{load}]
6042 @cindex @code{--load-average}
6043 @itemx --max-load[=@var{load}]
6044 @cindex @code{--max-load}
6045 Specifies that no new jobs (commands) should be started if there are
6046 other jobs running and the load average is at least @var{load} (a
6047 floating-point number). With no argument, removes a previous load
6048 limit. @xref{Parallel, ,Parallel Execution}.
6053 @cindex @code{--just-print}
6055 @cindex @code{--dry-run}
6057 @cindex @code{--recon}
6058 @c Extra blank line here makes the table look better.
6060 Print the commands that would be executed, but do not execute them.
6061 @xref{Instead of Execution, ,Instead of Executing the Commands}.
6065 @itemx --old-file=@var{file}
6066 @cindex @code{--old-file}
6067 @itemx --assume-old=@var{file}
6068 @cindex @code{--assume-old}
6069 Do not remake the file @var{file} even if it is older than its
6070 dependencies, and do not remake anything on account of changes in
6071 @var{file}. Essentially the file is treated as very old and its rules
6072 are ignored. @xref{Avoiding Compilation, ,Avoiding Recompilation of
6077 @itemx --print-data-base
6078 @cindex @code{--print-data-base}
6079 Print the data base (rules and variable values) that results from
6080 reading the makefiles; then execute as usual or as otherwise
6081 specified. This also prints the version information given by
6082 the @samp{-v} switch (see below). To print the data base without
6083 trying to remake any files, use @w{@samp{make -p -f /dev/null}}.
6088 @cindex @code{--question}
6089 ``Question mode''. Do not run any commands, or print anything; just
6090 return an exit status that is zero if the specified targets are already
6091 up to date, one if any remaking is required, or two if an error is
6092 encountered. @xref{Instead of Execution, ,Instead of Executing the
6097 @itemx --no-builtin-rules
6098 @cindex @code{--no-builtin-rules}
6099 Eliminate use of the built-in implicit rules (@pxref{Implicit Rules,
6100 ,Using Implicit Rules}). You can still define your own by writing
6101 pattern rules (@pxref{Pattern Rules, ,Defining and Redefining Pattern
6102 Rules}). The @samp{-r} option also clears out the default list of
6103 suffixes for suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix
6104 Rules}). But you can still define your own suffixes with a rule for
6105 @code{.SUFFIXES}, and then define your own suffix rules.
6110 @cindex @code{--silent}
6112 @cindex @code{--quiet}
6113 @c Extra blank line here makes the table look better.
6115 Silent operation; do not print the commands as they are executed.
6116 @xref{Echoing, ,Command Echoing}.
6120 @itemx --no-keep-going
6121 @cindex @code{--no-keep-going}
6123 @cindex @code{--stop}
6124 @c Extra blank line here makes the table look better.
6126 Cancel the effect of the @samp{-k} option. This is never necessary
6127 except in a recursive @code{make} where @samp{-k} might be inherited
6128 from the top-level @code{make} via @code{MAKEFLAGS}
6129 (@pxref{Recursion, ,Recursive Use of @code{make}})
6130 or if you set @samp{-k} in @code{MAKEFLAGS} in your environment.@refill
6135 @cindex @code{--touch}
6136 @c Extra blank line here makes the table look better.
6138 Touch files (mark them up to date without really changing them)
6139 instead of running their commands. This is used to pretend that the
6140 commands were done, in order to fool future invocations of
6141 @code{make}. @xref{Instead of Execution, ,Instead of Executing the Commands}.
6146 @cindex @code{--version}
6147 Print the version of the @code{make} program plus a copyright, a list
6148 of authors, and a notice that there is no warranty; then exit.
6152 @itemx --print-directory
6153 @cindex @code{--print-directory}
6154 Print a message containing the working directory both before and after
6155 executing the makefile. This may be useful for tracking down errors
6156 from complicated nests of recursive @code{make} commands.
6157 @xref{Recursion, ,Recursive Use of @code{make}}. (In practice, you
6158 rarely need to specify this option since @samp{make} does it for you;
6159 see @ref{-w Option, ,The @samp{--print-directory} Option}.)
6161 @itemx --no-print-directory
6162 @cindex @code{--no-print-directory}
6163 Disable printing of the working directory under @code{-w}.
6164 This option is useful when @code{-w} is turned on automatically,
6165 but you do not want to see the extra messages.
6166 @xref{-w Option, ,The @samp{--print-directory} Option}.
6170 @itemx --what-if=@var{file}
6171 @cindex @code{--what-if}
6172 @itemx --new-file=@var{file}
6173 @cindex @code{--new-file}
6174 @itemx --assume-new=@var{file}
6175 @cindex @code{--assume-new}
6176 Pretend that the target @var{file} has just been modified. When used
6177 with the @samp{-n} flag, this shows you what would happen if you were
6178 to modify that file. Without @samp{-n}, it is almost the same as
6179 running a @code{touch} command on the given file before running
6180 @code{make}, except that the modification time is changed only in the
6181 imagination of @code{make}.
6182 @xref{Instead of Execution, ,Instead of Executing the Commands}.
6184 @item --warn-undefined-variables
6185 @cindex @code{--warn-undefined-variables}
6186 @cindex variables, warning for undefined
6187 @cindex undefined variables, warning message
6188 Issue a warning message whenever @code{make} sees a reference to an
6189 undefined variable. This can be helpful when you are trying to debug
6190 makefiles which use variables in complex ways.
6193 @node Implicit Rules, Archives, Running, Top
6194 @chapter Using Implicit Rules
6195 @cindex implicit rule
6196 @cindex rule, implicit
6198 Certain standard ways of remaking target files are used very often. For
6199 example, one customary way to make an object file is from a C source file
6200 using the C compiler, @code{cc}.
6202 @dfn{Implicit rules} tell @code{make} how to use customary techniques so
6203 that you do not have to specify them in detail when you want to use
6204 them. For example, there is an implicit rule for C compilation. File
6205 names determine which implicit rules are run. For example, C
6206 compilation typically takes a @file{.c} file and makes a @file{.o} file.
6207 So @code{make} applies the implicit rule for C compilation when it sees
6208 this combination of file name endings.@refill
6210 A chain of implicit rules can apply in sequence; for example, @code{make}
6211 will remake a @file{.o} file from a @file{.y} file by way of a @file{.c} file.
6213 @xref{Chained Rules, ,Chains of Implicit Rules}.
6216 The built-in implicit rules use several variables in their commands so
6217 that, by changing the values of the variables, you can change the way the
6218 implicit rule works. For example, the variable @code{CFLAGS} controls the
6219 flags given to the C compiler by the implicit rule for C compilation.
6221 @xref{Implicit Variables, ,Variables Used by Implicit Rules}.
6224 You can define your own implicit rules by writing @dfn{pattern rules}.
6226 @xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.
6229 @dfn{Suffix rules} are a more limited way to define implicit rules.
6230 Pattern rules are more general and clearer, but suffix rules are
6231 retained for compatibility.
6233 @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
6237 * Using Implicit:: How to use an existing implicit rule
6238 to get the commands for updating a file.
6239 * Catalogue of Rules:: A list of built-in implicit rules.
6240 * Implicit Variables:: How to change what predefined rules do.
6241 * Chained Rules:: How to use a chain of implicit rules.
6242 * Pattern Rules:: How to define new implicit rules.
6243 * Last Resort:: How to defining commands for rules
6244 which cannot find any.
6245 * Suffix Rules:: The old-fashioned style of implicit rule.
6246 * Search Algorithm:: The precise algorithm for applying
6250 @node Using Implicit, Catalogue of Rules, , Implicit Rules
6251 @section Using Implicit Rules
6252 @cindex implicit rule, how to use
6253 @cindex rule, implicit, how to use
6255 To allow @code{make} to find a customary method for updating a target file,
6256 all you have to do is refrain from specifying commands yourself. Either
6257 write a rule with no command lines, or don't write a rule at all. Then
6258 @code{make} will figure out which implicit rule to use based on which
6259 kind of source file exists or can be made.
6261 For example, suppose the makefile looks like this:
6265 cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)
6269 Because you mention @file{foo.o} but do not give a rule for it, @code{make}
6270 will automatically look for an implicit rule that tells how to update it.
6271 This happens whether or not the file @file{foo.o} currently exists.
6273 If an implicit rule is found, it can supply both commands and one or
6274 more dependencies (the source files). You would want to write a rule
6275 for @file{foo.o} with no command lines if you need to specify additional
6276 dependencies, such as header files, that the implicit rule cannot
6279 Each implicit rule has a target pattern and dependency patterns. There may
6280 be many implicit rules with the same target pattern. For example, numerous
6281 rules make @samp{.o} files: one, from a @samp{.c} file with the C compiler;
6282 another, from a @samp{.p} file with the Pascal compiler; and so on. The rule
6283 that actually applies is the one whose dependencies exist or can be made.
6284 So, if you have a file @file{foo.c}, @code{make} will run the C compiler;
6285 otherwise, if you have a file @file{foo.p}, @code{make} will run the Pascal
6286 compiler; and so on.
6288 Of course, when you write the makefile, you know which implicit rule you
6289 want @code{make} to use, and you know it will choose that one because you
6290 know which possible dependency files are supposed to exist.
6291 @xref{Catalogue of Rules, ,Catalogue of Implicit Rules},
6292 for a catalogue of all the predefined implicit rules.
6294 Above, we said an implicit rule applies if the required dependencies ``exist
6295 or can be made''. A file ``can be made'' if it is mentioned explicitly in
6296 the makefile as a target or a dependency, or if an implicit rule can be
6297 recursively found for how to make it. When an implicit dependency is the
6298 result of another implicit rule, we say that @dfn{chaining} is occurring.
6299 @xref{Chained Rules, ,Chains of Implicit Rules}.
6301 In general, @code{make} searches for an implicit rule for each target, and
6302 for each double-colon rule, that has no commands. A file that is mentioned
6303 only as a dependency is considered a target whose rule specifies nothing,
6304 so implicit rule search happens for it. @xref{Search Algorithm, ,Implicit Rule Search Algorithm}, for the
6305 details of how the search is done.
6307 Note that explicit dependencies do not influence implicit rule search.
6308 For example, consider this explicit rule:
6315 The dependency on @file{foo.p} does not necessarily mean that
6316 @code{make} will remake @file{foo.o} according to the implicit rule to
6317 make an object file, a @file{.o} file, from a Pascal source file, a
6318 @file{.p} file. For example, if @file{foo.c} also exists, the implicit
6319 rule to make an object file from a C source file is used instead,
6320 because it appears before the Pascal rule in the list of predefined
6321 implicit rules (@pxref{Catalogue of Rules, , Catalogue of Implicit
6324 If you do not want an implicit rule to be used for a target that has no
6325 commands, you can give that target empty commands by writing a semicolon
6326 (@pxref{Empty Commands, ,Defining Empty Commands}).
6328 @node Catalogue of Rules, Implicit Variables, Using Implicit, Implicit Rules
6329 @section Catalogue of Implicit Rules
6330 @cindex implicit rule, predefined
6331 @cindex rule, implicit, predefined
6333 Here is a catalogue of predefined implicit rules which are always
6334 available unless the makefile explicitly overrides or cancels them.
6335 @xref{Canceling Rules, ,Canceling Implicit Rules}, for information on
6336 canceling or overriding an implicit rule. The @samp{-r} or
6337 @samp{--no-builtin-rules} option cancels all predefined rules.
6339 Not all of these rules will always be defined, even when the @samp{-r}
6340 option is not given. Many of the predefined implicit rules are
6341 implemented in @code{make} as suffix rules, so which ones will be
6342 defined depends on the @dfn{suffix list} (the list of dependencies of
6343 the special target @code{.SUFFIXES}). The default suffix list is:
6344 @code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc},
6345 @code{.C}, @code{.p}, @code{.f}, @code{.F}, @code{.r}, @code{.y},
6346 @code{.l}, @code{.s}, @code{.S}, @code{.mod}, @code{.sym}, @code{.def},
6347 @code{.h}, @code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo},
6348 @code{.texi}, @code{.txinfo}, @code{.w}, @code{.ch} @code{.web},
6349 @code{.sh}, @code{.elc}, @code{.el}. All of the implicit rules
6350 described below whose dependencies have one of these suffixes are
6351 actually suffix rules. If you modify the suffix list, the only
6352 predefined suffix rules in effect will be those named by one or two of
6353 the suffixes that are on the list you specify; rules whose suffixes fail
6354 to be on the list are disabled. @xref{Suffix Rules, ,Old-Fashioned
6355 Suffix Rules}, for full details on suffix rules.
6358 @item Compiling C programs
6359 @cindex C, rule to compile
6364 @file{@var{n}.o} is made automatically from @file{@var{n}.c} with
6365 a command of the form @samp{$(CC) -c $(CPPFLAGS) $(CFLAGS)}.@refill
6367 @item Compiling C++ programs
6368 @cindex C++, rule to compile
6372 @file{@var{n}.o} is made automatically from @file{@var{n}.cc} or
6373 @file{@var{n}.C} with a command of the form @samp{$(CXX) -c $(CPPFLAGS)
6374 $(CXXFLAGS)}. We encourage you to use the suffix @samp{.cc} for C++
6375 source files instead of @samp{.C}.@refill
6377 @item Compiling Pascal programs
6378 @cindex Pascal, rule to compile
6381 @file{@var{n}.o} is made automatically from @file{@var{n}.p}
6382 with the command @samp{$(PC) -c $(PFLAGS)}.@refill
6384 @item Compiling Fortran and Ratfor programs
6385 @cindex Fortran, rule to compile
6386 @cindex Ratfor, rule to compile
6391 @file{@var{n}.o} is made automatically from @file{@var{n}.r},
6392 @file{@var{n}.F} or @file{@var{n}.f} by running the
6393 Fortran compiler. The precise command used is as follows:@refill
6397 @samp{$(FC) -c $(FFLAGS)}.
6399 @samp{$(FC) -c $(FFLAGS) $(CPPFLAGS)}.
6401 @samp{$(FC) -c $(FFLAGS) $(RFLAGS)}.
6404 @item Preprocessing Fortran and Ratfor programs
6405 @file{@var{n}.f} is made automatically from @file{@var{n}.r} or
6406 @file{@var{n}.F}. This rule runs just the preprocessor to convert a
6407 Ratfor or preprocessable Fortran program into a strict Fortran
6408 program. The precise command used is as follows:@refill
6412 @samp{$(FC) -F $(CPPFLAGS) $(FFLAGS)}.
6414 @samp{$(FC) -F $(FFLAGS) $(RFLAGS)}.
6417 @item Compiling Modula-2 programs
6418 @cindex Modula-2, rule to compile
6423 @file{@var{n}.sym} is made from @file{@var{n}.def} with a command
6424 of the form @samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}. @file{@var{n}.o}
6425 is made from @file{@var{n}.mod}; the form is:
6426 @w{@samp{$(M2C) $(M2FLAGS) $(MODFLAGS)}}.@refill
6429 @item Assembling and preprocessing assembler programs
6430 @cindex assembly, rule to compile
6433 @file{@var{n}.o} is made automatically from @file{@var{n}.s} by
6434 running the assembler, @code{as}. The precise command is
6435 @samp{$(AS) $(ASFLAGS)}.@refill
6438 @file{@var{n}.s} is made automatically from @file{@var{n}.S} by
6439 running the C preprocessor, @code{cpp}. The precise command is
6440 @w{@samp{$(CPP) $(CPPFLAGS)}}.
6442 @item Linking a single object file
6443 @cindex linking, predefined rule for
6446 @file{@var{n}} is made automatically from @file{@var{n}.o} by running
6447 the linker (usually called @code{ld}) via the C compiler. The precise
6448 command used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES)}}.
6450 This rule does the right thing for a simple program with only one
6451 source file. It will also do the right thing if there are multiple
6452 object files (presumably coming from various other source files), one
6453 of which has a name matching that of the executable file. Thus,
6460 when @file{x.c}, @file{y.c} and @file{z.c} all exist will execute:
6475 In more complicated cases, such as when there is no object file whose
6476 name derives from the executable file name, you must write an explicit
6477 command for linking.
6479 Each kind of file automatically made into @samp{.o} object files will
6480 be automatically linked by using the compiler (@samp{$(CC)},
6481 @samp{$(FC)} or @samp{$(PC)}; the C compiler @samp{$(CC)} is used to
6482 assemble @samp{.s} files) without the @samp{-c} option. This could be
6483 done by using the @samp{.o} object files as intermediates, but it is
6484 faster to do the compiling and linking in one step, so that's how it's
6487 @item Yacc for C programs
6489 @cindex Yacc, rule to run
6491 @file{@var{n}.c} is made automatically from @file{@var{n}.y} by
6492 running Yacc with the command @samp{$(YACC) $(YFLAGS)}.
6494 @item Lex for C programs
6496 @cindex Lex, rule to run
6498 @file{@var{n}.c} is made automatically from @file{@var{n}.l} by
6499 by running Lex. The actual command is @samp{$(LEX) $(LFLAGS)}.
6501 @item Lex for Ratfor programs
6502 @file{@var{n}.r} is made automatically from @file{@var{n}.l} by
6503 by running Lex. The actual command is @samp{$(LEX) $(LFLAGS)}.
6505 The convention of using the same suffix @samp{.l} for all Lex files
6506 regardless of whether they produce C code or Ratfor code makes it
6507 impossible for @code{make} to determine automatically which of the two
6508 languages you are using in any particular case. If @code{make} is
6509 called upon to remake an object file from a @samp{.l} file, it must
6510 guess which compiler to use. It will guess the C compiler, because
6511 that is more common. If you are using Ratfor, make sure @code{make}
6512 knows this by mentioning @file{@var{n}.r} in the makefile. Or, if you
6513 are using Ratfor exclusively, with no C files, remove @samp{.c} from
6514 the list of implicit rule suffixes with:@refill
6519 .SUFFIXES: .o .r .f .l @dots{}
6523 @item Making Lint Libraries from C, Yacc, or Lex programs
6525 @cindex @code{lint}, rule to run
6527 @file{@var{n}.ln} is made from @file{@var{n}.c} by running @code{lint}.
6528 The precise command is @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}.
6529 The same command is used on the C code produced from
6530 @file{@var{n}.y} or @file{@var{n}.l}.@refill
6532 @item @TeX{} and Web
6533 @cindex @TeX{}, rule to run
6534 @cindex Web, rule to run
6545 @file{@var{n}.dvi} is made from @file{@var{n}.tex} with the command
6546 @samp{$(TEX)}. @file{@var{n}.tex} is made from @file{@var{n}.web} with
6547 @samp{$(WEAVE)}, or from @file{@var{n}.w} (and from @file{@var{n}.ch} if
6548 it exists or can be made) with @samp{$(CWEAVE)}. @file{@var{n}.p} is
6549 made from @file{@var{n}.web} with @samp{$(TANGLE)} and @file{@var{n}.c}
6550 is made from @file{@var{n}.w} (and from @file{@var{n}.ch} if it exists
6551 or can be made) with @samp{$(CTANGLE)}.@refill
6553 @item Texinfo and Info
6554 @cindex Texinfo, rule to format
6555 @cindex Info, rule to format
6562 @file{@var{n}.dvi} is made from @file{@var{n}.texinfo},
6563 @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with the command
6564 @w{@samp{$(TEXI2DVI) $(TEXI2DVI_FLAGS)}}. @file{@var{n}.info} is made from
6565 @file{@var{n}.texinfo}, @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with
6566 the command @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}.
6569 @cindex RCS, rule to extract from
6571 @pindex ,v @r{(RCS file extension)}
6572 Any file @file{@var{n}} is extracted if necessary from an RCS file
6573 named either @file{@var{n},v} or @file{RCS/@var{n},v}. The precise
6574 command used is @w{@samp{$(CO) $(COFLAGS)}}. @file{@var{n}} will not be
6575 extracted from RCS if it already exists, even if the RCS file is
6576 newer. The rules for RCS are terminal
6577 (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
6578 so RCS files cannot be generated from another source; they must
6579 actually exist.@refill
6582 @cindex SCCS, rule to extract from
6584 @pindex s. @r{(SCCS file prefix)}
6585 Any file @file{@var{n}} is extracted if necessary from an SCCS file
6586 named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}. The precise
6587 command used is @w{@samp{$(GET) $(GFLAGS)}}. The rules for SCCS are
6588 terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
6589 so SCCS files cannot be generated from another source; they must
6590 actually exist.@refill
6593 For the benefit of SCCS, a file @file{@var{n}} is copied from
6594 @file{@var{n}.sh} and made executable (by everyone). This is for
6595 shell scripts that are checked into SCCS. Since RCS preserves the
6596 execution permission of a file, you do not need to use this feature
6599 We recommend that you avoid using of SCCS. RCS is widely held to be
6600 superior, and is also free. By choosing free software in place of
6601 comparable (or inferior) proprietary software, you support the free
6605 Usually, you want to change only the variables listed in the table
6606 above, which are documented in the following section.
6608 However, the commands in built-in implicit rules actually use
6609 variables such as @code{COMPILE.c}, @code{LINK.p}, and
6610 @code{PREPROCESS.S}, whose values contain the commands listed above.
6612 @code{make} follows the convention that the rule to compile a
6613 @file{.@var{x}} source file uses the variable @code{COMPILE.@var{x}}.
6614 Similarly, the rule to produce an executable from a @file{.@var{x}}
6615 file uses @code{LINK.@var{x}}; and the rule to preprocess a
6616 @file{.@var{x}} file uses @code{PREPROCESS.@var{x}}.
6618 @vindex OUTPUT_OPTION
6619 Every rule that produces an object file uses the variable
6620 @code{OUTPUT_OPTION}. @code{make} defines this variable either to
6621 contain @samp{-o $@@}, or to be empty, depending on a compile-time
6622 option. You need the @samp{-o} option to ensure that the output goes
6623 into the right file when the source file is in a different directory,
6624 as when using @code{VPATH} (@pxref{Directory Search}). However,
6625 compilers on some systems do not accept a @samp{-o} switch for object
6626 files. If you use such a system, and use @code{VPATH}, some
6627 compilations will put their output in the wrong place.
6628 A possible workaround for this problem is to give @code{OUTPUT_OPTION}
6629 the value @w{@samp{; mv $*.o $@@}}.
6631 @node Implicit Variables, Chained Rules, Catalogue of Rules, Implicit Rules
6632 @section Variables Used by Implicit Rules
6633 @cindex flags for compilers
6635 The commands in built-in implicit rules make liberal use of certain
6636 predefined variables. You can alter these variables in the makefile,
6637 with arguments to @code{make}, or in the environment to alter how the
6638 implicit rules work without redefining the rules themselves.
6640 For example, the command used to compile a C source file actually says
6641 @samp{$(CC) -c $(CFLAGS) $(CPPFLAGS)}. The default values of the variables
6642 used are @samp{cc} and nothing, resulting in the command @samp{cc -c}. By
6643 redefining @samp{CC} to @samp{ncc}, you could cause @samp{ncc} to be
6644 used for all C compilations performed by the implicit rule. By redefining
6645 @samp{CFLAGS} to be @samp{-g}, you could pass the @samp{-g} option to
6646 each compilation. @emph{All} implicit rules that do C compilation use
6647 @samp{$(CC)} to get the program name for the compiler and @emph{all}
6648 include @samp{$(CFLAGS)} among the arguments given to the compiler.@refill
6650 The variables used in implicit rules fall into two classes: those that are
6651 names of programs (like @code{CC}) and those that contain arguments for the
6652 programs (like @code{CFLAGS}). (The ``name of a program'' may also contain
6653 some command arguments, but it must start with an actual executable program
6654 name.) If a variable value contains more than one argument, separate them
6657 Here is a table of variables used as names of programs in built-in rules:
6662 Archive-maintaining program; default @samp{ar}.
6667 Program for doing assembly; default @samp{as}.
6672 Program for compiling C programs; default @samp{cc}.
6677 Program for compiling C++ programs; default @samp{g++}.
6682 Program for extracting a file from RCS; default @samp{co}.
6687 Program for running the C preprocessor, with results to standard output;
6688 default @samp{$(CC) -E}.
6692 Program for compiling or preprocessing Fortran and Ratfor programs;
6698 Program for extracting a file from SCCS; default @samp{get}.
6703 Program to use to turn Lex grammars into C programs or Ratfor programs;
6709 Program for compiling Pascal programs; default @samp{pc}.
6714 Program to use to turn Yacc grammars into C programs; default @samp{yacc}.
6719 Program to use to turn Yacc grammars into Ratfor
6720 programs; default @samp{yacc -r}.
6724 Program to convert a Texinfo source file into an Info file; default
6730 Program to make @TeX{} @sc{dvi} files from @TeX{} source;
6736 Program to make @TeX{} @sc{dvi} files from Texinfo source;
6737 default @samp{texi2dvi}.
6742 Program to translate Web into @TeX{}; default @samp{weave}.
6747 Program to translate C Web into @TeX{}; default @samp{cweave}.
6752 Program to translate Web into Pascal; default @samp{tangle}.
6757 Program to translate C Web into C; default @samp{ctangle}.
6762 Command to remove a file; default @samp{rm -f}.
6766 Here is a table of variables whose values are additional arguments for the
6767 programs above. The default values for all of these is the empty
6768 string, unless otherwise noted.
6773 Flags to give the archive-maintaining program; default @samp{rv}.
6777 Extra flags to give to the assembler (when explicitly
6778 invoked on a @samp{.s} or @samp{.S} file).
6782 Extra flags to give to the C compiler.
6786 Extra flags to give to the C++ compiler.
6790 Extra flags to give to the RCS @code{co} program.
6794 Extra flags to give to the C preprocessor and programs
6795 that use it (the C and Fortran compilers).
6799 Extra flags to give to the Fortran compiler.
6803 Extra flags to give to the SCCS @code{get} program.
6807 Extra flags to give to compilers when they are
6808 supposed to invoke the linker, @samp{ld}.
6812 Extra flags to give to Lex.
6816 Extra flags to give to the Pascal compiler.
6820 Extra flags to give to the Fortran compiler for Ratfor programs.
6824 Extra flags to give to Yacc.
6827 @node Chained Rules, Pattern Rules, Implicit Variables, Implicit Rules
6828 @section Chains of Implicit Rules
6830 @cindex chains of rules
6831 @cindex rule, implicit, chains of
6832 Sometimes a file can be made by a sequence of implicit rules. For example,
6833 a file @file{@var{n}.o} could be made from @file{@var{n}.y} by running
6834 first Yacc and then @code{cc}. Such a sequence is called a @dfn{chain}.
6836 If the file @file{@var{n}.c} exists, or is mentioned in the makefile, no
6837 special searching is required: @code{make} finds that the object file can
6838 be made by C compilation from @file{@var{n}.c}; later on, when considering
6839 how to make @file{@var{n}.c}, the rule for running Yacc is
6840 used. Ultimately both @file{@var{n}.c} and @file{@var{n}.o} are
6843 @cindex intermediate files
6844 @cindex files, intermediate
6845 However, even if @file{@var{n}.c} does not exist and is not mentioned,
6846 @code{make} knows how to envision it as the missing link between
6847 @file{@var{n}.o} and @file{@var{n}.y}! In this case, @file{@var{n}.c} is
6848 called an @dfn{intermediate file}. Once @code{make} has decided to use the
6849 intermediate file, it is entered in the data base as if it had been
6850 mentioned in the makefile, along with the implicit rule that says how to
6853 Intermediate files are remade using their rules just like all other
6854 files. The difference is that the intermediate file is deleted when
6855 @code{make} is finished. Therefore, the intermediate file which did not
6856 exist before @code{make} also does not exist after @code{make}. The
6857 deletion is reported to you by printing a @samp{rm -f} command that
6858 shows what @code{make} is doing. (You can list the target pattern of an
6859 implicit rule (such as @samp{%.o}) as a dependency of the special
6860 target @code{.PRECIOUS} to preserve intermediate files made by implicit
6861 rules whose target patterns match that file's name;
6862 see @ref{Interrupts}.)@refill
6863 @cindex intermediate files, preserving
6864 @cindex preserving intermediate files
6865 @cindex preserving with @code{.PRECIOUS}
6866 @cindex @code{.PRECIOUS} intermediate files
6868 A chain can involve more than two implicit rules. For example, it is
6869 possible to make a file @file{foo} from @file{RCS/foo.y,v} by running RCS,
6870 Yacc and @code{cc}. Then both @file{foo.y} and @file{foo.c} are
6871 intermediate files that are deleted at the end.@refill
6873 No single implicit rule can appear more than once in a chain. This means
6874 that @code{make} will not even consider such a ridiculous thing as making
6875 @file{foo} from @file{foo.o.o} by running the linker twice. This
6876 constraint has the added benefit of preventing any infinite loop in the
6877 search for an implicit rule chain.
6879 There are some special implicit rules to optimize certain cases that would
6880 otherwise be handled by rule chains. For example, making @file{foo} from
6881 @file{foo.c} could be handled by compiling and linking with separate
6882 chained rules, using @file{foo.o} as an intermediate file. But what
6883 actually happens is that a special rule for this case does the compilation
6884 and linking with a single @code{cc} command. The optimized rule is used in
6885 preference to the step-by-step chain because it comes earlier in the
6888 @node Pattern Rules, Last Resort, Chained Rules, Implicit Rules
6889 @section Defining and Redefining Pattern Rules
6891 You define an implicit rule by writing a @dfn{pattern rule}. A pattern
6892 rule looks like an ordinary rule, except that its target contains the
6893 character @samp{%} (exactly one of them). The target is considered a
6894 pattern for matching file names; the @samp{%} can match any nonempty
6895 substring, while other characters match only themselves. The dependencies
6896 likewise use @samp{%} to show how their names relate to the target name.
6898 Thus, a pattern rule @samp{%.o : %.c} says how to make any file
6899 @file{@var{stem}.o} from another file @file{@var{stem}.c}.@refill
6901 Note that expansion using @samp{%} in pattern rules occurs
6902 @strong{after} any variable or function expansions, which take place
6903 when the makefile is read. @xref{Using Variables, , How to Use
6904 Variables}, and @ref{Functions, ,Functions for Transforming Text}.
6907 * Pattern Intro:: An introduction to pattern rules.
6908 * Pattern Examples:: Examples of pattern rules.
6909 * Automatic:: How to use automatic variables in the
6910 commands of implicit rules.
6911 * Pattern Match:: How patterns match.
6912 * Match-Anything Rules:: Precautions you should take prior to
6913 defining rules that can match any
6914 target file whatever.
6915 * Canceling Rules:: How to override or cancel built-in rules.
6918 @node Pattern Intro, Pattern Examples, , Pattern Rules
6919 @subsection Introduction to Pattern Rules
6920 @cindex pattern rule
6921 @cindex rule, pattern
6923 A pattern rule contains the character @samp{%} (exactly one of them)
6924 in the target; otherwise, it looks exactly like an ordinary rule. The
6925 target is a pattern for matching file names; the @samp{%} matches any
6926 nonempty substring, while other characters match only themselves.
6927 @cindex target pattern, implicit
6928 @cindex @code{%}, in pattern rules
6930 For example, @samp{%.c} as a pattern matches any file name that ends in
6931 @samp{.c}. @samp{s.%.c} as a pattern matches any file name that starts
6932 with @samp{s.}, ends in @samp{.c} and is at least five characters long.
6933 (There must be at least one character to match the @samp{%}.) The substring
6934 that the @samp{%} matches is called the @dfn{stem}.@refill
6936 @samp{%} in a dependency of a pattern rule stands for the same stem
6937 that was matched by the @samp{%} in the target. In order for
6938 the pattern rule to apply, its target pattern must match the file name
6939 under consideration, and its dependency patterns must name files that
6940 exist or can be made. These files become dependencies of the target.
6941 @cindex dependency pattern, implicit
6943 Thus, a rule of the form
6946 %.o : %.c ; @var{command}@dots{}
6950 specifies how to make a file @file{@var{n}.o}, with another file
6951 @file{@var{n}.c} as its dependency, provided that @file{@var{n}.c}
6952 exists or can be made.
6954 There may also be dependencies that do not use @samp{%}; such a dependency
6955 attaches to every file made by this pattern rule. These unvarying
6956 dependencies are useful occasionally.
6958 A pattern rule need not have any dependencies that contain @samp{%}, or
6959 in fact any dependencies at all. Such a rule is effectively a general
6960 wildcard. It provides a way to make any file that matches the target
6961 pattern. @xref{Last Resort}.
6963 @c !!! The end of of this paragraph should be rewritten. --bob
6964 Pattern rules may have more than one target. Unlike normal rules, this
6965 does not act as many different rules with the same dependencies and
6966 commands. If a pattern rule has multiple targets, @code{make} knows that
6967 the rule's commands are responsible for making all of the targets. The
6968 commands are executed only once to make all the targets. When searching
6969 for a pattern rule to match a target, the target patterns of a rule other
6970 than the one that matches the target in need of a rule are incidental:
6971 @code{make} worries only about giving commands and dependencies to the file
6972 presently in question. However, when this file's commands are run, the
6973 other targets are marked as having been updated themselves.
6974 @cindex multiple targets, in pattern rule
6975 @cindex target, multiple in pattern rule
6977 The order in which pattern rules appear in the makefile is important
6978 since this is the order in which they are considered.
6979 Of equally applicable
6980 rules, only the first one found is used. The rules you write take precedence
6981 over those that are built in. Note however, that a rule whose
6982 dependencies actually exist or are mentioned always takes priority over a
6983 rule with dependencies that must be made by chaining other implicit rules.
6984 @cindex pattern rules, order of
6985 @cindex order of pattern rules
6987 @node Pattern Examples, Automatic, Pattern Intro, Pattern Rules
6988 @subsection Pattern Rule Examples
6990 Here are some examples of pattern rules actually predefined in
6991 @code{make}. First, the rule that compiles @samp{.c} files into @samp{.o}
6996 $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@
7000 defines a rule that can make any file @file{@var{x}.o} from
7001 @file{@var{x}.c}. The command uses the automatic variables @samp{$@@} and
7002 @samp{$<} to substitute the names of the target file and the source file
7003 in each case where the rule applies (@pxref{Automatic, ,Automatic Variables}).@refill
7005 Here is a second built-in rule:
7013 defines a rule that can make any file @file{@var{x}} whatsoever from a
7014 corresponding file @file{@var{x},v} in the subdirectory @file{RCS}. Since
7015 the target is @samp{%}, this rule will apply to any file whatever, provided
7016 the appropriate dependency file exists. The double colon makes the rule
7017 @dfn{terminal}, which means that its dependency may not be an intermediate
7018 file (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}).@refill
7021 This pattern rule has two targets:
7025 %.tab.c %.tab.h: %.y
7031 @c The following paragraph is rewritten to avoid overfull hboxes
7032 This tells @code{make} that the command @samp{bison -d @var{x}.y} will
7033 make both @file{@var{x}.tab.c} and @file{@var{x}.tab.h}. If the file
7034 @file{foo} depends on the files @file{parse.tab.o} and @file{scan.o}
7035 and the file @file{scan.o} depends on the file @file{parse.tab.h},
7036 when @file{parse.y} is changed, the command @samp{bison -d parse.y}
7037 will be executed only once, and the dependencies of both
7038 @file{parse.tab.o} and @file{scan.o} will be satisfied. (Presumably
7039 the file @file{parse.tab.o} will be recompiled from @file{parse.tab.c}
7040 and the file @file{scan.o} from @file{scan.c}, while @file{foo} is
7041 linked from @file{parse.tab.o}, @file{scan.o}, and its other
7042 dependencies, and it will execute happily ever after.)@refill
7044 @node Automatic, Pattern Match, Pattern Examples, Pattern Rules
7045 @subsection Automatic Variables
7046 @cindex automatic variables
7047 @cindex variables, automatic
7048 @cindex variables, and implicit rule
7050 Suppose you are writing a pattern rule to compile a @samp{.c} file into a
7051 @samp{.o} file: how do you write the @samp{cc} command so that it operates
7052 on the right source file name? You cannot write the name in the command,
7053 because the name is different each time the implicit rule is applied.
7055 What you do is use a special feature of @code{make}, the @dfn{automatic
7056 variables}. These variables have values computed afresh for each rule that
7057 is executed, based on the target and dependencies of the rule. In this
7058 example, you would use @samp{$@@} for the object file name and @samp{$<}
7059 for the source file name.
7061 Here is a table of automatic variables:
7065 @vindex @@ @r{(automatic variable)}
7067 The file name of the target of the rule. If the target is an archive
7068 member, then @samp{$@@} is the name of the archive file. In a pattern
7069 rule that has multiple targets (@pxref{Pattern Intro, ,Introduction to
7070 Pattern Rules}), @samp{$@@} is the name of whichever target caused the
7071 rule's commands to be run.
7074 @vindex % @r{(automatic variable)}
7076 The target member name, when the target is an archive member.
7077 @xref{Archives}. For example, if the target is @file{foo.a(bar.o)} then
7078 @samp{$%} is @file{bar.o} and @samp{$@@} is @file{foo.a}. @samp{$%} is
7079 empty when the target is not an archive member.
7082 @vindex < @r{(automatic variable)}
7084 The name of the first dependency. If the target got its commands from
7085 an implicit rule, this will be the first dependency added by the
7086 implicit rule (@pxref{Implicit Rules}).
7089 @vindex ? @r{(automatic variable)}
7091 The names of all the dependencies that are newer than the target, with
7092 spaces between them. For dependencies which are archive members, only
7093 the member named is used (@pxref{Archives}).
7094 @cindex dependencies, list of changed
7095 @cindex list of changed dependencies
7098 @vindex ^ @r{(automatic variable)}
7100 The names of all the dependencies, with spaces between them. For
7101 dependencies which are archive members, only the member named is used
7102 (@pxref{Archives}). A target has only one dependency on each other file
7103 it depends on, no matter how many times each file is listed as a
7104 dependency. So if you list a dependency more than once for a target,
7105 the value of @code{$^} contains just one copy of the name.
7106 @cindex dependencies, list of all
7107 @cindex list of all dependencies
7110 @vindex * @r{(automatic variable)}
7112 The stem with which an implicit rule matches (@pxref{Pattern Match, ,How
7113 Patterns Match}). If the target is @file{dir/a.foo.b} and the target
7114 pattern is @file{a.%.b} then the stem is @file{dir/foo}. The stem is
7115 useful for constructing names of related files.@refill
7116 @cindex stem, variable for
7118 In a static pattern rule, the stem is part of the file name that matched
7119 the @samp{%} in the target pattern.
7121 In an explicit rule, there is no stem; so @samp{$*} cannot be determined
7122 in that way. Instead, if the target name ends with a recognized suffix
7123 (@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}), @samp{$*} is set to
7124 the target name minus the suffix. For example, if the target name is
7125 @samp{foo.c}, then @samp{$*} is set to @samp{foo}, since @samp{.c} is a
7126 suffix. GNU @code{make} does this bizarre thing only for compatibility
7127 with other implementations of @code{make}. You should generally avoid
7128 using @samp{$*} except in implicit rules or static pattern rules.@refill
7130 If the target name in an explicit rule does not end with a recognized
7131 suffix, @samp{$*} is set to the empty string for that rule.
7134 @samp{$?} is useful even in explicit rules when you wish to operate on only
7135 the dependencies that have changed. For example, suppose that an archive
7136 named @file{lib} is supposed to contain copies of several object files.
7137 This rule copies just the changed object files into the archive:
7141 lib: foo.o bar.o lose.o win.o
7146 Of the variables listed above, four have values that are single file
7147 names, and two have values that are lists of file names. These six have
7148 variants that get just the file's directory name or just the file name
7149 within the directory. The variant variables' names are formed by
7150 appending @samp{D} or @samp{F}, respectively. These variants are
7151 semi-obsolete in GNU @code{make} since the functions @code{dir} and
7152 @code{notdir} can be used to get a similar effect (@pxref{Filename
7153 Functions, , Functions for File Names}). Note, however, that the
7154 @samp{F} variants all omit the trailing slash which always appears in
7155 the output of the @code{dir} function. Here is a table of the variants:
7159 @vindex @@D @r{(automatic variable)}
7161 The directory part of the file name of the target, with the trailing
7162 slash removed. If the value of @samp{$@@} is @file{dir/foo.o} then
7163 @samp{$(@@D)} is @file{dir}. This value is @file{.} if @samp{$@@} does
7164 not contain a slash.
7167 @vindex @@F @r{(automatic variable)}
7169 The file-within-directory part of the file name of the target. If the
7170 value of @samp{$@@} is @file{dir/foo.o} then @samp{$(@@F)} is
7171 @file{foo.o}. @samp{$(@@F)} is equivalent to @samp{$(notdir $@@)}.
7174 @vindex *D @r{(automatic variable)}
7177 @vindex *F @r{(automatic variable)}
7179 The directory part and the file-within-directory
7180 part of the stem; @file{dir} and @file{foo} in this example.
7183 @vindex %D @r{(automatic variable)}
7186 @vindex %F @r{(automatic variable)}
7188 The directory part and the file-within-directory part of the target
7189 archive member name. This makes sense only for archive member targets
7190 of the form @file{@var{archive}(@var{member})} and is useful only when
7191 @var{member} may contain a directory name. (@xref{Archive Members,
7192 ,Archive Members as Targets}.)
7195 @vindex <D @r{(automatic variable)}
7198 @vindex <F @r{(automatic variable)}
7200 The directory part and the file-within-directory
7201 part of the first dependency.
7204 @vindex ^D @r{(automatic variable)}
7207 @vindex ^F @r{(automatic variable)}
7209 Lists of the directory parts and the file-within-directory
7210 parts of all dependencies.
7213 @vindex ?D @r{(automatic variable)}
7216 @vindex ?F @r{(automatic variable)}
7218 Lists of the directory parts and the file-within-directory parts of
7219 all dependencies that are newer than the target.
7222 Note that we use a special stylistic convention when we talk about these
7223 automatic variables; we write ``the value of @samp{$<}'', rather than
7224 @w{``the variable @code{<}''} as we would write for ordinary variables
7225 such as @code{objects} and @code{CFLAGS}. We think this convention
7226 looks more natural in this special case. Please do not assume it has a
7227 deep significance; @samp{$<} refers to the variable named @code{<} just
7228 as @samp{$(CFLAGS)} refers to the variable named @code{CFLAGS}.
7229 You could just as well use @samp{$(<)} in place of @samp{$<}.
7231 @node Pattern Match, Match-Anything Rules, Automatic, Pattern Rules
7232 @subsection How Patterns Match
7235 A target pattern is composed of a @samp{%} between a prefix and a suffix,
7236 either or both of which may be empty. The pattern matches a file name only
7237 if the file name starts with the prefix and ends with the suffix, without
7238 overlap. The text between the prefix and the suffix is called the
7239 @dfn{stem}. Thus, when the pattern @samp{%.o} matches the file name
7240 @file{test.o}, the stem is @samp{test}. The pattern rule dependencies are
7241 turned into actual file names by substituting the stem for the character
7242 @samp{%}. Thus, if in the same example one of the dependencies is written
7243 as @samp{%.c}, it expands to @samp{test.c}.@refill
7245 When the target pattern does not contain a slash (and it usually does
7246 not), directory names in the file names are removed from the file name
7247 before it is compared with the target prefix and suffix. After the
7248 comparison of the file name to the target pattern, the directory
7249 names, along with the slash that ends them, are added on to the
7250 dependency file names generated from the pattern rule's dependency
7251 patterns and the file name. The directories are ignored only for the
7252 purpose of finding an implicit rule to use, not in the application of
7253 that rule. Thus, @samp{e%t} matches the file name @file{src/eat},
7254 with @samp{src/a} as the stem. When dependencies are turned into file
7255 names, the directories from the stem are added at the front, while the
7256 rest of the stem is substituted for the @samp{%}. The stem
7257 @samp{src/a} with a dependency pattern @samp{c%r} gives the file name
7258 @file{src/car}.@refill
7260 @node Match-Anything Rules, Canceling Rules, Pattern Match, Pattern Rules
7261 @subsection Match-Anything Pattern Rules
7263 @cindex match-anything rule
7264 @cindex terminal rule
7265 When a pattern rule's target is just @samp{%}, it matches any file name
7266 whatever. We call these rules @dfn{match-anything} rules. They are very
7267 useful, but it can take a lot of time for @code{make} to think about them,
7268 because it must consider every such rule for each file name listed either
7269 as a target or as a dependency.
7271 Suppose the makefile mentions @file{foo.c}. For this target, @code{make}
7272 would have to consider making it by linking an object file @file{foo.c.o},
7273 or by C compilation-and-linking in one step from @file{foo.c.c}, or by
7274 Pascal compilation-and-linking from @file{foo.c.p}, and many other
7277 We know these possibilities are ridiculous since @file{foo.c} is a C source
7278 file, not an executable. If @code{make} did consider these possibilities,
7279 it would ultimately reject them, because files such as @file{foo.c.o} and
7280 @file{foo.c.p} would not exist. But these possibilities are so
7281 numerous that @code{make} would run very slowly if it had to consider
7284 To gain speed, we have put various constraints on the way @code{make}
7285 considers match-anything rules. There are two different constraints that
7286 can be applied, and each time you define a match-anything rule you must
7287 choose one or the other for that rule.
7289 One choice is to mark the match-anything rule as @dfn{terminal} by defining
7290 it with a double colon. When a rule is terminal, it does not apply unless
7291 its dependencies actually exist. Dependencies that could be made with
7292 other implicit rules are not good enough. In other words, no further
7293 chaining is allowed beyond a terminal rule.
7295 For example, the built-in implicit rules for extracting sources from RCS
7296 and SCCS files are terminal; as a result, if the file @file{foo.c,v} does
7297 not exist, @code{make} will not even consider trying to make it as an
7298 intermediate file from @file{foo.c,v.o} or from @file{RCS/SCCS/s.foo.c,v}.
7299 RCS and SCCS files are generally ultimate source files, which should not be
7300 remade from any other files; therefore, @code{make} can save time by not
7301 looking for ways to remake them.@refill
7303 If you do not mark the match-anything rule as terminal, then it is
7304 nonterminal. A nonterminal match-anything rule cannot apply to a file name
7305 that indicates a specific type of data. A file name indicates a specific
7306 type of data if some non-match-anything implicit rule target matches it.
7308 For example, the file name @file{foo.c} matches the target for the pattern
7309 rule @samp{%.c : %.y} (the rule to run Yacc). Regardless of whether this
7310 rule is actually applicable (which happens only if there is a file
7311 @file{foo.y}), the fact that its target matches is enough to prevent
7312 consideration of any nonterminal match-anything rules for the file
7313 @file{foo.c}. Thus, @code{make} will not even consider trying to make
7314 @file{foo.c} as an executable file from @file{foo.c.o}, @file{foo.c.c},
7315 @file{foo.c.p}, etc.@refill
7317 The motivation for this constraint is that nonterminal match-anything
7318 rules are used for making files containing specific types of data (such as
7319 executable files) and a file name with a recognized suffix indicates some
7320 other specific type of data (such as a C source file).
7322 Special built-in dummy pattern rules are provided solely to recognize
7323 certain file names so that nonterminal match-anything rules will not be
7324 considered. These dummy rules have no dependencies and no commands, and
7325 they are ignored for all other purposes. For example, the built-in
7333 exists to make sure that Pascal source files such as @file{foo.p} match a
7334 specific target pattern and thereby prevent time from being wasted looking
7335 for @file{foo.p.o} or @file{foo.p.c}.
7337 Dummy pattern rules such as the one for @samp{%.p} are made for every
7338 suffix listed as valid for use in suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}).
7340 @node Canceling Rules, , Match-Anything Rules, Pattern Rules
7341 @subsection Canceling Implicit Rules
7343 You can override a built-in implicit rule (or one you have defined
7344 yourself) by defining a new pattern rule with the same target and
7345 dependencies, but different commands. When the new rule is defined, the
7346 built-in one is replaced. The new rule's position in the sequence of
7347 implicit rules is determined by where you write the new rule.
7349 You can cancel a built-in implicit rule by defining a pattern rule with the
7350 same target and dependencies, but no commands. For example, the following
7351 would cancel the rule that runs the assembler:
7357 @node Last Resort, Suffix Rules, Pattern Rules, Implicit Rules
7358 @section Defining Last-Resort Default Rules
7359 @cindex last-resort default rules
7360 @cindex default rules, last-resort
7362 You can define a last-resort implicit rule by writing a terminal
7363 match-anything pattern rule with no dependencies (@pxref{Match-Anything
7364 Rules}). This is just like any other pattern rule; the only thing
7365 special about it is that it will match any target. So such a rule's
7366 commands are used for all targets and dependencies that have no commands
7367 of their own and for which no other implicit rule applies.
7369 For example, when testing a makefile, you might not care if the source
7370 files contain real data, only that they exist. Then you might do this:
7378 to cause all the source files needed (as dependencies) to be created
7382 You can instead define commands to be used for targets for which there
7383 are no rules at all, even ones which don't specify commands. You do
7384 this by writing a rule for the target @code{.DEFAULT}. Such a rule's
7385 commands are used for all dependencies which do not appear as targets in
7386 any explicit rule, and for which no implicit rule applies. Naturally,
7387 there is no @code{.DEFAULT} rule unless you write one.
7389 If you use @code{.DEFAULT} with no commands or dependencies:
7396 the commands previously stored for @code{.DEFAULT} are cleared.
7397 Then @code{make} acts as if you had never defined @code{.DEFAULT} at all.
7399 If you do not want a target to get the commands from a match-anything
7400 pattern rule or @code{.DEFAULT}, but you also do not want any commands
7401 to be run for the target, you can give it empty commands (@pxref{Empty
7402 Commands, ,Defining Empty Commands}).@refill
7404 You can use a last-resort rule to override part of another makefile.
7405 @xref{Overriding Makefiles, , Overriding Part of Another Makefile}.
7407 @node Suffix Rules, Search Algorithm, Last Resort, Implicit Rules
7408 @section Old-Fashioned Suffix Rules
7409 @cindex old-fashioned suffix rules
7412 @dfn{Suffix rules} are the old-fashioned way of defining implicit rules for
7413 @code{make}. Suffix rules are obsolete because pattern rules are more
7414 general and clearer. They are supported in GNU @code{make} for
7415 compatibility with old makefiles. They come in two kinds:
7416 @dfn{double-suffix} and @dfn{single-suffix}.@refill
7418 A double-suffix rule is defined by a pair of suffixes: the target suffix
7419 and the source suffix. It matches any file whose name ends with the
7420 target suffix. The corresponding implicit dependency is made by
7421 replacing the target suffix with the source suffix in the file name. A
7422 two-suffix rule whose target and source suffixes are @samp{.o} and
7423 @samp{.c} is equivalent to the pattern rule @samp{%.o : %.c}.
7425 A single-suffix rule is defined by a single suffix, which is the source
7426 suffix. It matches any file name, and the corresponding implicit
7427 dependency name is made by appending the source suffix. A single-suffix
7428 rule whose source suffix is @samp{.c} is equivalent to the pattern rule
7431 Suffix rule definitions are recognized by comparing each rule's target
7432 against a defined list of known suffixes. When @code{make} sees a rule
7433 whose target is a known suffix, this rule is considered a single-suffix
7434 rule. When @code{make} sees a rule whose target is two known suffixes
7435 concatenated, this rule is taken as a double-suffix rule.
7437 For example, @samp{.c} and @samp{.o} are both on the default list of
7438 known suffixes. Therefore, if you define a rule whose target is
7439 @samp{.c.o}, @code{make} takes it to be a double-suffix rule with source
7440 suffix @samp{.c} and target suffix @samp{.o}. Here is the old-fashioned
7441 way to define the rule for compiling a C source file:@refill
7445 $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
7448 Suffix rules cannot have any dependencies of their own. If they have any,
7449 they are treated as normal files with funny names, not as suffix rules.
7454 $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
7458 tells how to make the file @file{.c.o} from the dependency file
7459 @file{foo.h}, and is not at all like the pattern rule:
7463 $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@@ $<
7467 which tells how to make @samp{.o} files from @samp{.c} files, and makes all
7468 @samp{.o} files using this pattern rule also depend on @file{foo.h}.
7470 Suffix rules with no commands are also meaningless. They do not remove
7471 previous rules as do pattern rules with no commands (@pxref{Canceling
7472 Rules, , Canceling Implicit Rules}). They simply enter the suffix or pair of suffixes concatenated as
7473 a target in the data base.@refill
7476 The known suffixes are simply the names of the dependencies of the special
7477 target @code{.SUFFIXES}. You can add your own suffixes by writing a rule
7478 for @code{.SUFFIXES} that adds more dependencies, as in:
7481 .SUFFIXES: .hack .win
7485 which adds @samp{.hack} and @samp{.win} to the end of the list of suffixes.
7487 If you wish to eliminate the default known suffixes instead of just adding
7488 to them, write a rule for @code{.SUFFIXES} with no dependencies. By
7489 special dispensation, this eliminates all existing dependencies of
7490 @code{.SUFFIXES}. You can then write another rule to add the suffixes you
7495 .SUFFIXES: # @r{Delete the default suffixes}
7496 .SUFFIXES: .c .o .h # @r{Define our suffix list}
7500 The @samp{-r} or @samp{--no-builtin-rules} flag causes the default
7501 list of suffixes to be empty.
7504 The variable @code{SUFFIXES} is defined to the default list of suffixes
7505 before @code{make} reads any makefiles. You can change the list of suffixes
7506 with a rule for the special target @code{.SUFFIXES}, but that does not alter
7509 @node Search Algorithm, , Suffix Rules, Implicit Rules
7510 @section Implicit Rule Search Algorithm
7511 @cindex implicit rule, search algorithm
7512 @cindex search algorithm, implicit rule
7514 Here is the procedure @code{make} uses for searching for an implicit rule
7515 for a target @var{t}. This procedure is followed for each double-colon
7516 rule with no commands, for each target of ordinary rules none of which have
7517 commands, and for each dependency that is not the target of any rule. It
7518 is also followed recursively for dependencies that come from implicit
7519 rules, in the search for a chain of rules.
7521 Suffix rules are not mentioned in this algorithm because suffix rules are
7522 converted to equivalent pattern rules once the makefiles have been read in.
7524 For an archive member target of the form
7525 @samp{@var{archive}(@var{member})}, the following algorithm is run
7526 twice, first using the entire target name @var{t}, and second using
7527 @samp{(@var{member})} as the target @var{t} if the first run found no
7532 Split @var{t} into a directory part, called @var{d}, and the rest,
7533 called @var{n}. For example, if @var{t} is @samp{src/foo.o}, then
7534 @var{d} is @samp{src/} and @var{n} is @samp{foo.o}.@refill
7537 Make a list of all the pattern rules one of whose targets matches
7538 @var{t} or @var{n}. If the target pattern contains a slash, it is
7539 matched against @var{t}; otherwise, against @var{n}.
7542 If any rule in that list is @emph{not} a match-anything rule, then
7543 remove all nonterminal match-anything rules from the list.
7546 Remove from the list all rules with no commands.
7549 For each pattern rule in the list:
7553 Find the stem @var{s}, which is the nonempty part of @var{t} or @var{n}
7554 matched by the @samp{%} in the target pattern.@refill
7557 Compute the dependency names by substituting @var{s} for @samp{%}; if
7558 the target pattern does not contain a slash, append @var{d} to
7559 the front of each dependency name.@refill
7562 Test whether all the dependencies exist or ought to exist. (If a
7563 file name is mentioned in the makefile as a target or as an explicit
7564 dependency, then we say it ought to exist.)
7566 If all dependencies exist or ought to exist, or there are no dependencies,
7567 then this rule applies.
7571 If no pattern rule has been found so far, try harder.
7572 For each pattern rule in the list:
7576 If the rule is terminal, ignore it and go on to the next rule.
7579 Compute the dependency names as before.
7582 Test whether all the dependencies exist or ought to exist.
7585 For each dependency that does not exist, follow this algorithm
7586 recursively to see if the dependency can be made by an implicit
7590 If all dependencies exist, ought to exist, or can be
7591 made by implicit rules, then this rule applies.
7595 If no implicit rule applies, the rule for @code{.DEFAULT}, if any,
7596 applies. In that case, give @var{t} the same commands that
7597 @code{.DEFAULT} has. Otherwise, there are no commands for @var{t}.
7600 Once a rule that applies has been found, for each target pattern of the
7601 rule other than the one that matched @var{t} or @var{n}, the @samp{%} in
7602 the pattern is replaced with @var{s} and the resultant file name is stored
7603 until the commands to remake the target file @var{t} are executed. After
7604 these commands are executed, each of these stored file names are entered
7605 into the data base and marked as having been updated and having the same
7606 update status as the file @var{t}.
7608 When the commands of a pattern rule are executed for @var{t}, the automatic
7609 variables are set corresponding to the target and dependencies.
7610 @xref{Automatic, ,Automatic Variables}.
7612 @node Archives, Features, Implicit Rules, Top
7613 @chapter Using @code{make} to Update Archive Files
7616 @dfn{Archive files} are files containing named subfiles called
7617 @dfn{members}; they are maintained with the program @code{ar} and their
7618 main use is as subroutine libraries for linking.
7621 * Archive Members:: Archive members as targets.
7622 * Archive Update:: The implicit rule for archive member targets.
7623 * Archive Suffix Rules:: You can write a special kind of suffix rule
7624 for updating archives.
7627 @node Archive Members, Archive Update, , Archives
7628 @section Archive Members as Targets
7629 @cindex archive member targets
7631 An individual member of an archive file can be used as a target or
7632 dependency in @code{make}. You specify the member named @var{member} in
7633 archive file @var{archive} as follows:
7636 @var{archive}(@var{member})
7640 This construct is available only in targets and dependencies, not in
7641 commands! Most programs that you might use in commands do not support this
7642 syntax and cannot act directly on archive members. Only @code{ar} and
7643 other programs specifically designed to operate on archives can do so.
7644 Therefore, valid commands to update an archive member target probably must
7645 use @code{ar}. For example, this rule says to create a member
7646 @file{hack.o} in archive @file{foolib} by copying the file @file{hack.o}:
7649 foolib(hack.o) : hack.o
7653 In fact, nearly all archive member targets are updated in just this way
7654 and there is an implicit rule to do it for you. @strong{Note:} The
7655 @samp{c} flag to @code{ar} is required if the archive file does not
7658 To specify several members in the same archive, you can write all the
7659 member names together between the parentheses. For example:
7662 foolib(hack.o kludge.o)
7669 foolib(hack.o) foolib(kludge.o)
7672 @cindex wildcard, in archive member
7673 You can also use shell-style wildcards in an archive member reference.
7674 @xref{Wildcards, ,Using Wildcard Characters in File Names}. For
7675 example, @w{@samp{foolib(*.o)}} expands to all existing members of the
7676 @file{foolib} archive whose names end in @samp{.o}; perhaps
7677 @samp{@w{foolib(hack.o)} @w{foolib(kludge.o)}}.
7679 @node Archive Update, Archive Suffix Rules, Archive Members, Archives
7680 @section Implicit Rule for Archive Member Targets
7682 Recall that a target that looks like @file{@var{a}(@var{m})} stands for the
7683 member named @var{m} in the archive file @var{a}.
7685 When @code{make} looks for an implicit rule for such a target, as a special
7686 feature it considers implicit rules that match @file{(@var{m})}, as well as
7687 those that match the actual target @file{@var{a}(@var{m})}.
7689 This causes one special rule whose target is @file{(%)} to match. This
7690 rule updates the target @file{@var{a}(@var{m})} by copying the file @var{m}
7691 into the archive. For example, it will update the archive member target
7692 @file{foo.a(bar.o)} by copying the @emph{file} @file{bar.o} into the
7693 archive @file{foo.a} as a @emph{member} named @file{bar.o}.
7695 When this rule is chained with others, the result is very powerful.
7696 Thus, @samp{make "foo.a(bar.o)"} (the quotes are needed to protect the
7697 @samp{(} and @samp{)} from being interpreted specially by the shell) in
7698 the presence of a file @file{bar.c} is enough to cause the following
7699 commands to be run, even without a makefile:
7702 cc -c bar.c -o bar.o
7708 Here @code{make} has envisioned the file @file{bar.o} as an intermediate
7709 file. @xref{Chained Rules, ,Chains of Implicit Rules}.
7711 Implicit rules such as this one are written using the automatic variable
7712 @samp{$%}. @xref{Automatic, ,Automatic Variables}.
7714 An archive member name in an archive cannot contain a directory name, but
7715 it may be useful in a makefile to pretend that it does. If you write an
7716 archive member target @file{foo.a(dir/file.o)}, @code{make} will perform
7717 automatic updating with this command:
7720 ar r foo.a dir/file.o
7724 which has the effect of copying the file @file{dir/file.o} into a member
7725 named @file{file.o}. In connection with such usage, the automatic variables
7726 @code{%D} and @code{%F} may be useful.
7729 * Archive Symbols:: How to update archive symbol directories.
7732 @node Archive Symbols, , , Archive Update
7733 @subsection Updating Archive Symbol Directories
7734 @cindex @code{__.SYMDEF}
7735 @cindex updating archive symbol directories
7736 @cindex archive symbol directory updating
7737 @cindex symbol directories, updating archive
7738 @cindex directories, updating archive symbol
7740 An archive file that is used as a library usually contains a special member
7741 named @file{__.SYMDEF} that contains a directory of the external symbol
7742 names defined by all the other members. After you update any other
7743 members, you need to update @file{__.SYMDEF} so that it will summarize the
7744 other members properly. This is done by running the @code{ranlib} program:
7747 ranlib @var{archivefile}
7750 Normally you would put this command in the rule for the archive file,
7751 and make all the members of the archive file dependencies of that rule.
7755 libfoo.a: libfoo.a(x.o) libfoo.a(y.o) @dots{}
7760 The effect of this is to update archive members @file{x.o}, @file{y.o},
7761 etc., and then update the symbol directory member @file{__.SYMDEF} by
7762 running @code{ranlib}. The rules for updating the members are not shown
7763 here; most likely you can omit them and use the implicit rule which copies
7764 files into the archive, as described in the preceding section.
7766 This is not necessary when using the GNU @code{ar} program, which
7767 updates the @file{__.SYMDEF} member automatically.
7769 @node Archive Suffix Rules, , Archive Update, Archives
7770 @section Suffix Rules for Archive Files
7771 @cindex suffix rule, for archive
7772 @cindex archive, suffix rule for
7773 @cindex library archive, suffix rule for
7774 @cindex @code{.a} (archives)
7776 You can write a special kind of suffix rule for dealing with archive
7777 files. @xref{Suffix Rules}, for a full explanation of suffix rules.
7778 Archive suffix rules are obsolete in GNU @code{make}, because pattern
7779 rules for archives are a more general mechanism (@pxref{Archive
7780 Update}). But they are retained for compatibility with other
7783 To write a suffix rule for archives, you simply write a suffix rule
7784 using the target suffix @samp{.a} (the usual suffix for archive files).
7785 For example, here is the old-fashioned suffix rule to update a library
7786 archive from C source files:
7791 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
7798 This works just as if you had written the pattern rule:
7803 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
7809 In fact, this is just what @code{make} does when it sees a suffix rule
7810 with @samp{.a} as the target suffix. Any double-suffix rule
7811 @w{@samp{.@var{x}.a}} is converted to a pattern rule with the target
7812 pattern @samp{(%.o)} and a dependency pattern of @samp{%.@var{x}}.
7814 Since you might want to use @samp{.a} as the suffix for some other kind
7815 of file, @code{make} also converts archive suffix rules to pattern rules
7816 in the normal way (@pxref{Suffix Rules}). Thus a double-suffix rule
7817 @w{@samp{.@var{x}.a}} produces two pattern rules: @samp{@w{(%.o):}
7818 @w{%.@var{x}}} and @samp{@w{%.a}: @w{%.@var{x}}}.@refill
7820 @node Features, Missing, Archives, Top
7821 @chapter Features of GNU @code{make}
7822 @cindex features of GNU @code{make}
7824 @cindex compatibility
7826 Here is a summary of the features of GNU @code{make}, for comparison
7827 with and credit to other versions of @code{make}. We consider the
7828 features of @code{make} in 4.2 BSD systems as a baseline. If you are
7829 concerned with writing portable makefiles, you should use only the
7830 features of @code{make} @emph{not} listed here or in @ref{Missing}.
7832 Many features come from the version of @code{make} in System V.
7836 The @code{VPATH} variable and its special meaning.
7837 @xref{Directory Search, , Searching Directories for Dependencies}.
7838 This feature exists in System V @code{make}, but is undocumented.
7839 It is documented in 4.3 BSD @code{make} (which says it mimics System V's
7840 @code{VPATH} feature).@refill
7843 Included makefiles. @xref{Include, ,Including Other Makefiles}.
7844 Allowing multiple files to be included with a single directive is a GNU
7848 Variables are read from and communicated via the environment.
7849 @xref{Environment, ,Variables from the Environment}.
7852 Options passed through the variable @code{MAKEFLAGS} to recursive
7853 invocations of @code{make}.
7854 @xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
7857 The automatic variable @code{$%} is set to the member name
7858 in an archive reference. @xref{Automatic, ,Automatic Variables}.
7861 The automatic variables @code{$@@}, @code{$*}, @code{$<}, @code{$%},
7862 and @code{$?} have corresponding forms like @code{$(@@F)} and
7863 @code{$(@@D)}. We have generalized this to @code{$^} as an obvious
7864 extension. @xref{Automatic, ,Automatic Variables}.@refill
7867 Substitution variable references.
7868 @xref{Reference, ,Basics of Variable References}.
7871 The command-line options @samp{-b} and @samp{-m}, accepted and
7872 ignored. In System V @code{make}, these options actually do something.
7875 Execution of recursive commands to run @code{make} via the variable
7876 @code{MAKE} even if @samp{-n}, @samp{-q} or @samp{-t} is specified.
7877 @xref{Recursion, ,Recursive Use of @code{make}}.
7880 Support for suffix @samp{.a} in suffix rules. @xref{Archive Suffix
7881 Rules}. This feature is obsolete in GNU @code{make}, because the
7882 general feature of rule chaining (@pxref{Chained Rules, ,Chains of
7883 Implicit Rules}) allows one pattern rule for installing members in an
7884 archive (@pxref{Archive Update}) to be sufficient.
7887 The arrangement of lines and backslash-newline combinations in
7888 commands is retained when the commands are printed, so they appear as
7889 they do in the makefile, except for the stripping of initial
7893 The following features were inspired by various other versions of
7894 @code{make}. In some cases it is unclear exactly which versions inspired
7899 Pattern rules using @samp{%}.
7900 This has been implemented in several versions of @code{make}.
7901 We're not sure who invented it first, but it's been spread around a bit.
7902 @xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.@refill
7905 Rule chaining and implicit intermediate files.
7906 This was implemented by Stu Feldman in his version of @code{make}
7907 for AT&T Eighth Edition Research Unix, and later by Andrew Hume of
7908 AT&T Bell Labs in his @code{mk} program (where he terms it
7909 ``transitive closure''). We do not really know if
7910 we got this from either of them or thought it up ourselves at the
7911 same time. @xref{Chained Rules, ,Chains of Implicit Rules}.
7914 The automatic variable @code{$^} containing a list of all dependencies
7915 of the current target. We did not invent this, but we have no idea who did.
7916 @xref{Automatic, ,Automatic Variables}.
7919 The ``what if'' flag (@samp{-W} in GNU @code{make}) was (as far as we know)
7920 invented by Andrew Hume in @code{mk}.
7921 @xref{Instead of Execution, ,Instead of Executing the Commands}.
7924 The concept of doing several things at once (parallelism) exists in
7925 many incarnations of @code{make} and similar programs, though not in the
7926 System V or BSD implementations. @xref{Execution, ,Command Execution}.
7929 Modified variable references using pattern substitution come from
7930 SunOS 4. @xref{Reference, ,Basics of Variable References}.
7931 This functionality was provided in GNU @code{make} by the
7932 @code{patsubst} function before the alternate syntax was implemented
7933 for compatibility with SunOS 4. It is not altogether clear who
7934 inspired whom, since GNU @code{make} had @code{patsubst} before SunOS
7935 4 was released.@refill
7938 The special significance of @samp{+} characters preceding command lines
7939 (@pxref{Instead of Execution, ,Instead of Executing the Commands}) is
7941 @cite{IEEE Standard 1003.2-1992} (POSIX.2).
7944 The @samp{+=} syntax to append to the value of a variable comes from SunOS
7945 4 @code{make}. @xref{Appending, , Appending More Text to Variables}.
7948 The syntax @w{@samp{@var{archive}(@var{mem1} @var{mem2}@dots{})}} to list
7949 multiple members in a single archive file comes from SunOS 4 @code{make}.
7950 @xref{Archive Members}.
7953 The @code{-include} directive to include makefiles with no error for a
7954 nonexistent file comes from SunOS 4 @code{make}. (But note that SunOS 4
7955 @code{make} does not allow multiple makefiles to be specified in one
7956 @code{-include} directive.)
7959 The remaining features are inventions new in GNU @code{make}:
7963 Use the @samp{-v} or @samp{--version} option to print version and
7964 copyright information.
7967 Use the @samp{-h} or @samp{--help} option to summarize the options to
7971 Simply-expanded variables. @xref{Flavors, ,The Two Flavors of Variables}.
7974 Pass command-line variable assignments automatically through the
7975 variable @code{MAKE} to recursive @code{make} invocations.
7976 @xref{Recursion, ,Recursive Use of @code{make}}.
7979 Use the @samp{-C} or @samp{--directory} command option to change
7980 directory. @xref{Options Summary, ,Summary of Options}.
7983 Make verbatim variable definitions with @code{define}.
7984 @xref{Defining, ,Defining Variables Verbatim}.
7987 Declare phony targets with the special target @code{.PHONY}.
7989 Andrew Hume of AT&T Bell Labs implemented a similar feature with a
7990 different syntax in his @code{mk} program. This seems to be a case of
7991 parallel discovery. @xref{Phony Targets, ,Phony Targets}.
7994 Manipulate text by calling functions.
7995 @xref{Functions, ,Functions for Transforming Text}.
7998 Use the @samp{-o} or @samp{--old-file}
7999 option to pretend a file's modification-time is old.
8000 @xref{Avoiding Compilation, ,Avoiding Recompilation of Some Files}.
8003 Conditional execution.
8005 This feature has been implemented numerous times in various versions
8006 of @code{make}; it seems a natural extension derived from the features
8007 of the C preprocessor and similar macro languages and is not a
8008 revolutionary concept. @xref{Conditionals, ,Conditional Parts of Makefiles}.
8011 Specify a search path for included makefiles.
8012 @xref{Include, ,Including Other Makefiles}.
8015 Specify extra makefiles to read with an environment variable.
8016 @xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}.
8019 Strip leading sequences of @samp{./} from file names, so that
8020 @file{./@var{file}} and @file{@var{file}} are considered to be the
8024 Use a special search method for library dependencies written in the
8025 form @samp{-l@var{name}}.
8026 @xref{Libraries/Search, ,Directory Search for Link Libraries}.
8029 Allow suffixes for suffix rules
8030 (@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}) to contain any
8031 characters. In other versions of @code{make}, they must begin with
8032 @samp{.} and not contain any @samp{/} characters.
8035 Keep track of the current level of @code{make} recursion using the
8036 variable @code{MAKELEVEL}. @xref{Recursion, ,Recursive Use of @code{make}}.
8039 Specify static pattern rules. @xref{Static Pattern, ,Static Pattern Rules}.
8042 Provide selective @code{vpath} search.
8043 @xref{Directory Search, ,Searching Directories for Dependencies}.
8046 Provide computed variable references.
8047 @xref{Reference, ,Basics of Variable References}.
8050 Update makefiles. @xref{Remaking Makefiles, ,How Makefiles Are Remade}.
8051 System V @code{make} has a very, very limited form of this
8052 functionality in that it will check out SCCS files for makefiles.
8055 Various new built-in implicit rules.
8056 @xref{Catalogue of Rules, ,Catalogue of Implicit Rules}.
8059 The built-in variable @samp{MAKE_VERSION} gives the version number of
8063 @node Missing, Makefile Conventions, Features, Top
8064 @chapter Incompatibilities and Missing Features
8065 @cindex incompatibilities
8066 @cindex missing features
8067 @cindex features, missing
8069 The @code{make} programs in various other systems support a few features
8070 that are not implemented in GNU @code{make}. The POSIX.2 standard
8071 (@cite{IEEE Standard 1003.2-1992}) which specifies @code{make} does not
8072 require any of these features.@refill
8076 A target of the form @samp{@var{file}((@var{entry}))} stands for a member
8077 of archive file @var{file}. The member is chosen, not by name, but by
8078 being an object file which defines the linker symbol @var{entry}.@refill
8080 This feature was not put into GNU @code{make} because of the
8081 nonmodularity of putting knowledge into @code{make} of the internal
8082 format of archive file symbol tables.
8083 @xref{Archive Symbols, ,Updating Archive Symbol Directories}.
8086 Suffixes (used in suffix rules) that end with the character @samp{~}
8087 have a special meaning to System V @code{make};
8088 they refer to the SCCS file that corresponds
8089 to the file one would get without the @samp{~}. For example, the
8090 suffix rule @samp{.c~.o} would make the file @file{@var{n}.o} from
8091 the SCCS file @file{s.@var{n}.c}. For complete coverage, a whole
8092 series of such suffix rules is required.
8093 @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}.
8095 In GNU @code{make}, this entire series of cases is handled by two
8096 pattern rules for extraction from SCCS, in combination with the
8097 general feature of rule chaining.
8098 @xref{Chained Rules, ,Chains of Implicit Rules}.
8101 In System V @code{make}, the string @samp{$$@@} has the strange meaning
8102 that, in the dependencies of a rule with multiple targets, it stands
8103 for the particular target that is being processed.
8105 This is not defined in GNU @code{make} because @samp{$$} should always
8106 stand for an ordinary @samp{$}.
8108 It is possible to get this functionality through the use of static pattern
8109 rules (@pxref{Static Pattern, ,Static Pattern Rules}).
8110 The System V @code{make} rule:
8113 $(targets): $$@@.o lib.a
8117 can be replaced with the GNU @code{make} static pattern rule:
8120 $(targets): %: %.o lib.a
8124 In System V and 4.3 BSD @code{make}, files found by @code{VPATH} search
8125 (@pxref{Directory Search, ,Searching Directories for Dependencies}) have their names changed inside command
8126 strings. We feel it is much cleaner to always use automatic variables
8127 and thus make this feature obsolete.@refill
8130 In some Unix @code{make}s, the automatic variable @code{$*} appearing in
8131 the dependencies of a rule has the amazingly strange ``feature'' of
8132 expanding to the full name of the @emph{target of that rule}. We cannot
8133 imagine what went on in the minds of Unix @code{make} developers to do
8134 this; it is utterly inconsistent with the normal definition of @code{$*}.
8135 @vindex * @r{(automatic variable), unsupported bizarre usage}
8138 In some Unix @code{make}s, implicit rule search
8139 (@pxref{Implicit Rules, ,Using Implicit Rules}) is apparently done for
8140 @emph{all} targets, not just those without commands. This means you can
8151 and Unix @code{make} will intuit that @file{foo.o} depends on
8152 @file{foo.c}.@refill
8154 We feel that such usage is broken. The dependency properties of
8155 @code{make} are well-defined (for GNU @code{make}, at least),
8156 and doing such a thing simply does not fit the model.@refill
8159 GNU @code{make} does not include any built-in implicit rules for
8160 compiling or preprocessing EFL programs. If we hear of anyone who is
8161 using EFL, we will gladly add them.
8164 It appears that in SVR4 @code{make}, a suffix rule can be specified with
8165 no commands, and it is treated as if it had empty commands
8166 (@pxref{Empty Commands}). For example:
8173 will override the built-in @file{.c.a} suffix rule.
8175 We feel that it is cleaner for a rule without commands to always simply
8176 add to the dependency list for the target. The above example can be
8177 easily rewritten to get the desired behavior in GNU @code{make}:
8184 Some versions of @code{make} invoke the shell with the @samp{-e} flag,
8185 except under @samp{-k} (@pxref{Testing, ,Testing the Compilation of a
8186 Program}). The @samp{-e} flag tells the shell to exit as soon as any
8187 program it runs returns a nonzero status. We feel it is cleaner to
8188 write each shell command line to stand on its own and not require this
8192 @comment The makefile standards are in a separate file that is also
8193 @comment included by standards.texi.
8194 @include make-stds.texi
8196 @node Quick Reference, Complex Makefile, Makefile Conventions, Top
8197 @appendix Quick Reference
8199 This appendix summarizes the directives, text manipulation functions,
8200 and special variables which GNU @code{make} understands.
8201 @xref{Special Targets}, @ref{Catalogue of Rules, ,Catalogue of Implicit Rules},
8202 and @ref{Options Summary, ,Summary of Options},
8203 for other summaries.
8205 Here is a summary of the directives GNU @code{make} recognizes:
8208 @item define @var{variable}
8211 Define a multi-line, recursively-expanded variable.@*
8214 @item ifdef @var{variable}
8215 @itemx ifndef @var{variable}
8216 @itemx ifeq (@var{a},@var{b})
8217 @itemx ifeq "@var{a}" "@var{b}"
8218 @itemx ifeq '@var{a}' '@var{b}'
8219 @itemx ifneq (@var{a},@var{b})
8220 @itemx ifneq "@var{a}" "@var{b}"
8221 @itemx ifneq '@var{a}' '@var{b}'
8225 Conditionally evaluate part of the makefile.@*
8226 @xref{Conditionals}.
8228 @item include @var{file}
8230 Include another makefile.@*
8231 @xref{Include, ,Including Other Makefiles}.
8233 @item override @var{variable} = @var{value}
8234 @itemx override @var{variable} := @var{value}
8235 @itemx override @var{variable} += @var{value}
8236 @itemx override define @var{variable}
8239 Define a variable, overriding any previous definition, even one from
8241 @xref{Override Directive, ,The @code{override} Directive}.
8245 Tell @code{make} to export all variables to child processes by default.@*
8246 @xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
8248 @item export @var{variable}
8249 @itemx export @var{variable} = @var{value}
8250 @itemx export @var{variable} := @var{value}
8251 @itemx export @var{variable} += @var{value}
8252 @itemx unexport @var{variable}
8253 Tell @code{make} whether or not to export a particular variable to child
8255 @xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
8257 @item vpath @var{pattern} @var{path}
8258 Specify a search path for files matching a @samp{%} pattern.@*
8259 @xref{Selective Search, , The @code{vpath} Directive}.
8261 @item vpath @var{pattern}
8262 Remove all search paths previously specified for @var{pattern}.
8265 Remove all search paths previously specified in any @code{vpath}
8269 Here is a summary of the text manipulation functions (@pxref{Functions}):
8272 @item $(subst @var{from},@var{to},@var{text})
8273 Replace @var{from} with @var{to} in @var{text}.@*
8274 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8276 @item $(patsubst @var{pattern},@var{replacement},@var{text})
8277 Replace words matching @var{pattern} with @var{replacement} in @var{text}.@*
8278 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8280 @item $(strip @var{string})
8281 Remove excess whitespace characters from @var{string}.@*
8282 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8284 @item $(findstring @var{find},@var{text})
8285 Locate @var{find} in @var{text}.@*
8286 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8288 @item $(filter @var{pattern}@dots{},@var{text})
8289 Select words in @var{text} that match one of the @var{pattern} words.@*
8290 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8292 @item $(filter-out @var{pattern}@dots{},@var{text})
8293 Select words in @var{text} that @emph{do not} match any of the @var{pattern} words.@*
8294 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8296 @item $(sort @var{list})
8297 Sort the words in @var{list} lexicographically, removing duplicates.@*
8298 @xref{Text Functions, , Functions for String Substitution and Analysis}.
8300 @item $(dir @var{names}@dots{})
8301 Extract the directory part of each file name.@*
8302 @xref{Filename Functions, ,Functions for File Names}.
8304 @item $(notdir @var{names}@dots{})
8305 Extract the non-directory part of each file name.@*
8306 @xref{Filename Functions, ,Functions for File Names}.
8308 @item $(suffix @var{names}@dots{})
8309 Extract the suffix (the last @samp{.} and following characters) of each file name.@*
8310 @xref{Filename Functions, ,Functions for File Names}.
8312 @item $(basename @var{names}@dots{})
8313 Extract the base name (name without suffix) of each file name.@*
8314 @xref{Filename Functions, ,Functions for File Names}.
8316 @item $(addsuffix @var{suffix},@var{names}@dots{})
8317 Append @var{suffix} to each word in @var{names}.@*
8318 @xref{Filename Functions, ,Functions for File Names}.
8320 @item $(addprefix @var{prefix},@var{names}@dots{})
8321 Prepend @var{prefix} to each word in @var{names}.@*
8322 @xref{Filename Functions, ,Functions for File Names}.
8324 @item $(join @var{list1},@var{list2})
8325 Join two parallel lists of words.@*
8326 @xref{Filename Functions, ,Functions for File Names}.
8328 @item $(word @var{n},@var{text})
8329 Extract the @var{n}th word (one-origin) of @var{text}.@*
8330 @xref{Filename Functions, ,Functions for File Names}.
8332 @item $(words @var{text})
8333 Count the number of words in @var{text}.@*
8334 @xref{Filename Functions, ,Functions for File Names}.
8336 @item $(firstword @var{names}@dots{})
8337 Extract the first word of @var{names}.@*
8338 @xref{Filename Functions, ,Functions for File Names}.
8340 @item $(wildcard @var{pattern}@dots{})
8341 Find file names matching a shell file name pattern (@emph{not} a
8342 @samp{%} pattern).@*
8343 @xref{Wildcard Function, ,The Function @code{wildcard}}.
8345 @item $(shell @var{command})
8347 Execute a shell command and return its output.@*
8348 @xref{Shell Function, , The @code{shell} Function}.
8350 @item $(origin @var{variable})
8352 Return a string describing how the @code{make} variable @var{variable} was
8354 @xref{Origin Function, , The @code{origin} Function}.
8356 @item $(foreach @var{var},@var{words},@var{text})
8358 Evaluate @var{text} with @var{var} bound to each word in @var{words},
8359 and concatenate the results.@*
8360 @xref{Foreach Function, ,The @code{foreach} Function}.
8363 Here is a summary of the automatic variables.
8364 @xref{Automatic, ,Automatic Variables},
8365 for full information.
8369 The file name of the target.
8372 The target member name, when the target is an archive member.
8375 The name of the first dependency.
8378 The names of all the dependencies that are
8379 newer than the target, with spaces between them.
8380 For dependencies which are archive members, only
8381 the member named is used (@pxref{Archives}).
8384 The names of all the dependencies, with spaces between them. For
8385 dependencies which are archive members, only the member named is used
8389 The stem with which an implicit rule matches
8390 (@pxref{Pattern Match, ,How Patterns Match}).
8394 The directory part and the file-within-directory part of @code{$@@}.
8398 The directory part and the file-within-directory part of @code{$*}.
8402 The directory part and the file-within-directory part of @code{$%}.
8406 The directory part and the file-within-directory part of @code{$<}.
8410 The directory part and the file-within-directory part of @code{$^}.
8414 The directory part and the file-within-directory part of @code{$?}.
8417 These variables are used specially by GNU @code{make}:
8422 Makefiles to be read on every invocation of @code{make}.@*
8423 @xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}.
8427 Directory search path for files not found in the current directory.@*
8428 @xref{General Search, , @code{VPATH} Search Path for All Dependencies}.
8432 The name of the system default command interpreter, usually @file{/bin/sh}.
8433 You can set @code{SHELL} in the makefile to change the shell used to run
8434 commands. @xref{Execution, ,Command Execution}.
8438 The name with which @code{make} was invoked.
8439 Using this variable in commands has special meaning.
8440 @xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.
8444 The number of levels of recursion (sub-@code{make}s).@*
8445 @xref{Variables/Recursion}.
8449 The flags given to @code{make}. You can set this in the environment or
8450 a makefile to set flags.@*
8451 @xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
8455 The default list of suffixes before @code{make} reads any makefiles.
8458 @node Complex Makefile, Concept Index, Quick Reference, Top
8459 @appendix Complex Makefile Example
8461 Here is the makefile for the GNU @code{tar} program. This is a
8462 moderately complex makefile.
8464 Because it is the first target, the default goal is @samp{all}. An
8465 interesting feature of this makefile is that @file{testpad.h} is a
8466 source file automatically created by the @code{testpad} program,
8467 itself compiled from @file{testpad.c}.
8469 If you type @samp{make} or @samp{make all}, then @code{make} creates
8470 the @file{tar} executable, the @file{rmt} daemon that provides
8471 remote tape access, and the @file{tar.info} Info file.
8473 If you type @samp{make install}, then @code{make} not only creates
8474 @file{tar}, @file{rmt}, and @file{tar.info}, but also installs
8477 If you type @samp{make clean}, then @code{make} removes the @samp{.o}
8478 files, and the @file{tar}, @file{rmt}, @file{testpad},
8479 @file{testpad.h}, and @file{core} files.
8481 If you type @samp{make distclean}, then @code{make} not only removes
8482 the same files as does @samp{make clean} but also the
8483 @file{TAGS}, @file{Makefile}, and @file{config.status} files.
8484 (Although it is not evident, this makefile (and
8485 @file{config.status}) is generated by the user with the
8486 @code{configure} program, which is provided in the @code{tar}
8487 distribution, but is not shown here.)
8489 If you type @samp{make realclean}, then @code{make} removes the same
8490 files as does @samp{make distclean} and also removes the Info files
8491 generated from @file{tar.texinfo}.
8493 In addition, there are targets @code{shar} and @code{dist} that create
8498 # Generated automatically from Makefile.in by configure.
8499 # Un*x Makefile for GNU tar program.
8500 # Copyright (C) 1991 Free Software Foundation, Inc.
8504 # This program is free software; you can redistribute
8505 # it and/or modify it under the terms of the GNU
8506 # General Public License @dots{}
8513 #### Start of system configuration section. ####
8518 # If you use gcc, you should either run the
8519 # fixincludes script that comes with it or else use
8520 # gcc with the -traditional option. Otherwise ioctl
8521 # calls will be compiled incorrectly on some systems.
8524 INSTALL = /usr/local/bin/install -c
8525 INSTALLDATA = /usr/local/bin/install -c -m 644
8528 # Things you might add to DEFS:
8529 # -DSTDC_HEADERS If you have ANSI C headers and
8531 # -DPOSIX If you have POSIX.1 headers and
8533 # -DBSD42 If you have sys/dir.h (unless
8534 # you use -DPOSIX), sys/file.h,
8535 # and st_blocks in `struct stat'.
8536 # -DUSG If you have System V/ANSI C
8537 # string and memory functions
8538 # and headers, sys/sysmacros.h,
8539 # fcntl.h, getcwd, no valloc,
8540 # and ndir.h (unless
8541 # you use -DDIRENT).
8542 # -DNO_MEMORY_H If USG or STDC_HEADERS but do not
8544 # -DDIRENT If USG and you have dirent.h
8545 # instead of ndir.h.
8546 # -DSIGTYPE=int If your signal handlers
8547 # return int, not void.
8548 # -DNO_MTIO If you lack sys/mtio.h
8550 # -DNO_REMOTE If you do not have a remote shell
8552 # -DUSE_REXEC To use rexec for remote tape
8553 # operations instead of
8554 # forking rsh or remsh.
8555 # -DVPRINTF_MISSING If you lack vprintf function
8556 # (but have _doprnt).
8557 # -DDOPRNT_MISSING If you lack _doprnt function.
8558 # Also need to define
8559 # -DVPRINTF_MISSING.
8560 # -DFTIME_MISSING If you lack ftime system call.
8561 # -DSTRSTR_MISSING If you lack strstr function.
8562 # -DVALLOC_MISSING If you lack valloc function.
8563 # -DMKDIR_MISSING If you lack mkdir and
8564 # rmdir system calls.
8565 # -DRENAME_MISSING If you lack rename system call.
8566 # -DFTRUNCATE_MISSING If you lack ftruncate
8568 # -DV7 On Version 7 Unix (not
8569 # tested in a long time).
8570 # -DEMUL_OPEN3 If you lack a 3-argument version
8571 # of open, and want to emulate it
8572 # with system calls you do have.
8573 # -DNO_OPEN3 If you lack the 3-argument open
8574 # and want to disable the tar -k
8575 # option instead of emulating open.
8576 # -DXENIX If you have sys/inode.h
8577 # and need it 94 to be included.
8579 DEFS = -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
8580 -DVPRINTF_MISSING -DBSD42
8581 # Set this to rtapelib.o unless you defined NO_REMOTE,
8582 # in which case make it empty.
8583 RTAPELIB = rtapelib.o
8585 DEF_AR_FILE = /dev/rmt8
8590 CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
8591 -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \
8592 -DDEFBLOCKING=$(DEFBLOCKING)
8598 # Prefix for each installed program,
8599 # normally empty or `g'.
8602 # The directory to install tar in.
8603 bindir = $(prefix)/bin
8605 # The directory to install the info files in.
8606 infodir = $(prefix)/info
8609 #### End of system configuration section. ####
8611 SRC1 = tar.c create.c extract.c buffer.c \
8612 getoldopt.c update.c gnu.c mangle.c
8613 SRC2 = version.c list.c names.c diffarch.c \
8614 port.c wildmat.c getopt.c
8615 SRC3 = getopt1.c regex.c getdate.y
8616 SRCS = $(SRC1) $(SRC2) $(SRC3)
8617 OBJ1 = tar.o create.o extract.o buffer.o \
8618 getoldopt.o update.o gnu.o mangle.o
8619 OBJ2 = version.o list.o names.o diffarch.o \
8620 port.o wildmat.o getopt.o
8621 OBJ3 = getopt1.o regex.o getdate.o $(RTAPELIB)
8622 OBJS = $(OBJ1) $(OBJ2) $(OBJ3)
8624 AUX = README COPYING ChangeLog Makefile.in \
8625 makefile.pc configure configure.in \
8626 tar.texinfo tar.info* texinfo.tex \
8627 tar.h port.h open3.h getopt.h regex.h \
8628 rmt.h rmt.c rtapelib.c alloca.c \
8629 msd_dir.h msd_dir.c tcexparg.c \
8630 level-0 level-1 backup-specs testpad.c
8633 all: tar rmt tar.info
8637 $(CC) $(LDFLAGS) -o $@@ $(OBJS) $(LIBS)
8642 $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ rmt.c
8646 tar.info: tar.texinfo
8647 makeinfo tar.texinfo
8652 $(INSTALL) tar $(bindir)/$(binprefix)tar
8653 -test ! -f rmt || $(INSTALL) rmt /etc/rmt
8654 $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
8658 $(OBJS): tar.h port.h testpad.h
8659 regex.o buffer.o tar.o: regex.h
8660 # getdate.y has 8 shift/reduce conflicts.
8670 $(CC) -o $@@ testpad.o
8680 rm -f *.o tar rmt testpad testpad.h core
8685 rm -f TAGS Makefile config.status
8689 realclean: distclean
8694 shar: $(SRCS) $(AUX)
8695 shar $(SRCS) $(AUX) | compress \
8696 > tar-`sed -e '/version_string/!d' \
8697 -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
8703 dist: $(SRCS) $(AUX)
8705 -e '/version_string/!d' \
8706 -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
8709 -rm -rf `cat .fname`
8711 ln $(SRCS) $(AUX) `cat .fname`
8712 -rm -rf `cat .fname` .fname
8713 tar chZf `cat .fname`.tar.Z `cat .fname`
8717 tar.zoo: $(SRCS) $(AUX)
8721 for X in $(SRCS) $(AUX) ; do \
8723 sed 's/$$/^M/' $$X \
8724 > tmp.dir/$$X ; done
8725 cd tmp.dir ; zoo aM ../tar.zoo *
8730 @node Concept Index, Name Index, Complex Makefile, Top
8731 @unnumbered Index of Concepts
8735 @node Name Index, , Concept Index, Top
8736 @unnumbered Index of Functions, Variables, & Directives