1 This is make.info, produced by makeinfo version 4.8 from make.texi.
3 This file documents the GNU `make' utility, which determines
4 automatically which pieces of a large program need to be recompiled,
5 and issues the commands to recompile them.
7 This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
8 Manual', for GNU `make' version 3.81.
10 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
11 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
14 Permission is granted to copy, distribute and/or modify this
15 document under the terms of the GNU Free Documentation License,
16 Version 1.2 or any later version published by the Free Software
17 Foundation; with no Invariant Sections, with the Front-Cover Texts
18 being "A GNU Manual," and with the Back-Cover Texts as in (a)
19 below. A copy of the license is included in the section entitled
20 "GNU Free Documentation License."
22 (a) The FSF's Back-Cover Text is: "You have freedom to copy and
23 modify this GNU Manual, like GNU software. Copies published by
24 the Free Software Foundation raise funds for GNU development."
26 INFO-DIR-SECTION GNU Packages
28 * Make: (make). Remake files automatically.
32 File: make.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)
37 This file documents the GNU `make' utility, which determines
38 automatically which pieces of a large program need to be recompiled,
39 and issues the commands to recompile them.
41 This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
42 Manual', for GNU `make' version 3.81.
44 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
45 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
48 Permission is granted to copy, distribute and/or modify this
49 document under the terms of the GNU Free Documentation License,
50 Version 1.2 or any later version published by the Free Software
51 Foundation; with no Invariant Sections, with the Front-Cover Texts
52 being "A GNU Manual," and with the Back-Cover Texts as in (a)
53 below. A copy of the license is included in the section entitled
54 "GNU Free Documentation License."
56 (a) The FSF's Back-Cover Text is: "You have freedom to copy and
57 modify this GNU Manual, like GNU software. Copies published by
58 the Free Software Foundation raise funds for GNU development."
62 * Overview:: Overview of `make'.
63 * Introduction:: An introduction to `make'.
64 * Makefiles:: Makefiles tell `make' what to do.
65 * Rules:: Rules describe when a file must be remade.
66 * Commands:: Commands say how to remake a file.
67 * Using Variables:: You can use variables to avoid repetition.
68 * Conditionals:: Use or ignore parts of the makefile based
69 on the values of variables.
70 * Functions:: Many powerful ways to manipulate text.
71 * Invoking make: Running. How to invoke `make' on the command line.
72 * Implicit Rules:: Use implicit rules to treat many files alike,
73 based on their file names.
74 * Archives:: How `make' can update library archives.
75 * Features:: Features GNU `make' has over other `make's.
76 * Missing:: What GNU `make' lacks from other `make's.
77 * Makefile Conventions:: Conventions for writing makefiles for
79 * Quick Reference:: A quick reference for experienced users.
80 * Error Messages:: A list of common errors generated by `make'.
81 * Complex Makefile:: A real example of a straightforward,
82 but nontrivial, makefile.
84 * GNU Free Documentation License:: License for copying this manual
85 * Concept Index:: Index of Concepts
86 * Name Index:: Index of Functions, Variables, & Directives
88 --- The Detailed Node Listing ---
92 * Preparing:: Preparing and Running Make
93 * Reading:: On Reading this Text
94 * Bugs:: Problems and Bugs
96 An Introduction to Makefiles
98 * Rule Introduction:: What a rule looks like.
99 * Simple Makefile:: A Simple Makefile
100 * How Make Works:: How `make' Processes This Makefile
101 * Variables Simplify:: Variables Make Makefiles Simpler
102 * make Deduces:: Letting `make' Deduce the Commands
103 * Combine By Prerequisite:: Another Style of Makefile
104 * Cleanup:: Rules for Cleaning the Directory
108 * Makefile Contents:: What makefiles contain.
109 * Makefile Names:: How to name your makefile.
110 * Include:: How one makefile can use another makefile.
111 * MAKEFILES Variable:: The environment can specify extra makefiles.
112 * MAKEFILE_LIST Variable:: Discover which makefiles have been read.
113 * Special Variables:: Other special variables.
114 * Remaking Makefiles:: How makefiles get remade.
115 * Overriding Makefiles:: How to override part of one makefile
116 with another makefile.
117 * Reading Makefiles:: How makefiles are parsed.
118 * Secondary Expansion:: How and when secondary expansion is performed.
122 * Rule Example:: An example explained.
123 * Rule Syntax:: General syntax explained.
124 * Prerequisite Types:: There are two types of prerequisites.
125 * Wildcards:: Using wildcard characters such as `*'.
126 * Directory Search:: Searching other directories for source files.
127 * Phony Targets:: Using a target that is not a real file's name.
128 * Force Targets:: You can use a target without commands
129 or prerequisites to mark other targets
131 * Empty Targets:: When only the date matters and the
133 * Special Targets:: Targets with special built-in meanings.
134 * Multiple Targets:: When to make use of several targets in a rule.
135 * Multiple Rules:: How to use several rules with the same target.
136 * Static Pattern:: Static pattern rules apply to multiple targets
137 and can vary the prerequisites according to
139 * Double-Colon:: How to use a special kind of rule to allow
140 several independent rules for one target.
141 * Automatic Prerequisites:: How to automatically generate rules giving
142 prerequisites from source files themselves.
144 Using Wildcard Characters in File Names
146 * Wildcard Examples:: Several examples
147 * Wildcard Pitfall:: Problems to avoid.
148 * Wildcard Function:: How to cause wildcard expansion where
149 it does not normally take place.
151 Searching Directories for Prerequisites
153 * General Search:: Specifying a search path that applies
154 to every prerequisite.
155 * Selective Search:: Specifying a search path
156 for a specified class of names.
157 * Search Algorithm:: When and how search paths are applied.
158 * Commands/Search:: How to write shell commands that work together
160 * Implicit/Search:: How search paths affect implicit rules.
161 * Libraries/Search:: Directory search for link libraries.
165 * Static Usage:: The syntax of static pattern rules.
166 * Static versus Implicit:: When are they better than implicit rules?
168 Writing the Commands in Rules
170 * Command Syntax:: Command syntax features and pitfalls.
171 * Echoing:: How to control when commands are echoed.
172 * Execution:: How commands are executed.
173 * Parallel:: How commands can be executed in parallel.
174 * Errors:: What happens after a command execution error.
175 * Interrupts:: What happens when a command is interrupted.
176 * Recursion:: Invoking `make' from makefiles.
177 * Sequences:: Defining canned sequences of commands.
178 * Empty Commands:: Defining useful, do-nothing commands.
182 * Splitting Lines:: Breaking long command lines for readability.
183 * Variables in Commands:: Using `make' variables in commands.
187 * Choosing the Shell:: How `make' chooses the shell used
190 Recursive Use of `make'
192 * MAKE Variable:: The special effects of using `$(MAKE)'.
193 * Variables/Recursion:: How to communicate variables to a sub-`make'.
194 * Options/Recursion:: How to communicate options to a sub-`make'.
195 * -w Option:: How the `-w' or `--print-directory' option
196 helps debug use of recursive `make' commands.
200 * Reference:: How to use the value of a variable.
201 * Flavors:: Variables come in two flavors.
202 * Advanced:: Advanced features for referencing a variable.
203 * Values:: All the ways variables get their values.
204 * Setting:: How to set a variable in the makefile.
205 * Appending:: How to append more text to the old value
207 * Override Directive:: How to set a variable in the makefile even if
208 the user has set it with a command argument.
209 * Defining:: An alternate way to set a variable
210 to a verbatim string.
211 * Environment:: Variable values can come from the environment.
212 * Target-specific:: Variable values can be defined on a per-target
214 * Pattern-specific:: Target-specific variable values can be applied
215 to a group of targets that match a pattern.
217 Advanced Features for Reference to Variables
219 * Substitution Refs:: Referencing a variable with
220 substitutions on the value.
221 * Computed Names:: Computing the name of the variable to refer to.
223 Conditional Parts of Makefiles
225 * Conditional Example:: Example of a conditional
226 * Conditional Syntax:: The syntax of conditionals.
227 * Testing Flags:: Conditionals that test flags.
229 Functions for Transforming Text
231 * Syntax of Functions:: How to write a function call.
232 * Text Functions:: General-purpose text manipulation functions.
233 * File Name Functions:: Functions for manipulating file names.
234 * Conditional Functions:: Functions that implement conditions.
235 * Foreach Function:: Repeat some text with controlled variation.
236 * Call Function:: Expand a user-defined function.
237 * Value Function:: Return the un-expanded value of a variable.
238 * Eval Function:: Evaluate the arguments as makefile syntax.
239 * Origin Function:: Find where a variable got its value.
240 * Flavor Function:: Find out the flavor of a variable.
241 * Shell Function:: Substitute the output of a shell command.
242 * Make Control Functions:: Functions that control how make runs.
246 * Makefile Arguments:: How to specify which makefile to use.
247 * Goals:: How to use goal arguments to specify which
248 parts of the makefile to use.
249 * Instead of Execution:: How to use mode flags to specify what
250 kind of thing to do with the commands
251 in the makefile other than simply
253 * Avoiding Compilation:: How to avoid recompiling certain files.
254 * Overriding:: How to override a variable to specify
255 an alternate compiler and other things.
256 * Testing:: How to proceed past some errors, to
258 * Options Summary:: Summary of Options
262 * Using Implicit:: How to use an existing implicit rule
263 to get the commands for updating a file.
264 * Catalogue of Rules:: A list of built-in implicit rules.
265 * Implicit Variables:: How to change what predefined rules do.
266 * Chained Rules:: How to use a chain of implicit rules.
267 * Pattern Rules:: How to define new implicit rules.
268 * Last Resort:: How to define commands for rules which
270 * Suffix Rules:: The old-fashioned style of implicit rule.
271 * Implicit Rule Search:: The precise algorithm for applying
274 Defining and Redefining Pattern Rules
276 * Pattern Intro:: An introduction to pattern rules.
277 * Pattern Examples:: Examples of pattern rules.
278 * Automatic Variables:: How to use automatic variables in the
279 commands of implicit rules.
280 * Pattern Match:: How patterns match.
281 * Match-Anything Rules:: Precautions you should take prior to
282 defining rules that can match any
283 target file whatever.
284 * Canceling Rules:: How to override or cancel built-in rules.
286 Using `make' to Update Archive Files
288 * Archive Members:: Archive members as targets.
289 * Archive Update:: The implicit rule for archive member targets.
290 * Archive Pitfalls:: Dangers to watch out for when using archives.
291 * Archive Suffix Rules:: You can write a special kind of suffix rule
292 for updating archives.
294 Implicit Rule for Archive Member Targets
296 * Archive Symbols:: How to update archive symbol directories.
299 File: make.info, Node: Overview, Next: Introduction, Prev: Top, Up: Top
304 The `make' utility automatically determines which pieces of a large
305 program need to be recompiled, and issues commands to recompile them.
306 This manual describes GNU `make', which was implemented by Richard
307 Stallman and Roland McGrath. Development since Version 3.76 has been
308 handled by Paul D. Smith.
310 GNU `make' conforms to section 6.2 of `IEEE Standard 1003.2-1992'
313 Our examples show C programs, since they are most common, but you
314 can use `make' with any programming language whose compiler can be run
315 with a shell command. Indeed, `make' is not limited to programs. You
316 can use it to describe any task where some files must be updated
317 automatically from others whenever the others change.
321 * Preparing:: Preparing and Running Make
322 * Reading:: On Reading this Text
323 * Bugs:: Problems and Bugs
326 File: make.info, Node: Preparing, Next: Reading, Prev: Overview, Up: Overview
328 Preparing and Running Make
329 ==========================
331 To prepare to use `make', you must write a file called the
332 "makefile" that describes the relationships among files in your program
333 and provides commands for updating each file. In a program, typically,
334 the executable file is updated from object files, which are in turn
335 made by compiling source files.
337 Once a suitable makefile exists, each time you change some source
338 files, this simple shell command:
342 suffices to perform all necessary recompilations. The `make' program
343 uses the makefile data base and the last-modification times of the
344 files to decide which of the files need to be updated. For each of
345 those files, it issues the commands recorded in the data base.
347 You can provide command line arguments to `make' to control which
348 files should be recompiled, or how. *Note How to Run `make': Running.
351 File: make.info, Node: Reading, Next: Bugs, Prev: Preparing, Up: Overview
353 1.1 How to Read This Manual
354 ===========================
356 If you are new to `make', or are looking for a general introduction,
357 read the first few sections of each chapter, skipping the later
358 sections. In each chapter, the first few sections contain introductory
359 or general information and the later sections contain specialized or
360 technical information. The exception is the second chapter, *Note An
361 Introduction to Makefiles: Introduction, all of which is introductory.
363 If you are familiar with other `make' programs, see *Note Features
364 of GNU `make': Features, which lists the enhancements GNU `make' has,
365 and *Note Incompatibilities and Missing Features: Missing, which
366 explains the few things GNU `make' lacks that others have.
368 For a quick summary, see *Note Options Summary::, *Note Quick
369 Reference::, and *Note Special Targets::.
372 File: make.info, Node: Bugs, Prev: Reading, Up: Overview
374 1.2 Problems and Bugs
375 =====================
377 If you have problems with GNU `make' or think you've found a bug,
378 please report it to the developers; we cannot promise to do anything but
379 we might well want to fix it.
381 Before reporting a bug, make sure you've actually found a real bug.
382 Carefully reread the documentation and see if it really says you can do
383 what you're trying to do. If it's not clear whether you should be able
384 to do something or not, report that too; it's a bug in the
387 Before reporting a bug or trying to fix it yourself, try to isolate
388 it to the smallest possible makefile that reproduces the problem. Then
389 send us the makefile and the exact results `make' gave you, including
390 any error or warning messages. Please don't paraphrase these messages:
391 it's best to cut and paste them into your report. When generating this
392 small makefile, be sure to not use any non-free or unusual tools in
393 your commands: you can almost always emulate what such a tool would do
394 with simple shell commands. Finally, be sure to explain what you
395 expected to occur; this will help us decide whether the problem was
396 really in the documentation.
398 Once you have a precise problem you can report it in one of two ways.
399 Either send electronic mail to:
403 or use our Web-based project management tool, at:
405 http://savannah.gnu.org/projects/make/
407 In addition to the information above, please be careful to include the
408 version number of `make' you are using. You can get this information
409 with the command `make --version'. Be sure also to include the type of
410 machine and operating system you are using. One way to obtain this
411 information is by looking at the final lines of output from the command
415 File: make.info, Node: Introduction, Next: Makefiles, Prev: Overview, Up: Top
417 2 An Introduction to Makefiles
418 ******************************
420 You need a file called a "makefile" to tell `make' what to do. Most
421 often, the makefile tells `make' how to compile and link a program.
423 In this chapter, we will discuss a simple makefile that describes
424 how to compile and link a text editor which consists of eight C source
425 files and three header files. The makefile can also tell `make' how to
426 run miscellaneous commands when explicitly asked (for example, to remove
427 certain files as a clean-up operation). To see a more complex example
428 of a makefile, see *Note Complex Makefile::.
430 When `make' recompiles the editor, each changed C source file must
431 be recompiled. If a header file has changed, each C source file that
432 includes the header file must be recompiled to be safe. Each
433 compilation produces an object file corresponding to the source file.
434 Finally, if any source file has been recompiled, all the object files,
435 whether newly made or saved from previous compilations, must be linked
436 together to produce the new executable editor.
440 * Rule Introduction:: What a rule looks like.
441 * Simple Makefile:: A Simple Makefile
442 * How Make Works:: How `make' Processes This Makefile
443 * Variables Simplify:: Variables Make Makefiles Simpler
444 * make Deduces:: Letting `make' Deduce the Commands
445 * Combine By Prerequisite:: Another Style of Makefile
446 * Cleanup:: Rules for Cleaning the Directory
449 File: make.info, Node: Rule Introduction, Next: Simple Makefile, Prev: Introduction, Up: Introduction
451 2.1 What a Rule Looks Like
452 ==========================
454 A simple makefile consists of "rules" with the following shape:
456 TARGET ... : PREREQUISITES ...
461 A "target" is usually the name of a file that is generated by a
462 program; examples of targets are executable or object files. A target
463 can also be the name of an action to carry out, such as `clean' (*note
466 A "prerequisite" is a file that is used as input to create the
467 target. A target often depends on several files.
469 A "command" is an action that `make' carries out. A rule may have
470 more than one command, each on its own line. *Please note:* you need
471 to put a tab character at the beginning of every command line! This is
472 an obscurity that catches the unwary.
474 Usually a command is in a rule with prerequisites and serves to
475 create a target file if any of the prerequisites change. However, the
476 rule that specifies commands for the target need not have
477 prerequisites. For example, the rule containing the delete command
478 associated with the target `clean' does not have prerequisites.
480 A "rule", then, explains how and when to remake certain files which
481 are the targets of the particular rule. `make' carries out the
482 commands on the prerequisites to create or update the target. A rule
483 can also explain how and when to carry out an action. *Note Writing
486 A makefile may contain other text besides rules, but a simple
487 makefile need only contain rules. Rules may look somewhat more
488 complicated than shown in this template, but all fit the pattern more
492 File: make.info, Node: Simple Makefile, Next: How Make Works, Prev: Rule Introduction, Up: Introduction
494 2.2 A Simple Makefile
495 =====================
497 Here is a straightforward makefile that describes the way an executable
498 file called `edit' depends on eight object files which, in turn, depend
499 on eight C source and three header files.
501 In this example, all the C files include `defs.h', but only those
502 defining editing commands include `command.h', and only low level files
503 that change the editor buffer include `buffer.h'.
505 edit : main.o kbd.o command.o display.o \
506 insert.o search.o files.o utils.o
507 cc -o edit main.o kbd.o command.o display.o \
508 insert.o search.o files.o utils.o
510 main.o : main.c defs.h
512 kbd.o : kbd.c defs.h command.h
514 command.o : command.c defs.h command.h
516 display.o : display.c defs.h buffer.h
518 insert.o : insert.c defs.h buffer.h
520 search.o : search.c defs.h buffer.h
522 files.o : files.c defs.h buffer.h command.h
524 utils.o : utils.c defs.h
527 rm edit main.o kbd.o command.o display.o \
528 insert.o search.o files.o utils.o
530 We split each long line into two lines using backslash-newline; this is
531 like using one long line, but is easier to read.
533 To use this makefile to create the executable file called `edit',
538 To use this makefile to delete the executable file and all the object
539 files from the directory, type:
543 In the example makefile, the targets include the executable file
544 `edit', and the object files `main.o' and `kbd.o'. The prerequisites
545 are files such as `main.c' and `defs.h'. In fact, each `.o' file is
546 both a target and a prerequisite. Commands include `cc -c main.c' and
549 When a target is a file, it needs to be recompiled or relinked if any
550 of its prerequisites change. In addition, any prerequisites that are
551 themselves automatically generated should be updated first. In this
552 example, `edit' depends on each of the eight object files; the object
553 file `main.o' depends on the source file `main.c' and on the header
556 A shell command follows each line that contains a target and
557 prerequisites. These shell commands say how to update the target file.
558 A tab character must come at the beginning of every command line to
559 distinguish command lines from other lines in the makefile. (Bear in
560 mind that `make' does not know anything about how the commands work.
561 It is up to you to supply commands that will update the target file
562 properly. All `make' does is execute the commands in the rule you have
563 specified when the target file needs to be updated.)
565 The target `clean' is not a file, but merely the name of an action.
566 Since you normally do not want to carry out the actions in this rule,
567 `clean' is not a prerequisite of any other rule. Consequently, `make'
568 never does anything with it unless you tell it specifically. Note that
569 this rule not only is not a prerequisite, it also does not have any
570 prerequisites, so the only purpose of the rule is to run the specified
571 commands. Targets that do not refer to files but are just actions are
572 called "phony targets". *Note Phony Targets::, for information about
573 this kind of target. *Note Errors in Commands: Errors, to see how to
574 cause `make' to ignore errors from `rm' or any other command.
577 File: make.info, Node: How Make Works, Next: Variables Simplify, Prev: Simple Makefile, Up: Introduction
579 2.3 How `make' Processes a Makefile
580 ===================================
582 By default, `make' starts with the first target (not targets whose
583 names start with `.'). This is called the "default goal". ("Goals"
584 are the targets that `make' strives ultimately to update. You can
585 override this behavior using the command line (*note Arguments to
586 Specify the Goals: Goals.) or with the `.DEFAULT_GOAL' special variable
587 (*note Other Special Variables: Special Variables.).
589 In the simple example of the previous section, the default goal is to
590 update the executable program `edit'; therefore, we put that rule first.
592 Thus, when you give the command:
596 `make' reads the makefile in the current directory and begins by
597 processing the first rule. In the example, this rule is for relinking
598 `edit'; but before `make' can fully process this rule, it must process
599 the rules for the files that `edit' depends on, which in this case are
600 the object files. Each of these files is processed according to its
601 own rule. These rules say to update each `.o' file by compiling its
602 source file. The recompilation must be done if the source file, or any
603 of the header files named as prerequisites, is more recent than the
604 object file, or if the object file does not exist.
606 The other rules are processed because their targets appear as
607 prerequisites of the goal. If some other rule is not depended on by the
608 goal (or anything it depends on, etc.), that rule is not processed,
609 unless you tell `make' to do so (with a command such as `make clean').
611 Before recompiling an object file, `make' considers updating its
612 prerequisites, the source file and header files. This makefile does not
613 specify anything to be done for them--the `.c' and `.h' files are not
614 the targets of any rules--so `make' does nothing for these files. But
615 `make' would update automatically generated C programs, such as those
616 made by Bison or Yacc, by their own rules at this time.
618 After recompiling whichever object files need it, `make' decides
619 whether to relink `edit'. This must be done if the file `edit' does
620 not exist, or if any of the object files are newer than it. If an
621 object file was just recompiled, it is now newer than `edit', so `edit'
624 Thus, if we change the file `insert.c' and run `make', `make' will
625 compile that file to update `insert.o', and then link `edit'. If we
626 change the file `command.h' and run `make', `make' will recompile the
627 object files `kbd.o', `command.o' and `files.o' and then link the file
631 File: make.info, Node: Variables Simplify, Next: make Deduces, Prev: How Make Works, Up: Introduction
633 2.4 Variables Make Makefiles Simpler
634 ====================================
636 In our example, we had to list all the object files twice in the rule
637 for `edit' (repeated here):
639 edit : main.o kbd.o command.o display.o \
640 insert.o search.o files.o utils.o
641 cc -o edit main.o kbd.o command.o display.o \
642 insert.o search.o files.o utils.o
644 Such duplication is error-prone; if a new object file is added to the
645 system, we might add it to one list and forget the other. We can
646 eliminate the risk and simplify the makefile by using a variable.
647 "Variables" allow a text string to be defined once and substituted in
648 multiple places later (*note How to Use Variables: Using Variables.).
650 It is standard practice for every makefile to have a variable named
651 `objects', `OBJECTS', `objs', `OBJS', `obj', or `OBJ' which is a list
652 of all object file names. We would define such a variable `objects'
653 with a line like this in the makefile:
655 objects = main.o kbd.o command.o display.o \
656 insert.o search.o files.o utils.o
658 Then, each place we want to put a list of the object file names, we can
659 substitute the variable's value by writing `$(objects)' (*note How to
660 Use Variables: Using Variables.).
662 Here is how the complete simple makefile looks when you use a
663 variable for the object files:
665 objects = main.o kbd.o command.o display.o \
666 insert.o search.o files.o utils.o
669 cc -o edit $(objects)
670 main.o : main.c defs.h
672 kbd.o : kbd.c defs.h command.h
674 command.o : command.c defs.h command.h
676 display.o : display.c defs.h buffer.h
678 insert.o : insert.c defs.h buffer.h
680 search.o : search.c defs.h buffer.h
682 files.o : files.c defs.h buffer.h command.h
684 utils.o : utils.c defs.h
690 File: make.info, Node: make Deduces, Next: Combine By Prerequisite, Prev: Variables Simplify, Up: Introduction
692 2.5 Letting `make' Deduce the Commands
693 ======================================
695 It is not necessary to spell out the commands for compiling the
696 individual C source files, because `make' can figure them out: it has an
697 "implicit rule" for updating a `.o' file from a correspondingly named
698 `.c' file using a `cc -c' command. For example, it will use the
699 command `cc -c main.c -o main.o' to compile `main.c' into `main.o'. We
700 can therefore omit the commands from the rules for the object files.
701 *Note Using Implicit Rules: Implicit Rules.
703 When a `.c' file is used automatically in this way, it is also
704 automatically added to the list of prerequisites. We can therefore omit
705 the `.c' files from the prerequisites, provided we omit the commands.
707 Here is the entire example, with both of these changes, and a
708 variable `objects' as suggested above:
710 objects = main.o kbd.o command.o display.o \
711 insert.o search.o files.o utils.o
714 cc -o edit $(objects)
717 kbd.o : defs.h command.h
718 command.o : defs.h command.h
719 display.o : defs.h buffer.h
720 insert.o : defs.h buffer.h
721 search.o : defs.h buffer.h
722 files.o : defs.h buffer.h command.h
729 This is how we would write the makefile in actual practice. (The
730 complications associated with `clean' are described elsewhere. See
731 *Note Phony Targets::, and *Note Errors in Commands: Errors.)
733 Because implicit rules are so convenient, they are important. You
734 will see them used frequently.
737 File: make.info, Node: Combine By Prerequisite, Next: Cleanup, Prev: make Deduces, Up: Introduction
739 2.6 Another Style of Makefile
740 =============================
742 When the objects of a makefile are created only by implicit rules, an
743 alternative style of makefile is possible. In this style of makefile,
744 you group entries by their prerequisites instead of by their targets.
745 Here is what one looks like:
747 objects = main.o kbd.o command.o display.o \
748 insert.o search.o files.o utils.o
751 cc -o edit $(objects)
754 kbd.o command.o files.o : command.h
755 display.o insert.o search.o files.o : buffer.h
757 Here `defs.h' is given as a prerequisite of all the object files;
758 `command.h' and `buffer.h' are prerequisites of the specific object
759 files listed for them.
761 Whether this is better is a matter of taste: it is more compact, but
762 some people dislike it because they find it clearer to put all the
763 information about each target in one place.
766 File: make.info, Node: Cleanup, Prev: Combine By Prerequisite, Up: Introduction
768 2.7 Rules for Cleaning the Directory
769 ====================================
771 Compiling a program is not the only thing you might want to write rules
772 for. Makefiles commonly tell how to do a few other things besides
773 compiling a program: for example, how to delete all the object files
774 and executables so that the directory is `clean'.
776 Here is how we could write a `make' rule for cleaning our example
782 In practice, we might want to write the rule in a somewhat more
783 complicated manner to handle unanticipated situations. We would do
790 This prevents `make' from getting confused by an actual file called
791 `clean' and causes it to continue in spite of errors from `rm'. (See
792 *Note Phony Targets::, and *Note Errors in Commands: Errors.)
794 A rule such as this should not be placed at the beginning of the
795 makefile, because we do not want it to run by default! Thus, in the
796 example makefile, we want the rule for `edit', which recompiles the
797 editor, to remain the default goal.
799 Since `clean' is not a prerequisite of `edit', this rule will not
800 run at all if we give the command `make' with no arguments. In order
801 to make the rule run, we have to type `make clean'. *Note How to Run
805 File: make.info, Node: Makefiles, Next: Rules, Prev: Introduction, Up: Top
810 The information that tells `make' how to recompile a system comes from
811 reading a data base called the "makefile".
815 * Makefile Contents:: What makefiles contain.
816 * Makefile Names:: How to name your makefile.
817 * Include:: How one makefile can use another makefile.
818 * MAKEFILES Variable:: The environment can specify extra makefiles.
819 * MAKEFILE_LIST Variable:: Discover which makefiles have been read.
820 * Special Variables:: Other special variables.
821 * Remaking Makefiles:: How makefiles get remade.
822 * Overriding Makefiles:: How to override part of one makefile
823 with another makefile.
824 * Reading Makefiles:: How makefiles are parsed.
825 * Secondary Expansion:: How and when secondary expansion is performed.
828 File: make.info, Node: Makefile Contents, Next: Makefile Names, Prev: Makefiles, Up: Makefiles
830 3.1 What Makefiles Contain
831 ==========================
833 Makefiles contain five kinds of things: "explicit rules", "implicit
834 rules", "variable definitions", "directives", and "comments". Rules,
835 variables, and directives are described at length in later chapters.
837 * An "explicit rule" says when and how to remake one or more files,
838 called the rule's "targets". It lists the other files that the
839 targets depend on, called the "prerequisites" of the target, and
840 may also give commands to use to create or update the targets.
841 *Note Writing Rules: Rules.
843 * An "implicit rule" says when and how to remake a class of files
844 based on their names. It describes how a target may depend on a
845 file with a name similar to the target and gives commands to
846 create or update such a target. *Note Using Implicit Rules:
849 * A "variable definition" is a line that specifies a text string
850 value for a variable that can be substituted into the text later.
851 The simple makefile example shows a variable definition for
852 `objects' as a list of all object files (*note Variables Make
853 Makefiles Simpler: Variables Simplify.).
855 * A "directive" is a command for `make' to do something special while
856 reading the makefile. These include:
858 * Reading another makefile (*note Including Other Makefiles:
861 * Deciding (based on the values of variables) whether to use or
862 ignore a part of the makefile (*note Conditional Parts of
863 Makefiles: Conditionals.).
865 * Defining a variable from a verbatim string containing
866 multiple lines (*note Defining Variables Verbatim: Defining.).
868 * `#' in a line of a makefile starts a "comment". It and the rest
869 of the line are ignored, except that a trailing backslash not
870 escaped by another backslash will continue the comment across
871 multiple lines. A line containing just a comment (with perhaps
872 spaces before it) is effectively blank, and is ignored. If you
873 want a literal `#', escape it with a backslash (e.g., `\#').
874 Comments may appear on any line in the makefile, although they are
875 treated specially in certain situations.
877 Within a command script (if the line begins with a TAB character)
878 the entire line is passed to the shell, just as with any other
879 line that begins with a TAB. The shell decides how to interpret
880 the text: whether or not this is a comment is up to the shell.
882 Within a `define' directive, comments are not ignored during the
883 definition of the variable, but rather kept intact in the value of
884 the variable. When the variable is expanded they will either be
885 treated as `make' comments or as command script text, depending on
886 the context in which the variable is evaluated.
889 File: make.info, Node: Makefile Names, Next: Include, Prev: Makefile Contents, Up: Makefiles
891 3.2 What Name to Give Your Makefile
892 ===================================
894 By default, when `make' looks for the makefile, it tries the following
895 names, in order: `GNUmakefile', `makefile' and `Makefile'.
897 Normally you should call your makefile either `makefile' or
898 `Makefile'. (We recommend `Makefile' because it appears prominently
899 near the beginning of a directory listing, right near other important
900 files such as `README'.) The first name checked, `GNUmakefile', is not
901 recommended for most makefiles. You should use this name if you have a
902 makefile that is specific to GNU `make', and will not be understood by
903 other versions of `make'. Other `make' programs look for `makefile' and
904 `Makefile', but not `GNUmakefile'.
906 If `make' finds none of these names, it does not use any makefile.
907 Then you must specify a goal with a command argument, and `make' will
908 attempt to figure out how to remake it using only its built-in implicit
909 rules. *Note Using Implicit Rules: Implicit Rules.
911 If you want to use a nonstandard name for your makefile, you can
912 specify the makefile name with the `-f' or `--file' option. The
913 arguments `-f NAME' or `--file=NAME' tell `make' to read the file NAME
914 as the makefile. If you use more than one `-f' or `--file' option, you
915 can specify several makefiles. All the makefiles are effectively
916 concatenated in the order specified. The default makefile names
917 `GNUmakefile', `makefile' and `Makefile' are not checked automatically
918 if you specify `-f' or `--file'.
921 File: make.info, Node: Include, Next: MAKEFILES Variable, Prev: Makefile Names, Up: Makefiles
923 3.3 Including Other Makefiles
924 =============================
926 The `include' directive tells `make' to suspend reading the current
927 makefile and read one or more other makefiles before continuing. The
928 directive is a line in the makefile that looks like this:
932 FILENAMES can contain shell file name patterns. If FILENAMES is empty,
933 nothing is included and no error is printed.
935 Extra spaces are allowed and ignored at the beginning of the line,
936 but a tab is not allowed. (If the line begins with a tab, it will be
937 considered a command line.) Whitespace is required between `include'
938 and the file names, and between file names; extra whitespace is ignored
939 there and at the end of the directive. A comment starting with `#' is
940 allowed at the end of the line. If the file names contain any variable
941 or function references, they are expanded. *Note How to Use Variables:
944 For example, if you have three `.mk' files, `a.mk', `b.mk', and
945 `c.mk', and `$(bar)' expands to `bish bash', then the following
948 include foo *.mk $(bar)
952 include foo a.mk b.mk c.mk bish bash
954 When `make' processes an `include' directive, it suspends reading of
955 the containing makefile and reads from each listed file in turn. When
956 that is finished, `make' resumes reading the makefile in which the
959 One occasion for using `include' directives is when several programs,
960 handled by individual makefiles in various directories, need to use a
961 common set of variable definitions (*note Setting Variables: Setting.)
962 or pattern rules (*note Defining and Redefining Pattern Rules: Pattern
965 Another such occasion is when you want to generate prerequisites from
966 source files automatically; the prerequisites can be put in a file that
967 is included by the main makefile. This practice is generally cleaner
968 than that of somehow appending the prerequisites to the end of the main
969 makefile as has been traditionally done with other versions of `make'.
970 *Note Automatic Prerequisites::.
972 If the specified name does not start with a slash, and the file is
973 not found in the current directory, several other directories are
974 searched. First, any directories you have specified with the `-I' or
975 `--include-dir' option are searched (*note Summary of Options: Options
976 Summary.). Then the following directories (if they exist) are
977 searched, in this order: `PREFIX/include' (normally `/usr/local/include'
978 (1)) `/usr/gnu/include', `/usr/local/include', `/usr/include'.
980 If an included makefile cannot be found in any of these directories,
981 a warning message is generated, but it is not an immediately fatal
982 error; processing of the makefile containing the `include' continues.
983 Once it has finished reading makefiles, `make' will try to remake any
984 that are out of date or don't exist. *Note How Makefiles Are Remade:
985 Remaking Makefiles. Only after it has tried to find a way to remake a
986 makefile and failed, will `make' diagnose the missing makefile as a
989 If you want `make' to simply ignore a makefile which does not exist
990 and cannot be remade, with no error message, use the `-include'
991 directive instead of `include', like this:
993 -include FILENAMES...
995 This acts like `include' in every way except that there is no error
996 (not even a warning) if any of the FILENAMES do not exist. For
997 compatibility with some other `make' implementations, `sinclude' is
998 another name for `-include'.
1000 ---------- Footnotes ----------
1002 (1) GNU Make compiled for MS-DOS and MS-Windows behaves as if PREFIX
1003 has been defined to be the root of the DJGPP tree hierarchy.
1006 File: make.info, Node: MAKEFILES Variable, Next: MAKEFILE_LIST Variable, Prev: Include, Up: Makefiles
1008 3.4 The Variable `MAKEFILES'
1009 ============================
1011 If the environment variable `MAKEFILES' is defined, `make' considers
1012 its value as a list of names (separated by whitespace) of additional
1013 makefiles to be read before the others. This works much like the
1014 `include' directive: various directories are searched for those files
1015 (*note Including Other Makefiles: Include.). In addition, the default
1016 goal is never taken from one of these makefiles and it is not an error
1017 if the files listed in `MAKEFILES' are not found.
1019 The main use of `MAKEFILES' is in communication between recursive
1020 invocations of `make' (*note Recursive Use of `make': Recursion.). It
1021 usually is not desirable to set the environment variable before a
1022 top-level invocation of `make', because it is usually better not to
1023 mess with a makefile from outside. However, if you are running `make'
1024 without a specific makefile, a makefile in `MAKEFILES' can do useful
1025 things to help the built-in implicit rules work better, such as
1026 defining search paths (*note Directory Search::).
1028 Some users are tempted to set `MAKEFILES' in the environment
1029 automatically on login, and program makefiles to expect this to be done.
1030 This is a very bad idea, because such makefiles will fail to work if
1031 run by anyone else. It is much better to write explicit `include'
1032 directives in the makefiles. *Note Including Other Makefiles: Include.
1035 File: make.info, Node: MAKEFILE_LIST Variable, Next: Special Variables, Prev: MAKEFILES Variable, Up: Makefiles
1037 3.5 The Variable `MAKEFILE_LIST'
1038 ================================
1040 As `make' reads various makefiles, including any obtained from the
1041 `MAKEFILES' variable, the command line, the default files, or from
1042 `include' directives, their names will be automatically appended to the
1043 `MAKEFILE_LIST' variable. They are added right before `make' begins to
1046 This means that if the first thing a makefile does is examine the
1047 last word in this variable, it will be the name of the current makefile.
1048 Once the current makefile has used `include', however, the last word
1049 will be the just-included makefile.
1051 If a makefile named `Makefile' has this content:
1053 name1 := $(lastword $(MAKEFILE_LIST))
1057 name2 := $(lastword $(MAKEFILE_LIST))
1060 @echo name1 = $(name1)
1061 @echo name2 = $(name2)
1063 then you would expect to see this output:
1068 *Note Text Functions::, for more information on the `word' and
1069 `words' functions used above. *Note The Two Flavors of Variables:
1070 Flavors, for more information on simply-expanded (`:=') variable
1074 File: make.info, Node: Special Variables, Next: Remaking Makefiles, Prev: MAKEFILE_LIST Variable, Up: Makefiles
1076 3.6 Other Special Variables
1077 ===========================
1079 GNU `make' also supports other special variables. Unless otherwise
1080 documented here, these values lose their special properties if they are
1081 set by a makefile or on the command line.
1084 Sets the default goal to be used if no targets were specified on
1085 the command line (*note Arguments to Specify the Goals: Goals.).
1086 The `.DEFAULT_GOAL' variable allows you to discover the current
1087 default goal, restart the default goal selection algorithm by
1088 clearing its value, or to explicitly set the default goal. The
1089 following example illustrates these cases:
1091 # Query the default goal.
1092 ifeq ($(.DEFAULT_GOAL),)
1093 $(warning no default goal is set)
1099 $(warning default goal is $(.DEFAULT_GOAL))
1101 # Reset the default goal.
1107 $(warning default goal is $(.DEFAULT_GOAL))
1110 .DEFAULT_GOAL := foo
1112 This makefile prints:
1114 no default goal is set
1119 Note that assigning more than one target name to `.DEFAULT_GOAL' is
1120 illegal and will result in an error.
1123 This variable is set only if this instance of `make' has restarted
1124 (*note How Makefiles Are Remade: Remaking Makefiles.): it will
1125 contain the number of times this instance has restarted. Note
1126 this is not the same as recursion (counted by the `MAKELEVEL'
1127 variable). You should not set, modify, or export this variable.
1130 Expands to a list of the _names_ of all global variables defined
1131 so far. This includes variables which have empty values, as well
1132 as built-in variables (*note Variables Used by Implicit Rules:
1133 Implicit Variables.), but does not include any variables which are
1134 only defined in a target-specific context. Note that any value
1135 you assign to this variable will be ignored; it will always return
1139 Expands to a list of special features supported by this version of
1140 `make'. Possible values include:
1143 Supports `ar' (archive) files using special filename syntax.
1144 *Note Using `make' to Update Archive Files: Archives.
1147 Supports the `-L' (`--check-symlink-times') flag. *Note
1148 Summary of Options: Options Summary.
1151 Supports "else if" non-nested conditionals. *Note Syntax of
1152 Conditionals: Conditional Syntax.
1155 Supports "job server" enhanced parallel builds. *Note
1156 Parallel Execution: Parallel.
1159 Supports secondary expansion of prerequisite lists.
1162 Supports order-only prerequisites. *Note Types of
1163 Prerequisites: Prerequisite Types.
1166 Supports target-specific and pattern-specific variable
1167 assignments. *Note Target-specific Variable Values:
1172 Expands to a list of directories that `make' searches for included
1173 makefiles (*note Including Other Makefiles: Include.).
1177 File: make.info, Node: Remaking Makefiles, Next: Overriding Makefiles, Prev: Special Variables, Up: Makefiles
1179 3.7 How Makefiles Are Remade
1180 ============================
1182 Sometimes makefiles can be remade from other files, such as RCS or SCCS
1183 files. If a makefile can be remade from other files, you probably want
1184 `make' to get an up-to-date version of the makefile to read in.
1186 To this end, after reading in all makefiles, `make' will consider
1187 each as a goal target and attempt to update it. If a makefile has a
1188 rule which says how to update it (found either in that very makefile or
1189 in another one) or if an implicit rule applies to it (*note Using
1190 Implicit Rules: Implicit Rules.), it will be updated if necessary.
1191 After all makefiles have been checked, if any have actually been
1192 changed, `make' starts with a clean slate and reads all the makefiles
1193 over again. (It will also attempt to update each of them over again,
1194 but normally this will not change them again, since they are already up
1197 If you know that one or more of your makefiles cannot be remade and
1198 you want to keep `make' from performing an implicit rule search on
1199 them, perhaps for efficiency reasons, you can use any normal method of
1200 preventing implicit rule lookup to do so. For example, you can write an
1201 explicit rule with the makefile as the target, and an empty command
1202 string (*note Using Empty Commands: Empty Commands.).
1204 If the makefiles specify a double-colon rule to remake a file with
1205 commands but no prerequisites, that file will always be remade (*note
1206 Double-Colon::). In the case of makefiles, a makefile that has a
1207 double-colon rule with commands but no prerequisites will be remade
1208 every time `make' is run, and then again after `make' starts over and
1209 reads the makefiles in again. This would cause an infinite loop:
1210 `make' would constantly remake the makefile, and never do anything
1211 else. So, to avoid this, `make' will *not* attempt to remake makefiles
1212 which are specified as targets of a double-colon rule with commands but
1215 If you do not specify any makefiles to be read with `-f' or `--file'
1216 options, `make' will try the default makefile names; *note What Name to
1217 Give Your Makefile: Makefile Names. Unlike makefiles explicitly
1218 requested with `-f' or `--file' options, `make' is not certain that
1219 these makefiles should exist. However, if a default makefile does not
1220 exist but can be created by running `make' rules, you probably want the
1221 rules to be run so that the makefile can be used.
1223 Therefore, if none of the default makefiles exists, `make' will try
1224 to make each of them in the same order in which they are searched for
1225 (*note What Name to Give Your Makefile: Makefile Names.) until it
1226 succeeds in making one, or it runs out of names to try. Note that it
1227 is not an error if `make' cannot find or make any makefile; a makefile
1228 is not always necessary.
1230 When you use the `-t' or `--touch' option (*note Instead of
1231 Executing the Commands: Instead of Execution.), you would not want to
1232 use an out-of-date makefile to decide which targets to touch. So the
1233 `-t' option has no effect on updating makefiles; they are really
1234 updated even if `-t' is specified. Likewise, `-q' (or `--question')
1235 and `-n' (or `--just-print') do not prevent updating of makefiles,
1236 because an out-of-date makefile would result in the wrong output for
1237 other targets. Thus, `make -f mfile -n foo' will update `mfile', read
1238 it in, and then print the commands to update `foo' and its prerequisites
1239 without running them. The commands printed for `foo' will be those
1240 specified in the updated contents of `mfile'.
1242 However, on occasion you might actually wish to prevent updating of
1243 even the makefiles. You can do this by specifying the makefiles as
1244 goals in the command line as well as specifying them as makefiles.
1245 When the makefile name is specified explicitly as a goal, the options
1246 `-t' and so on do apply to them.
1248 Thus, `make -f mfile -n mfile foo' would read the makefile `mfile',
1249 print the commands needed to update it without actually running them,
1250 and then print the commands needed to update `foo' without running
1251 them. The commands for `foo' will be those specified by the existing
1252 contents of `mfile'.
1255 File: make.info, Node: Overriding Makefiles, Next: Reading Makefiles, Prev: Remaking Makefiles, Up: Makefiles
1257 3.8 Overriding Part of Another Makefile
1258 =======================================
1260 Sometimes it is useful to have a makefile that is mostly just like
1261 another makefile. You can often use the `include' directive to include
1262 one in the other, and add more targets or variable definitions.
1263 However, if the two makefiles give different commands for the same
1264 target, `make' will not let you just do this. But there is another way.
1266 In the containing makefile (the one that wants to include the other),
1267 you can use a match-anything pattern rule to say that to remake any
1268 target that cannot be made from the information in the containing
1269 makefile, `make' should look in another makefile. *Note Pattern
1270 Rules::, for more information on pattern rules.
1272 For example, if you have a makefile called `Makefile' that says how
1273 to make the target `foo' (and other targets), you can write a makefile
1274 called `GNUmakefile' that contains:
1280 @$(MAKE) -f Makefile $@
1283 If you say `make foo', `make' will find `GNUmakefile', read it, and
1284 see that to make `foo', it needs to run the command `frobnicate > foo'.
1285 If you say `make bar', `make' will find no way to make `bar' in
1286 `GNUmakefile', so it will use the commands from the pattern rule: `make
1287 -f Makefile bar'. If `Makefile' provides a rule for updating `bar',
1288 `make' will apply the rule. And likewise for any other target that
1289 `GNUmakefile' does not say how to make.
1291 The way this works is that the pattern rule has a pattern of just
1292 `%', so it matches any target whatever. The rule specifies a
1293 prerequisite `force', to guarantee that the commands will be run even
1294 if the target file already exists. We give `force' target empty
1295 commands to prevent `make' from searching for an implicit rule to build
1296 it--otherwise it would apply the same match-anything rule to `force'
1297 itself and create a prerequisite loop!
1300 File: make.info, Node: Reading Makefiles, Next: Secondary Expansion, Prev: Overriding Makefiles, Up: Makefiles
1302 3.9 How `make' Reads a Makefile
1303 ===============================
1305 GNU `make' does its work in two distinct phases. During the first
1306 phase it reads all the makefiles, included makefiles, etc. and
1307 internalizes all the variables and their values, implicit and explicit
1308 rules, and constructs a dependency graph of all the targets and their
1309 prerequisites. During the second phase, `make' uses these internal
1310 structures to determine what targets will need to be rebuilt and to
1311 invoke the rules necessary to do so.
1313 It's important to understand this two-phase approach because it has a
1314 direct impact on how variable and function expansion happens; this is
1315 often a source of some confusion when writing makefiles. Here we will
1316 present a summary of the phases in which expansion happens for different
1317 constructs within the makefile. We say that expansion is "immediate"
1318 if it happens during the first phase: in this case `make' will expand
1319 any variables or functions in that section of a construct as the
1320 makefile is parsed. We say that expansion is "deferred" if expansion
1321 is not performed immediately. Expansion of deferred construct is not
1322 performed until either the construct appears later in an immediate
1323 context, or until the second phase.
1325 You may not be familiar with some of these constructs yet. You can
1326 reference this section as you become familiar with them, in later
1332 Variable definitions are parsed as follows:
1334 IMMEDIATE = DEFERRED
1335 IMMEDIATE ?= DEFERRED
1336 IMMEDIATE := IMMEDIATE
1337 IMMEDIATE += DEFERRED or IMMEDIATE
1343 For the append operator, `+=', the right-hand side is considered
1344 immediate if the variable was previously set as a simple variable
1345 (`:='), and deferred otherwise.
1347 Conditional Statements
1348 ----------------------
1350 All instances of conditional syntax are parsed immediately, in their
1351 entirety; this includes the `ifdef', `ifeq', `ifndef', and `ifneq'
1352 forms. Of course this means that automatic variables cannot be used in
1353 conditional statements, as automatic variables are not set until the
1354 command script for that rule is invoked. If you need to use automatic
1355 variables in a conditional you _must_ use shell conditional syntax, in
1356 your command script proper, for these tests, not `make' conditionals.
1361 A rule is always expanded the same way, regardless of the form:
1363 IMMEDIATE : IMMEDIATE ; DEFERRED
1366 That is, the target and prerequisite sections are expanded
1367 immediately, and the commands used to construct the target are always
1368 deferred. This general rule is true for explicit rules, pattern rules,
1369 suffix rules, static pattern rules, and simple prerequisite definitions.
1372 File: make.info, Node: Secondary Expansion, Prev: Reading Makefiles, Up: Makefiles
1374 3.10 Secondary Expansion
1375 ========================
1377 In the previous section we learned that GNU `make' works in two
1378 distinct phases: a read-in phase and a target-update phase (*note How
1379 `make' Reads a Makefile: Reading Makefiles.). GNU make also has the
1380 ability to enable a _second expansion_ of the prerequisites (only) for
1381 some or all targets defined in the makefile. In order for this second
1382 expansion to occur, the special target `.SECONDEXPANSION' must be
1383 defined before the first prerequisite list that makes use of this
1386 If that special target is defined then in between the two phases
1387 mentioned above, right at the end of the read-in phase, all the
1388 prerequisites of the targets defined after the special target are
1389 expanded a _second time_. In most circumstances this secondary
1390 expansion will have no effect, since all variable and function
1391 references will have been expanded during the initial parsing of the
1392 makefiles. In order to take advantage of the secondary expansion phase
1393 of the parser, then, it's necessary to _escape_ the variable or
1394 function reference in the makefile. In this case the first expansion
1395 merely un-escapes the reference but doesn't expand it, and expansion is
1396 left to the secondary expansion phase. For example, consider this
1402 myfile: $(ONEVAR) $$(TWOVAR)
1404 After the first expansion phase the prerequisites list of the
1405 `myfile' target will be `onefile' and `$(TWOVAR)'; the first
1406 (unescaped) variable reference to ONEVAR is expanded, while the second
1407 (escaped) variable reference is simply unescaped, without being
1408 recognized as a variable reference. Now during the secondary expansion
1409 the first word is expanded again but since it contains no variable or
1410 function references it remains the static value `onefile', while the
1411 second word is now a normal reference to the variable TWOVAR, which is
1412 expanded to the value `twofile'. The final result is that there are
1413 two prerequisites, `onefile' and `twofile'.
1415 Obviously, this is not a very interesting case since the same result
1416 could more easily have been achieved simply by having both variables
1417 appear, unescaped, in the prerequisites list. One difference becomes
1418 apparent if the variables are reset; consider this example:
1426 Here the prerequisite of `onefile' will be expanded immediately, and
1427 resolve to the value `top', while the prerequisite of `twofile' will
1428 not be full expanded until the secondary expansion and yield a value of
1431 This is marginally more exciting, but the true power of this feature
1432 only becomes apparent when you discover that secondary expansions
1433 always take place within the scope of the automatic variables for that
1434 target. This means that you can use variables such as `$@', `$*', etc.
1435 during the second expansion and they will have their expected values,
1436 just as in the command script. All you have to do is defer the
1437 expansion by escaping the `$'. Also, secondary expansion occurs for
1438 both explicit and implicit (pattern) rules. Knowing this, the possible
1439 uses for this feature increase dramatically. For example:
1442 main_OBJS := main.o try.o test.o
1443 lib_OBJS := lib.o api.o
1445 main lib: $$($$@_OBJS)
1447 Here, after the initial expansion the prerequisites of both the
1448 `main' and `lib' targets will be `$($@_OBJS)'. During the secondary
1449 expansion, the `$@' variable is set to the name of the target and so
1450 the expansion for the `main' target will yield `$(main_OBJS)', or
1451 `main.o try.o test.o', while the secondary expansion for the `lib'
1452 target will yield `$(lib_OBJS)', or `lib.o api.o'.
1454 You can also mix functions here, as long as they are properly
1457 main_SRCS := main.c try.c test.c
1458 lib_SRCS := lib.c api.c
1461 main lib: $$(patsubst %.c,%.o,$$($$@_SRCS))
1463 This version allows users to specify source files rather than object
1464 files, but gives the same resulting prerequisites list as the previous
1467 Evaluation of automatic variables during the secondary expansion
1468 phase, especially of the target name variable `$$@', behaves similarly
1469 to evaluation within command scripts. However, there are some subtle
1470 differences and "corner cases" which come into play for the different
1471 types of rule definitions that `make' understands. The subtleties of
1472 using the different automatic variables are described below.
1474 Secondary Expansion of Explicit Rules
1475 -------------------------------------
1477 During the secondary expansion of explicit rules, `$$@' and `$$%'
1478 evaluate, respectively, to the file name of the target and, when the
1479 target is an archive member, the target member name. The `$$<'
1480 variable evaluates to the first prerequisite in the first rule for this
1481 target. `$$^' and `$$+' evaluate to the list of all prerequisites of
1482 rules _that have already appeared_ for the same target (`$$+' with
1483 repetitions and `$$^' without). The following example will help
1484 illustrate these behaviors:
1488 foo: foo.1 bar.1 $$< $$^ $$+ # line #1
1490 foo: foo.2 bar.2 $$< $$^ $$+ # line #2
1492 foo: foo.3 bar.3 $$< $$^ $$+ # line #3
1494 In the first prerequisite list, all three variables (`$$<', `$$^',
1495 and `$$+') expand to the empty string. In the second, they will have
1496 values `foo.1', `foo.1 bar.1', and `foo.1 bar.1' respectively. In the
1497 third they will have values `foo.1', `foo.1 bar.1 foo.2 bar.2', and
1498 `foo.1 bar.1 foo.2 bar.2' respectively.
1500 Rules undergo secondary expansion in makefile order, except that the
1501 rule with the command script is always evaluated last.
1503 The variables `$$?' and `$$*' are not available and expand to the
1506 Secondary Expansion of Static Pattern Rules
1507 -------------------------------------------
1509 Rules for secondary expansion of static pattern rules are identical to
1510 those for explicit rules, above, with one exception: for static pattern
1511 rules the `$$*' variable is set to the pattern stem. As with explicit
1512 rules, `$$?' is not available and expands to the empty string.
1514 Secondary Expansion of Implicit Rules
1515 -------------------------------------
1517 As `make' searches for an implicit rule, it substitutes the stem and
1518 then performs secondary expansion for every rule with a matching target
1519 pattern. The value of the automatic variables is derived in the same
1520 fashion as for static pattern rules. As an example:
1528 %oo: $$< $$^ $$+ $$*
1530 When the implicit rule is tried for target `foo', `$$<' expands to
1531 `bar', `$$^' expands to `bar boo', `$$+' also expands to `bar boo', and
1532 `$$*' expands to `f'.
1534 Note that the directory prefix (D), as described in *Note Implicit
1535 Rule Search Algorithm: Implicit Rule Search, is appended (after
1536 expansion) to all the patterns in the prerequisites list. As an
1543 %.o: $$(addsuffix /%.c,foo bar) foo.h
1545 The prerequisite list after the secondary expansion and directory
1546 prefix reconstruction will be `/tmp/foo/foo.c /tmp/var/bar/foo.c
1547 foo.h'. If you are not interested in this reconstruction, you can use
1548 `$$*' instead of `%' in the prerequisites list.
1551 File: make.info, Node: Rules, Next: Commands, Prev: Makefiles, Up: Top
1556 A "rule" appears in the makefile and says when and how to remake
1557 certain files, called the rule's "targets" (most often only one per
1558 rule). It lists the other files that are the "prerequisites" of the
1559 target, and "commands" to use to create or update the target.
1561 The order of rules is not significant, except for determining the
1562 "default goal": the target for `make' to consider, if you do not
1563 otherwise specify one. The default goal is the target of the first
1564 rule in the first makefile. If the first rule has multiple targets,
1565 only the first target is taken as the default. There are two
1566 exceptions: a target starting with a period is not a default unless it
1567 contains one or more slashes, `/', as well; and, a target that defines
1568 a pattern rule has no effect on the default goal. (*Note Defining and
1569 Redefining Pattern Rules: Pattern Rules.)
1571 Therefore, we usually write the makefile so that the first rule is
1572 the one for compiling the entire program or all the programs described
1573 by the makefile (often with a target called `all'). *Note Arguments to
1574 Specify the Goals: Goals.
1578 * Rule Example:: An example explained.
1579 * Rule Syntax:: General syntax explained.
1580 * Prerequisite Types:: There are two types of prerequisites.
1581 * Wildcards:: Using wildcard characters such as `*'.
1582 * Directory Search:: Searching other directories for source files.
1583 * Phony Targets:: Using a target that is not a real file's name.
1584 * Force Targets:: You can use a target without commands
1585 or prerequisites to mark other targets
1587 * Empty Targets:: When only the date matters and the
1589 * Special Targets:: Targets with special built-in meanings.
1590 * Multiple Targets:: When to make use of several targets in a rule.
1591 * Multiple Rules:: How to use several rules with the same target.
1592 * Static Pattern:: Static pattern rules apply to multiple targets
1593 and can vary the prerequisites according to
1595 * Double-Colon:: How to use a special kind of rule to allow
1596 several independent rules for one target.
1597 * Automatic Prerequisites:: How to automatically generate rules giving
1598 prerequisites from source files themselves.
1601 File: make.info, Node: Rule Example, Next: Rule Syntax, Prev: Rules, Up: Rules
1606 Here is an example of a rule:
1608 foo.o : foo.c defs.h # module for twiddling the frobs
1611 Its target is `foo.o' and its prerequisites are `foo.c' and
1612 `defs.h'. It has one command, which is `cc -c -g foo.c'. The command
1613 line starts with a tab to identify it as a command.
1615 This rule says two things:
1617 * How to decide whether `foo.o' is out of date: it is out of date if
1618 it does not exist, or if either `foo.c' or `defs.h' is more recent
1621 * How to update the file `foo.o': by running `cc' as stated. The
1622 command does not explicitly mention `defs.h', but we presume that
1623 `foo.c' includes it, and that that is why `defs.h' was added to
1627 File: make.info, Node: Rule Syntax, Next: Prerequisite Types, Prev: Rule Example, Up: Rules
1632 In general, a rule looks like this:
1634 TARGETS : PREREQUISITES
1640 TARGETS : PREREQUISITES ; COMMAND
1644 The TARGETS are file names, separated by spaces. Wildcard
1645 characters may be used (*note Using Wildcard Characters in File Names:
1646 Wildcards.) and a name of the form `A(M)' represents member M in
1647 archive file A (*note Archive Members as Targets: Archive Members.).
1648 Usually there is only one target per rule, but occasionally there is a
1649 reason to have more (*note Multiple Targets in a Rule: Multiple
1652 The COMMAND lines start with a tab character. The first command may
1653 appear on the line after the prerequisites, with a tab character, or may
1654 appear on the same line, with a semicolon. Either way, the effect is
1655 the same. There are other differences in the syntax of command lines.
1656 *Note Writing the Commands in Rules: Commands.
1658 Because dollar signs are used to start `make' variable references,
1659 if you really want a dollar sign in a target or prerequisite you must
1660 write two of them, `$$' (*note How to Use Variables: Using Variables.).
1661 If you have enabled secondary expansion (*note Secondary Expansion::)
1662 and you want a literal dollar sign in the prerequisites lise, you must
1663 actually write _four_ dollar signs (`$$$$').
1665 You may split a long line by inserting a backslash followed by a
1666 newline, but this is not required, as `make' places no limit on the
1667 length of a line in a makefile.
1669 A rule tells `make' two things: when the targets are out of date,
1670 and how to update them when necessary.
1672 The criterion for being out of date is specified in terms of the
1673 PREREQUISITES, which consist of file names separated by spaces.
1674 (Wildcards and archive members (*note Archives::) are allowed here too.)
1675 A target is out of date if it does not exist or if it is older than any
1676 of the prerequisites (by comparison of last-modification times). The
1677 idea is that the contents of the target file are computed based on
1678 information in the prerequisites, so if any of the prerequisites
1679 changes, the contents of the existing target file are no longer
1682 How to update is specified by COMMANDS. These are lines to be
1683 executed by the shell (normally `sh'), but with some extra features
1684 (*note Writing the Commands in Rules: Commands.).
1687 File: make.info, Node: Prerequisite Types, Next: Wildcards, Prev: Rule Syntax, Up: Rules
1689 4.3 Types of Prerequisites
1690 ==========================
1692 There are actually two different types of prerequisites understood by
1693 GNU `make': normal prerequisites such as described in the previous
1694 section, and "order-only" prerequisites. A normal prerequisite makes
1695 two statements: first, it imposes an order of execution of build
1696 commands: any commands necessary to build any of a target's
1697 prerequisites will be fully executed before any commands necessary to
1698 build the target. Second, it imposes a dependency relationship: if any
1699 prerequisite is newer than the target, then the target is considered
1700 out-of-date and must be rebuilt.
1702 Normally, this is exactly what you want: if a target's prerequisite
1703 is updated, then the target should also be updated.
1705 Occasionally, however, you have a situation where you want to impose
1706 a specific ordering on the rules to be invoked _without_ forcing the
1707 target to be updated if one of those rules is executed. In that case,
1708 you want to define "order-only" prerequisites. Order-only
1709 prerequisites can be specified by placing a pipe symbol (`|') in the
1710 prerequisites list: any prerequisites to the left of the pipe symbol
1711 are normal; any prerequisites to the right are order-only:
1713 TARGETS : NORMAL-PREREQUISITES | ORDER-ONLY-PREREQUISITES
1715 The normal prerequisites section may of course be empty. Also, you
1716 may still declare multiple lines of prerequisites for the same target:
1717 they are appended appropriately. Note that if you declare the same
1718 file to be both a normal and an order-only prerequisite, the normal
1719 prerequisite takes precedence (since they are a strict superset of the
1720 behavior of an order-only prerequisite).
1723 File: make.info, Node: Wildcards, Next: Directory Search, Prev: Prerequisite Types, Up: Rules
1725 4.4 Using Wildcard Characters in File Names
1726 ===========================================
1728 A single file name can specify many files using "wildcard characters".
1729 The wildcard characters in `make' are `*', `?' and `[...]', the same as
1730 in the Bourne shell. For example, `*.c' specifies a list of all the
1731 files (in the working directory) whose names end in `.c'.
1733 The character `~' at the beginning of a file name also has special
1734 significance. If alone, or followed by a slash, it represents your home
1735 directory. For example `~/bin' expands to `/home/you/bin'. If the `~'
1736 is followed by a word, the string represents the home directory of the
1737 user named by that word. For example `~john/bin' expands to
1738 `/home/john/bin'. On systems which don't have a home directory for
1739 each user (such as MS-DOS or MS-Windows), this functionality can be
1740 simulated by setting the environment variable HOME.
1742 Wildcard expansion is performed by `make' automatically in targets
1743 and in prerequisites. In commands the shell is responsible for
1744 wildcard expansion. In other contexts, wildcard expansion happens only
1745 if you request it explicitly with the `wildcard' function.
1747 The special significance of a wildcard character can be turned off by
1748 preceding it with a backslash. Thus, `foo\*bar' would refer to a
1749 specific file whose name consists of `foo', an asterisk, and `bar'.
1753 * Wildcard Examples:: Several examples
1754 * Wildcard Pitfall:: Problems to avoid.
1755 * Wildcard Function:: How to cause wildcard expansion where
1756 it does not normally take place.
1759 File: make.info, Node: Wildcard Examples, Next: Wildcard Pitfall, Prev: Wildcards, Up: Wildcards
1761 4.4.1 Wildcard Examples
1762 -----------------------
1764 Wildcards can be used in the commands of a rule, where they are expanded
1765 by the shell. For example, here is a rule to delete all the object
1771 Wildcards are also useful in the prerequisites of a rule. With the
1772 following rule in the makefile, `make print' will print all the `.c'
1773 files that have changed since the last time you printed them:
1779 This rule uses `print' as an empty target file; see *Note Empty Target
1780 Files to Record Events: Empty Targets. (The automatic variable `$?' is
1781 used to print only those files that have changed; see *Note Automatic
1784 Wildcard expansion does not happen when you define a variable.
1785 Thus, if you write this:
1789 then the value of the variable `objects' is the actual string `*.o'.
1790 However, if you use the value of `objects' in a target, prerequisite or
1791 command, wildcard expansion will take place at that time. To set
1792 `objects' to the expansion, instead use:
1794 objects := $(wildcard *.o)
1796 *Note Wildcard Function::.
1799 File: make.info, Node: Wildcard Pitfall, Next: Wildcard Function, Prev: Wildcard Examples, Up: Wildcards
1801 4.4.2 Pitfalls of Using Wildcards
1802 ---------------------------------
1804 Now here is an example of a naive way of using wildcard expansion, that
1805 does not do what you would intend. Suppose you would like to say that
1806 the executable file `foo' is made from all the object files in the
1807 directory, and you write this:
1812 cc -o foo $(CFLAGS) $(objects)
1814 The value of `objects' is the actual string `*.o'. Wildcard expansion
1815 happens in the rule for `foo', so that each _existing_ `.o' file
1816 becomes a prerequisite of `foo' and will be recompiled if necessary.
1818 But what if you delete all the `.o' files? When a wildcard matches
1819 no files, it is left as it is, so then `foo' will depend on the
1820 oddly-named file `*.o'. Since no such file is likely to exist, `make'
1821 will give you an error saying it cannot figure out how to make `*.o'.
1822 This is not what you want!
1824 Actually it is possible to obtain the desired result with wildcard
1825 expansion, but you need more sophisticated techniques, including the
1826 `wildcard' function and string substitution. *Note The Function
1827 `wildcard': Wildcard Function.
1829 Microsoft operating systems (MS-DOS and MS-Windows) use backslashes
1830 to separate directories in pathnames, like so:
1834 This is equivalent to the Unix-style `c:/foo/bar/baz.c' (the `c:'
1835 part is the so-called drive letter). When `make' runs on these
1836 systems, it supports backslashes as well as the Unix-style forward
1837 slashes in pathnames. However, this support does _not_ include the
1838 wildcard expansion, where backslash is a quote character. Therefore,
1839 you _must_ use Unix-style slashes in these cases.
1842 File: make.info, Node: Wildcard Function, Prev: Wildcard Pitfall, Up: Wildcards
1844 4.4.3 The Function `wildcard'
1845 -----------------------------
1847 Wildcard expansion happens automatically in rules. But wildcard
1848 expansion does not normally take place when a variable is set, or
1849 inside the arguments of a function. If you want to do wildcard
1850 expansion in such places, you need to use the `wildcard' function, like
1853 $(wildcard PATTERN...)
1855 This string, used anywhere in a makefile, is replaced by a
1856 space-separated list of names of existing files that match one of the
1857 given file name patterns. If no existing file name matches a pattern,
1858 then that pattern is omitted from the output of the `wildcard'
1859 function. Note that this is different from how unmatched wildcards
1860 behave in rules, where they are used verbatim rather than ignored
1861 (*note Wildcard Pitfall::).
1863 One use of the `wildcard' function is to get a list of all the C
1864 source files in a directory, like this:
1868 We can change the list of C source files into a list of object files
1869 by replacing the `.c' suffix with `.o' in the result, like this:
1871 $(patsubst %.c,%.o,$(wildcard *.c))
1873 (Here we have used another function, `patsubst'. *Note Functions for
1874 String Substitution and Analysis: Text Functions.)
1876 Thus, a makefile to compile all C source files in the directory and
1877 then link them together could be written as follows:
1879 objects := $(patsubst %.c,%.o,$(wildcard *.c))
1882 cc -o foo $(objects)
1884 (This takes advantage of the implicit rule for compiling C programs, so
1885 there is no need to write explicit rules for compiling the files.
1886 *Note The Two Flavors of Variables: Flavors, for an explanation of
1887 `:=', which is a variant of `='.)
1890 File: make.info, Node: Directory Search, Next: Phony Targets, Prev: Wildcards, Up: Rules
1892 4.5 Searching Directories for Prerequisites
1893 ===========================================
1895 For large systems, it is often desirable to put sources in a separate
1896 directory from the binaries. The "directory search" features of `make'
1897 facilitate this by searching several directories automatically to find
1898 a prerequisite. When you redistribute the files among directories, you
1899 do not need to change the individual rules, just the search paths.
1903 * General Search:: Specifying a search path that applies
1904 to every prerequisite.
1905 * Selective Search:: Specifying a search path
1906 for a specified class of names.
1907 * Search Algorithm:: When and how search paths are applied.
1908 * Commands/Search:: How to write shell commands that work together
1910 * Implicit/Search:: How search paths affect implicit rules.
1911 * Libraries/Search:: Directory search for link libraries.
1914 File: make.info, Node: General Search, Next: Selective Search, Prev: Directory Search, Up: Directory Search
1916 4.5.1 `VPATH': Search Path for All Prerequisites
1917 ------------------------------------------------
1919 The value of the `make' variable `VPATH' specifies a list of
1920 directories that `make' should search. Most often, the directories are
1921 expected to contain prerequisite files that are not in the current
1922 directory; however, `make' uses `VPATH' as a search list for both
1923 prerequisites and targets of rules.
1925 Thus, if a file that is listed as a target or prerequisite does not
1926 exist in the current directory, `make' searches the directories listed
1927 in `VPATH' for a file with that name. If a file is found in one of
1928 them, that file may become the prerequisite (see below). Rules may then
1929 specify the names of files in the prerequisite list as if they all
1930 existed in the current directory. *Note Writing Shell Commands with
1931 Directory Search: Commands/Search.
1933 In the `VPATH' variable, directory names are separated by colons or
1934 blanks. The order in which directories are listed is the order followed
1935 by `make' in its search. (On MS-DOS and MS-Windows, semi-colons are
1936 used as separators of directory names in `VPATH', since the colon can
1937 be used in the pathname itself, after the drive letter.)
1941 VPATH = src:../headers
1943 specifies a path containing two directories, `src' and `../headers',
1944 which `make' searches in that order.
1946 With this value of `VPATH', the following rule,
1950 is interpreted as if it were written like this:
1954 assuming the file `foo.c' does not exist in the current directory but
1955 is found in the directory `src'.
1958 File: make.info, Node: Selective Search, Next: Search Algorithm, Prev: General Search, Up: Directory Search
1960 4.5.2 The `vpath' Directive
1961 ---------------------------
1963 Similar to the `VPATH' variable, but more selective, is the `vpath'
1964 directive (note lower case), which allows you to specify a search path
1965 for a particular class of file names: those that match a particular
1966 pattern. Thus you can supply certain search directories for one class
1967 of file names and other directories (or none) for other file names.
1969 There are three forms of the `vpath' directive:
1971 `vpath PATTERN DIRECTORIES'
1972 Specify the search path DIRECTORIES for file names that match
1975 The search path, DIRECTORIES, is a list of directories to be
1976 searched, separated by colons (semi-colons on MS-DOS and
1977 MS-Windows) or blanks, just like the search path used in the
1981 Clear out the search path associated with PATTERN.
1984 Clear all search paths previously specified with `vpath'
1987 A `vpath' pattern is a string containing a `%' character. The
1988 string must match the file name of a prerequisite that is being searched
1989 for, the `%' character matching any sequence of zero or more characters
1990 (as in pattern rules; *note Defining and Redefining Pattern Rules:
1991 Pattern Rules.). For example, `%.h' matches files that end in `.h'.
1992 (If there is no `%', the pattern must match the prerequisite exactly,
1993 which is not useful very often.)
1995 `%' characters in a `vpath' directive's pattern can be quoted with
1996 preceding backslashes (`\'). Backslashes that would otherwise quote
1997 `%' characters can be quoted with more backslashes. Backslashes that
1998 quote `%' characters or other backslashes are removed from the pattern
1999 before it is compared to file names. Backslashes that are not in
2000 danger of quoting `%' characters go unmolested.
2002 When a prerequisite fails to exist in the current directory, if the
2003 PATTERN in a `vpath' directive matches the name of the prerequisite
2004 file, then the DIRECTORIES in that directive are searched just like
2005 (and before) the directories in the `VPATH' variable.
2009 vpath %.h ../headers
2011 tells `make' to look for any prerequisite whose name ends in `.h' in
2012 the directory `../headers' if the file is not found in the current
2015 If several `vpath' patterns match the prerequisite file's name, then
2016 `make' processes each matching `vpath' directive one by one, searching
2017 all the directories mentioned in each directive. `make' handles
2018 multiple `vpath' directives in the order in which they appear in the
2019 makefile; multiple directives with the same pattern are independent of
2028 will look for a file ending in `.c' in `foo', then `blish', then `bar',
2034 will look for a file ending in `.c' in `foo', then `bar', then `blish'.
2037 File: make.info, Node: Search Algorithm, Next: Commands/Search, Prev: Selective Search, Up: Directory Search
2039 4.5.3 How Directory Searches are Performed
2040 ------------------------------------------
2042 When a prerequisite is found through directory search, regardless of
2043 type (general or selective), the pathname located may not be the one
2044 that `make' actually provides you in the prerequisite list. Sometimes
2045 the path discovered through directory search is thrown away.
2047 The algorithm `make' uses to decide whether to keep or abandon a
2048 path found via directory search is as follows:
2050 1. If a target file does not exist at the path specified in the
2051 makefile, directory search is performed.
2053 2. If the directory search is successful, that path is kept and this
2054 file is tentatively stored as the target.
2056 3. All prerequisites of this target are examined using this same
2059 4. After processing the prerequisites, the target may or may not need
2062 a. If the target does _not_ need to be rebuilt, the path to the
2063 file found during directory search is used for any
2064 prerequisite lists which contain this target. In short, if
2065 `make' doesn't need to rebuild the target then you use the
2066 path found via directory search.
2068 b. If the target _does_ need to be rebuilt (is out-of-date), the
2069 pathname found during directory search is _thrown away_, and
2070 the target is rebuilt using the file name specified in the
2071 makefile. In short, if `make' must rebuild, then the target
2072 is rebuilt locally, not in the directory found via directory
2075 This algorithm may seem complex, but in practice it is quite often
2076 exactly what you want.
2078 Other versions of `make' use a simpler algorithm: if the file does
2079 not exist, and it is found via directory search, then that pathname is
2080 always used whether or not the target needs to be built. Thus, if the
2081 target is rebuilt it is created at the pathname discovered during
2084 If, in fact, this is the behavior you want for some or all of your
2085 directories, you can use the `GPATH' variable to indicate this to
2088 `GPATH' has the same syntax and format as `VPATH' (that is, a space-
2089 or colon-delimited list of pathnames). If an out-of-date target is
2090 found by directory search in a directory that also appears in `GPATH',
2091 then that pathname is not thrown away. The target is rebuilt using the
2095 File: make.info, Node: Commands/Search, Next: Implicit/Search, Prev: Search Algorithm, Up: Directory Search
2097 4.5.4 Writing Shell Commands with Directory Search
2098 --------------------------------------------------
2100 When a prerequisite is found in another directory through directory
2101 search, this cannot change the commands of the rule; they will execute
2102 as written. Therefore, you must write the commands with care so that
2103 they will look for the prerequisite in the directory where `make' finds
2106 This is done with the "automatic variables" such as `$^' (*note
2107 Automatic Variables::). For instance, the value of `$^' is a list of
2108 all the prerequisites of the rule, including the names of the
2109 directories in which they were found, and the value of `$@' is the
2113 cc -c $(CFLAGS) $^ -o $@
2115 (The variable `CFLAGS' exists so you can specify flags for C
2116 compilation by implicit rules; we use it here for consistency so it will
2117 affect all C compilations uniformly; *note Variables Used by Implicit
2118 Rules: Implicit Variables.)
2120 Often the prerequisites include header files as well, which you do
2121 not want to mention in the commands. The automatic variable `$<' is
2122 just the first prerequisite:
2124 VPATH = src:../headers
2125 foo.o : foo.c defs.h hack.h
2126 cc -c $(CFLAGS) $< -o $@
2129 File: make.info, Node: Implicit/Search, Next: Libraries/Search, Prev: Commands/Search, Up: Directory Search
2131 4.5.5 Directory Search and Implicit Rules
2132 -----------------------------------------
2134 The search through the directories specified in `VPATH' or with `vpath'
2135 also happens during consideration of implicit rules (*note Using
2136 Implicit Rules: Implicit Rules.).
2138 For example, when a file `foo.o' has no explicit rule, `make'
2139 considers implicit rules, such as the built-in rule to compile `foo.c'
2140 if that file exists. If such a file is lacking in the current
2141 directory, the appropriate directories are searched for it. If `foo.c'
2142 exists (or is mentioned in the makefile) in any of the directories, the
2143 implicit rule for C compilation is applied.
2145 The commands of implicit rules normally use automatic variables as a
2146 matter of necessity; consequently they will use the file names found by
2147 directory search with no extra effort.
2150 File: make.info, Node: Libraries/Search, Prev: Implicit/Search, Up: Directory Search
2152 4.5.6 Directory Search for Link Libraries
2153 -----------------------------------------
2155 Directory search applies in a special way to libraries used with the
2156 linker. This special feature comes into play when you write a
2157 prerequisite whose name is of the form `-lNAME'. (You can tell
2158 something strange is going on here because the prerequisite is normally
2159 the name of a file, and the _file name_ of a library generally looks
2160 like `libNAME.a', not like `-lNAME'.)
2162 When a prerequisite's name has the form `-lNAME', `make' handles it
2163 specially by searching for the file `libNAME.so' in the current
2164 directory, in directories specified by matching `vpath' search paths
2165 and the `VPATH' search path, and then in the directories `/lib',
2166 `/usr/lib', and `PREFIX/lib' (normally `/usr/local/lib', but
2167 MS-DOS/MS-Windows versions of `make' behave as if PREFIX is defined to
2168 be the root of the DJGPP installation tree).
2170 If that file is not found, then the file `libNAME.a' is searched
2171 for, in the same directories as above.
2173 For example, if there is a `/usr/lib/libcurses.a' library on your
2174 system (and no `/usr/lib/libcurses.so' file), then
2176 foo : foo.c -lcurses
2179 would cause the command `cc foo.c /usr/lib/libcurses.a -o foo' to be
2180 executed when `foo' is older than `foo.c' or than
2181 `/usr/lib/libcurses.a'.
2183 Although the default set of files to be searched for is `libNAME.so'
2184 and `libNAME.a', this is customizable via the `.LIBPATTERNS' variable.
2185 Each word in the value of this variable is a pattern string. When a
2186 prerequisite like `-lNAME' is seen, `make' will replace the percent in
2187 each pattern in the list with NAME and perform the above directory
2188 searches using that library filename. If no library is found, the next
2189 word in the list will be used.
2191 The default value for `.LIBPATTERNS' is `lib%.so lib%.a', which
2192 provides the default behavior described above.
2194 You can turn off link library expansion completely by setting this
2195 variable to an empty value.
2198 File: make.info, Node: Phony Targets, Next: Force Targets, Prev: Directory Search, Up: Rules
2203 A phony target is one that is not really the name of a file. It is
2204 just a name for some commands to be executed when you make an explicit
2205 request. There are two reasons to use a phony target: to avoid a
2206 conflict with a file of the same name, and to improve performance.
2208 If you write a rule whose commands will not create the target file,
2209 the commands will be executed every time the target comes up for
2210 remaking. Here is an example:
2215 Because the `rm' command does not create a file named `clean', probably
2216 no such file will ever exist. Therefore, the `rm' command will be
2217 executed every time you say `make clean'.
2219 The phony target will cease to work if anything ever does create a
2220 file named `clean' in this directory. Since it has no prerequisites,
2221 the file `clean' would inevitably be considered up to date, and its
2222 commands would not be executed. To avoid this problem, you can
2223 explicitly declare the target to be phony, using the special target
2224 `.PHONY' (*note Special Built-in Target Names: Special Targets.) as
2229 Once this is done, `make clean' will run the commands regardless of
2230 whether there is a file named `clean'.
2232 Since it knows that phony targets do not name actual files that
2233 could be remade from other files, `make' skips the implicit rule search
2234 for phony targets (*note Implicit Rules::). This is why declaring a
2235 target phony is good for performance, even if you are not worried about
2236 the actual file existing.
2238 Thus, you first write the line that states that `clean' is a phony
2239 target, then you write the rule, like this:
2245 Another example of the usefulness of phony targets is in conjunction
2246 with recursive invocations of `make' (for more information, see *Note
2247 Recursive Use of `make': Recursion.). In this case the makefile will
2248 often contain a variable which lists a number of subdirectories to be
2249 built. One way to handle this is with one rule whose command is a
2250 shell loop over the subdirectories, like this:
2252 SUBDIRS = foo bar baz
2255 for dir in $(SUBDIRS); do \
2259 There are a few problems with this method, however. First, any error
2260 detected in a submake is not noted by this rule, so it will continue to
2261 build the rest of the directories even when one fails. This can be
2262 overcome by adding shell commands to note the error and exit, but then
2263 it will do so even if `make' is invoked with the `-k' option, which is
2264 unfortunate. Second, and perhaps more importantly, you cannot take
2265 advantage of `make''s ability to build targets in parallel (*note
2266 Parallel Execution: Parallel.), since there is only one rule.
2268 By declaring the subdirectories as phony targets (you must do this as
2269 the subdirectory obviously always exists; otherwise it won't be built)
2270 you can remove these problems:
2272 SUBDIRS = foo bar baz
2274 .PHONY: subdirs $(SUBDIRS)
2283 Here we've also declared that the `foo' subdirectory cannot be built
2284 until after the `baz' subdirectory is complete; this kind of
2285 relationship declaration is particularly important when attempting
2288 A phony target should not be a prerequisite of a real target file;
2289 if it is, its commands are run every time `make' goes to update that
2290 file. As long as a phony target is never a prerequisite of a real
2291 target, the phony target commands will be executed only when the phony
2292 target is a specified goal (*note Arguments to Specify the Goals:
2295 Phony targets can have prerequisites. When one directory contains
2296 multiple programs, it is most convenient to describe all of the
2297 programs in one makefile `./Makefile'. Since the target remade by
2298 default will be the first one in the makefile, it is common to make
2299 this a phony target named `all' and give it, as prerequisites, all the
2300 individual programs. For example:
2302 all : prog1 prog2 prog3
2305 prog1 : prog1.o utils.o
2306 cc -o prog1 prog1.o utils.o
2311 prog3 : prog3.o sort.o utils.o
2312 cc -o prog3 prog3.o sort.o utils.o
2314 Now you can say just `make' to remake all three programs, or specify as
2315 arguments the ones to remake (as in `make prog1 prog3'). Phoniness is
2316 not inherited: the prerequisites of a phony target are not themselves
2317 phony, unless explicitly declared to be so.
2319 When one phony target is a prerequisite of another, it serves as a
2320 subroutine of the other. For example, here `make cleanall' will delete
2321 the object files, the difference files, and the file `program':
2323 .PHONY: cleanall cleanobj cleandiff
2325 cleanall : cleanobj cleandiff
2335 File: make.info, Node: Force Targets, Next: Empty Targets, Prev: Phony Targets, Up: Rules
2337 4.7 Rules without Commands or Prerequisites
2338 ===========================================
2340 If a rule has no prerequisites or commands, and the target of the rule
2341 is a nonexistent file, then `make' imagines this target to have been
2342 updated whenever its rule is run. This implies that all targets
2343 depending on this one will always have their commands run.
2345 An example will illustrate this:
2351 Here the target `FORCE' satisfies the special conditions, so the
2352 target `clean' that depends on it is forced to run its commands. There
2353 is nothing special about the name `FORCE', but that is one name
2354 commonly used this way.
2356 As you can see, using `FORCE' this way has the same results as using
2359 Using `.PHONY' is more explicit and more efficient. However, other
2360 versions of `make' do not support `.PHONY'; thus `FORCE' appears in
2361 many makefiles. *Note Phony Targets::.
2364 File: make.info, Node: Empty Targets, Next: Special Targets, Prev: Force Targets, Up: Rules
2366 4.8 Empty Target Files to Record Events
2367 =======================================
2369 The "empty target" is a variant of the phony target; it is used to hold
2370 commands for an action that you request explicitly from time to time.
2371 Unlike a phony target, this target file can really exist; but the file's
2372 contents do not matter, and usually are empty.
2374 The purpose of the empty target file is to record, with its
2375 last-modification time, when the rule's commands were last executed. It
2376 does so because one of the commands is a `touch' command to update the
2379 The empty target file should have some prerequisites (otherwise it
2380 doesn't make sense). When you ask to remake the empty target, the
2381 commands are executed if any prerequisite is more recent than the
2382 target; in other words, if a prerequisite has changed since the last
2383 time you remade the target. Here is an example:
2389 With this rule, `make print' will execute the `lpr' command if either
2390 source file has changed since the last `make print'. The automatic
2391 variable `$?' is used to print only those files that have changed
2392 (*note Automatic Variables::).
2395 File: make.info, Node: Special Targets, Next: Multiple Targets, Prev: Empty Targets, Up: Rules
2397 4.9 Special Built-in Target Names
2398 =================================
2400 Certain names have special meanings if they appear as targets.
2403 The prerequisites of the special target `.PHONY' are considered to
2404 be phony targets. When it is time to consider such a target,
2405 `make' will run its commands unconditionally, regardless of
2406 whether a file with that name exists or what its last-modification
2407 time is. *Note Phony Targets: Phony Targets.
2410 The prerequisites of the special target `.SUFFIXES' are the list
2411 of suffixes to be used in checking for suffix rules. *Note
2412 Old-Fashioned Suffix Rules: Suffix Rules.
2415 The commands specified for `.DEFAULT' are used for any target for
2416 which no rules are found (either explicit rules or implicit rules).
2417 *Note Last Resort::. If `.DEFAULT' commands are specified, every
2418 file mentioned as a prerequisite, but not as a target in a rule,
2419 will have these commands executed on its behalf. *Note Implicit
2420 Rule Search Algorithm: Implicit Rule Search.
2423 The targets which `.PRECIOUS' depends on are given the following
2424 special treatment: if `make' is killed or interrupted during the
2425 execution of their commands, the target is not deleted. *Note
2426 Interrupting or Killing `make': Interrupts. Also, if the target
2427 is an intermediate file, it will not be deleted after it is no
2428 longer needed, as is normally done. *Note Chains of Implicit
2429 Rules: Chained Rules. In this latter respect it overlaps with the
2430 `.SECONDARY' special target.
2432 You can also list the target pattern of an implicit rule (such as
2433 `%.o') as a prerequisite file of the special target `.PRECIOUS' to
2434 preserve intermediate files created by rules whose target patterns
2435 match that file's name.
2438 The targets which `.INTERMEDIATE' depends on are treated as
2439 intermediate files. *Note Chains of Implicit Rules: Chained Rules.
2440 `.INTERMEDIATE' with no prerequisites has no effect.
2443 The targets which `.SECONDARY' depends on are treated as
2444 intermediate files, except that they are never automatically
2445 deleted. *Note Chains of Implicit Rules: Chained Rules.
2447 `.SECONDARY' with no prerequisites causes all targets to be treated
2448 as secondary (i.e., no target is removed because it is considered
2452 If `.SECONDEXPANSION' is mentioned as a target anywhere in the
2453 makefile, then all prerequisite lists defined _after_ it appears
2454 will be expanded a second time after all makefiles have been read
2455 in. *Note Secondary Expansion: Secondary Expansion.
2457 The prerequisites of the special target `.SUFFIXES' are the list
2458 of suffixes to be used in checking for suffix rules. *Note
2459 Old-Fashioned Suffix Rules: Suffix Rules.
2462 If `.DELETE_ON_ERROR' is mentioned as a target anywhere in the
2463 makefile, then `make' will delete the target of a rule if it has
2464 changed and its commands exit with a nonzero exit status, just as
2465 it does when it receives a signal. *Note Errors in Commands:
2469 If you specify prerequisites for `.IGNORE', then `make' will
2470 ignore errors in execution of the commands run for those particular
2471 files. The commands for `.IGNORE' are not meaningful.
2473 If mentioned as a target with no prerequisites, `.IGNORE' says to
2474 ignore errors in execution of commands for all files. This usage
2475 of `.IGNORE' is supported only for historical compatibility. Since
2476 this affects every command in the makefile, it is not very useful;
2477 we recommend you use the more selective ways to ignore errors in
2478 specific commands. *Note Errors in Commands: Errors.
2480 `.LOW_RESOLUTION_TIME'
2481 If you specify prerequisites for `.LOW_RESOLUTION_TIME', `make'
2482 assumes that these files are created by commands that generate low
2483 resolution time stamps. The commands for `.LOW_RESOLUTION_TIME'
2486 The high resolution file time stamps of many modern hosts lessen
2487 the chance of `make' incorrectly concluding that a file is up to
2488 date. Unfortunately, these hosts provide no way to set a high
2489 resolution file time stamp, so commands like `cp -p' that
2490 explicitly set a file's time stamp must discard its subsecond
2491 part. If a file is created by such a command, you should list it
2492 as a prerequisite of `.LOW_RESOLUTION_TIME' so that `make' does
2493 not mistakenly conclude that the file is out of date. For example:
2495 .LOW_RESOLUTION_TIME: dst
2499 Since `cp -p' discards the subsecond part of `src''s time stamp,
2500 `dst' is typically slightly older than `src' even when it is up to
2501 date. The `.LOW_RESOLUTION_TIME' line causes `make' to consider
2502 `dst' to be up to date if its time stamp is at the start of the
2503 same second that `src''s time stamp is in.
2505 Due to a limitation of the archive format, archive member time
2506 stamps are always low resolution. You need not list archive
2507 members as prerequisites of `.LOW_RESOLUTION_TIME', as `make' does
2511 If you specify prerequisites for `.SILENT', then `make' will not
2512 print the commands to remake those particular files before
2513 executing them. The commands for `.SILENT' are not meaningful.
2515 If mentioned as a target with no prerequisites, `.SILENT' says not
2516 to print any commands before executing them. This usage of
2517 `.SILENT' is supported only for historical compatibility. We
2518 recommend you use the more selective ways to silence specific
2519 commands. *Note Command Echoing: Echoing. If you want to silence
2520 all commands for a particular run of `make', use the `-s' or
2521 `--silent' option (*note Options Summary::).
2523 `.EXPORT_ALL_VARIABLES'
2524 Simply by being mentioned as a target, this tells `make' to export
2525 all variables to child processes by default. *Note Communicating
2526 Variables to a Sub-`make': Variables/Recursion.
2529 If `.NOTPARALLEL' is mentioned as a target, then this invocation of
2530 `make' will be run serially, even if the `-j' option is given.
2531 Any recursively invoked `make' command will still be run in
2532 parallel (unless its makefile contains this target). Any
2533 prerequisites on this target are ignored.
2535 Any defined implicit rule suffix also counts as a special target if
2536 it appears as a target, and so does the concatenation of two suffixes,
2537 such as `.c.o'. These targets are suffix rules, an obsolete way of
2538 defining implicit rules (but a way still widely used). In principle,
2539 any target name could be special in this way if you break it in two and
2540 add both pieces to the suffix list. In practice, suffixes normally
2541 begin with `.', so these special target names also begin with `.'.
2542 *Note Old-Fashioned Suffix Rules: Suffix Rules.
2545 File: make.info, Node: Multiple Targets, Next: Multiple Rules, Prev: Special Targets, Up: Rules
2547 4.10 Multiple Targets in a Rule
2548 ===============================
2550 A rule with multiple targets is equivalent to writing many rules, each
2551 with one target, and all identical aside from that. The same commands
2552 apply to all the targets, but their effects may vary because you can
2553 substitute the actual target name into the command using `$@'. The
2554 rule contributes the same prerequisites to all the targets also.
2556 This is useful in two cases.
2558 * You want just prerequisites, no commands. For example:
2560 kbd.o command.o files.o: command.h
2562 gives an additional prerequisite to each of the three object files
2565 * Similar commands work for all the targets. The commands do not
2566 need to be absolutely identical, since the automatic variable `$@'
2567 can be used to substitute the particular target to be remade into
2568 the commands (*note Automatic Variables::). For example:
2570 bigoutput littleoutput : text.g
2571 generate text.g -$(subst output,,$@) > $@
2576 generate text.g -big > bigoutput
2577 littleoutput : text.g
2578 generate text.g -little > littleoutput
2580 Here we assume the hypothetical program `generate' makes two types
2581 of output, one if given `-big' and one if given `-little'. *Note
2582 Functions for String Substitution and Analysis: Text Functions,
2583 for an explanation of the `subst' function.
2585 Suppose you would like to vary the prerequisites according to the
2586 target, much as the variable `$@' allows you to vary the commands. You
2587 cannot do this with multiple targets in an ordinary rule, but you can
2588 do it with a "static pattern rule". *Note Static Pattern Rules: Static
2592 File: make.info, Node: Multiple Rules, Next: Static Pattern, Prev: Multiple Targets, Up: Rules
2594 4.11 Multiple Rules for One Target
2595 ==================================
2597 One file can be the target of several rules. All the prerequisites
2598 mentioned in all the rules are merged into one list of prerequisites for
2599 the target. If the target is older than any prerequisite from any rule,
2600 the commands are executed.
2602 There can only be one set of commands to be executed for a file. If
2603 more than one rule gives commands for the same file, `make' uses the
2604 last set given and prints an error message. (As a special case, if the
2605 file's name begins with a dot, no error message is printed. This odd
2606 behavior is only for compatibility with other implementations of
2607 `make'... you should avoid using it). Occasionally it is useful to
2608 have the same target invoke multiple commands which are defined in
2609 different parts of your makefile; you can use "double-colon rules"
2610 (*note Double-Colon::) for this.
2612 An extra rule with just prerequisites can be used to give a few extra
2613 prerequisites to many files at once. For example, makefiles often have
2614 a variable, such as `objects', containing a list of all the compiler
2615 output files in the system being made. An easy way to say that all of
2616 them must be recompiled if `config.h' changes is to write the following:
2618 objects = foo.o bar.o
2620 bar.o : defs.h test.h
2621 $(objects) : config.h
2623 This could be inserted or taken out without changing the rules that
2624 really specify how to make the object files, making it a convenient
2625 form to use if you wish to add the additional prerequisite
2628 Another wrinkle is that the additional prerequisites could be
2629 specified with a variable that you set with a command argument to `make'
2630 (*note Overriding Variables: Overriding.). For example,
2633 $(objects) : $(extradeps)
2635 means that the command `make extradeps=foo.h' will consider `foo.h' as
2636 a prerequisite of each object file, but plain `make' will not.
2638 If none of the explicit rules for a target has commands, then `make'
2639 searches for an applicable implicit rule to find some commands *note
2640 Using Implicit Rules: Implicit Rules.).
2643 File: make.info, Node: Static Pattern, Next: Double-Colon, Prev: Multiple Rules, Up: Rules
2645 4.12 Static Pattern Rules
2646 =========================
2648 "Static pattern rules" are rules which specify multiple targets and
2649 construct the prerequisite names for each target based on the target
2650 name. They are more general than ordinary rules with multiple targets
2651 because the targets do not have to have identical prerequisites. Their
2652 prerequisites must be _analogous_, but not necessarily _identical_.
2656 * Static Usage:: The syntax of static pattern rules.
2657 * Static versus Implicit:: When are they better than implicit rules?
2660 File: make.info, Node: Static Usage, Next: Static versus Implicit, Prev: Static Pattern, Up: Static Pattern
2662 4.12.1 Syntax of Static Pattern Rules
2663 -------------------------------------
2665 Here is the syntax of a static pattern rule:
2667 TARGETS ...: TARGET-PATTERN: PREREQ-PATTERNS ...
2671 The TARGETS list specifies the targets that the rule applies to. The
2672 targets can contain wildcard characters, just like the targets of
2673 ordinary rules (*note Using Wildcard Characters in File Names:
2676 The TARGET-PATTERN and PREREQ-PATTERNS say how to compute the
2677 prerequisites of each target. Each target is matched against the
2678 TARGET-PATTERN to extract a part of the target name, called the "stem".
2679 This stem is substituted into each of the PREREQ-PATTERNS to make the
2680 prerequisite names (one from each PREREQ-PATTERN).
2682 Each pattern normally contains the character `%' just once. When the
2683 TARGET-PATTERN matches a target, the `%' can match any part of the
2684 target name; this part is called the "stem". The rest of the pattern
2685 must match exactly. For example, the target `foo.o' matches the
2686 pattern `%.o', with `foo' as the stem. The targets `foo.c' and
2687 `foo.out' do not match that pattern.
2689 The prerequisite names for each target are made by substituting the
2690 stem for the `%' in each prerequisite pattern. For example, if one
2691 prerequisite pattern is `%.c', then substitution of the stem `foo'
2692 gives the prerequisite name `foo.c'. It is legitimate to write a
2693 prerequisite pattern that does not contain `%'; then this prerequisite
2694 is the same for all targets.
2696 `%' characters in pattern rules can be quoted with preceding
2697 backslashes (`\'). Backslashes that would otherwise quote `%'
2698 characters can be quoted with more backslashes. Backslashes that quote
2699 `%' characters or other backslashes are removed from the pattern before
2700 it is compared to file names or has a stem substituted into it.
2701 Backslashes that are not in danger of quoting `%' characters go
2702 unmolested. For example, the pattern `the\%weird\\%pattern\\' has
2703 `the%weird\' preceding the operative `%' character, and `pattern\\'
2704 following it. The final two backslashes are left alone because they
2705 cannot affect any `%' character.
2707 Here is an example, which compiles each of `foo.o' and `bar.o' from
2708 the corresponding `.c' file:
2710 objects = foo.o bar.o
2714 $(objects): %.o: %.c
2715 $(CC) -c $(CFLAGS) $< -o $@
2717 Here `$<' is the automatic variable that holds the name of the
2718 prerequisite and `$@' is the automatic variable that holds the name of
2719 the target; see *Note Automatic Variables::.
2721 Each target specified must match the target pattern; a warning is
2722 issued for each target that does not. If you have a list of files,
2723 only some of which will match the pattern, you can use the `filter'
2724 function to remove nonmatching file names (*note Functions for String
2725 Substitution and Analysis: Text Functions.):
2727 files = foo.elc bar.o lose.o
2729 $(filter %.o,$(files)): %.o: %.c
2730 $(CC) -c $(CFLAGS) $< -o $@
2731 $(filter %.elc,$(files)): %.elc: %.el
2732 emacs -f batch-byte-compile $<
2734 In this example the result of `$(filter %.o,$(files))' is `bar.o
2735 lose.o', and the first static pattern rule causes each of these object
2736 files to be updated by compiling the corresponding C source file. The
2737 result of `$(filter %.elc,$(files))' is `foo.elc', so that file is made
2740 Another example shows how to use `$*' in static pattern rules:
2742 bigoutput littleoutput : %output : text.g
2743 generate text.g -$* > $@
2745 When the `generate' command is run, `$*' will expand to the stem,
2746 either `big' or `little'.
2749 File: make.info, Node: Static versus Implicit, Prev: Static Usage, Up: Static Pattern
2751 4.12.2 Static Pattern Rules versus Implicit Rules
2752 -------------------------------------------------
2754 A static pattern rule has much in common with an implicit rule defined
2755 as a pattern rule (*note Defining and Redefining Pattern Rules: Pattern
2756 Rules.). Both have a pattern for the target and patterns for
2757 constructing the names of prerequisites. The difference is in how
2758 `make' decides _when_ the rule applies.
2760 An implicit rule _can_ apply to any target that matches its pattern,
2761 but it _does_ apply only when the target has no commands otherwise
2762 specified, and only when the prerequisites can be found. If more than
2763 one implicit rule appears applicable, only one applies; the choice
2764 depends on the order of rules.
2766 By contrast, a static pattern rule applies to the precise list of
2767 targets that you specify in the rule. It cannot apply to any other
2768 target and it invariably does apply to each of the targets specified.
2769 If two conflicting rules apply, and both have commands, that's an error.
2771 The static pattern rule can be better than an implicit rule for these
2774 * You may wish to override the usual implicit rule for a few files
2775 whose names cannot be categorized syntactically but can be given
2776 in an explicit list.
2778 * If you cannot be sure of the precise contents of the directories
2779 you are using, you may not be sure which other irrelevant files
2780 might lead `make' to use the wrong implicit rule. The choice
2781 might depend on the order in which the implicit rule search is
2782 done. With static pattern rules, there is no uncertainty: each
2783 rule applies to precisely the targets specified.
2786 File: make.info, Node: Double-Colon, Next: Automatic Prerequisites, Prev: Static Pattern, Up: Rules
2788 4.13 Double-Colon Rules
2789 =======================
2791 "Double-colon" rules are rules written with `::' instead of `:' after
2792 the target names. They are handled differently from ordinary rules
2793 when the same target appears in more than one rule.
2795 When a target appears in multiple rules, all the rules must be the
2796 same type: all ordinary, or all double-colon. If they are
2797 double-colon, each of them is independent of the others. Each
2798 double-colon rule's commands are executed if the target is older than
2799 any prerequisites of that rule. If there are no prerequisites for that
2800 rule, its commands are always executed (even if the target already
2801 exists). This can result in executing none, any, or all of the
2804 Double-colon rules with the same target are in fact completely
2805 separate from one another. Each double-colon rule is processed
2806 individually, just as rules with different targets are processed.
2808 The double-colon rules for a target are executed in the order they
2809 appear in the makefile. However, the cases where double-colon rules
2810 really make sense are those where the order of executing the commands
2813 Double-colon rules are somewhat obscure and not often very useful;
2814 they provide a mechanism for cases in which the method used to update a
2815 target differs depending on which prerequisite files caused the update,
2816 and such cases are rare.
2818 Each double-colon rule should specify commands; if it does not, an
2819 implicit rule will be used if one applies. *Note Using Implicit Rules:
2823 File: make.info, Node: Automatic Prerequisites, Prev: Double-Colon, Up: Rules
2825 4.14 Generating Prerequisites Automatically
2826 ===========================================
2828 In the makefile for a program, many of the rules you need to write often
2829 say only that some object file depends on some header file. For
2830 example, if `main.c' uses `defs.h' via an `#include', you would write:
2834 You need this rule so that `make' knows that it must remake `main.o'
2835 whenever `defs.h' changes. You can see that for a large program you
2836 would have to write dozens of such rules in your makefile. And, you
2837 must always be very careful to update the makefile every time you add
2838 or remove an `#include'.
2840 To avoid this hassle, most modern C compilers can write these rules
2841 for you, by looking at the `#include' lines in the source files.
2842 Usually this is done with the `-M' option to the compiler. For
2843 example, the command:
2847 generates the output:
2849 main.o : main.c defs.h
2851 Thus you no longer have to write all those rules yourself. The
2852 compiler will do it for you.
2854 Note that such a prerequisite constitutes mentioning `main.o' in a
2855 makefile, so it can never be considered an intermediate file by implicit
2856 rule search. This means that `make' won't ever remove the file after
2857 using it; *note Chains of Implicit Rules: Chained Rules.
2859 With old `make' programs, it was traditional practice to use this
2860 compiler feature to generate prerequisites on demand with a command like
2861 `make depend'. That command would create a file `depend' containing
2862 all the automatically-generated prerequisites; then the makefile could
2863 use `include' to read them in (*note Include::).
2865 In GNU `make', the feature of remaking makefiles makes this practice
2866 obsolete--you need never tell `make' explicitly to regenerate the
2867 prerequisites, because it always regenerates any makefile that is out
2868 of date. *Note Remaking Makefiles::.
2870 The practice we recommend for automatic prerequisite generation is
2871 to have one makefile corresponding to each source file. For each
2872 source file `NAME.c' there is a makefile `NAME.d' which lists what
2873 files the object file `NAME.o' depends on. That way only the source
2874 files that have changed need to be rescanned to produce the new
2877 Here is the pattern rule to generate a file of prerequisites (i.e.,
2878 a makefile) called `NAME.d' from a C source file called `NAME.c':
2881 @set -e; rm -f $@; \
2882 $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
2883 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
2886 *Note Pattern Rules::, for information on defining pattern rules. The
2887 `-e' flag to the shell causes it to exit immediately if the `$(CC)'
2888 command (or any other command) fails (exits with a nonzero status).
2890 With the GNU C compiler, you may wish to use the `-MM' flag instead
2891 of `-M'. This omits prerequisites on system header files. *Note
2892 Options Controlling the Preprocessor: (gcc.info)Preprocessor Options,
2895 The purpose of the `sed' command is to translate (for example):
2897 main.o : main.c defs.h
2901 main.o main.d : main.c defs.h
2903 This makes each `.d' file depend on all the source and header files
2904 that the corresponding `.o' file depends on. `make' then knows it must
2905 regenerate the prerequisites whenever any of the source or header files
2908 Once you've defined the rule to remake the `.d' files, you then use
2909 the `include' directive to read them all in. *Note Include::. For
2912 sources = foo.c bar.c
2914 include $(sources:.c=.d)
2916 (This example uses a substitution variable reference to translate the
2917 list of source files `foo.c bar.c' into a list of prerequisite
2918 makefiles, `foo.d bar.d'. *Note Substitution Refs::, for full
2919 information on substitution references.) Since the `.d' files are
2920 makefiles like any others, `make' will remake them as necessary with no
2921 further work from you. *Note Remaking Makefiles::.
2923 Note that the `.d' files contain target definitions; you should be
2924 sure to place the `include' directive _after_ the first, default goal
2925 in your makefiles or run the risk of having a random object file become
2926 the default goal. *Note How Make Works::.
2929 File: make.info, Node: Commands, Next: Using Variables, Prev: Rules, Up: Top
2931 5 Writing the Commands in Rules
2932 *******************************
2934 The commands of a rule consist of one or more shell command lines to be
2935 executed, one at a time, in the order they appear. Typically, the
2936 result of executing these commands is that the target of the rule is
2939 Users use many different shell programs, but commands in makefiles
2940 are always interpreted by `/bin/sh' unless the makefile specifies
2941 otherwise. *Note Command Execution: Execution.
2945 * Command Syntax:: Command syntax features and pitfalls.
2946 * Echoing:: How to control when commands are echoed.
2947 * Execution:: How commands are executed.
2948 * Parallel:: How commands can be executed in parallel.
2949 * Errors:: What happens after a command execution error.
2950 * Interrupts:: What happens when a command is interrupted.
2951 * Recursion:: Invoking `make' from makefiles.
2952 * Sequences:: Defining canned sequences of commands.
2953 * Empty Commands:: Defining useful, do-nothing commands.
2956 File: make.info, Node: Command Syntax, Next: Echoing, Prev: Commands, Up: Commands
2961 Makefiles have the unusual property that there are really two distinct
2962 syntaxes in one file. Most of the makefile uses `make' syntax (*note
2963 Writing Makefiles: Makefiles.). However, commands are meant to be
2964 interpreted by the shell and so they are written using shell syntax.
2965 The `make' program does not try to understand shell syntax: it performs
2966 only a very few specific translations on the content of the command
2967 before handing it to the shell.
2969 Each command line must start with a tab, except that the first
2970 command line may be attached to the target-and-prerequisites line with a
2971 semicolon in between. _Any_ line in the makefile that begins with a
2972 tab and appears in a "rule context" (that is, after a rule has been
2973 started until another rule or variable definition) will be considered a
2974 command line for that rule. Blank lines and lines of just comments may
2975 appear among the command lines; they are ignored.
2977 Some consequences of these rules include:
2979 * A blank line that begins with a tab is not blank: it's an empty
2980 command (*note Empty Commands::).
2982 * A comment in a command line is not a `make' comment; it will be
2983 passed to the shell as-is. Whether the shell treats it as a
2984 comment or not depends on your shell.
2986 * A variable definition in a "rule context" which is indented by a
2987 tab as the first character on the line, will be considered a
2988 command line, not a `make' variable definition, and passed to the
2991 * A conditional expression (`ifdef', `ifeq', etc. *note Syntax of
2992 Conditionals: Conditional Syntax.) in a "rule context" which is
2993 indented by a tab as the first character on the line, will be
2994 considered a command line and be passed to the shell.
2999 * Splitting Lines:: Breaking long command lines for readability.
3000 * Variables in Commands:: Using `make' variables in commands.
3003 File: make.info, Node: Splitting Lines, Next: Variables in Commands, Prev: Command Syntax, Up: Command Syntax
3005 5.1.1 Splitting Command Lines
3006 -----------------------------
3008 One of the few ways in which `make' does interpret command lines is
3009 checking for a backslash just before the newline. As in normal
3010 makefile syntax, a single command can be split into multiple lines in
3011 the makefile by placing a backslash before each newline. A sequence of
3012 lines like this is considered a single command, and one instance of the
3013 shell will be invoked to run it.
3015 However, in contrast to how they are treated in other places in a
3016 makefile, backslash-newline pairs are _not_ removed from the command.
3017 Both the backslash and the newline characters are preserved and passed
3018 to the shell. How the backslash-newline is interpreted depends on your
3019 shell. If the first character of the next line after the
3020 backslash-newline is a tab, then that tab (and only that tab) is
3021 removed. Whitespace is never added to the command.
3023 For example, this makefile:
3035 consists of four separate shell commands where the output is:
3042 As a more complex example, this makefile:
3044 all : ; @echo 'hello \
3045 world' ; echo "hello \
3048 will run one shell with a command script of:
3051 world' ; echo "hello \
3054 which, according to shell quoting rules, will yield the following
3061 Notice how the backslash/newline pair was removed inside the string
3062 quoted with double quotes (`"..."'), but not from the string quoted
3063 with single quotes (`'...''). This is the way the default shell
3064 (`/bin/sh') handles backslash/newline pairs. If you specify a
3065 different shell in your makefiles it may treat them differently.
3067 Sometimes you want to split a long line inside of single quotes, but
3068 you don't want the backslash-newline to appear in the quoted content.
3069 This is often the case when passing scripts to languages such as Perl,
3070 where extraneous backslashes inside the script can change its meaning
3071 or even be a syntax error. One simple way of handling this is to place
3072 the quoted string, or even the entire command, into a `make' variable
3073 then use the variable in the command. In this situation the newline
3074 quoting rules for makefiles will be used, and the backslash-newline
3075 will be removed. If we rewrite our example above using this method:
3080 all : ; @echo $(HELLO)
3082 we will get output like this:
3086 If you like, you can also use target-specific variables (*note
3087 Target-specific Variable Values: Target-specific.) to obtain a tighter
3088 correspondence between the variable and the command that uses it.
3091 File: make.info, Node: Variables in Commands, Prev: Splitting Lines, Up: Command Syntax
3093 5.1.2 Using Variables in Commands
3094 ---------------------------------
3096 The other way in which `make' processes commands is by expanding any
3097 variable references in them (*note Basics of Variable References:
3098 Reference.). This occurs after make has finished reading all the
3099 makefiles and the target is determined to be out of date; so, the
3100 commands for targets which are not rebuilt are never expanded.
3102 Variable and function references in commands have identical syntax
3103 and semantics to references elsewhere in the makefile. They also have
3104 the same quoting rules: if you want a dollar sign to appear in your
3105 command, you must double it (`$$'). For shells like the default shell,
3106 that use dollar signs to introduce variables, it's important to keep
3107 clear in your mind whether the variable you want to reference is a
3108 `make' variable (use a single dollar sign) or a shell variable (use two
3109 dollar signs). For example:
3111 LIST = one two three
3113 for i in $(LIST); do \
3117 results in the following command being passed to the shell:
3119 for i in one two three; do \
3123 which generates the expected result:
3130 File: make.info, Node: Echoing, Next: Execution, Prev: Command Syntax, Up: Commands
3135 Normally `make' prints each command line before it is executed. We
3136 call this "echoing" because it gives the appearance that you are typing
3137 the commands yourself.
3139 When a line starts with `@', the echoing of that line is suppressed.
3140 The `@' is discarded before the command is passed to the shell.
3141 Typically you would use this for a command whose only effect is to print
3142 something, such as an `echo' command to indicate progress through the
3145 @echo About to make distribution files
3147 When `make' is given the flag `-n' or `--just-print' it only echoes
3148 commands, it won't execute them. *Note Summary of Options: Options
3149 Summary. In this case and only this case, even the commands starting
3150 with `@' are printed. This flag is useful for finding out which
3151 commands `make' thinks are necessary without actually doing them.
3153 The `-s' or `--silent' flag to `make' prevents all echoing, as if
3154 all commands started with `@'. A rule in the makefile for the special
3155 target `.SILENT' without prerequisites has the same effect (*note
3156 Special Built-in Target Names: Special Targets.). `.SILENT' is
3157 essentially obsolete since `@' is more flexible.
3160 File: make.info, Node: Execution, Next: Parallel, Prev: Echoing, Up: Commands
3162 5.3 Command Execution
3163 =====================
3165 When it is time to execute commands to update a target, they are
3166 executed by invoking a new subshell for each command line. (In
3167 practice, `make' may take shortcuts that do not affect the results.)
3169 *Please note:* this implies that setting shell variables and
3170 invoking shell commands such as `cd' that set a context local to each
3171 process will not affect the following command lines.(1) If you want to
3172 use `cd' to affect the next statement, put both statements in a single
3173 command line. Then `make' will invoke one shell to run the entire
3174 line, and the shell will execute the statements in sequence. For
3178 cd $(@D) && gobble $(@F) > ../$@
3180 Here we use the shell AND operator (`&&') so that if the `cd' command
3181 fails, the script will fail without trying to invoke the `gobble'
3182 command in the wrong directory, which could cause problems (in this
3183 case it would certainly cause `../foo' to be truncated, at least).
3187 * Choosing the Shell:: How `make' chooses the shell used
3190 ---------- Footnotes ----------
3192 (1) On MS-DOS, the value of current working directory is *global*, so
3193 changing it _will_ affect the following command lines on those systems.
3196 File: make.info, Node: Choosing the Shell, Prev: Execution, Up: Execution
3198 5.3.1 Choosing the Shell
3199 ------------------------
3201 The program used as the shell is taken from the variable `SHELL'. If
3202 this variable is not set in your makefile, the program `/bin/sh' is
3205 Unlike most variables, the variable `SHELL' is never set from the
3206 environment. This is because the `SHELL' environment variable is used
3207 to specify your personal choice of shell program for interactive use.
3208 It would be very bad for personal choices like this to affect the
3209 functioning of makefiles. *Note Variables from the Environment:
3212 Furthermore, when you do set `SHELL' in your makefile that value is
3213 _not_ exported in the environment to commands that `make' invokes.
3214 Instead, the value inherited from the user's environment, if any, is
3215 exported. You can override this behavior by explicitly exporting
3216 `SHELL' (*note Communicating Variables to a Sub-`make':
3217 Variables/Recursion.), forcing it to be passed in the environment to
3220 However, on MS-DOS and MS-Windows the value of `SHELL' in the
3221 environment *is* used, since on those systems most users do not set
3222 this variable, and therefore it is most likely set specifically to be
3223 used by `make'. On MS-DOS, if the setting of `SHELL' is not suitable
3224 for `make', you can set the variable `MAKESHELL' to the shell that
3225 `make' should use; if set it will be used as the shell instead of the
3228 Choosing a Shell in DOS and Windows
3229 ...................................
3231 Choosing a shell in MS-DOS and MS-Windows is much more complex than on
3234 On MS-DOS, if `SHELL' is not set, the value of the variable
3235 `COMSPEC' (which is always set) is used instead.
3237 The processing of lines that set the variable `SHELL' in Makefiles
3238 is different on MS-DOS. The stock shell, `command.com', is
3239 ridiculously limited in its functionality and many users of `make' tend
3240 to install a replacement shell. Therefore, on MS-DOS, `make' examines
3241 the value of `SHELL', and changes its behavior based on whether it
3242 points to a Unix-style or DOS-style shell. This allows reasonable
3243 functionality even if `SHELL' points to `command.com'.
3245 If `SHELL' points to a Unix-style shell, `make' on MS-DOS
3246 additionally checks whether that shell can indeed be found; if not, it
3247 ignores the line that sets `SHELL'. In MS-DOS, GNU `make' searches for
3248 the shell in the following places:
3250 1. In the precise place pointed to by the value of `SHELL'. For
3251 example, if the makefile specifies `SHELL = /bin/sh', `make' will
3252 look in the directory `/bin' on the current drive.
3254 2. In the current directory.
3256 3. In each of the directories in the `PATH' variable, in order.
3259 In every directory it examines, `make' will first look for the
3260 specific file (`sh' in the example above). If this is not found, it
3261 will also look in that directory for that file with one of the known
3262 extensions which identify executable files. For example `.exe',
3263 `.com', `.bat', `.btm', `.sh', and some others.
3265 If any of these attempts is successful, the value of `SHELL' will be
3266 set to the full pathname of the shell as found. However, if none of
3267 these is found, the value of `SHELL' will not be changed, and thus the
3268 line that sets it will be effectively ignored. This is so `make' will
3269 only support features specific to a Unix-style shell if such a shell is
3270 actually installed on the system where `make' runs.
3272 Note that this extended search for the shell is limited to the cases
3273 where `SHELL' is set from the Makefile; if it is set in the environment
3274 or command line, you are expected to set it to the full pathname of the
3275 shell, exactly as things are on Unix.
3277 The effect of the above DOS-specific processing is that a Makefile
3278 that contains `SHELL = /bin/sh' (as many Unix makefiles do), will work
3279 on MS-DOS unaltered if you have e.g. `sh.exe' installed in some
3280 directory along your `PATH'.
3283 File: make.info, Node: Parallel, Next: Errors, Prev: Execution, Up: Commands
3285 5.4 Parallel Execution
3286 ======================
3288 GNU `make' knows how to execute several commands at once. Normally,
3289 `make' will execute only one command at a time, waiting for it to
3290 finish before executing the next. However, the `-j' or `--jobs' option
3291 tells `make' to execute many commands simultaneously.
3293 On MS-DOS, the `-j' option has no effect, since that system doesn't
3294 support multi-processing.
3296 If the `-j' option is followed by an integer, this is the number of
3297 commands to execute at once; this is called the number of "job slots".
3298 If there is nothing looking like an integer after the `-j' option,
3299 there is no limit on the number of job slots. The default number of job
3300 slots is one, which means serial execution (one thing at a time).
3302 One unpleasant consequence of running several commands
3303 simultaneously is that output generated by the commands appears
3304 whenever each command sends it, so messages from different commands may
3307 Another problem is that two processes cannot both take input from the
3308 same device; so to make sure that only one command tries to take input
3309 from the terminal at once, `make' will invalidate the standard input
3310 streams of all but one running command. This means that attempting to
3311 read from standard input will usually be a fatal error (a `Broken pipe'
3312 signal) for most child processes if there are several.
3314 It is unpredictable which command will have a valid standard input
3315 stream (which will come from the terminal, or wherever you redirect the
3316 standard input of `make'). The first command run will always get it
3317 first, and the first command started after that one finishes will get
3320 We will change how this aspect of `make' works if we find a better
3321 alternative. In the mean time, you should not rely on any command using
3322 standard input at all if you are using the parallel execution feature;
3323 but if you are not using this feature, then standard input works
3324 normally in all commands.
3326 Finally, handling recursive `make' invocations raises issues. For
3327 more information on this, see *Note Communicating Options to a
3328 Sub-`make': Options/Recursion.
3330 If a command fails (is killed by a signal or exits with a nonzero
3331 status), and errors are not ignored for that command (*note Errors in
3332 Commands: Errors.), the remaining command lines to remake the same
3333 target will not be run. If a command fails and the `-k' or
3334 `--keep-going' option was not given (*note Summary of Options: Options
3335 Summary.), `make' aborts execution. If make terminates for any reason
3336 (including a signal) with child processes running, it waits for them to
3337 finish before actually exiting.
3339 When the system is heavily loaded, you will probably want to run
3340 fewer jobs than when it is lightly loaded. You can use the `-l' option
3341 to tell `make' to limit the number of jobs to run at once, based on the
3342 load average. The `-l' or `--max-load' option is followed by a
3343 floating-point number. For example,
3347 will not let `make' start more than one job if the load average is
3348 above 2.5. The `-l' option with no following number removes the load
3349 limit, if one was given with a previous `-l' option.
3351 More precisely, when `make' goes to start up a job, and it already
3352 has at least one job running, it checks the current load average; if it
3353 is not lower than the limit given with `-l', `make' waits until the load
3354 average goes below that limit, or until all the other jobs finish.
3356 By default, there is no load limit.
3359 File: make.info, Node: Errors, Next: Interrupts, Prev: Parallel, Up: Commands
3361 5.5 Errors in Commands
3362 ======================
3364 After each shell command returns, `make' looks at its exit status. If
3365 the command completed successfully, the next command line is executed
3366 in a new shell; after the last command line is finished, the rule is
3369 If there is an error (the exit status is nonzero), `make' gives up on
3370 the current rule, and perhaps on all rules.
3372 Sometimes the failure of a certain command does not indicate a
3373 problem. For example, you may use the `mkdir' command to ensure that a
3374 directory exists. If the directory already exists, `mkdir' will report
3375 an error, but you probably want `make' to continue regardless.
3377 To ignore errors in a command line, write a `-' at the beginning of
3378 the line's text (after the initial tab). The `-' is discarded before
3379 the command is passed to the shell for execution.
3386 This causes `rm' to continue even if it is unable to remove a file.
3388 When you run `make' with the `-i' or `--ignore-errors' flag, errors
3389 are ignored in all commands of all rules. A rule in the makefile for
3390 the special target `.IGNORE' has the same effect, if there are no
3391 prerequisites. These ways of ignoring errors are obsolete because `-'
3394 When errors are to be ignored, because of either a `-' or the `-i'
3395 flag, `make' treats an error return just like success, except that it
3396 prints out a message that tells you the status code the command exited
3397 with, and says that the error has been ignored.
3399 When an error happens that `make' has not been told to ignore, it
3400 implies that the current target cannot be correctly remade, and neither
3401 can any other that depends on it either directly or indirectly. No
3402 further commands will be executed for these targets, since their
3403 preconditions have not been achieved.
3405 Normally `make' gives up immediately in this circumstance, returning
3406 a nonzero status. However, if the `-k' or `--keep-going' flag is
3407 specified, `make' continues to consider the other prerequisites of the
3408 pending targets, remaking them if necessary, before it gives up and
3409 returns nonzero status. For example, after an error in compiling one
3410 object file, `make -k' will continue compiling other object files even
3411 though it already knows that linking them will be impossible. *Note
3412 Summary of Options: Options Summary.
3414 The usual behavior assumes that your purpose is to get the specified
3415 targets up to date; once `make' learns that this is impossible, it
3416 might as well report the failure immediately. The `-k' option says
3417 that the real purpose is to test as many of the changes made in the
3418 program as possible, perhaps to find several independent problems so
3419 that you can correct them all before the next attempt to compile. This
3420 is why Emacs' `compile' command passes the `-k' flag by default.
3422 Usually when a command fails, if it has changed the target file at
3423 all, the file is corrupted and cannot be used--or at least it is not
3424 completely updated. Yet the file's time stamp says that it is now up to
3425 date, so the next time `make' runs, it will not try to update that
3426 file. The situation is just the same as when the command is killed by a
3427 signal; *note Interrupts::. So generally the right thing to do is to
3428 delete the target file if the command fails after beginning to change
3429 the file. `make' will do this if `.DELETE_ON_ERROR' appears as a
3430 target. This is almost always what you want `make' to do, but it is
3431 not historical practice; so for compatibility, you must explicitly
3435 File: make.info, Node: Interrupts, Next: Recursion, Prev: Errors, Up: Commands
3437 5.6 Interrupting or Killing `make'
3438 ==================================
3440 If `make' gets a fatal signal while a command is executing, it may
3441 delete the target file that the command was supposed to update. This is
3442 done if the target file's last-modification time has changed since
3443 `make' first checked it.
3445 The purpose of deleting the target is to make sure that it is remade
3446 from scratch when `make' is next run. Why is this? Suppose you type
3447 `Ctrl-c' while a compiler is running, and it has begun to write an
3448 object file `foo.o'. The `Ctrl-c' kills the compiler, resulting in an
3449 incomplete file whose last-modification time is newer than the source
3450 file `foo.c'. But `make' also receives the `Ctrl-c' signal and deletes
3451 this incomplete file. If `make' did not do this, the next invocation
3452 of `make' would think that `foo.o' did not require updating--resulting
3453 in a strange error message from the linker when it tries to link an
3454 object file half of which is missing.
3456 You can prevent the deletion of a target file in this way by making
3457 the special target `.PRECIOUS' depend on it. Before remaking a target,
3458 `make' checks to see whether it appears on the prerequisites of
3459 `.PRECIOUS', and thereby decides whether the target should be deleted
3460 if a signal happens. Some reasons why you might do this are that the
3461 target is updated in some atomic fashion, or exists only to record a
3462 modification-time (its contents do not matter), or must exist at all
3463 times to prevent other sorts of trouble.
3466 File: make.info, Node: Recursion, Next: Sequences, Prev: Interrupts, Up: Commands
3468 5.7 Recursive Use of `make'
3469 ===========================
3471 Recursive use of `make' means using `make' as a command in a makefile.
3472 This technique is useful when you want separate makefiles for various
3473 subsystems that compose a larger system. For example, suppose you have
3474 a subdirectory `subdir' which has its own makefile, and you would like
3475 the containing directory's makefile to run `make' on the subdirectory.
3476 You can do it by writing this:
3479 cd subdir && $(MAKE)
3481 or, equivalently, this (*note Summary of Options: Options Summary.):
3486 You can write recursive `make' commands just by copying this example,
3487 but there are many things to know about how they work and why, and about
3488 how the sub-`make' relates to the top-level `make'. You may also find
3489 it useful to declare targets that invoke recursive `make' commands as
3490 `.PHONY' (for more discussion on when this is useful, see *Note Phony
3493 For your convenience, when GNU `make' starts (after it has processed
3494 any `-C' options) it sets the variable `CURDIR' to the pathname of the
3495 current working directory. This value is never touched by `make'
3496 again: in particular note that if you include files from other
3497 directories the value of `CURDIR' does not change. The value has the
3498 same precedence it would have if it were set in the makefile (by
3499 default, an environment variable `CURDIR' will not override this
3500 value). Note that setting this variable has no impact on the operation
3501 of `make' (it does not cause `make' to change its working directory,
3506 * MAKE Variable:: The special effects of using `$(MAKE)'.
3507 * Variables/Recursion:: How to communicate variables to a sub-`make'.
3508 * Options/Recursion:: How to communicate options to a sub-`make'.
3509 * -w Option:: How the `-w' or `--print-directory' option
3510 helps debug use of recursive `make' commands.
3513 File: make.info, Node: MAKE Variable, Next: Variables/Recursion, Prev: Recursion, Up: Recursion
3515 5.7.1 How the `MAKE' Variable Works
3516 -----------------------------------
3518 Recursive `make' commands should always use the variable `MAKE', not
3519 the explicit command name `make', as shown here:
3522 cd subdir && $(MAKE)
3524 The value of this variable is the file name with which `make' was
3525 invoked. If this file name was `/bin/make', then the command executed
3526 is `cd subdir && /bin/make'. If you use a special version of `make' to
3527 run the top-level makefile, the same special version will be executed
3528 for recursive invocations.
3530 As a special feature, using the variable `MAKE' in the commands of a
3531 rule alters the effects of the `-t' (`--touch'), `-n' (`--just-print'),
3532 or `-q' (`--question') option. Using the `MAKE' variable has the same
3533 effect as using a `+' character at the beginning of the command line.
3534 *Note Instead of Executing the Commands: Instead of Execution. This
3535 special feature is only enabled if the `MAKE' variable appears directly
3536 in the command script: it does not apply if the `MAKE' variable is
3537 referenced through expansion of another variable. In the latter case
3538 you must use the `+' token to get these special effects.
3540 Consider the command `make -t' in the above example. (The `-t'
3541 option marks targets as up to date without actually running any
3542 commands; see *Note Instead of Execution::.) Following the usual
3543 definition of `-t', a `make -t' command in the example would create a
3544 file named `subsystem' and do nothing else. What you really want it to
3545 do is run `cd subdir && make -t'; but that would require executing the
3546 command, and `-t' says not to execute commands.
3548 The special feature makes this do what you want: whenever a command
3549 line of a rule contains the variable `MAKE', the flags `-t', `-n' and
3550 `-q' do not apply to that line. Command lines containing `MAKE' are
3551 executed normally despite the presence of a flag that causes most
3552 commands not to be run. The usual `MAKEFLAGS' mechanism passes the
3553 flags to the sub-`make' (*note Communicating Options to a Sub-`make':
3554 Options/Recursion.), so your request to touch the files, or print the
3555 commands, is propagated to the subsystem.
3558 File: make.info, Node: Variables/Recursion, Next: Options/Recursion, Prev: MAKE Variable, Up: Recursion
3560 5.7.2 Communicating Variables to a Sub-`make'
3561 ---------------------------------------------
3563 Variable values of the top-level `make' can be passed to the sub-`make'
3564 through the environment by explicit request. These variables are
3565 defined in the sub-`make' as defaults, but do not override what is
3566 specified in the makefile used by the sub-`make' makefile unless you
3567 use the `-e' switch (*note Summary of Options: Options Summary.).
3569 To pass down, or "export", a variable, `make' adds the variable and
3570 its value to the environment for running each command. The sub-`make',
3571 in turn, uses the environment to initialize its table of variable
3572 values. *Note Variables from the Environment: Environment.
3574 Except by explicit request, `make' exports a variable only if it is
3575 either defined in the environment initially or set on the command line,
3576 and if its name consists only of letters, numbers, and underscores.
3577 Some shells cannot cope with environment variable names consisting of
3578 characters other than letters, numbers, and underscores.
3580 The value of the `make' variable `SHELL' is not exported. Instead,
3581 the value of the `SHELL' variable from the invoking environment is
3582 passed to the sub-`make'. You can force `make' to export its value for
3583 `SHELL' by using the `export' directive, described below. *Note
3584 Choosing the Shell::.
3586 The special variable `MAKEFLAGS' is always exported (unless you
3587 unexport it). `MAKEFILES' is exported if you set it to anything.
3589 `make' automatically passes down variable values that were defined
3590 on the command line, by putting them in the `MAKEFLAGS' variable.
3591 *Note Options/Recursion::.
3593 Variables are _not_ normally passed down if they were created by
3594 default by `make' (*note Variables Used by Implicit Rules: Implicit
3595 Variables.). The sub-`make' will define these for itself.
3597 If you want to export specific variables to a sub-`make', use the
3598 `export' directive, like this:
3602 If you want to _prevent_ a variable from being exported, use the
3603 `unexport' directive, like this:
3605 unexport VARIABLE ...
3607 In both of these forms, the arguments to `export' and `unexport' are
3608 expanded, and so could be variables or functions which expand to a
3609 (list of) variable names to be (un)exported.
3611 As a convenience, you can define a variable and export it at the same
3614 export VARIABLE = value
3616 has the same result as:
3623 export VARIABLE := value
3625 has the same result as:
3632 export VARIABLE += value
3639 *Note Appending More Text to Variables: Appending.
3641 You may notice that the `export' and `unexport' directives work in
3642 `make' in the same way they work in the shell, `sh'.
3644 If you want all variables to be exported by default, you can use
3649 This tells `make' that variables which are not explicitly mentioned in
3650 an `export' or `unexport' directive should be exported. Any variable
3651 given in an `unexport' directive will still _not_ be exported. If you
3652 use `export' by itself to export variables by default, variables whose
3653 names contain characters other than alphanumerics and underscores will
3654 not be exported unless specifically mentioned in an `export' directive.
3656 The behavior elicited by an `export' directive by itself was the
3657 default in older versions of GNU `make'. If your makefiles depend on
3658 this behavior and you want to be compatible with old versions of
3659 `make', you can write a rule for the special target
3660 `.EXPORT_ALL_VARIABLES' instead of using the `export' directive. This
3661 will be ignored by old `make's, while the `export' directive will cause
3664 Likewise, you can use `unexport' by itself to tell `make' _not_ to
3665 export variables by default. Since this is the default behavior, you
3666 would only need to do this if `export' had been used by itself earlier
3667 (in an included makefile, perhaps). You *cannot* use `export' and
3668 `unexport' by themselves to have variables exported for some commands
3669 and not for others. The last `export' or `unexport' directive that
3670 appears by itself determines the behavior for the entire run of `make'.
3672 As a special feature, the variable `MAKELEVEL' is changed when it is
3673 passed down from level to level. This variable's value is a string
3674 which is the depth of the level as a decimal number. The value is `0'
3675 for the top-level `make'; `1' for a sub-`make', `2' for a
3676 sub-sub-`make', and so on. The incrementation happens when `make' sets
3677 up the environment for a command.
3679 The main use of `MAKELEVEL' is to test it in a conditional directive
3680 (*note Conditional Parts of Makefiles: Conditionals.); this way you can
3681 write a makefile that behaves one way if run recursively and another
3682 way if run directly by you.
3684 You can use the variable `MAKEFILES' to cause all sub-`make'
3685 commands to use additional makefiles. The value of `MAKEFILES' is a
3686 whitespace-separated list of file names. This variable, if defined in
3687 the outer-level makefile, is passed down through the environment; then
3688 it serves as a list of extra makefiles for the sub-`make' to read
3689 before the usual or specified ones. *Note The Variable `MAKEFILES':
3693 File: make.info, Node: Options/Recursion, Next: -w Option, Prev: Variables/Recursion, Up: Recursion
3695 5.7.3 Communicating Options to a Sub-`make'
3696 -------------------------------------------
3698 Flags such as `-s' and `-k' are passed automatically to the sub-`make'
3699 through the variable `MAKEFLAGS'. This variable is set up
3700 automatically by `make' to contain the flag letters that `make'
3701 received. Thus, if you do `make -ks' then `MAKEFLAGS' gets the value
3704 As a consequence, every sub-`make' gets a value for `MAKEFLAGS' in
3705 its environment. In response, it takes the flags from that value and
3706 processes them as if they had been given as arguments. *Note Summary
3707 of Options: Options Summary.
3709 Likewise variables defined on the command line are passed to the
3710 sub-`make' through `MAKEFLAGS'. Words in the value of `MAKEFLAGS' that
3711 contain `=', `make' treats as variable definitions just as if they
3712 appeared on the command line. *Note Overriding Variables: Overriding.
3714 The options `-C', `-f', `-o', and `-W' are not put into `MAKEFLAGS';
3715 these options are not passed down.
3717 The `-j' option is a special case (*note Parallel Execution:
3718 Parallel.). If you set it to some numeric value `N' and your operating
3719 system supports it (most any UNIX system will; others typically won't),
3720 the parent `make' and all the sub-`make's will communicate to ensure
3721 that there are only `N' jobs running at the same time between them all.
3722 Note that any job that is marked recursive (*note Instead of Executing
3723 the Commands: Instead of Execution.) doesn't count against the total
3724 jobs (otherwise we could get `N' sub-`make's running and have no slots
3725 left over for any real work!)
3727 If your operating system doesn't support the above communication,
3728 then `-j 1' is always put into `MAKEFLAGS' instead of the value you
3729 specified. This is because if the `-j' option were passed down to
3730 sub-`make's, you would get many more jobs running in parallel than you
3731 asked for. If you give `-j' with no numeric argument, meaning to run
3732 as many jobs as possible in parallel, this is passed down, since
3733 multiple infinities are no more than one.
3735 If you do not want to pass the other flags down, you must change the
3736 value of `MAKEFLAGS', like this:
3739 cd subdir && $(MAKE) MAKEFLAGS=
3741 The command line variable definitions really appear in the variable
3742 `MAKEOVERRIDES', and `MAKEFLAGS' contains a reference to this variable.
3743 If you do want to pass flags down normally, but don't want to pass
3744 down the command line variable definitions, you can reset
3745 `MAKEOVERRIDES' to empty, like this:
3749 This is not usually useful to do. However, some systems have a small
3750 fixed limit on the size of the environment, and putting so much
3751 information into the value of `MAKEFLAGS' can exceed it. If you see
3752 the error message `Arg list too long', this may be the problem. (For
3753 strict compliance with POSIX.2, changing `MAKEOVERRIDES' does not
3754 affect `MAKEFLAGS' if the special target `.POSIX' appears in the
3755 makefile. You probably do not care about this.)
3757 A similar variable `MFLAGS' exists also, for historical
3758 compatibility. It has the same value as `MAKEFLAGS' except that it
3759 does not contain the command line variable definitions, and it always
3760 begins with a hyphen unless it is empty (`MAKEFLAGS' begins with a
3761 hyphen only when it begins with an option that has no single-letter
3762 version, such as `--warn-undefined-variables'). `MFLAGS' was
3763 traditionally used explicitly in the recursive `make' command, like
3767 cd subdir && $(MAKE) $(MFLAGS)
3769 but now `MAKEFLAGS' makes this usage redundant. If you want your
3770 makefiles to be compatible with old `make' programs, use this
3771 technique; it will work fine with more modern `make' versions too.
3773 The `MAKEFLAGS' variable can also be useful if you want to have
3774 certain options, such as `-k' (*note Summary of Options: Options
3775 Summary.), set each time you run `make'. You simply put a value for
3776 `MAKEFLAGS' in your environment. You can also set `MAKEFLAGS' in a
3777 makefile, to specify additional flags that should also be in effect for
3778 that makefile. (Note that you cannot use `MFLAGS' this way. That
3779 variable is set only for compatibility; `make' does not interpret a
3780 value you set for it in any way.)
3782 When `make' interprets the value of `MAKEFLAGS' (either from the
3783 environment or from a makefile), it first prepends a hyphen if the value
3784 does not already begin with one. Then it chops the value into words
3785 separated by blanks, and parses these words as if they were options
3786 given on the command line (except that `-C', `-f', `-h', `-o', `-W',
3787 and their long-named versions are ignored; and there is no error for an
3790 If you do put `MAKEFLAGS' in your environment, you should be sure not
3791 to include any options that will drastically affect the actions of
3792 `make' and undermine the purpose of makefiles and of `make' itself.
3793 For instance, the `-t', `-n', and `-q' options, if put in one of these
3794 variables, could have disastrous consequences and would certainly have
3795 at least surprising and probably annoying effects.
3798 File: make.info, Node: -w Option, Prev: Options/Recursion, Up: Recursion
3800 5.7.4 The `--print-directory' Option
3801 ------------------------------------
3803 If you use several levels of recursive `make' invocations, the `-w' or
3804 `--print-directory' option can make the output a lot easier to
3805 understand by showing each directory as `make' starts processing it and
3806 as `make' finishes processing it. For example, if `make -w' is run in
3807 the directory `/u/gnu/make', `make' will print a line of the form:
3809 make: Entering directory `/u/gnu/make'.
3811 before doing anything else, and a line of the form:
3813 make: Leaving directory `/u/gnu/make'.
3815 when processing is completed.
3817 Normally, you do not need to specify this option because `make' does
3818 it for you: `-w' is turned on automatically when you use the `-C'
3819 option, and in sub-`make's. `make' will not automatically turn on `-w'
3820 if you also use `-s', which says to be silent, or if you use
3821 `--no-print-directory' to explicitly disable it.
3824 File: make.info, Node: Sequences, Next: Empty Commands, Prev: Recursion, Up: Commands
3826 5.8 Defining Canned Command Sequences
3827 =====================================
3829 When the same sequence of commands is useful in making various targets,
3830 you can define it as a canned sequence with the `define' directive, and
3831 refer to the canned sequence from the rules for those targets. The
3832 canned sequence is actually a variable, so the name must not conflict
3833 with other variable names.
3835 Here is an example of defining a canned sequence of commands:
3838 yacc $(firstword $^)
3842 Here `run-yacc' is the name of the variable being defined; `endef'
3843 marks the end of the definition; the lines in between are the commands.
3844 The `define' directive does not expand variable references and
3845 function calls in the canned sequence; the `$' characters, parentheses,
3846 variable names, and so on, all become part of the value of the variable
3847 you are defining. *Note Defining Variables Verbatim: Defining, for a
3848 complete explanation of `define'.
3850 The first command in this example runs Yacc on the first
3851 prerequisite of whichever rule uses the canned sequence. The output
3852 file from Yacc is always named `y.tab.c'. The second command moves the
3853 output to the rule's target file name.
3855 To use the canned sequence, substitute the variable into the
3856 commands of a rule. You can substitute it like any other variable
3857 (*note Basics of Variable References: Reference.). Because variables
3858 defined by `define' are recursively expanded variables, all the
3859 variable references you wrote inside the `define' are expanded now.
3865 `foo.y' will be substituted for the variable `$^' when it occurs in
3866 `run-yacc''s value, and `foo.c' for `$@'.
3868 This is a realistic example, but this particular one is not needed in
3869 practice because `make' has an implicit rule to figure out these
3870 commands based on the file names involved (*note Using Implicit Rules:
3873 In command execution, each line of a canned sequence is treated just
3874 as if the line appeared on its own in the rule, preceded by a tab. In
3875 particular, `make' invokes a separate subshell for each line. You can
3876 use the special prefix characters that affect command lines (`@', `-',
3877 and `+') on each line of a canned sequence. *Note Writing the Commands
3878 in Rules: Commands. For example, using this canned sequence:
3881 @echo "frobnicating target $@"
3882 frob-step-1 $< -o $@-step-1
3883 frob-step-2 $@-step-1 -o $@
3886 `make' will not echo the first line, the `echo' command. But it _will_
3887 echo the following two command lines.
3889 On the other hand, prefix characters on the command line that refers
3890 to a canned sequence apply to every line in the sequence. So the rule:
3895 does not echo _any_ commands. (*Note Command Echoing: Echoing, for a
3896 full explanation of `@'.)
3899 File: make.info, Node: Empty Commands, Prev: Sequences, Up: Commands
3901 5.9 Using Empty Commands
3902 ========================
3904 It is sometimes useful to define commands which do nothing. This is
3905 done simply by giving a command that consists of nothing but
3906 whitespace. For example:
3910 defines an empty command string for `target'. You could also use a
3911 line beginning with a tab character to define an empty command string,
3912 but this would be confusing because such a line looks empty.
3914 You may be wondering why you would want to define a command string
3915 that does nothing. The only reason this is useful is to prevent a
3916 target from getting implicit commands (from implicit rules or the
3917 `.DEFAULT' special target; *note Implicit Rules:: and *note Defining
3918 Last-Resort Default Rules: Last Resort.).
3920 You may be inclined to define empty command strings for targets that
3921 are not actual files, but only exist so that their prerequisites can be
3922 remade. However, this is not the best way to do that, because the
3923 prerequisites may not be remade properly if the target file actually
3924 does exist. *Note Phony Targets: Phony Targets, for a better way to do
3928 File: make.info, Node: Using Variables, Next: Conditionals, Prev: Commands, Up: Top
3930 6 How to Use Variables
3931 **********************
3933 A "variable" is a name defined in a makefile to represent a string of
3934 text, called the variable's "value". These values are substituted by
3935 explicit request into targets, prerequisites, commands, and other parts
3936 of the makefile. (In some other versions of `make', variables are
3939 Variables and functions in all parts of a makefile are expanded when
3940 read, except for the shell commands in rules, the right-hand sides of
3941 variable definitions using `=', and the bodies of variable definitions
3942 using the `define' directive.
3944 Variables can represent lists of file names, options to pass to
3945 compilers, programs to run, directories to look in for source files,
3946 directories to write output in, or anything else you can imagine.
3948 A variable name may be any sequence of characters not containing `:',
3949 `#', `=', or leading or trailing whitespace. However, variable names
3950 containing characters other than letters, numbers, and underscores
3951 should be avoided, as they may be given special meanings in the future,
3952 and with some shells they cannot be passed through the environment to a
3953 sub-`make' (*note Communicating Variables to a Sub-`make':
3954 Variables/Recursion.).
3956 Variable names are case-sensitive. The names `foo', `FOO', and
3957 `Foo' all refer to different variables.
3959 It is traditional to use upper case letters in variable names, but we
3960 recommend using lower case letters for variable names that serve
3961 internal purposes in the makefile, and reserving upper case for
3962 parameters that control implicit rules or for parameters that the user
3963 should override with command options (*note Overriding Variables:
3966 A few variables have names that are a single punctuation character or
3967 just a few characters. These are the "automatic variables", and they
3968 have particular specialized uses. *Note Automatic Variables::.
3972 * Reference:: How to use the value of a variable.
3973 * Flavors:: Variables come in two flavors.
3974 * Advanced:: Advanced features for referencing a variable.
3975 * Values:: All the ways variables get their values.
3976 * Setting:: How to set a variable in the makefile.
3977 * Appending:: How to append more text to the old value
3979 * Override Directive:: How to set a variable in the makefile even if
3980 the user has set it with a command argument.
3981 * Defining:: An alternate way to set a variable
3982 to a verbatim string.
3983 * Environment:: Variable values can come from the environment.
3984 * Target-specific:: Variable values can be defined on a per-target
3986 * Pattern-specific:: Target-specific variable values can be applied
3987 to a group of targets that match a pattern.
3990 File: make.info, Node: Reference, Next: Flavors, Prev: Using Variables, Up: Using Variables
3992 6.1 Basics of Variable References
3993 =================================
3995 To substitute a variable's value, write a dollar sign followed by the
3996 name of the variable in parentheses or braces: either `$(foo)' or
3997 `${foo}' is a valid reference to the variable `foo'. This special
3998 significance of `$' is why you must write `$$' to have the effect of a
3999 single dollar sign in a file name or command.
4001 Variable references can be used in any context: targets,
4002 prerequisites, commands, most directives, and new variable values.
4003 Here is an example of a common case, where a variable holds the names
4004 of all the object files in a program:
4006 objects = program.o foo.o utils.o
4007 program : $(objects)
4008 cc -o program $(objects)
4012 Variable references work by strict textual substitution. Thus, the
4016 prog.o : prog.$(foo)
4017 $(foo)$(foo) -$(foo) prog.$(foo)
4019 could be used to compile a C program `prog.c'. Since spaces before the
4020 variable value are ignored in variable assignments, the value of `foo'
4021 is precisely `c'. (Don't actually write your makefiles this way!)
4023 A dollar sign followed by a character other than a dollar sign,
4024 open-parenthesis or open-brace treats that single character as the
4025 variable name. Thus, you could reference the variable `x' with `$x'.
4026 However, this practice is strongly discouraged, except in the case of
4027 the automatic variables (*note Automatic Variables::).
4030 File: make.info, Node: Flavors, Next: Advanced, Prev: Reference, Up: Using Variables
4032 6.2 The Two Flavors of Variables
4033 ================================
4035 There are two ways that a variable in GNU `make' can have a value; we
4036 call them the two "flavors" of variables. The two flavors are
4037 distinguished in how they are defined and in what they do when expanded.
4039 The first flavor of variable is a "recursively expanded" variable.
4040 Variables of this sort are defined by lines using `=' (*note Setting
4041 Variables: Setting.) or by the `define' directive (*note Defining
4042 Variables Verbatim: Defining.). The value you specify is installed
4043 verbatim; if it contains references to other variables, these
4044 references are expanded whenever this variable is substituted (in the
4045 course of expanding some other string). When this happens, it is
4046 called "recursive expansion".
4056 will echo `Huh?': `$(foo)' expands to `$(bar)' which expands to
4057 `$(ugh)' which finally expands to `Huh?'.
4059 This flavor of variable is the only sort supported by other versions
4060 of `make'. It has its advantages and its disadvantages. An advantage
4061 (most would say) is that:
4063 CFLAGS = $(include_dirs) -O
4064 include_dirs = -Ifoo -Ibar
4066 will do what was intended: when `CFLAGS' is expanded in a command, it
4067 will expand to `-Ifoo -Ibar -O'. A major disadvantage is that you
4068 cannot append something on the end of a variable, as in
4070 CFLAGS = $(CFLAGS) -O
4072 because it will cause an infinite loop in the variable expansion.
4073 (Actually `make' detects the infinite loop and reports an error.)
4075 Another disadvantage is that any functions (*note Functions for
4076 Transforming Text: Functions.) referenced in the definition will be
4077 executed every time the variable is expanded. This makes `make' run
4078 slower; worse, it causes the `wildcard' and `shell' functions to give
4079 unpredictable results because you cannot easily control when they are
4080 called, or even how many times.
4082 To avoid all the problems and inconveniences of recursively expanded
4083 variables, there is another flavor: simply expanded variables.
4085 "Simply expanded variables" are defined by lines using `:=' (*note
4086 Setting Variables: Setting.). The value of a simply expanded variable
4087 is scanned once and for all, expanding any references to other
4088 variables and functions, when the variable is defined. The actual
4089 value of the simply expanded variable is the result of expanding the
4090 text that you write. It does not contain any references to other
4091 variables; it contains their values _as of the time this variable was
4092 defined_. Therefore,
4103 When a simply expanded variable is referenced, its value is
4104 substituted verbatim.
4106 Here is a somewhat more complicated example, illustrating the use of
4107 `:=' in conjunction with the `shell' function. (*Note The `shell'
4108 Function: Shell Function.) This example also shows use of the variable
4109 `MAKELEVEL', which is changed when it is passed down from level to
4110 level. (*Note Communicating Variables to a Sub-`make':
4111 Variables/Recursion, for information about `MAKELEVEL'.)
4113 ifeq (0,${MAKELEVEL})
4114 whoami := $(shell whoami)
4115 host-type := $(shell arch)
4116 MAKE := ${MAKE} host-type=${host-type} whoami=${whoami}
4119 An advantage of this use of `:=' is that a typical `descend into a
4120 directory' command then looks like this:
4125 Simply expanded variables generally make complicated makefile
4126 programming more predictable because they work like variables in most
4127 programming languages. They allow you to redefine a variable using its
4128 own value (or its value processed in some way by one of the expansion
4129 functions) and to use the expansion functions much more efficiently
4130 (*note Functions for Transforming Text: Functions.).
4132 You can also use them to introduce controlled leading whitespace into
4133 variable values. Leading whitespace characters are discarded from your
4134 input before substitution of variable references and function calls;
4135 this means you can include leading spaces in a variable value by
4136 protecting them with variable references, like this:
4139 space := $(nullstring) # end of the line
4141 Here the value of the variable `space' is precisely one space. The
4142 comment `# end of the line' is included here just for clarity. Since
4143 trailing space characters are _not_ stripped from variable values, just
4144 a space at the end of the line would have the same effect (but be
4145 rather hard to read). If you put whitespace at the end of a variable
4146 value, it is a good idea to put a comment like that at the end of the
4147 line to make your intent clear. Conversely, if you do _not_ want any
4148 whitespace characters at the end of your variable value, you must
4149 remember not to put a random comment on the end of the line after some
4150 whitespace, such as this:
4152 dir := /foo/bar # directory to put the frobs in
4154 Here the value of the variable `dir' is `/foo/bar ' (with four
4155 trailing spaces), which was probably not the intention. (Imagine
4156 something like `$(dir)/file' with this definition!)
4158 There is another assignment operator for variables, `?='. This is
4159 called a conditional variable assignment operator, because it only has
4160 an effect if the variable is not yet defined. This statement:
4164 is exactly equivalent to this (*note The `origin' Function: Origin
4167 ifeq ($(origin FOO), undefined)
4171 Note that a variable set to an empty value is still defined, so `?='
4172 will not set that variable.
4175 File: make.info, Node: Advanced, Next: Values, Prev: Flavors, Up: Using Variables
4177 6.3 Advanced Features for Reference to Variables
4178 ================================================
4180 This section describes some advanced features you can use to reference
4181 variables in more flexible ways.
4185 * Substitution Refs:: Referencing a variable with
4186 substitutions on the value.
4187 * Computed Names:: Computing the name of the variable to refer to.
4190 File: make.info, Node: Substitution Refs, Next: Computed Names, Prev: Advanced, Up: Advanced
4192 6.3.1 Substitution References
4193 -----------------------------
4195 A "substitution reference" substitutes the value of a variable with
4196 alterations that you specify. It has the form `$(VAR:A=B)' (or
4197 `${VAR:A=B}') and its meaning is to take the value of the variable VAR,
4198 replace every A at the end of a word with B in that value, and
4199 substitute the resulting string.
4201 When we say "at the end of a word", we mean that A must appear
4202 either followed by whitespace or at the end of the value in order to be
4203 replaced; other occurrences of A in the value are unaltered. For
4209 sets `bar' to `a.c b.c c.c'. *Note Setting Variables: Setting.
4211 A substitution reference is actually an abbreviation for use of the
4212 `patsubst' expansion function (*note Functions for String Substitution
4213 and Analysis: Text Functions.). We provide substitution references as
4214 well as `patsubst' for compatibility with other implementations of
4217 Another type of substitution reference lets you use the full power of
4218 the `patsubst' function. It has the same form `$(VAR:A=B)' described
4219 above, except that now A must contain a single `%' character. This
4220 case is equivalent to `$(patsubst A,B,$(VAR))'. *Note Functions for
4221 String Substitution and Analysis: Text Functions, for a description of
4222 the `patsubst' function.
4227 bar := $(foo:%.o=%.c)
4229 sets `bar' to `a.c b.c c.c'.
4232 File: make.info, Node: Computed Names, Prev: Substitution Refs, Up: Advanced
4234 6.3.2 Computed Variable Names
4235 -----------------------------
4237 Computed variable names are a complicated concept needed only for
4238 sophisticated makefile programming. For most purposes you need not
4239 consider them, except to know that making a variable with a dollar sign
4240 in its name might have strange results. However, if you are the type
4241 that wants to understand everything, or you are actually interested in
4242 what they do, read on.
4244 Variables may be referenced inside the name of a variable. This is
4245 called a "computed variable name" or a "nested variable reference".
4252 defines `a' as `z': the `$(x)' inside `$($(x))' expands to `y', so
4253 `$($(x))' expands to `$(y)' which in turn expands to `z'. Here the
4254 name of the variable to reference is not stated explicitly; it is
4255 computed by expansion of `$(x)'. The reference `$(x)' here is nested
4256 within the outer variable reference.
4258 The previous example shows two levels of nesting, but any number of
4259 levels is possible. For example, here are three levels:
4266 Here the innermost `$(x)' expands to `y', so `$($(x))' expands to
4267 `$(y)' which in turn expands to `z'; now we have `$(z)', which becomes
4270 References to recursively-expanded variables within a variable name
4271 are reexpanded in the usual fashion. For example:
4278 defines `a' as `Hello': `$($(x))' becomes `$($(y))' which becomes
4279 `$(z)' which becomes `Hello'.
4281 Nested variable references can also contain modified references and
4282 function invocations (*note Functions for Transforming Text:
4283 Functions.), just like any other reference. For example, using the
4284 `subst' function (*note Functions for String Substitution and Analysis:
4289 y = $(subst 1,2,$(x))
4293 eventually defines `a' as `Hello'. It is doubtful that anyone would
4294 ever want to write a nested reference as convoluted as this one, but it
4295 works: `$($($(z)))' expands to `$($(y))' which becomes `$($(subst
4296 1,2,$(x)))'. This gets the value `variable1' from `x' and changes it
4297 by substitution to `variable2', so that the entire string becomes
4298 `$(variable2)', a simple variable reference whose value is `Hello'.
4300 A computed variable name need not consist entirely of a single
4301 variable reference. It can contain several variable references, as
4302 well as some invariant text. For example,
4307 a_files := filea fileb
4308 1_files := file1 file2
4310 ifeq "$(use_a)" "yes"
4316 ifeq "$(use_dirs)" "yes"
4322 dirs := $($(a1)_$(df))
4324 will give `dirs' the same value as `a_dirs', `1_dirs', `a_files' or
4325 `1_files' depending on the settings of `use_a' and `use_dirs'.
4327 Computed variable names can also be used in substitution references:
4329 a_objects := a.o b.o c.o
4330 1_objects := 1.o 2.o 3.o
4332 sources := $($(a1)_objects:.o=.c)
4334 defines `sources' as either `a.c b.c c.c' or `1.c 2.c 3.c', depending
4335 on the value of `a1'.
4337 The only restriction on this sort of use of nested variable
4338 references is that they cannot specify part of the name of a function
4339 to be called. This is because the test for a recognized function name
4340 is done before the expansion of nested references. For example,
4350 foo := $($(func) $(bar))
4352 attempts to give `foo' the value of the variable `sort a d b g q c' or
4353 `strip a d b g q c', rather than giving `a d b g q c' as the argument
4354 to either the `sort' or the `strip' function. This restriction could
4355 be removed in the future if that change is shown to be a good idea.
4357 You can also use computed variable names in the left-hand side of a
4358 variable assignment, or in a `define' directive, as in:
4361 $(dir)_sources := $(wildcard $(dir)/*.c)
4363 lpr $($(dir)_sources)
4366 This example defines the variables `dir', `foo_sources', and
4369 Note that "nested variable references" are quite different from
4370 "recursively expanded variables" (*note The Two Flavors of Variables:
4371 Flavors.), though both are used together in complex ways when doing
4372 makefile programming.
4375 File: make.info, Node: Values, Next: Setting, Prev: Advanced, Up: Using Variables
4377 6.4 How Variables Get Their Values
4378 ==================================
4380 Variables can get values in several different ways:
4382 * You can specify an overriding value when you run `make'. *Note
4383 Overriding Variables: Overriding.
4385 * You can specify a value in the makefile, either with an assignment
4386 (*note Setting Variables: Setting.) or with a verbatim definition
4387 (*note Defining Variables Verbatim: Defining.).
4389 * Variables in the environment become `make' variables. *Note
4390 Variables from the Environment: Environment.
4392 * Several "automatic" variables are given new values for each rule.
4393 Each of these has a single conventional use. *Note Automatic
4396 * Several variables have constant initial values. *Note Variables
4397 Used by Implicit Rules: Implicit Variables.
4400 File: make.info, Node: Setting, Next: Appending, Prev: Values, Up: Using Variables
4402 6.5 Setting Variables
4403 =====================
4405 To set a variable from the makefile, write a line starting with the
4406 variable name followed by `=' or `:='. Whatever follows the `=' or
4407 `:=' on the line becomes the value. For example,
4409 objects = main.o foo.o bar.o utils.o
4411 defines a variable named `objects'. Whitespace around the variable
4412 name and immediately after the `=' is ignored.
4414 Variables defined with `=' are "recursively expanded" variables.
4415 Variables defined with `:=' are "simply expanded" variables; these
4416 definitions can contain variable references which will be expanded
4417 before the definition is made. *Note The Two Flavors of Variables:
4420 The variable name may contain function and variable references, which
4421 are expanded when the line is read to find the actual variable name to
4424 There is no limit on the length of the value of a variable except the
4425 amount of swapping space on the computer. When a variable definition is
4426 long, it is a good idea to break it into several lines by inserting
4427 backslash-newline at convenient places in the definition. This will not
4428 affect the functioning of `make', but it will make the makefile easier
4431 Most variable names are considered to have the empty string as a
4432 value if you have never set them. Several variables have built-in
4433 initial values that are not empty, but you can set them in the usual
4434 ways (*note Variables Used by Implicit Rules: Implicit Variables.).
4435 Several special variables are set automatically to a new value for each
4436 rule; these are called the "automatic" variables (*note Automatic
4439 If you'd like a variable to be set to a value only if it's not
4440 already set, then you can use the shorthand operator `?=' instead of
4441 `='. These two settings of the variable `FOO' are identical (*note The
4442 `origin' Function: Origin Function.):
4448 ifeq ($(origin FOO), undefined)
4453 File: make.info, Node: Appending, Next: Override Directive, Prev: Setting, Up: Using Variables
4455 6.6 Appending More Text to Variables
4456 ====================================
4458 Often it is useful to add more text to the value of a variable already
4459 defined. You do this with a line containing `+=', like this:
4461 objects += another.o
4463 This takes the value of the variable `objects', and adds the text
4464 `another.o' to it (preceded by a single space). Thus:
4466 objects = main.o foo.o bar.o utils.o
4467 objects += another.o
4469 sets `objects' to `main.o foo.o bar.o utils.o another.o'.
4471 Using `+=' is similar to:
4473 objects = main.o foo.o bar.o utils.o
4474 objects := $(objects) another.o
4476 but differs in ways that become important when you use more complex
4479 When the variable in question has not been defined before, `+=' acts
4480 just like normal `=': it defines a recursively-expanded variable.
4481 However, when there _is_ a previous definition, exactly what `+=' does
4482 depends on what flavor of variable you defined originally. *Note The
4483 Two Flavors of Variables: Flavors, for an explanation of the two
4484 flavors of variables.
4486 When you add to a variable's value with `+=', `make' acts
4487 essentially as if you had included the extra text in the initial
4488 definition of the variable. If you defined it first with `:=', making
4489 it a simply-expanded variable, `+=' adds to that simply-expanded
4490 definition, and expands the new text before appending it to the old
4491 value just as `:=' does (see *Note Setting Variables: Setting, for a
4492 full explanation of `:='). In fact,
4497 is exactly equivalent to:
4501 variable := $(variable) more
4503 On the other hand, when you use `+=' with a variable that you defined
4504 first to be recursively-expanded using plain `=', `make' does something
4505 a bit different. Recall that when you define a recursively-expanded
4506 variable, `make' does not expand the value you set for variable and
4507 function references immediately. Instead it stores the text verbatim,
4508 and saves these variable and function references to be expanded later,
4509 when you refer to the new variable (*note The Two Flavors of Variables:
4510 Flavors.). When you use `+=' on a recursively-expanded variable, it is
4511 this unexpanded text to which `make' appends the new text you specify.
4516 is roughly equivalent to:
4519 variable = $(temp) more
4521 except that of course it never defines a variable called `temp'. The
4522 importance of this comes when the variable's old value contains
4523 variable references. Take this common example:
4525 CFLAGS = $(includes) -O
4527 CFLAGS += -pg # enable profiling
4529 The first line defines the `CFLAGS' variable with a reference to another
4530 variable, `includes'. (`CFLAGS' is used by the rules for C
4531 compilation; *note Catalogue of Implicit Rules: Catalogue of Rules.)
4532 Using `=' for the definition makes `CFLAGS' a recursively-expanded
4533 variable, meaning `$(includes) -O' is _not_ expanded when `make'
4534 processes the definition of `CFLAGS'. Thus, `includes' need not be
4535 defined yet for its value to take effect. It only has to be defined
4536 before any reference to `CFLAGS'. If we tried to append to the value
4537 of `CFLAGS' without using `+=', we might do it like this:
4539 CFLAGS := $(CFLAGS) -pg # enable profiling
4541 This is pretty close, but not quite what we want. Using `:=' redefines
4542 `CFLAGS' as a simply-expanded variable; this means `make' expands the
4543 text `$(CFLAGS) -pg' before setting the variable. If `includes' is not
4544 yet defined, we get ` -O -pg', and a later definition of `includes'
4545 will have no effect. Conversely, by using `+=' we set `CFLAGS' to the
4546 _unexpanded_ value `$(includes) -O -pg'. Thus we preserve the
4547 reference to `includes', so if that variable gets defined at any later
4548 point, a reference like `$(CFLAGS)' still uses its value.
4551 File: make.info, Node: Override Directive, Next: Defining, Prev: Appending, Up: Using Variables
4553 6.7 The `override' Directive
4554 ============================
4556 If a variable has been set with a command argument (*note Overriding
4557 Variables: Overriding.), then ordinary assignments in the makefile are
4558 ignored. If you want to set the variable in the makefile even though
4559 it was set with a command argument, you can use an `override'
4560 directive, which is a line that looks like this:
4562 override VARIABLE = VALUE
4566 override VARIABLE := VALUE
4568 To append more text to a variable defined on the command line, use:
4570 override VARIABLE += MORE TEXT
4572 *Note Appending More Text to Variables: Appending.
4574 The `override' directive was not invented for escalation in the war
4575 between makefiles and command arguments. It was invented so you can
4576 alter and add to values that the user specifies with command arguments.
4578 For example, suppose you always want the `-g' switch when you run the
4579 C compiler, but you would like to allow the user to specify the other
4580 switches with a command argument just as usual. You could use this
4581 `override' directive:
4583 override CFLAGS += -g
4585 You can also use `override' directives with `define' directives.
4586 This is done as you might expect:
4592 *Note Defining Variables Verbatim: Defining.
4595 File: make.info, Node: Defining, Next: Environment, Prev: Override Directive, Up: Using Variables
4597 6.8 Defining Variables Verbatim
4598 ===============================
4600 Another way to set the value of a variable is to use the `define'
4601 directive. This directive has an unusual syntax which allows newline
4602 characters to be included in the value, which is convenient for defining
4603 both canned sequences of commands (*note Defining Canned Command
4604 Sequences: Sequences.), and also sections of makefile syntax to use
4605 with `eval' (*note Eval Function::).
4607 The `define' directive is followed on the same line by the name of
4608 the variable and nothing more. The value to give the variable appears
4609 on the following lines. The end of the value is marked by a line
4610 containing just the word `endef'. Aside from this difference in
4611 syntax, `define' works just like `=': it creates a recursively-expanded
4612 variable (*note The Two Flavors of Variables: Flavors.). The variable
4613 name may contain function and variable references, which are expanded
4614 when the directive is read to find the actual variable name to use.
4616 You may nest `define' directives: `make' will keep track of nested
4617 directives and report an error if they are not all properly closed with
4618 `endef'. Note that lines beginning with tab characters are considered
4619 part of a command script, so any `define' or `endef' strings appearing
4620 on such a line will not be considered `make' operators.
4627 The value in an ordinary assignment cannot contain a newline; but the
4628 newlines that separate the lines of the value in a `define' become part
4629 of the variable's value (except for the final newline which precedes
4630 the `endef' and is not considered part of the value).
4632 When used in a command script, the previous example is functionally
4635 two-lines = echo foo; echo $(bar)
4637 since two commands separated by semicolon behave much like two separate
4638 shell commands. However, note that using two separate lines means
4639 `make' will invoke the shell twice, running an independent subshell for
4640 each line. *Note Command Execution: Execution.
4642 If you want variable definitions made with `define' to take
4643 precedence over command-line variable definitions, you can use the
4644 `override' directive together with `define':
4646 override define two-lines
4651 *Note The `override' Directive: Override Directive.
4654 File: make.info, Node: Environment, Next: Target-specific, Prev: Defining, Up: Using Variables
4656 6.9 Variables from the Environment
4657 ==================================
4659 Variables in `make' can come from the environment in which `make' is
4660 run. Every environment variable that `make' sees when it starts up is
4661 transformed into a `make' variable with the same name and value.
4662 However, an explicit assignment in the makefile, or with a command
4663 argument, overrides the environment. (If the `-e' flag is specified,
4664 then values from the environment override assignments in the makefile.
4665 *Note Summary of Options: Options Summary. But this is not recommended
4668 Thus, by setting the variable `CFLAGS' in your environment, you can
4669 cause all C compilations in most makefiles to use the compiler switches
4670 you prefer. This is safe for variables with standard or conventional
4671 meanings because you know that no makefile will use them for other
4672 things. (Note this is not totally reliable; some makefiles set
4673 `CFLAGS' explicitly and therefore are not affected by the value in the
4676 When `make' runs a command script, variables defined in the makefile
4677 are placed into the environment of that command. This allows you to
4678 pass values to sub-`make' invocations (*note Recursive Use of `make':
4679 Recursion.). By default, only variables that came from the environment
4680 or the command line are passed to recursive invocations. You can use
4681 the `export' directive to pass other variables. *Note Communicating
4682 Variables to a Sub-`make': Variables/Recursion, for full details.
4684 Other use of variables from the environment is not recommended. It
4685 is not wise for makefiles to depend for their functioning on
4686 environment variables set up outside their control, since this would
4687 cause different users to get different results from the same makefile.
4688 This is against the whole purpose of most makefiles.
4690 Such problems would be especially likely with the variable `SHELL',
4691 which is normally present in the environment to specify the user's
4692 choice of interactive shell. It would be very undesirable for this
4693 choice to affect `make'; so, `make' handles the `SHELL' environment
4694 variable in a special way; see *Note Choosing the Shell::.
4697 File: make.info, Node: Target-specific, Next: Pattern-specific, Prev: Environment, Up: Using Variables
4699 6.10 Target-specific Variable Values
4700 ====================================
4702 Variable values in `make' are usually global; that is, they are the
4703 same regardless of where they are evaluated (unless they're reset, of
4704 course). One exception to that is automatic variables (*note Automatic
4707 The other exception is "target-specific variable values". This
4708 feature allows you to define different values for the same variable,
4709 based on the target that `make' is currently building. As with
4710 automatic variables, these values are only available within the context
4711 of a target's command script (and in other target-specific assignments).
4713 Set a target-specific variable value like this:
4715 TARGET ... : VARIABLE-ASSIGNMENT
4719 TARGET ... : override VARIABLE-ASSIGNMENT
4723 TARGET ... : export VARIABLE-ASSIGNMENT
4725 Multiple TARGET values create a target-specific variable value for
4726 each member of the target list individually.
4728 The VARIABLE-ASSIGNMENT can be any valid form of assignment;
4729 recursive (`='), static (`:='), appending (`+='), or conditional
4730 (`?='). All variables that appear within the VARIABLE-ASSIGNMENT are
4731 evaluated within the context of the target: thus, any
4732 previously-defined target-specific variable values will be in effect.
4733 Note that this variable is actually distinct from any "global" value:
4734 the two variables do not have to have the same flavor (recursive vs.
4737 Target-specific variables have the same priority as any other
4738 makefile variable. Variables provided on the command-line (and in the
4739 environment if the `-e' option is in force) will take precedence.
4740 Specifying the `override' directive will allow the target-specific
4741 variable value to be preferred.
4743 There is one more special feature of target-specific variables: when
4744 you define a target-specific variable that variable value is also in
4745 effect for all prerequisites of this target, and all their
4746 prerequisites, etc. (unless those prerequisites override that variable
4747 with their own target-specific variable value). So, for example, a
4748 statement like this:
4751 prog : prog.o foo.o bar.o
4753 will set `CFLAGS' to `-g' in the command script for `prog', but it will
4754 also set `CFLAGS' to `-g' in the command scripts that create `prog.o',
4755 `foo.o', and `bar.o', and any command scripts which create their
4758 Be aware that a given prerequisite will only be built once per
4759 invocation of make, at most. If the same file is a prerequisite of
4760 multiple targets, and each of those targets has a different value for
4761 the same target-specific variable, then the first target to be built
4762 will cause that prerequisite to be built and the prerequisite will
4763 inherit the target-specific value from the first target. It will
4764 ignore the target-specific values from any other targets.
4767 File: make.info, Node: Pattern-specific, Prev: Target-specific, Up: Using Variables
4769 6.11 Pattern-specific Variable Values
4770 =====================================
4772 In addition to target-specific variable values (*note Target-specific
4773 Variable Values: Target-specific.), GNU `make' supports
4774 pattern-specific variable values. In this form, the variable is
4775 defined for any target that matches the pattern specified. If a target
4776 matches more than one pattern, all the matching pattern-specific
4777 variables are interpreted in the order in which they were defined in
4778 the makefile, and collected together into one set. Variables defined
4779 in this way are searched after any target-specific variables defined
4780 explicitly for that target, and before target-specific variables
4781 defined for the parent target.
4783 Set a pattern-specific variable value like this:
4785 PATTERN ... : VARIABLE-ASSIGNMENT
4789 PATTERN ... : override VARIABLE-ASSIGNMENT
4791 where PATTERN is a %-pattern. As with target-specific variable values,
4792 multiple PATTERN values create a pattern-specific variable value for
4793 each pattern individually. The VARIABLE-ASSIGNMENT can be any valid
4794 form of assignment. Any command-line variable setting will take
4795 precedence, unless `override' is specified.
4801 will assign `CFLAGS' the value of `-O' for all targets matching the
4805 File: make.info, Node: Conditionals, Next: Functions, Prev: Using Variables, Up: Top
4807 7 Conditional Parts of Makefiles
4808 ********************************
4810 A "conditional" causes part of a makefile to be obeyed or ignored
4811 depending on the values of variables. Conditionals can compare the
4812 value of one variable to another, or the value of a variable to a
4813 constant string. Conditionals control what `make' actually "sees" in
4814 the makefile, so they _cannot_ be used to control shell commands at the
4819 * Conditional Example:: Example of a conditional
4820 * Conditional Syntax:: The syntax of conditionals.
4821 * Testing Flags:: Conditionals that test flags.
4824 File: make.info, Node: Conditional Example, Next: Conditional Syntax, Prev: Conditionals, Up: Conditionals
4826 7.1 Example of a Conditional
4827 ============================
4829 The following example of a conditional tells `make' to use one set of
4830 libraries if the `CC' variable is `gcc', and a different set of
4831 libraries otherwise. It works by controlling which of two command
4832 lines will be used as the command for a rule. The result is that
4833 `CC=gcc' as an argument to `make' changes not only which compiler is
4834 used but also which libraries are linked.
4836 libs_for_gcc = -lgnu
4841 $(CC) -o foo $(objects) $(libs_for_gcc)
4843 $(CC) -o foo $(objects) $(normal_libs)
4846 This conditional uses three directives: one `ifeq', one `else' and
4849 The `ifeq' directive begins the conditional, and specifies the
4850 condition. It contains two arguments, separated by a comma and
4851 surrounded by parentheses. Variable substitution is performed on both
4852 arguments and then they are compared. The lines of the makefile
4853 following the `ifeq' are obeyed if the two arguments match; otherwise
4856 The `else' directive causes the following lines to be obeyed if the
4857 previous conditional failed. In the example above, this means that the
4858 second alternative linking command is used whenever the first
4859 alternative is not used. It is optional to have an `else' in a
4862 The `endif' directive ends the conditional. Every conditional must
4863 end with an `endif'. Unconditional makefile text follows.
4865 As this example illustrates, conditionals work at the textual level:
4866 the lines of the conditional are treated as part of the makefile, or
4867 ignored, according to the condition. This is why the larger syntactic
4868 units of the makefile, such as rules, may cross the beginning or the
4869 end of the conditional.
4871 When the variable `CC' has the value `gcc', the above example has
4875 $(CC) -o foo $(objects) $(libs_for_gcc)
4877 When the variable `CC' has any other value, the effect is this:
4880 $(CC) -o foo $(objects) $(normal_libs)
4882 Equivalent results can be obtained in another way by
4883 conditionalizing a variable assignment and then using the variable
4886 libs_for_gcc = -lgnu
4890 libs=$(libs_for_gcc)
4896 $(CC) -o foo $(objects) $(libs)
4899 File: make.info, Node: Conditional Syntax, Next: Testing Flags, Prev: Conditional Example, Up: Conditionals
4901 7.2 Syntax of Conditionals
4902 ==========================
4904 The syntax of a simple conditional with no `else' is as follows:
4906 CONDITIONAL-DIRECTIVE
4910 The TEXT-IF-TRUE may be any lines of text, to be considered as part of
4911 the makefile if the condition is true. If the condition is false, no
4912 text is used instead.
4914 The syntax of a complex conditional is as follows:
4916 CONDITIONAL-DIRECTIVE
4924 CONDITIONAL-DIRECTIVE
4926 else CONDITIONAL-DIRECTIVE
4932 There can be as many "`else' CONDITIONAL-DIRECTIVE" clauses as
4933 necessary. Once a given condition is true, TEXT-IF-TRUE is used and no
4934 other clause is used; if no condition is true then TEXT-IF-FALSE is
4935 used. The TEXT-IF-TRUE and TEXT-IF-FALSE can be any number of lines of
4938 The syntax of the CONDITIONAL-DIRECTIVE is the same whether the
4939 conditional is simple or complex; after an `else' or not. There are
4940 four different directives that test different conditions. Here is a
4944 `ifeq 'ARG1' 'ARG2''
4945 `ifeq "ARG1" "ARG2"'
4946 `ifeq "ARG1" 'ARG2''
4947 `ifeq 'ARG1' "ARG2"'
4948 Expand all variable references in ARG1 and ARG2 and compare them.
4949 If they are identical, the TEXT-IF-TRUE is effective; otherwise,
4950 the TEXT-IF-FALSE, if any, is effective.
4952 Often you want to test if a variable has a non-empty value. When
4953 the value results from complex expansions of variables and
4954 functions, expansions you would consider empty may actually
4955 contain whitespace characters and thus are not seen as empty.
4956 However, you can use the `strip' function (*note Text Functions::)
4957 to avoid interpreting whitespace as a non-empty value. For
4960 ifeq ($(strip $(foo)),)
4964 will evaluate TEXT-IF-EMPTY even if the expansion of `$(foo)'
4965 contains whitespace characters.
4967 `ifneq (ARG1, ARG2)'
4968 `ifneq 'ARG1' 'ARG2''
4969 `ifneq "ARG1" "ARG2"'
4970 `ifneq "ARG1" 'ARG2''
4971 `ifneq 'ARG1' "ARG2"'
4972 Expand all variable references in ARG1 and ARG2 and compare them.
4973 If they are different, the TEXT-IF-TRUE is effective; otherwise,
4974 the TEXT-IF-FALSE, if any, is effective.
4976 `ifdef VARIABLE-NAME'
4977 The `ifdef' form takes the _name_ of a variable as its argument,
4978 not a reference to a variable. The value of that variable has a
4979 non-empty value, the TEXT-IF-TRUE is effective; otherwise, the
4980 TEXT-IF-FALSE, if any, is effective. Variables that have never
4981 been defined have an empty value. The text VARIABLE-NAME is
4982 expanded, so it could be a variable or function that expands to
4983 the name of a variable. For example:
4991 The variable reference `$(foo)' is expanded, yielding `bar', which
4992 is considered to be the name of a variable. The variable `bar' is
4993 not expanded, but its value is examined to determine if it is
4996 Note that `ifdef' only tests whether a variable has a value. It
4997 does not expand the variable to see if that value is nonempty.
4998 Consequently, tests using `ifdef' return true for all definitions
4999 except those like `foo ='. To test for an empty value, use
5000 `ifeq ($(foo),)'. For example,
5010 sets `frobozz' to `yes', while:
5019 sets `frobozz' to `no'.
5021 `ifndef VARIABLE-NAME'
5022 If the variable VARIABLE-NAME has an empty value, the TEXT-IF-TRUE
5023 is effective; otherwise, the TEXT-IF-FALSE, if any, is effective.
5024 The rules for expansion and testing of VARIABLE-NAME are identical
5025 to the `ifdef' directive.
5027 Extra spaces are allowed and ignored at the beginning of the
5028 conditional directive line, but a tab is not allowed. (If the line
5029 begins with a tab, it will be considered a command for a rule.) Aside
5030 from this, extra spaces or tabs may be inserted with no effect anywhere
5031 except within the directive name or within an argument. A comment
5032 starting with `#' may appear at the end of the line.
5034 The other two directives that play a part in a conditional are `else'
5035 and `endif'. Each of these directives is written as one word, with no
5036 arguments. Extra spaces are allowed and ignored at the beginning of the
5037 line, and spaces or tabs at the end. A comment starting with `#' may
5038 appear at the end of the line.
5040 Conditionals affect which lines of the makefile `make' uses. If the
5041 condition is true, `make' reads the lines of the TEXT-IF-TRUE as part
5042 of the makefile; if the condition is false, `make' ignores those lines
5043 completely. It follows that syntactic units of the makefile, such as
5044 rules, may safely be split across the beginning or the end of the
5047 `make' evaluates conditionals when it reads a makefile.
5048 Consequently, you cannot use automatic variables in the tests of
5049 conditionals because they are not defined until commands are run (*note
5050 Automatic Variables::).
5052 To prevent intolerable confusion, it is not permitted to start a
5053 conditional in one makefile and end it in another. However, you may
5054 write an `include' directive within a conditional, provided you do not
5055 attempt to terminate the conditional inside the included file.
5058 File: make.info, Node: Testing Flags, Prev: Conditional Syntax, Up: Conditionals
5060 7.3 Conditionals that Test Flags
5061 ================================
5063 You can write a conditional that tests `make' command flags such as
5064 `-t' by using the variable `MAKEFLAGS' together with the `findstring'
5065 function (*note Functions for String Substitution and Analysis: Text
5066 Functions.). This is useful when `touch' is not enough to make a file
5069 The `findstring' function determines whether one string appears as a
5070 substring of another. If you want to test for the `-t' flag, use `t'
5071 as the first string and the value of `MAKEFLAGS' as the other.
5073 For example, here is how to arrange to use `ranlib -t' to finish
5074 marking an archive file up to date:
5077 ifneq (,$(findstring t,$(MAKEFLAGS)))
5079 +ranlib -t archive.a
5084 The `+' prefix marks those command lines as "recursive" so that they
5085 will be executed despite use of the `-t' flag. *Note Recursive Use of
5089 File: make.info, Node: Functions, Next: Running, Prev: Conditionals, Up: Top
5091 8 Functions for Transforming Text
5092 *********************************
5094 "Functions" allow you to do text processing in the makefile to compute
5095 the files to operate on or the commands to use. You use a function in a
5096 "function call", where you give the name of the function and some text
5097 (the "arguments") for the function to operate on. The result of the
5098 function's processing is substituted into the makefile at the point of
5099 the call, just as a variable might be substituted.
5103 * Syntax of Functions:: How to write a function call.
5104 * Text Functions:: General-purpose text manipulation functions.
5105 * File Name Functions:: Functions for manipulating file names.
5106 * Conditional Functions:: Functions that implement conditions.
5107 * Foreach Function:: Repeat some text with controlled variation.
5108 * Call Function:: Expand a user-defined function.
5109 * Value Function:: Return the un-expanded value of a variable.
5110 * Eval Function:: Evaluate the arguments as makefile syntax.
5111 * Origin Function:: Find where a variable got its value.
5112 * Flavor Function:: Find out the flavor of a variable.
5113 * Shell Function:: Substitute the output of a shell command.
5114 * Make Control Functions:: Functions that control how make runs.
5117 File: make.info, Node: Syntax of Functions, Next: Text Functions, Prev: Functions, Up: Functions
5119 8.1 Function Call Syntax
5120 ========================
5122 A function call resembles a variable reference. It looks like this:
5124 $(FUNCTION ARGUMENTS)
5128 ${FUNCTION ARGUMENTS}
5130 Here FUNCTION is a function name; one of a short list of names that
5131 are part of `make'. You can also essentially create your own functions
5132 by using the `call' builtin function.
5134 The ARGUMENTS are the arguments of the function. They are separated
5135 from the function name by one or more spaces or tabs, and if there is
5136 more than one argument, then they are separated by commas. Such
5137 whitespace and commas are not part of an argument's value. The
5138 delimiters which you use to surround the function call, whether
5139 parentheses or braces, can appear in an argument only in matching pairs;
5140 the other kind of delimiters may appear singly. If the arguments
5141 themselves contain other function calls or variable references, it is
5142 wisest to use the same kind of delimiters for all the references; write
5143 `$(subst a,b,$(x))', not `$(subst a,b,${x})'. This is because it is
5144 clearer, and because only one type of delimiter is matched to find the
5145 end of the reference.
5147 The text written for each argument is processed by substitution of
5148 variables and function calls to produce the argument value, which is
5149 the text on which the function acts. The substitution is done in the
5150 order in which the arguments appear.
5152 Commas and unmatched parentheses or braces cannot appear in the text
5153 of an argument as written; leading spaces cannot appear in the text of
5154 the first argument as written. These characters can be put into the
5155 argument value by variable substitution. First define variables
5156 `comma' and `space' whose values are isolated comma and space
5157 characters, then substitute these variables where such characters are
5162 space:= $(empty) $(empty)
5164 bar:= $(subst $(space),$(comma),$(foo))
5165 # bar is now `a,b,c'.
5167 Here the `subst' function replaces each space with a comma, through the
5168 value of `foo', and substitutes the result.
5171 File: make.info, Node: Text Functions, Next: File Name Functions, Prev: Syntax of Functions, Up: Functions
5173 8.2 Functions for String Substitution and Analysis
5174 ==================================================
5176 Here are some functions that operate on strings:
5178 `$(subst FROM,TO,TEXT)'
5179 Performs a textual replacement on the text TEXT: each occurrence
5180 of FROM is replaced by TO. The result is substituted for the
5181 function call. For example,
5183 $(subst ee,EE,feet on the street)
5185 substitutes the string `fEEt on the strEEt'.
5187 `$(patsubst PATTERN,REPLACEMENT,TEXT)'
5188 Finds whitespace-separated words in TEXT that match PATTERN and
5189 replaces them with REPLACEMENT. Here PATTERN may contain a `%'
5190 which acts as a wildcard, matching any number of any characters
5191 within a word. If REPLACEMENT also contains a `%', the `%' is
5192 replaced by the text that matched the `%' in PATTERN. Only the
5193 first `%' in the PATTERN and REPLACEMENT is treated this way; any
5194 subsequent `%' is unchanged.
5196 `%' characters in `patsubst' function invocations can be quoted
5197 with preceding backslashes (`\'). Backslashes that would
5198 otherwise quote `%' characters can be quoted with more backslashes.
5199 Backslashes that quote `%' characters or other backslashes are
5200 removed from the pattern before it is compared file names or has a
5201 stem substituted into it. Backslashes that are not in danger of
5202 quoting `%' characters go unmolested. For example, the pattern
5203 `the\%weird\\%pattern\\' has `the%weird\' preceding the operative
5204 `%' character, and `pattern\\' following it. The final two
5205 backslashes are left alone because they cannot affect any `%'
5208 Whitespace between words is folded into single space characters;
5209 leading and trailing whitespace is discarded.
5213 $(patsubst %.c,%.o,x.c.c bar.c)
5215 produces the value `x.c.o bar.o'.
5217 Substitution references (*note Substitution References:
5218 Substitution Refs.) are a simpler way to get the effect of the
5219 `patsubst' function:
5221 $(VAR:PATTERN=REPLACEMENT)
5225 $(patsubst PATTERN,REPLACEMENT,$(VAR))
5227 The second shorthand simplifies one of the most common uses of
5228 `patsubst': replacing the suffix at the end of file names.
5230 $(VAR:SUFFIX=REPLACEMENT)
5234 $(patsubst %SUFFIX,%REPLACEMENT,$(VAR))
5236 For example, you might have a list of object files:
5238 objects = foo.o bar.o baz.o
5240 To get the list of corresponding source files, you could simply
5245 instead of using the general form:
5247 $(patsubst %.o,%.c,$(objects))
5250 Removes leading and trailing whitespace from STRING and replaces
5251 each internal sequence of one or more whitespace characters with a
5252 single space. Thus, `$(strip a b c )' results in `a b c'.
5254 The function `strip' can be very useful when used in conjunction
5255 with conditionals. When comparing something with the empty string
5256 `' using `ifeq' or `ifneq', you usually want a string of just
5257 whitespace to match the empty string (*note Conditionals::).
5259 Thus, the following may fail to have the desired results:
5262 ifneq "$(needs_made)" ""
5265 all:;@echo 'Nothing to make!'
5268 Replacing the variable reference `$(needs_made)' with the function
5269 call `$(strip $(needs_made))' in the `ifneq' directive would make
5272 `$(findstring FIND,IN)'
5273 Searches IN for an occurrence of FIND. If it occurs, the value is
5274 FIND; otherwise, the value is empty. You can use this function in
5275 a conditional to test for the presence of a specific substring in
5276 a given string. Thus, the two examples,
5278 $(findstring a,a b c)
5281 produce the values `a' and `' (the empty string), respectively.
5282 *Note Testing Flags::, for a practical application of `findstring'.
5284 `$(filter PATTERN...,TEXT)'
5285 Returns all whitespace-separated words in TEXT that _do_ match any
5286 of the PATTERN words, removing any words that _do not_ match. The
5287 patterns are written using `%', just like the patterns used in the
5288 `patsubst' function above.
5290 The `filter' function can be used to separate out different types
5291 of strings (such as file names) in a variable. For example:
5293 sources := foo.c bar.c baz.s ugh.h
5295 cc $(filter %.c %.s,$(sources)) -o foo
5297 says that `foo' depends of `foo.c', `bar.c', `baz.s' and `ugh.h'
5298 but only `foo.c', `bar.c' and `baz.s' should be specified in the
5299 command to the compiler.
5301 `$(filter-out PATTERN...,TEXT)'
5302 Returns all whitespace-separated words in TEXT that _do not_ match
5303 any of the PATTERN words, removing the words that _do_ match one
5304 or more. This is the exact opposite of the `filter' function.
5308 objects=main1.o foo.o main2.o bar.o
5309 mains=main1.o main2.o
5311 the following generates a list which contains all the object files
5314 $(filter-out $(mains),$(objects))
5317 Sorts the words of LIST in lexical order, removing duplicate
5318 words. The output is a list of words separated by single spaces.
5321 $(sort foo bar lose)
5323 returns the value `bar foo lose'.
5325 Incidentally, since `sort' removes duplicate words, you can use it
5326 for this purpose even if you don't care about the sort order.
5329 Returns the Nth word of TEXT. The legitimate values of N start
5330 from 1. If N is bigger than the number of words in TEXT, the
5331 value is empty. For example,
5333 $(word 2, foo bar baz)
5337 `$(wordlist S,E,TEXT)'
5338 Returns the list of words in TEXT starting with word S and ending
5339 with word E (inclusive). The legitimate values of S start from 1;
5340 E may start from 0. If S is bigger than the number of words in
5341 TEXT, the value is empty. If E is bigger than the number of words
5342 in TEXT, words up to the end of TEXT are returned. If S is
5343 greater than E, nothing is returned. For example,
5345 $(wordlist 2, 3, foo bar baz)
5350 Returns the number of words in TEXT. Thus, the last word of TEXT
5351 is `$(word $(words TEXT),TEXT)'.
5353 `$(firstword NAMES...)'
5354 The argument NAMES is regarded as a series of names, separated by
5355 whitespace. The value is the first name in the series. The rest
5356 of the names are ignored.
5360 $(firstword foo bar)
5362 produces the result `foo'. Although `$(firstword TEXT)' is the
5363 same as `$(word 1,TEXT)', the `firstword' function is retained for
5366 `$(lastword NAMES...)'
5367 The argument NAMES is regarded as a series of names, separated by
5368 whitespace. The value is the last name in the series.
5374 produces the result `bar'. Although `$(lastword TEXT)' is the
5375 same as `$(word $(words TEXT),TEXT)', the `lastword' function was
5376 added for its simplicity and better performance.
5378 Here is a realistic example of the use of `subst' and `patsubst'.
5379 Suppose that a makefile uses the `VPATH' variable to specify a list of
5380 directories that `make' should search for prerequisite files (*note
5381 `VPATH' Search Path for All Prerequisites: General Search.). This
5382 example shows how to tell the C compiler to search for header files in
5383 the same list of directories.
5385 The value of `VPATH' is a list of directories separated by colons,
5386 such as `src:../headers'. First, the `subst' function is used to
5387 change the colons to spaces:
5389 $(subst :, ,$(VPATH))
5391 This produces `src ../headers'. Then `patsubst' is used to turn each
5392 directory name into a `-I' flag. These can be added to the value of
5393 the variable `CFLAGS', which is passed automatically to the C compiler,
5396 override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH)))
5398 The effect is to append the text `-Isrc -I../headers' to the previously
5399 given value of `CFLAGS'. The `override' directive is used so that the
5400 new value is assigned even if the previous value of `CFLAGS' was
5401 specified with a command argument (*note The `override' Directive:
5402 Override Directive.).
5405 File: make.info, Node: File Name Functions, Next: Conditional Functions, Prev: Text Functions, Up: Functions
5407 8.3 Functions for File Names
5408 ============================
5410 Several of the built-in expansion functions relate specifically to
5411 taking apart file names or lists of file names.
5413 Each of the following functions performs a specific transformation
5414 on a file name. The argument of the function is regarded as a series
5415 of file names, separated by whitespace. (Leading and trailing
5416 whitespace is ignored.) Each file name in the series is transformed in
5417 the same way and the results are concatenated with single spaces
5421 Extracts the directory-part of each file name in NAMES. The
5422 directory-part of the file name is everything up through (and
5423 including) the last slash in it. If the file name contains no
5424 slash, the directory part is the string `./'. For example,
5426 $(dir src/foo.c hacks)
5428 produces the result `src/ ./'.
5430 `$(notdir NAMES...)'
5431 Extracts all but the directory-part of each file name in NAMES.
5432 If the file name contains no slash, it is left unchanged.
5433 Otherwise, everything through the last slash is removed from it.
5435 A file name that ends with a slash becomes an empty string. This
5436 is unfortunate, because it means that the result does not always
5437 have the same number of whitespace-separated file names as the
5438 argument had; but we do not see any other valid alternative.
5442 $(notdir src/foo.c hacks)
5444 produces the result `foo.c hacks'.
5446 `$(suffix NAMES...)'
5447 Extracts the suffix of each file name in NAMES. If the file name
5448 contains a period, the suffix is everything starting with the last
5449 period. Otherwise, the suffix is the empty string. This
5450 frequently means that the result will be empty when NAMES is not,
5451 and if NAMES contains multiple file names, the result may contain
5456 $(suffix src/foo.c src-1.0/bar.c hacks)
5458 produces the result `.c .c'.
5460 `$(basename NAMES...)'
5461 Extracts all but the suffix of each file name in NAMES. If the
5462 file name contains a period, the basename is everything starting
5463 up to (and not including) the last period. Periods in the
5464 directory part are ignored. If there is no period, the basename
5465 is the entire file name. For example,
5467 $(basename src/foo.c src-1.0/bar hacks)
5469 produces the result `src/foo src-1.0/bar hacks'.
5471 `$(addsuffix SUFFIX,NAMES...)'
5472 The argument NAMES is regarded as a series of names, separated by
5473 whitespace; SUFFIX is used as a unit. The value of SUFFIX is
5474 appended to the end of each individual name and the resulting
5475 larger names are concatenated with single spaces between them.
5478 $(addsuffix .c,foo bar)
5480 produces the result `foo.c bar.c'.
5482 `$(addprefix PREFIX,NAMES...)'
5483 The argument NAMES is regarded as a series of names, separated by
5484 whitespace; PREFIX is used as a unit. The value of PREFIX is
5485 prepended to the front of each individual name and the resulting
5486 larger names are concatenated with single spaces between them.
5489 $(addprefix src/,foo bar)
5491 produces the result `src/foo src/bar'.
5493 `$(join LIST1,LIST2)'
5494 Concatenates the two arguments word by word: the two first words
5495 (one from each argument) concatenated form the first word of the
5496 result, the two second words form the second word of the result,
5497 and so on. So the Nth word of the result comes from the Nth word
5498 of each argument. If one argument has more words that the other,
5499 the extra words are copied unchanged into the result.
5501 For example, `$(join a b,.c .o)' produces `a.c b.o'.
5503 Whitespace between the words in the lists is not preserved; it is
5504 replaced with a single space.
5506 This function can merge the results of the `dir' and `notdir'
5507 functions, to produce the original list of files which was given
5508 to those two functions.
5510 `$(wildcard PATTERN)'
5511 The argument PATTERN is a file name pattern, typically containing
5512 wildcard characters (as in shell file name patterns). The result
5513 of `wildcard' is a space-separated list of the names of existing
5514 files that match the pattern. *Note Using Wildcard Characters in
5515 File Names: Wildcards.
5517 `$(realpath NAMES...)'
5518 For each file name in NAMES return the canonical absolute name. A
5519 canonical name does not contain any `.' or `..' components, nor
5520 any repeated path separators (`/') or symlinks. In case of a
5521 failure the empty string is returned. Consult the `realpath(3)'
5522 documentation for a list of possible failure causes.
5524 `$(abspath NAMES...)'
5525 For each file name in NAMES return an absolute name that does not
5526 contain any `.' or `..' components, nor any repeated path
5527 separators (`/'). Note that, in contrast to `realpath' function,
5528 `abspath' does not resolve symlinks and does not require the file
5529 names to refer to an existing file or directory. Use the
5530 `wildcard' function to test for existence.
5533 File: make.info, Node: Conditional Functions, Next: Foreach Function, Prev: File Name Functions, Up: Functions
5535 8.4 Functions for Conditionals
5536 ==============================
5538 There are three functions that provide conditional expansion. A key
5539 aspect of these functions is that not all of the arguments are expanded
5540 initially. Only those arguments which need to be expanded, will be
5543 `$(if CONDITION,THEN-PART[,ELSE-PART])'
5544 The `if' function provides support for conditional expansion in a
5545 functional context (as opposed to the GNU `make' makefile
5546 conditionals such as `ifeq' (*note Syntax of Conditionals:
5547 Conditional Syntax.).
5549 The first argument, CONDITION, first has all preceding and
5550 trailing whitespace stripped, then is expanded. If it expands to
5551 any non-empty string, then the condition is considered to be true.
5552 If it expands to an empty string, the condition is considered to
5555 If the condition is true then the second argument, THEN-PART, is
5556 evaluated and this is used as the result of the evaluation of the
5557 entire `if' function.
5559 If the condition is false then the third argument, ELSE-PART, is
5560 evaluated and this is the result of the `if' function. If there is
5561 no third argument, the `if' function evaluates to nothing (the
5564 Note that only one of the THEN-PART or the ELSE-PART will be
5565 evaluated, never both. Thus, either can contain side-effects
5566 (such as `shell' function calls, etc.)
5568 `$(or CONDITION1[,CONDITION2[,CONDITION3...]])'
5569 The `or' function provides a "short-circuiting" OR operation.
5570 Each argument is expanded, in order. If an argument expands to a
5571 non-empty string the processing stops and the result of the
5572 expansion is that string. If, after all arguments are expanded,
5573 all of them are false (empty), then the result of the expansion is
5576 `$(and CONDITION1[,CONDITION2[,CONDITION3...]])'
5577 The `and' function provides a "short-circuiting" AND operation.
5578 Each argument is expanded, in order. If an argument expands to an
5579 empty string the processing stops and the result of the expansion
5580 is the empty string. If all arguments expand to a non-empty
5581 string then the result of the expansion is the expansion of the
5586 File: make.info, Node: Foreach Function, Next: Call Function, Prev: Conditional Functions, Up: Functions
5588 8.5 The `foreach' Function
5589 ==========================
5591 The `foreach' function is very different from other functions. It
5592 causes one piece of text to be used repeatedly, each time with a
5593 different substitution performed on it. It resembles the `for' command
5594 in the shell `sh' and the `foreach' command in the C-shell `csh'.
5596 The syntax of the `foreach' function is:
5598 $(foreach VAR,LIST,TEXT)
5600 The first two arguments, VAR and LIST, are expanded before anything
5601 else is done; note that the last argument, TEXT, is *not* expanded at
5602 the same time. Then for each word of the expanded value of LIST, the
5603 variable named by the expanded value of VAR is set to that word, and
5604 TEXT is expanded. Presumably TEXT contains references to that
5605 variable, so its expansion will be different each time.
5607 The result is that TEXT is expanded as many times as there are
5608 whitespace-separated words in LIST. The multiple expansions of TEXT
5609 are concatenated, with spaces between them, to make the result of
5612 This simple example sets the variable `files' to the list of all
5613 files in the directories in the list `dirs':
5616 files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
5618 Here TEXT is `$(wildcard $(dir)/*)'. The first repetition finds the
5619 value `a' for `dir', so it produces the same result as `$(wildcard
5620 a/*)'; the second repetition produces the result of `$(wildcard b/*)';
5621 and the third, that of `$(wildcard c/*)'.
5623 This example has the same result (except for setting `dirs') as the
5626 files := $(wildcard a/* b/* c/* d/*)
5628 When TEXT is complicated, you can improve readability by giving it a
5629 name, with an additional variable:
5631 find_files = $(wildcard $(dir)/*)
5633 files := $(foreach dir,$(dirs),$(find_files))
5635 Here we use the variable `find_files' this way. We use plain `=' to
5636 define a recursively-expanding variable, so that its value contains an
5637 actual function call to be reexpanded under the control of `foreach'; a
5638 simply-expanded variable would not do, since `wildcard' would be called
5639 only once at the time of defining `find_files'.
5641 The `foreach' function has no permanent effect on the variable VAR;
5642 its value and flavor after the `foreach' function call are the same as
5643 they were beforehand. The other values which are taken from LIST are
5644 in effect only temporarily, during the execution of `foreach'. The
5645 variable VAR is a simply-expanded variable during the execution of
5646 `foreach'. If VAR was undefined before the `foreach' function call, it
5647 is undefined after the call. *Note The Two Flavors of Variables:
5650 You must take care when using complex variable expressions that
5651 result in variable names because many strange things are valid variable
5652 names, but are probably not what you intended. For example,
5654 files := $(foreach Esta escrito en espanol!,b c ch,$(find_files))
5656 might be useful if the value of `find_files' references the variable
5657 whose name is `Esta escrito en espanol!' (es un nombre bastante largo,
5658 no?), but it is more likely to be a mistake.
5661 File: make.info, Node: Call Function, Next: Value Function, Prev: Foreach Function, Up: Functions
5663 8.6 The `call' Function
5664 =======================
5666 The `call' function is unique in that it can be used to create new
5667 parameterized functions. You can write a complex expression as the
5668 value of a variable, then use `call' to expand it with different values.
5670 The syntax of the `call' function is:
5672 $(call VARIABLE,PARAM,PARAM,...)
5674 When `make' expands this function, it assigns each PARAM to
5675 temporary variables `$(1)', `$(2)', etc. The variable `$(0)' will
5676 contain VARIABLE. There is no maximum number of parameter arguments.
5677 There is no minimum, either, but it doesn't make sense to use `call'
5680 Then VARIABLE is expanded as a `make' variable in the context of
5681 these temporary assignments. Thus, any reference to `$(1)' in the
5682 value of VARIABLE will resolve to the first PARAM in the invocation of
5685 Note that VARIABLE is the _name_ of a variable, not a _reference_ to
5686 that variable. Therefore you would not normally use a `$' or
5687 parentheses when writing it. (You can, however, use a variable
5688 reference in the name if you want the name not to be a constant.)
5690 If VARIABLE is the name of a builtin function, the builtin function
5691 is always invoked (even if a `make' variable by that name also exists).
5693 The `call' function expands the PARAM arguments before assigning
5694 them to temporary variables. This means that VARIABLE values
5695 containing references to builtin functions that have special expansion
5696 rules, like `foreach' or `if', may not work as you expect.
5698 Some examples may make this clearer.
5700 This macro simply reverses its arguments:
5704 foo = $(call reverse,a,b)
5706 Here FOO will contain `b a'.
5708 This one is slightly more interesting: it defines a macro to search
5709 for the first instance of a program in `PATH':
5711 pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
5713 LS := $(call pathsearch,ls)
5715 Now the variable LS contains `/bin/ls' or similar.
5717 The `call' function can be nested. Each recursive invocation gets
5718 its own local values for `$(1)', etc. that mask the values of
5719 higher-level `call'. For example, here is an implementation of a "map"
5722 map = $(foreach a,$(2),$(call $(1),$(a)))
5724 Now you can MAP a function that normally takes only one argument,
5725 such as `origin', to multiple values in one step:
5727 o = $(call map,origin,o map MAKE)
5729 and end up with O containing something like `file file default'.
5731 A final caution: be careful when adding whitespace to the arguments
5732 to `call'. As with other functions, any whitespace contained in the
5733 second and subsequent arguments is kept; this can cause strange
5734 effects. It's generally safest to remove all extraneous whitespace when
5735 providing parameters to `call'.
5738 File: make.info, Node: Value Function, Next: Eval Function, Prev: Call Function, Up: Functions
5740 8.7 The `value' Function
5741 ========================
5743 The `value' function provides a way for you to use the value of a
5744 variable _without_ having it expanded. Please note that this does not
5745 undo expansions which have already occurred; for example if you create
5746 a simply expanded variable its value is expanded during the definition;
5747 in that case the `value' function will return the same result as using
5748 the variable directly.
5750 The syntax of the `value' function is:
5754 Note that VARIABLE is the _name_ of a variable; not a _reference_ to
5755 that variable. Therefore you would not normally use a `$' or
5756 parentheses when writing it. (You can, however, use a variable
5757 reference in the name if you want the name not to be a constant.)
5759 The result of this function is a string containing the value of
5760 VARIABLE, without any expansion occurring. For example, in this
5769 The first output line would be `ATH', since the "$P" would be expanded
5770 as a `make' variable, while the second output line would be the current
5771 value of your `$PATH' environment variable, since the `value' function
5772 avoided the expansion.
5774 The `value' function is most often used in conjunction with the
5775 `eval' function (*note Eval Function::).
5778 File: make.info, Node: Eval Function, Next: Origin Function, Prev: Value Function, Up: Functions
5780 8.8 The `eval' Function
5781 =======================
5783 The `eval' function is very special: it allows you to define new
5784 makefile constructs that are not constant; which are the result of
5785 evaluating other variables and functions. The argument to the `eval'
5786 function is expanded, then the results of that expansion are parsed as
5787 makefile syntax. The expanded results can define new `make' variables,
5788 targets, implicit or explicit rules, etc.
5790 The result of the `eval' function is always the empty string; thus,
5791 it can be placed virtually anywhere in a makefile without causing
5794 It's important to realize that the `eval' argument is expanded
5795 _twice_; first by the `eval' function, then the results of that
5796 expansion are expanded again when they are parsed as makefile syntax.
5797 This means you may need to provide extra levels of escaping for "$"
5798 characters when using `eval'. The `value' function (*note Value
5799 Function::) can sometimes be useful in these situations, to circumvent
5800 unwanted expansions.
5802 Here is an example of how `eval' can be used; this example combines
5803 a number of concepts and other functions. Although it might seem
5804 overly complex to use `eval' in this example, rather than just writing
5805 out the rules, consider two things: first, the template definition (in
5806 `PROGRAM_template') could need to be much more complex than it is here;
5807 and second, you might put the complex, "generic" part of this example
5808 into another makefile, then include it in all the individual makefiles.
5809 Now your individual makefiles are quite straightforward.
5811 PROGRAMS = server client
5813 server_OBJS = server.o server_priv.o server_access.o
5814 server_LIBS = priv protocol
5816 client_OBJS = client.o client_api.o client_mem.o
5817 client_LIBS = protocol
5819 # Everything after this is generic
5824 define PROGRAM_template
5825 $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%)
5826 ALL_OBJS += $$($(1)_OBJS)
5829 $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
5832 $(LINK.o) $^ $(LDLIBS) -o $@
5835 rm -f $(ALL_OBJS) $(PROGRAMS)
5838 File: make.info, Node: Origin Function, Next: Flavor Function, Prev: Eval Function, Up: Functions
5840 8.9 The `origin' Function
5841 =========================
5843 The `origin' function is unlike most other functions in that it does
5844 not operate on the values of variables; it tells you something _about_
5845 a variable. Specifically, it tells you where it came from.
5847 The syntax of the `origin' function is:
5851 Note that VARIABLE is the _name_ of a variable to inquire about; not
5852 a _reference_ to that variable. Therefore you would not normally use a
5853 `$' or parentheses when writing it. (You can, however, use a variable
5854 reference in the name if you want the name not to be a constant.)
5856 The result of this function is a string telling you how the variable
5857 VARIABLE was defined:
5860 if VARIABLE was never defined.
5863 if VARIABLE has a default definition, as is usual with `CC' and so
5864 on. *Note Variables Used by Implicit Rules: Implicit Variables.
5865 Note that if you have redefined a default variable, the `origin'
5866 function will return the origin of the later definition.
5869 if VARIABLE was defined as an environment variable and the `-e'
5870 option is _not_ turned on (*note Summary of Options: Options
5873 `environment override'
5874 if VARIABLE was defined as an environment variable and the `-e'
5875 option _is_ turned on (*note Summary of Options: Options Summary.).
5878 if VARIABLE was defined in a makefile.
5881 if VARIABLE was defined on the command line.
5884 if VARIABLE was defined with an `override' directive in a makefile
5885 (*note The `override' Directive: Override Directive.).
5888 if VARIABLE is an automatic variable defined for the execution of
5889 the commands for each rule (*note Automatic Variables::).
5891 This information is primarily useful (other than for your curiosity)
5892 to determine if you want to believe the value of a variable. For
5893 example, suppose you have a makefile `foo' that includes another
5894 makefile `bar'. You want a variable `bletch' to be defined in `bar' if
5895 you run the command `make -f bar', even if the environment contains a
5896 definition of `bletch'. However, if `foo' defined `bletch' before
5897 including `bar', you do not want to override that definition. This
5898 could be done by using an `override' directive in `foo', giving that
5899 definition precedence over the later definition in `bar';
5900 unfortunately, the `override' directive would also override any command
5901 line definitions. So, `bar' could include:
5904 ifeq "$(origin bletch)" "environment"
5905 bletch = barf, gag, etc.
5909 If `bletch' has been defined from the environment, this will redefine
5912 If you want to override a previous definition of `bletch' if it came
5913 from the environment, even under `-e', you could instead write:
5915 ifneq "$(findstring environment,$(origin bletch))" ""
5916 bletch = barf, gag, etc.
5919 Here the redefinition takes place if `$(origin bletch)' returns
5920 either `environment' or `environment override'. *Note Functions for
5921 String Substitution and Analysis: Text Functions.
5924 File: make.info, Node: Flavor Function, Next: Shell Function, Prev: Origin Function, Up: Functions
5926 8.10 The `flavor' Function
5927 ==========================
5929 The `flavor' function is unlike most other functions (and like `origin'
5930 function) in that it does not operate on the values of variables; it
5931 tells you something _about_ a variable. Specifically, it tells you the
5932 flavor of a variable (*note The Two Flavors of Variables: Flavors.).
5934 The syntax of the `flavor' function is:
5938 Note that VARIABLE is the _name_ of a variable to inquire about; not
5939 a _reference_ to that variable. Therefore you would not normally use a
5940 `$' or parentheses when writing it. (You can, however, use a variable
5941 reference in the name if you want the name not to be a constant.)
5943 The result of this function is a string that identifies the flavor
5944 of the variable VARIABLE:
5947 if VARIABLE was never defined.
5950 if VARIABLE is a recursively expanded variable.
5953 if VARIABLE is a simply expanded variable.
5957 File: make.info, Node: Shell Function, Next: Make Control Functions, Prev: Flavor Function, Up: Functions
5959 8.11 The `shell' Function
5960 =========================
5962 The `shell' function is unlike any other function other than the
5963 `wildcard' function (*note The Function `wildcard': Wildcard Function.)
5964 in that it communicates with the world outside of `make'.
5966 The `shell' function performs the same function that backquotes
5967 (``') perform in most shells: it does "command expansion". This means
5968 that it takes as an argument a shell command and evaluates to the
5969 output of the command. The only processing `make' does on the result
5970 is to convert each newline (or carriage-return / newline pair) to a
5971 single space. If there is a trailing (carriage-return and) newline it
5972 will simply be removed.
5974 The commands run by calls to the `shell' function are run when the
5975 function calls are expanded (*note How `make' Reads a Makefile: Reading
5976 Makefiles.). Because this function involves spawning a new shell, you
5977 should carefully consider the performance implications of using the
5978 `shell' function within recursively expanded variables vs. simply
5979 expanded variables (*note The Two Flavors of Variables: Flavors.).
5981 Here are some examples of the use of the `shell' function:
5983 contents := $(shell cat foo)
5985 sets `contents' to the contents of the file `foo', with a space (rather
5986 than a newline) separating each line.
5988 files := $(shell echo *.c)
5990 sets `files' to the expansion of `*.c'. Unless `make' is using a very
5991 strange shell, this has the same result as `$(wildcard *.c)' (as long
5992 as at least one `.c' file exists).
5995 File: make.info, Node: Make Control Functions, Prev: Shell Function, Up: Functions
5997 8.12 Functions That Control Make
5998 ================================
6000 These functions control the way make runs. Generally, they are used to
6001 provide information to the user of the makefile or to cause make to stop
6002 if some sort of environmental error is detected.
6005 Generates a fatal error where the message is TEXT. Note that the
6006 error is generated whenever this function is evaluated. So, if
6007 you put it inside a command script or on the right side of a
6008 recursive variable assignment, it won't be evaluated until later.
6009 The TEXT will be expanded before the error is generated.
6014 $(error error is $(ERROR1))
6017 will generate a fatal error during the read of the makefile if the
6018 `make' variable `ERROR1' is defined. Or,
6020 ERR = $(error found an error!)
6025 will generate a fatal error while `make' is running, if the `err'
6028 `$(warning TEXT...)'
6029 This function works similarly to the `error' function, above,
6030 except that `make' doesn't exit. Instead, TEXT is expanded and
6031 the resulting message is displayed, but processing of the makefile
6034 The result of the expansion of this function is the empty string.
6037 This function does nothing more than print its (expanded)
6038 argument(s) to standard output. No makefile name or line number
6039 is added. The result of the expansion of this function is the
6043 File: make.info, Node: Running, Next: Implicit Rules, Prev: Functions, Up: Top
6048 A makefile that says how to recompile a program can be used in more
6049 than one way. The simplest use is to recompile every file that is out
6050 of date. Usually, makefiles are written so that if you run `make' with
6051 no arguments, it does just that.
6053 But you might want to update only some of the files; you might want
6054 to use a different compiler or different compiler options; you might
6055 want just to find out which files are out of date without changing them.
6057 By giving arguments when you run `make', you can do any of these
6058 things and many others.
6060 The exit status of `make' is always one of three values:
6062 The exit status is zero if `make' is successful.
6065 The exit status is two if `make' encounters any errors. It will
6066 print messages describing the particular errors.
6069 The exit status is one if you use the `-q' flag and `make'
6070 determines that some target is not already up to date. *Note
6071 Instead of Executing the Commands: Instead of Execution.
6075 * Makefile Arguments:: How to specify which makefile to use.
6076 * Goals:: How to use goal arguments to specify which
6077 parts of the makefile to use.
6078 * Instead of Execution:: How to use mode flags to specify what
6079 kind of thing to do with the commands
6080 in the makefile other than simply
6082 * Avoiding Compilation:: How to avoid recompiling certain files.
6083 * Overriding:: How to override a variable to specify
6084 an alternate compiler and other things.
6085 * Testing:: How to proceed past some errors, to
6087 * Options Summary:: Summary of Options
6090 File: make.info, Node: Makefile Arguments, Next: Goals, Prev: Running, Up: Running
6092 9.1 Arguments to Specify the Makefile
6093 =====================================
6095 The way to specify the name of the makefile is with the `-f' or
6096 `--file' option (`--makefile' also works). For example, `-f altmake'
6097 says to use the file `altmake' as the makefile.
6099 If you use the `-f' flag several times and follow each `-f' with an
6100 argument, all the specified files are used jointly as makefiles.
6102 If you do not use the `-f' or `--file' flag, the default is to try
6103 `GNUmakefile', `makefile', and `Makefile', in that order, and use the
6104 first of these three which exists or can be made (*note Writing
6105 Makefiles: Makefiles.).
6108 File: make.info, Node: Goals, Next: Instead of Execution, Prev: Makefile Arguments, Up: Running
6110 9.2 Arguments to Specify the Goals
6111 ==================================
6113 The "goals" are the targets that `make' should strive ultimately to
6114 update. Other targets are updated as well if they appear as
6115 prerequisites of goals, or prerequisites of prerequisites of goals, etc.
6117 By default, the goal is the first target in the makefile (not
6118 counting targets that start with a period). Therefore, makefiles are
6119 usually written so that the first target is for compiling the entire
6120 program or programs they describe. If the first rule in the makefile
6121 has several targets, only the first target in the rule becomes the
6122 default goal, not the whole list. You can manage the selection of the
6123 default goal from within your makefile using the `.DEFAULT_GOAL'
6124 variable (*note Other Special Variables: Special Variables.).
6126 You can also specify a different goal or goals with command-line
6127 arguments to `make'. Use the name of the goal as an argument. If you
6128 specify several goals, `make' processes each of them in turn, in the
6129 order you name them.
6131 Any target in the makefile may be specified as a goal (unless it
6132 starts with `-' or contains an `=', in which case it will be parsed as
6133 a switch or variable definition, respectively). Even targets not in
6134 the makefile may be specified, if `make' can find implicit rules that
6135 say how to make them.
6137 `Make' will set the special variable `MAKECMDGOALS' to the list of
6138 goals you specified on the command line. If no goals were given on the
6139 command line, this variable is empty. Note that this variable should
6140 be used only in special circumstances.
6142 An example of appropriate use is to avoid including `.d' files
6143 during `clean' rules (*note Automatic Prerequisites::), so `make' won't
6144 create them only to immediately remove them again:
6146 sources = foo.c bar.c
6148 ifneq ($(MAKECMDGOALS),clean)
6149 include $(sources:.c=.d)
6152 One use of specifying a goal is if you want to compile only a part of
6153 the program, or only one of several programs. Specify as a goal each
6154 file that you wish to remake. For example, consider a directory
6155 containing several programs, with a makefile that starts like this:
6158 all: size nm ld ar as
6160 If you are working on the program `size', you might want to say
6161 `make size' so that only the files of that program are recompiled.
6163 Another use of specifying a goal is to make files that are not
6164 normally made. For example, there may be a file of debugging output,
6165 or a version of the program that is compiled specially for testing,
6166 which has a rule in the makefile but is not a prerequisite of the
6169 Another use of specifying a goal is to run the commands associated
6170 with a phony target (*note Phony Targets::) or empty target (*note
6171 Empty Target Files to Record Events: Empty Targets.). Many makefiles
6172 contain a phony target named `clean' which deletes everything except
6173 source files. Naturally, this is done only if you request it
6174 explicitly with `make clean'. Following is a list of typical phony and
6175 empty target names. *Note Standard Targets::, for a detailed list of
6176 all the standard target names which GNU software packages use.
6179 Make all the top-level targets the makefile knows about.
6182 Delete all files that are normally created by running `make'.
6185 Like `clean', but may refrain from deleting a few files that people
6186 normally don't want to recompile. For example, the `mostlyclean'
6187 target for GCC does not delete `libgcc.a', because recompiling it
6188 is rarely necessary and takes a lot of time.
6193 Any of these targets might be defined to delete _more_ files than
6194 `clean' does. For example, this would delete configuration files
6195 or links that you would normally create as preparation for
6196 compilation, even if the makefile itself cannot create these files.
6199 Copy the executable file into a directory that users typically
6200 search for commands; copy any auxiliary files that the executable
6201 uses into the directories where it will look for them.
6204 Print listings of the source files that have changed.
6207 Create a tar file of the source files.
6210 Create a shell archive (shar file) of the source files.
6213 Create a distribution file of the source files. This might be a
6214 tar file, or a shar file, or a compressed version of one of the
6215 above, or even more than one of the above.
6218 Update a tags table for this program.
6222 Perform self tests on the program this makefile builds.
6225 File: make.info, Node: Instead of Execution, Next: Avoiding Compilation, Prev: Goals, Up: Running
6227 9.3 Instead of Executing the Commands
6228 =====================================
6230 The makefile tells `make' how to tell whether a target is up to date,
6231 and how to update each target. But updating the targets is not always
6232 what you want. Certain options specify other activities for `make'.
6238 "No-op". The activity is to print what commands would be used to
6239 make the targets up to date, but not actually execute them.
6243 "Touch". The activity is to mark the targets as up to date without
6244 actually changing them. In other words, `make' pretends to compile
6245 the targets but does not really change their contents.
6249 "Question". The activity is to find out silently whether the
6250 targets are up to date already; but execute no commands in either
6251 case. In other words, neither compilation nor output will occur.
6257 "What if". Each `-W' flag is followed by a file name. The given
6258 files' modification times are recorded by `make' as being the
6259 present time, although the actual modification times remain the
6260 same. You can use the `-W' flag in conjunction with the `-n' flag
6261 to see what would happen if you were to modify specific files.
6263 With the `-n' flag, `make' prints the commands that it would
6264 normally execute but does not execute them.
6266 With the `-t' flag, `make' ignores the commands in the rules and
6267 uses (in effect) the command `touch' for each target that needs to be
6268 remade. The `touch' command is also printed, unless `-s' or `.SILENT'
6269 is used. For speed, `make' does not actually invoke the program
6270 `touch'. It does the work directly.
6272 With the `-q' flag, `make' prints nothing and executes no commands,
6273 but the exit status code it returns is zero if and only if the targets
6274 to be considered are already up to date. If the exit status is one,
6275 then some updating needs to be done. If `make' encounters an error,
6276 the exit status is two, so you can distinguish an error from a target
6277 that is not up to date.
6279 It is an error to use more than one of these three flags in the same
6280 invocation of `make'.
6282 The `-n', `-t', and `-q' options do not affect command lines that
6283 begin with `+' characters or contain the strings `$(MAKE)' or
6284 `${MAKE}'. Note that only the line containing the `+' character or the
6285 strings `$(MAKE)' or `${MAKE}' is run regardless of these options.
6286 Other lines in the same rule are not run unless they too begin with `+'
6287 or contain `$(MAKE)' or `${MAKE}' (*Note How the `MAKE' Variable Works:
6290 The `-W' flag provides two features:
6292 * If you also use the `-n' or `-q' flag, you can see what `make'
6293 would do if you were to modify some files.
6295 * Without the `-n' or `-q' flag, when `make' is actually executing
6296 commands, the `-W' flag can direct `make' to act as if some files
6297 had been modified, without actually modifying the files.
6299 Note that the options `-p' and `-v' allow you to obtain other
6300 information about `make' or about the makefiles in use (*note Summary
6301 of Options: Options Summary.).
6304 File: make.info, Node: Avoiding Compilation, Next: Overriding, Prev: Instead of Execution, Up: Running
6306 9.4 Avoiding Recompilation of Some Files
6307 ========================================
6309 Sometimes you may have changed a source file but you do not want to
6310 recompile all the files that depend on it. For example, suppose you add
6311 a macro or a declaration to a header file that many other files depend
6312 on. Being conservative, `make' assumes that any change in the header
6313 file requires recompilation of all dependent files, but you know that
6314 they do not need to be recompiled and you would rather not waste the
6315 time waiting for them to compile.
6317 If you anticipate the problem before changing the header file, you
6318 can use the `-t' flag. This flag tells `make' not to run the commands
6319 in the rules, but rather to mark the target up to date by changing its
6320 last-modification date. You would follow this procedure:
6322 1. Use the command `make' to recompile the source files that really
6323 need recompilation, ensuring that the object files are up-to-date
6326 2. Make the changes in the header files.
6328 3. Use the command `make -t' to mark all the object files as up to
6329 date. The next time you run `make', the changes in the header
6330 files will not cause any recompilation.
6332 If you have already changed the header file at a time when some files
6333 do need recompilation, it is too late to do this. Instead, you can use
6334 the `-o FILE' flag, which marks a specified file as "old" (*note
6335 Summary of Options: Options Summary.). This means that the file itself
6336 will not be remade, and nothing else will be remade on its account.
6337 Follow this procedure:
6339 1. Recompile the source files that need compilation for reasons
6340 independent of the particular header file, with `make -o
6341 HEADERFILE'. If several header files are involved, use a separate
6342 `-o' option for each header file.
6344 2. Touch all the object files with `make -t'.
6347 File: make.info, Node: Overriding, Next: Testing, Prev: Avoiding Compilation, Up: Running
6349 9.5 Overriding Variables
6350 ========================
6352 An argument that contains `=' specifies the value of a variable: `V=X'
6353 sets the value of the variable V to X. If you specify a value in this
6354 way, all ordinary assignments of the same variable in the makefile are
6355 ignored; we say they have been "overridden" by the command line
6358 The most common way to use this facility is to pass extra flags to
6359 compilers. For example, in a properly written makefile, the variable
6360 `CFLAGS' is included in each command that runs the C compiler, so a
6361 file `foo.c' would be compiled something like this:
6363 cc -c $(CFLAGS) foo.c
6365 Thus, whatever value you set for `CFLAGS' affects each compilation
6366 that occurs. The makefile probably specifies the usual value for
6367 `CFLAGS', like this:
6371 Each time you run `make', you can override this value if you wish.
6372 For example, if you say `make CFLAGS='-g -O'', each C compilation will
6373 be done with `cc -c -g -O'. (This also illustrates how you can use
6374 quoting in the shell to enclose spaces and other special characters in
6375 the value of a variable when you override it.)
6377 The variable `CFLAGS' is only one of many standard variables that
6378 exist just so that you can change them this way. *Note Variables Used
6379 by Implicit Rules: Implicit Variables, for a complete list.
6381 You can also program the makefile to look at additional variables of
6382 your own, giving the user the ability to control other aspects of how
6383 the makefile works by changing the variables.
6385 When you override a variable with a command argument, you can define
6386 either a recursively-expanded variable or a simply-expanded variable.
6387 The examples shown above make a recursively-expanded variable; to make a
6388 simply-expanded variable, write `:=' instead of `='. But, unless you
6389 want to include a variable reference or function call in the _value_
6390 that you specify, it makes no difference which kind of variable you
6393 There is one way that the makefile can change a variable that you
6394 have overridden. This is to use the `override' directive, which is a
6395 line that looks like this: `override VARIABLE = VALUE' (*note The
6396 `override' Directive: Override Directive.).
6399 File: make.info, Node: Testing, Next: Options Summary, Prev: Overriding, Up: Running
6401 9.6 Testing the Compilation of a Program
6402 ========================================
6404 Normally, when an error happens in executing a shell command, `make'
6405 gives up immediately, returning a nonzero status. No further commands
6406 are executed for any target. The error implies that the goal cannot be
6407 correctly remade, and `make' reports this as soon as it knows.
6409 When you are compiling a program that you have just changed, this is
6410 not what you want. Instead, you would rather that `make' try compiling
6411 every file that can be tried, to show you as many compilation errors as
6414 On these occasions, you should use the `-k' or `--keep-going' flag.
6415 This tells `make' to continue to consider the other prerequisites of
6416 the pending targets, remaking them if necessary, before it gives up and
6417 returns nonzero status. For example, after an error in compiling one
6418 object file, `make -k' will continue compiling other object files even
6419 though it already knows that linking them will be impossible. In
6420 addition to continuing after failed shell commands, `make -k' will
6421 continue as much as possible after discovering that it does not know
6422 how to make a target or prerequisite file. This will always cause an
6423 error message, but without `-k', it is a fatal error (*note Summary of
6424 Options: Options Summary.).
6426 The usual behavior of `make' assumes that your purpose is to get the
6427 goals up to date; once `make' learns that this is impossible, it might
6428 as well report the failure immediately. The `-k' flag says that the
6429 real purpose is to test as much as possible of the changes made in the
6430 program, perhaps to find several independent problems so that you can
6431 correct them all before the next attempt to compile. This is why Emacs'
6432 `M-x compile' command passes the `-k' flag by default.
6435 File: make.info, Node: Options Summary, Prev: Testing, Up: Running
6437 9.7 Summary of Options
6438 ======================
6440 Here is a table of all the options `make' understands:
6444 These options are ignored for compatibility with other versions of
6449 Consider all targets out-of-date. GNU `make' proceeds to consider
6450 targets and their prerequisites using the normal algorithms;
6451 however, all targets so considered are always remade regardless of
6452 the status of their prerequisites. To avoid infinite recursion, if
6453 `MAKE_RESTARTS' (*note Other Special Variables: Special
6454 Variables.) is set to a number greater than 0 this option is
6455 disabled when considering whether to remake makefiles (*note How
6456 Makefiles Are Remade: Remaking Makefiles.).
6460 Change to directory DIR before reading the makefiles. If multiple
6461 `-C' options are specified, each is interpreted relative to the
6462 previous one: `-C / -C etc' is equivalent to `-C /etc'. This is
6463 typically used with recursive invocations of `make' (*note
6464 Recursive Use of `make': Recursion.).
6467 Print debugging information in addition to normal processing. The
6468 debugging information says which files are being considered for
6469 remaking, which file-times are being compared and with what
6470 results, which files actually need to be remade, which implicit
6471 rules are considered and which are applied--everything interesting
6472 about how `make' decides what to do. The `-d' option is
6473 equivalent to `--debug=a' (see below).
6476 Print debugging information in addition to normal processing.
6477 Various levels and types of output can be chosen. With no
6478 arguments, print the "basic" level of debugging. Possible
6479 arguments are below; only the first character is considered, and
6480 values must be comma- or space-separated.
6483 All types of debugging output are enabled. This is
6484 equivalent to using `-d'.
6487 Basic debugging prints each target that was found to be
6488 out-of-date, and whether the build was successful or not.
6491 A level above `basic'; includes messages about which
6492 makefiles were parsed, prerequisites that did not need to be
6493 rebuilt, etc. This option also enables `basic' messages.
6496 Prints messages describing the implicit rule searches for
6497 each target. This option also enables `basic' messages.
6500 Prints messages giving details on the invocation of specific
6504 By default, the above messages are not enabled while trying
6505 to remake the makefiles. This option enables messages while
6506 rebuilding makefiles, too. Note that the `all' option does
6507 enable this option. This option also enables `basic'
6511 `--environment-overrides'
6512 Give variables taken from the environment precedence over
6513 variables from makefiles. *Note Variables from the Environment:
6519 Read the file named FILE as a makefile. *Note Writing Makefiles:
6524 Remind you of the options that `make' understands and then exit.
6528 Ignore all errors in commands executed to remake files. *Note
6529 Errors in Commands: Errors.
6533 Specifies a directory DIR to search for included makefiles. *Note
6534 Including Other Makefiles: Include. If several `-I' options are
6535 used to specify several directories, the directories are searched
6536 in the order specified.
6540 Specifies the number of jobs (commands) to run simultaneously.
6541 With no argument, `make' runs as many jobs simultaneously as
6542 possible. If there is more than one `-j' option, the last one is
6543 effective. *Note Parallel Execution: Parallel, for more
6544 information on how commands are run. Note that this option is
6549 Continue as much as possible after an error. While the target that
6550 failed, and those that depend on it, cannot be remade, the other
6551 prerequisites of these targets can be processed all the same.
6552 *Note Testing the Compilation of a Program: Testing.
6555 `--load-average[=LOAD]'
6557 Specifies that no new jobs (commands) should be started if there
6558 are other jobs running and the load average is at least LOAD (a
6559 floating-point number). With no argument, removes a previous load
6560 limit. *Note Parallel Execution: Parallel.
6563 `--check-symlink-times'
6564 On systems that support symbolic links, this option causes `make'
6565 to consider the timestamps on any symbolic links in addition to the
6566 timestamp on the file referenced by those links. When this option
6567 is provided, the most recent timestamp among the file and the
6568 symbolic links is taken as the modification time for this target
6575 Print the commands that would be executed, but do not execute them.
6576 *Note Instead of Executing the Commands: Instead of Execution.
6581 Do not remake the file FILE even if it is older than its
6582 prerequisites, and do not remake anything on account of changes in
6583 FILE. Essentially the file is treated as very old and its rules
6584 are ignored. *Note Avoiding Recompilation of Some Files: Avoiding
6589 Print the data base (rules and variable values) that results from
6590 reading the makefiles; then execute as usual or as otherwise
6591 specified. This also prints the version information given by the
6592 `-v' switch (see below). To print the data base without trying to
6593 remake any files, use `make -qp'. To print the data base of
6594 predefined rules and variables, use `make -p -f /dev/null'. The
6595 data base output contains filename and linenumber information for
6596 command and variable definitions, so it can be a useful debugging
6597 tool in complex environments.
6601 "Question mode". Do not run any commands, or print anything; just
6602 return an exit status that is zero if the specified targets are
6603 already up to date, one if any remaking is required, or two if an
6604 error is encountered. *Note Instead of Executing the Commands:
6605 Instead of Execution.
6608 `--no-builtin-rules'
6609 Eliminate use of the built-in implicit rules (*note Using Implicit
6610 Rules: Implicit Rules.). You can still define your own by writing
6611 pattern rules (*note Defining and Redefining Pattern Rules:
6612 Pattern Rules.). The `-r' option also clears out the default list
6613 of suffixes for suffix rules (*note Old-Fashioned Suffix Rules:
6614 Suffix Rules.). But you can still define your own suffixes with a
6615 rule for `.SUFFIXES', and then define your own suffix rules. Note
6616 that only _rules_ are affected by the `-r' option; default
6617 variables remain in effect (*note Variables Used by Implicit
6618 Rules: Implicit Variables.); see the `-R' option below.
6621 `--no-builtin-variables'
6622 Eliminate use of the built-in rule-specific variables (*note
6623 Variables Used by Implicit Rules: Implicit Variables.). You can
6624 still define your own, of course. The `-R' option also
6625 automatically enables the `-r' option (see above), since it
6626 doesn't make sense to have implicit rules without any definitions
6627 for the variables that they use.
6632 Silent operation; do not print the commands as they are executed.
6633 *Note Command Echoing: Echoing.
6638 Cancel the effect of the `-k' option. This is never necessary
6639 except in a recursive `make' where `-k' might be inherited from
6640 the top-level `make' via `MAKEFLAGS' (*note Recursive Use of
6641 `make': Recursion.) or if you set `-k' in `MAKEFLAGS' in your
6646 Touch files (mark them up to date without really changing them)
6647 instead of running their commands. This is used to pretend that
6648 the commands were done, in order to fool future invocations of
6649 `make'. *Note Instead of Executing the Commands: Instead of
6654 Print the version of the `make' program plus a copyright, a list
6655 of authors, and a notice that there is no warranty; then exit.
6659 Print a message containing the working directory both before and
6660 after executing the makefile. This may be useful for tracking
6661 down errors from complicated nests of recursive `make' commands.
6662 *Note Recursive Use of `make': Recursion. (In practice, you
6663 rarely need to specify this option since `make' does it for you;
6664 see *Note The `--print-directory' Option: -w Option.)
6666 `--no-print-directory'
6667 Disable printing of the working directory under `-w'. This option
6668 is useful when `-w' is turned on automatically, but you do not
6669 want to see the extra messages. *Note The `--print-directory'
6676 Pretend that the target FILE has just been modified. When used
6677 with the `-n' flag, this shows you what would happen if you were
6678 to modify that file. Without `-n', it is almost the same as
6679 running a `touch' command on the given file before running `make',
6680 except that the modification time is changed only in the
6681 imagination of `make'. *Note Instead of Executing the Commands:
6682 Instead of Execution.
6684 `--warn-undefined-variables'
6685 Issue a warning message whenever `make' sees a reference to an
6686 undefined variable. This can be helpful when you are trying to
6687 debug makefiles which use variables in complex ways.
6690 File: make.info, Node: Implicit Rules, Next: Archives, Prev: Running, Up: Top
6692 10 Using Implicit Rules
6693 ***********************
6695 Certain standard ways of remaking target files are used very often. For
6696 example, one customary way to make an object file is from a C source
6697 file using the C compiler, `cc'.
6699 "Implicit rules" tell `make' how to use customary techniques so that
6700 you do not have to specify them in detail when you want to use them.
6701 For example, there is an implicit rule for C compilation. File names
6702 determine which implicit rules are run. For example, C compilation
6703 typically takes a `.c' file and makes a `.o' file. So `make' applies
6704 the implicit rule for C compilation when it sees this combination of
6707 A chain of implicit rules can apply in sequence; for example, `make'
6708 will remake a `.o' file from a `.y' file by way of a `.c' file.
6710 The built-in implicit rules use several variables in their commands
6711 so that, by changing the values of the variables, you can change the
6712 way the implicit rule works. For example, the variable `CFLAGS'
6713 controls the flags given to the C compiler by the implicit rule for C
6716 You can define your own implicit rules by writing "pattern rules".
6718 "Suffix rules" are a more limited way to define implicit rules.
6719 Pattern rules are more general and clearer, but suffix rules are
6720 retained for compatibility.
6724 * Using Implicit:: How to use an existing implicit rule
6725 to get the commands for updating a file.
6726 * Catalogue of Rules:: A list of built-in implicit rules.
6727 * Implicit Variables:: How to change what predefined rules do.
6728 * Chained Rules:: How to use a chain of implicit rules.
6729 * Pattern Rules:: How to define new implicit rules.
6730 * Last Resort:: How to define commands for rules which
6732 * Suffix Rules:: The old-fashioned style of implicit rule.
6733 * Implicit Rule Search:: The precise algorithm for applying
6737 File: make.info, Node: Using Implicit, Next: Catalogue of Rules, Prev: Implicit Rules, Up: Implicit Rules
6739 10.1 Using Implicit Rules
6740 =========================
6742 To allow `make' to find a customary method for updating a target file,
6743 all you have to do is refrain from specifying commands yourself. Either
6744 write a rule with no command lines, or don't write a rule at all. Then
6745 `make' will figure out which implicit rule to use based on which kind
6746 of source file exists or can be made.
6748 For example, suppose the makefile looks like this:
6751 cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)
6753 Because you mention `foo.o' but do not give a rule for it, `make' will
6754 automatically look for an implicit rule that tells how to update it.
6755 This happens whether or not the file `foo.o' currently exists.
6757 If an implicit rule is found, it can supply both commands and one or
6758 more prerequisites (the source files). You would want to write a rule
6759 for `foo.o' with no command lines if you need to specify additional
6760 prerequisites, such as header files, that the implicit rule cannot
6763 Each implicit rule has a target pattern and prerequisite patterns.
6764 There may be many implicit rules with the same target pattern. For
6765 example, numerous rules make `.o' files: one, from a `.c' file with the
6766 C compiler; another, from a `.p' file with the Pascal compiler; and so
6767 on. The rule that actually applies is the one whose prerequisites
6768 exist or can be made. So, if you have a file `foo.c', `make' will run
6769 the C compiler; otherwise, if you have a file `foo.p', `make' will run
6770 the Pascal compiler; and so on.
6772 Of course, when you write the makefile, you know which implicit rule
6773 you want `make' to use, and you know it will choose that one because you
6774 know which possible prerequisite files are supposed to exist. *Note
6775 Catalogue of Implicit Rules: Catalogue of Rules, for a catalogue of all
6776 the predefined implicit rules.
6778 Above, we said an implicit rule applies if the required
6779 prerequisites "exist or can be made". A file "can be made" if it is
6780 mentioned explicitly in the makefile as a target or a prerequisite, or
6781 if an implicit rule can be recursively found for how to make it. When
6782 an implicit prerequisite is the result of another implicit rule, we say
6783 that "chaining" is occurring. *Note Chains of Implicit Rules: Chained
6786 In general, `make' searches for an implicit rule for each target, and
6787 for each double-colon rule, that has no commands. A file that is
6788 mentioned only as a prerequisite is considered a target whose rule
6789 specifies nothing, so implicit rule search happens for it. *Note
6790 Implicit Rule Search Algorithm: Implicit Rule Search, for the details
6791 of how the search is done.
6793 Note that explicit prerequisites do not influence implicit rule
6794 search. For example, consider this explicit rule:
6798 The prerequisite on `foo.p' does not necessarily mean that `make' will
6799 remake `foo.o' according to the implicit rule to make an object file, a
6800 `.o' file, from a Pascal source file, a `.p' file. For example, if
6801 `foo.c' also exists, the implicit rule to make an object file from a C
6802 source file is used instead, because it appears before the Pascal rule
6803 in the list of predefined implicit rules (*note Catalogue of Implicit
6804 Rules: Catalogue of Rules.).
6806 If you do not want an implicit rule to be used for a target that has
6807 no commands, you can give that target empty commands by writing a
6808 semicolon (*note Defining Empty Commands: Empty Commands.).
6811 File: make.info, Node: Catalogue of Rules, Next: Implicit Variables, Prev: Using Implicit, Up: Implicit Rules
6813 10.2 Catalogue of Implicit Rules
6814 ================================
6816 Here is a catalogue of predefined implicit rules which are always
6817 available unless the makefile explicitly overrides or cancels them.
6818 *Note Canceling Implicit Rules: Canceling Rules, for information on
6819 canceling or overriding an implicit rule. The `-r' or
6820 `--no-builtin-rules' option cancels all predefined rules.
6822 This manual only documents the default rules available on POSIX-based
6823 operating systems. Other operating systems, such as VMS, Windows,
6824 OS/2, etc. may have different sets of default rules. To see the full
6825 list of default rules and variables available in your version of GNU
6826 `make', run `make -p' in a directory with no makefile.
6828 Not all of these rules will always be defined, even when the `-r'
6829 option is not given. Many of the predefined implicit rules are
6830 implemented in `make' as suffix rules, so which ones will be defined
6831 depends on the "suffix list" (the list of prerequisites of the special
6832 target `.SUFFIXES'). The default suffix list is: `.out', `.a', `.ln',
6833 `.o', `.c', `.cc', `.C', `.cpp', `.p', `.f', `.F', `.r', `.y', `.l',
6834 `.s', `.S', `.mod', `.sym', `.def', `.h', `.info', `.dvi', `.tex',
6835 `.texinfo', `.texi', `.txinfo', `.w', `.ch' `.web', `.sh', `.elc',
6836 `.el'. All of the implicit rules described below whose prerequisites
6837 have one of these suffixes are actually suffix rules. If you modify
6838 the suffix list, the only predefined suffix rules in effect will be
6839 those named by one or two of the suffixes that are on the list you
6840 specify; rules whose suffixes fail to be on the list are disabled.
6841 *Note Old-Fashioned Suffix Rules: Suffix Rules, for full details on
6844 Compiling C programs
6845 `N.o' is made automatically from `N.c' with a command of the form
6846 `$(CC) -c $(CPPFLAGS) $(CFLAGS)'.
6848 Compiling C++ programs
6849 `N.o' is made automatically from `N.cc', `N.cpp', or `N.C' with a
6850 command of the form `$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)'. We
6851 encourage you to use the suffix `.cc' for C++ source files instead
6854 Compiling Pascal programs
6855 `N.o' is made automatically from `N.p' with the command `$(PC) -c
6858 Compiling Fortran and Ratfor programs
6859 `N.o' is made automatically from `N.r', `N.F' or `N.f' by running
6860 the Fortran compiler. The precise command used is as follows:
6863 `$(FC) -c $(FFLAGS)'.
6866 `$(FC) -c $(FFLAGS) $(CPPFLAGS)'.
6869 `$(FC) -c $(FFLAGS) $(RFLAGS)'.
6871 Preprocessing Fortran and Ratfor programs
6872 `N.f' is made automatically from `N.r' or `N.F'. This rule runs
6873 just the preprocessor to convert a Ratfor or preprocessable
6874 Fortran program into a strict Fortran program. The precise
6875 command used is as follows:
6878 `$(FC) -F $(CPPFLAGS) $(FFLAGS)'.
6881 `$(FC) -F $(FFLAGS) $(RFLAGS)'.
6883 Compiling Modula-2 programs
6884 `N.sym' is made from `N.def' with a command of the form `$(M2C)
6885 $(M2FLAGS) $(DEFFLAGS)'. `N.o' is made from `N.mod'; the form is:
6886 `$(M2C) $(M2FLAGS) $(MODFLAGS)'.
6888 Assembling and preprocessing assembler programs
6889 `N.o' is made automatically from `N.s' by running the assembler,
6890 `as'. The precise command is `$(AS) $(ASFLAGS)'.
6892 `N.s' is made automatically from `N.S' by running the C
6893 preprocessor, `cpp'. The precise command is `$(CPP) $(CPPFLAGS)'.
6895 Linking a single object file
6896 `N' is made automatically from `N.o' by running the linker
6897 (usually called `ld') via the C compiler. The precise command
6898 used is `$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'.
6900 This rule does the right thing for a simple program with only one
6901 source file. It will also do the right thing if there are multiple
6902 object files (presumably coming from various other source files),
6903 one of which has a name matching that of the executable file.
6908 when `x.c', `y.c' and `z.c' all exist will execute:
6918 In more complicated cases, such as when there is no object file
6919 whose name derives from the executable file name, you must write
6920 an explicit command for linking.
6922 Each kind of file automatically made into `.o' object files will
6923 be automatically linked by using the compiler (`$(CC)', `$(FC)' or
6924 `$(PC)'; the C compiler `$(CC)' is used to assemble `.s' files)
6925 without the `-c' option. This could be done by using the `.o'
6926 object files as intermediates, but it is faster to do the
6927 compiling and linking in one step, so that's how it's done.
6930 `N.c' is made automatically from `N.y' by running Yacc with the
6931 command `$(YACC) $(YFLAGS)'.
6934 `N.c' is made automatically from `N.l' by running Lex. The actual
6935 command is `$(LEX) $(LFLAGS)'.
6937 Lex for Ratfor programs
6938 `N.r' is made automatically from `N.l' by running Lex. The actual
6939 command is `$(LEX) $(LFLAGS)'.
6941 The convention of using the same suffix `.l' for all Lex files
6942 regardless of whether they produce C code or Ratfor code makes it
6943 impossible for `make' to determine automatically which of the two
6944 languages you are using in any particular case. If `make' is
6945 called upon to remake an object file from a `.l' file, it must
6946 guess which compiler to use. It will guess the C compiler, because
6947 that is more common. If you are using Ratfor, make sure `make'
6948 knows this by mentioning `N.r' in the makefile. Or, if you are
6949 using Ratfor exclusively, with no C files, remove `.c' from the
6950 list of implicit rule suffixes with:
6953 .SUFFIXES: .o .r .f .l ...
6955 Making Lint Libraries from C, Yacc, or Lex programs
6956 `N.ln' is made from `N.c' by running `lint'. The precise command
6957 is `$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'. The same command is
6958 used on the C code produced from `N.y' or `N.l'.
6961 `N.dvi' is made from `N.tex' with the command `$(TEX)'. `N.tex'
6962 is made from `N.web' with `$(WEAVE)', or from `N.w' (and from
6963 `N.ch' if it exists or can be made) with `$(CWEAVE)'. `N.p' is
6964 made from `N.web' with `$(TANGLE)' and `N.c' is made from `N.w'
6965 (and from `N.ch' if it exists or can be made) with `$(CTANGLE)'.
6968 `N.dvi' is made from `N.texinfo', `N.texi', or `N.txinfo', with
6969 the command `$(TEXI2DVI) $(TEXI2DVI_FLAGS)'. `N.info' is made from
6970 `N.texinfo', `N.texi', or `N.txinfo', with the command
6971 `$(MAKEINFO) $(MAKEINFO_FLAGS)'.
6974 Any file `N' is extracted if necessary from an RCS file named
6975 either `N,v' or `RCS/N,v'. The precise command used is
6976 `$(CO) $(COFLAGS)'. `N' will not be extracted from RCS if it
6977 already exists, even if the RCS file is newer. The rules for RCS
6978 are terminal (*note Match-Anything Pattern Rules: Match-Anything
6979 Rules.), so RCS files cannot be generated from another source;
6980 they must actually exist.
6983 Any file `N' is extracted if necessary from an SCCS file named
6984 either `s.N' or `SCCS/s.N'. The precise command used is
6985 `$(GET) $(GFLAGS)'. The rules for SCCS are terminal (*note
6986 Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS
6987 files cannot be generated from another source; they must actually
6990 For the benefit of SCCS, a file `N' is copied from `N.sh' and made
6991 executable (by everyone). This is for shell scripts that are
6992 checked into SCCS. Since RCS preserves the execution permission
6993 of a file, you do not need to use this feature with RCS.
6995 We recommend that you avoid using of SCCS. RCS is widely held to
6996 be superior, and is also free. By choosing free software in place
6997 of comparable (or inferior) proprietary software, you support the
6998 free software movement.
7000 Usually, you want to change only the variables listed in the table
7001 above, which are documented in the following section.
7003 However, the commands in built-in implicit rules actually use
7004 variables such as `COMPILE.c', `LINK.p', and `PREPROCESS.S', whose
7005 values contain the commands listed above.
7007 `make' follows the convention that the rule to compile a `.X' source
7008 file uses the variable `COMPILE.X'. Similarly, the rule to produce an
7009 executable from a `.X' file uses `LINK.X'; and the rule to preprocess a
7010 `.X' file uses `PREPROCESS.X'.
7012 Every rule that produces an object file uses the variable
7013 `OUTPUT_OPTION'. `make' defines this variable either to contain `-o
7014 $@', or to be empty, depending on a compile-time option. You need the
7015 `-o' option to ensure that the output goes into the right file when the
7016 source file is in a different directory, as when using `VPATH' (*note
7017 Directory Search::). However, compilers on some systems do not accept
7018 a `-o' switch for object files. If you use such a system, and use
7019 `VPATH', some compilations will put their output in the wrong place. A
7020 possible workaround for this problem is to give `OUTPUT_OPTION' the
7021 value `; mv $*.o $@'.
7024 File: make.info, Node: Implicit Variables, Next: Chained Rules, Prev: Catalogue of Rules, Up: Implicit Rules
7026 10.3 Variables Used by Implicit Rules
7027 =====================================
7029 The commands in built-in implicit rules make liberal use of certain
7030 predefined variables. You can alter the values of these variables in
7031 the makefile, with arguments to `make', or in the environment to alter
7032 how the implicit rules work without redefining the rules themselves.
7033 You can cancel all variables used by implicit rules with the `-R' or
7034 `--no-builtin-variables' option.
7036 For example, the command used to compile a C source file actually
7037 says `$(CC) -c $(CFLAGS) $(CPPFLAGS)'. The default values of the
7038 variables used are `cc' and nothing, resulting in the command `cc -c'.
7039 By redefining `CC' to `ncc', you could cause `ncc' to be used for all C
7040 compilations performed by the implicit rule. By redefining `CFLAGS' to
7041 be `-g', you could pass the `-g' option to each compilation. _All_
7042 implicit rules that do C compilation use `$(CC)' to get the program
7043 name for the compiler and _all_ include `$(CFLAGS)' among the arguments
7044 given to the compiler.
7046 The variables used in implicit rules fall into two classes: those
7047 that are names of programs (like `CC') and those that contain arguments
7048 for the programs (like `CFLAGS'). (The "name of a program" may also
7049 contain some command arguments, but it must start with an actual
7050 executable program name.) If a variable value contains more than one
7051 argument, separate them with spaces.
7053 The following tables describe of some of the more commonly-used
7054 predefined variables. This list is not exhaustive, and the default
7055 values shown here may not be what are selected by `make' for your
7056 environment. To see the complete list of predefined variables for your
7057 instance of GNU `make' you can run `make -p' in a directory with no
7060 Here is a table of some of the more common variables used as names of
7061 programs in built-in rules: makefiles.
7064 Archive-maintaining program; default `ar'.
7067 Program for compiling assembly files; default `as'.
7070 Program for compiling C programs; default `cc'.
7073 Program for checking out files from RCS; default `co'.
7076 Program for compiling C++ programs; default `g++'.
7079 Program for extracting a file from RCS; default `co'.
7082 Program for running the C preprocessor, with results to standard
7083 output; default `$(CC) -E'.
7086 Program for compiling or preprocessing Fortran and Ratfor programs;
7090 Program for extracting a file from SCCS; default `get'.
7093 Program to use to turn Lex grammars into source code; default
7097 Program to use to turn Yacc grammars into source code; default
7101 Program to use to run lint on source code; default `lint'.
7104 Program to use to compile Modula-2 source code; default `m2c'.
7107 Program for compiling Pascal programs; default `pc'.
7110 Program to convert a Texinfo source file into an Info file; default
7114 Program to make TeX DVI files from TeX source; default `tex'.
7117 Program to make TeX DVI files from Texinfo source; default
7121 Program to translate Web into TeX; default `weave'.
7124 Program to translate C Web into TeX; default `cweave'.
7127 Program to translate Web into Pascal; default `tangle'.
7130 Program to translate C Web into C; default `ctangle'.
7133 Command to remove a file; default `rm -f'.
7135 Here is a table of variables whose values are additional arguments
7136 for the programs above. The default values for all of these is the
7137 empty string, unless otherwise noted.
7140 Flags to give the archive-maintaining program; default `rv'.
7143 Extra flags to give to the assembler (when explicitly invoked on a
7147 Extra flags to give to the C compiler.
7150 Extra flags to give to the C++ compiler.
7153 Extra flags to give to the RCS `co' program.
7156 Extra flags to give to the C preprocessor and programs that use it
7157 (the C and Fortran compilers).
7160 Extra flags to give to the Fortran compiler.
7163 Extra flags to give to the SCCS `get' program.
7166 Extra flags to give to compilers when they are supposed to invoke
7170 Extra flags to give to Lex.
7173 Extra flags to give to Yacc.
7176 Extra flags to give to the Pascal compiler.
7179 Extra flags to give to the Fortran compiler for Ratfor programs.
7182 Extra flags to give to lint.
7185 File: make.info, Node: Chained Rules, Next: Pattern Rules, Prev: Implicit Variables, Up: Implicit Rules
7187 10.4 Chains of Implicit Rules
7188 =============================
7190 Sometimes a file can be made by a sequence of implicit rules. For
7191 example, a file `N.o' could be made from `N.y' by running first Yacc
7192 and then `cc'. Such a sequence is called a "chain".
7194 If the file `N.c' exists, or is mentioned in the makefile, no
7195 special searching is required: `make' finds that the object file can be
7196 made by C compilation from `N.c'; later on, when considering how to
7197 make `N.c', the rule for running Yacc is used. Ultimately both `N.c'
7198 and `N.o' are updated.
7200 However, even if `N.c' does not exist and is not mentioned, `make'
7201 knows how to envision it as the missing link between `N.o' and `N.y'!
7202 In this case, `N.c' is called an "intermediate file". Once `make' has
7203 decided to use the intermediate file, it is entered in the data base as
7204 if it had been mentioned in the makefile, along with the implicit rule
7205 that says how to create it.
7207 Intermediate files are remade using their rules just like all other
7208 files. But intermediate files are treated differently in two ways.
7210 The first difference is what happens if the intermediate file does
7211 not exist. If an ordinary file B does not exist, and `make' considers
7212 a target that depends on B, it invariably creates B and then updates
7213 the target from B. But if B is an intermediate file, then `make' can
7214 leave well enough alone. It won't bother updating B, or the ultimate
7215 target, unless some prerequisite of B is newer than that target or
7216 there is some other reason to update that target.
7218 The second difference is that if `make' _does_ create B in order to
7219 update something else, it deletes B later on after it is no longer
7220 needed. Therefore, an intermediate file which did not exist before
7221 `make' also does not exist after `make'. `make' reports the deletion
7222 to you by printing a `rm -f' command showing which file it is deleting.
7224 Ordinarily, a file cannot be intermediate if it is mentioned in the
7225 makefile as a target or prerequisite. However, you can explicitly mark
7226 a file as intermediate by listing it as a prerequisite of the special
7227 target `.INTERMEDIATE'. This takes effect even if the file is mentioned
7228 explicitly in some other way.
7230 You can prevent automatic deletion of an intermediate file by
7231 marking it as a "secondary" file. To do this, list it as a
7232 prerequisite of the special target `.SECONDARY'. When a file is
7233 secondary, `make' will not create the file merely because it does not
7234 already exist, but `make' does not automatically delete the file.
7235 Marking a file as secondary also marks it as intermediate.
7237 You can list the target pattern of an implicit rule (such as `%.o')
7238 as a prerequisite of the special target `.PRECIOUS' to preserve
7239 intermediate files made by implicit rules whose target patterns match
7240 that file's name; see *Note Interrupts::.
7242 A chain can involve more than two implicit rules. For example, it is
7243 possible to make a file `foo' from `RCS/foo.y,v' by running RCS, Yacc
7244 and `cc'. Then both `foo.y' and `foo.c' are intermediate files that
7245 are deleted at the end.
7247 No single implicit rule can appear more than once in a chain. This
7248 means that `make' will not even consider such a ridiculous thing as
7249 making `foo' from `foo.o.o' by running the linker twice. This
7250 constraint has the added benefit of preventing any infinite loop in the
7251 search for an implicit rule chain.
7253 There are some special implicit rules to optimize certain cases that
7254 would otherwise be handled by rule chains. For example, making `foo'
7255 from `foo.c' could be handled by compiling and linking with separate
7256 chained rules, using `foo.o' as an intermediate file. But what
7257 actually happens is that a special rule for this case does the
7258 compilation and linking with a single `cc' command. The optimized rule
7259 is used in preference to the step-by-step chain because it comes
7260 earlier in the ordering of rules.