etc/protocols - sync with NetBSD-8
[minix.git] / external / gpl2 / gmake / patches / 0000-gmake-nbsd.patch
blobcbccd9bb5612d1a9371d45b1a473b5cadd7082e1
1 diff -rNU3 dist.orig/Makefile.in dist/Makefile.in
2 --- dist.orig/Makefile.in 2006-04-01 08:40:04.000000000 +0200
3 +++ dist/Makefile.in 2014-08-18 08:57:25.000000000 +0200
4 @@ -330,6 +330,8 @@
5 am--refresh:
6 @:
7 $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
8 + @echo "NOT REBUILDING $@"
9 +NetBSD_DISABLED_Makefile.in:
10 @for dep in $?; do \
11 case '$(am__configure_deps)' in \
12 *$$dep*) \
13 @@ -357,6 +359,8 @@
14 $(SHELL) ./config.status --recheck
16 $(top_srcdir)/configure: $(am__configure_deps)
17 + @echo "NOT REBUILDING $@"
18 +NetBSD_DISABLED_configure:
19 cd $(srcdir) && $(AUTOCONF)
20 $(ACLOCAL_M4): $(am__aclocal_m4_deps)
21 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
22 @@ -371,6 +375,8 @@
23 @rm -f stamp-h1
24 cd $(top_builddir) && $(SHELL) ./config.status config.h
25 $(srcdir)/config.h.in: $(am__configure_deps)
26 + @echo "NOT REBUILDING $@"
27 +NetBSD_DISABLED_config.h.in:
28 cd $(top_srcdir) && $(AUTOHEADER)
29 rm -f stamp-h1
30 touch $@
31 diff -rNU3 dist.orig/ansi2knr.c dist/ansi2knr.c
32 --- dist.orig/ansi2knr.c 2006-04-01 08:40:04.000000000 +0200
33 +++ dist/ansi2knr.c 2014-08-18 08:46:57.000000000 +0200
34 @@ -1,6 +1,6 @@
35 /* Copyright (C) 1989, 2000 Aladdin Enterprises. All rights reserved. */
37 -/*$Id: ansi2knr.c,v 1.3 2000/04/13 03:41:48 lpd Exp $*/
38 +/*$Id: ansi2knr.c,v 1.1.1.1 2014/08/18 06:46:57 christos Exp $*/
39 /* Convert ANSI C function definitions to K&R ("traditional C") syntax */
42 diff -rNU3 dist.orig/config/config.guess dist/config/config.guess
43 --- dist.orig/config/config.guess 2006-04-01 08:41:00.000000000 +0200
44 +++ dist/config/config.guess 2014-08-18 09:12:47.000000000 +0200
45 @@ -939,6 +939,9 @@
46 sparc:Linux:*:* | sparc64:Linux:*:*)
47 echo ${UNAME_MACHINE}-unknown-linux-gnu
48 exit ;;
49 + tile*:Linux:*:*)
50 + echo ${UNAME_MACHINE}-unknown-linux-gnu
51 + exit 0 ;;
52 vax:Linux:*:*)
53 echo ${UNAME_MACHINE}-dec-linux-gnu
54 exit ;;
55 diff -rNU3 dist.orig/configure.in dist/configure.in
56 --- dist.orig/configure.in 2006-04-01 08:36:40.000000000 +0200
57 +++ dist/configure.in 2014-08-18 08:46:47.000000000 +0200
58 @@ -19,7 +19,7 @@
59 AC_INIT([GNU make],[3.81],[bug-make@gnu.org])
61 AC_PREREQ(2.59)
62 -AC_REVISION([[$Id: configure.in,v 1.142 2006/04/01 06:36:40 psmith Exp $]])
63 +AC_REVISION([[$Id: configure.in,v 1.1.1.1 2014/08/18 06:46:47 christos Exp $]])
65 # Autoconf setup
66 AC_CONFIG_AUX_DIR(config)
67 diff -rNU3 dist.orig/doc/make.info dist/doc/make.info
68 --- dist.orig/doc/make.info 2006-04-01 08:41:04.000000000 +0200
69 +++ dist/doc/make.info 1970-01-01 01:00:00.000000000 +0100
70 @@ -1,184 +0,0 @@
71 -This is make.info, produced by makeinfo version 4.8 from make.texi.
73 - This file documents the GNU `make' utility, which determines
74 -automatically which pieces of a large program need to be recompiled,
75 -and issues the commands to recompile them.
77 - This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
78 -Manual', for GNU `make' version 3.81.
80 - Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
81 -1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
82 -Foundation, Inc.
84 - Permission is granted to copy, distribute and/or modify this
85 - document under the terms of the GNU Free Documentation License,
86 - Version 1.2 or any later version published by the Free Software
87 - Foundation; with no Invariant Sections, with the Front-Cover Texts
88 - being "A GNU Manual," and with the Back-Cover Texts as in (a)
89 - below. A copy of the license is included in the section entitled
90 - "GNU Free Documentation License."
92 - (a) The FSF's Back-Cover Text is: "You have freedom to copy and
93 - modify this GNU Manual, like GNU software. Copies published by
94 - the Free Software Foundation raise funds for GNU development."
96 -INFO-DIR-SECTION GNU Packages
97 -START-INFO-DIR-ENTRY
98 -* Make: (make). Remake files automatically.
99 -END-INFO-DIR-ENTRY
101 -\x1f
102 -Indirect:
103 -make.info-1: 1297
104 -make.info-2: 301265
105 -\x1f
106 -Tag Table:
107 -(Indirect)
108 -Node: Top\x7f1297
109 -Node: Overview\x7f14702
110 -Node: Preparing\x7f15712
111 -Node: Reading\x7f16684
112 -Node: Bugs\x7f17611
113 -Node: Introduction\x7f19441
114 -Node: Rule Introduction\x7f21033
115 -Node: Simple Makefile\x7f22777
116 -Node: How Make Works\x7f26406
117 -Node: Variables Simplify\x7f29061
118 -Node: make Deduces\x7f31267
119 -Node: Combine By Prerequisite\x7f33007
120 -Node: Cleanup\x7f34036
121 -Node: Makefiles\x7f35455
122 -Node: Makefile Contents\x7f36421
123 -Node: Makefile Names\x7f39376
124 -Node: Include\x7f40987
125 -Ref: Include-Footnote-1\x7f44619
126 -Node: MAKEFILES Variable\x7f44753
127 -Node: MAKEFILE_LIST Variable\x7f46263
128 -Node: Special Variables\x7f47531
129 -Node: Remaking Makefiles\x7f51038
130 -Node: Overriding Makefiles\x7f55287
131 -Node: Reading Makefiles\x7f57340
132 -Node: Secondary Expansion\x7f60244
133 -Node: Rules\x7f67678
134 -Node: Rule Example\x7f70350
135 -Node: Rule Syntax\x7f71207
136 -Node: Prerequisite Types\x7f73710
137 -Node: Wildcards\x7f75486
138 -Node: Wildcard Examples\x7f77204
139 -Node: Wildcard Pitfall\x7f78460
140 -Node: Wildcard Function\x7f80249
141 -Node: Directory Search\x7f82033
142 -Node: General Search\x7f83175
143 -Node: Selective Search\x7f84890
144 -Node: Search Algorithm\x7f87878
145 -Node: Commands/Search\x7f90397
146 -Node: Implicit/Search\x7f91743
147 -Node: Libraries/Search\x7f92687
148 -Node: Phony Targets\x7f94779
149 -Node: Force Targets\x7f99865
150 -Node: Empty Targets\x7f100910
151 -Node: Special Targets\x7f102208
152 -Node: Multiple Targets\x7f109382
153 -Node: Multiple Rules\x7f111257
154 -Node: Static Pattern\x7f113493
155 -Node: Static Usage\x7f114145
156 -Node: Static versus Implicit\x7f117866
157 -Node: Double-Colon\x7f119610
158 -Node: Automatic Prerequisites\x7f121267
159 -Node: Commands\x7f125545
160 -Node: Command Syntax\x7f126753
161 -Node: Splitting Lines\x7f128778
162 -Node: Variables in Commands\x7f131759
163 -Node: Echoing\x7f133086
164 -Node: Execution\x7f134378
165 -Ref: Execution-Footnote-1\x7f135629
166 -Node: Choosing the Shell\x7f135775
167 -Node: Parallel\x7f139744
168 -Node: Errors\x7f143337
169 -Node: Interrupts\x7f146983
170 -Node: Recursion\x7f148570
171 -Node: MAKE Variable\x7f150664
172 -Node: Variables/Recursion\x7f152931
173 -Node: Options/Recursion\x7f158372
174 -Node: -w Option\x7f163537
175 -Node: Sequences\x7f164532
176 -Node: Empty Commands\x7f167544
177 -Node: Using Variables\x7f168718
178 -Node: Reference\x7f171831
179 -Node: Flavors\x7f173390
180 -Node: Advanced\x7f179128
181 -Node: Substitution Refs\x7f179633
182 -Node: Computed Names\x7f181186
183 -Node: Values\x7f185730
184 -Node: Setting\x7f186643
185 -Node: Appending\x7f188679
186 -Node: Override Directive\x7f192605
187 -Node: Defining\x7f193989
188 -Node: Environment\x7f196453
189 -Node: Target-specific\x7f198702
190 -Node: Pattern-specific\x7f201669
191 -Node: Conditionals\x7f203071
192 -Node: Conditional Example\x7f203781
193 -Node: Conditional Syntax\x7f206358
194 -Node: Testing Flags\x7f212083
195 -Node: Functions\x7f213185
196 -Node: Syntax of Functions\x7f214605
197 -Node: Text Functions\x7f216804
198 -Node: File Name Functions\x7f225375
199 -Node: Conditional Functions\x7f230597
200 -Node: Foreach Function\x7f232971
201 -Node: Call Function\x7f236183
202 -Node: Value Function\x7f239068
203 -Node: Eval Function\x7f240505
204 -Node: Origin Function\x7f242779
205 -Node: Flavor Function\x7f245997
206 -Node: Shell Function\x7f247063
207 -Node: Make Control Functions\x7f248697
208 -Node: Running\x7f250366
209 -Node: Makefile Arguments\x7f252355
210 -Node: Goals\x7f253071
211 -Node: Instead of Execution\x7f257812
212 -Node: Avoiding Compilation\x7f261098
213 -Node: Overriding\x7f263073
214 -Node: Testing\x7f265371
215 -Node: Options Summary\x7f267256
216 -Node: Implicit Rules\x7f277382
217 -Node: Using Implicit\x7f279530
218 -Node: Catalogue of Rules\x7f283069
219 -Node: Implicit Variables\x7f292419
220 -Node: Chained Rules\x7f297254
221 -Node: Pattern Rules\x7f301265
222 -Node: Pattern Intro\x7f302801
223 -Node: Pattern Examples\x7f305698
224 -Node: Automatic Variables\x7f307507
225 -Node: Pattern Match\x7f314878
226 -Node: Match-Anything Rules\x7f316514
227 -Node: Canceling Rules\x7f320389
228 -Node: Last Resort\x7f321105
229 -Node: Suffix Rules\x7f322952
230 -Node: Implicit Rule Search\x7f326681
231 -Node: Archives\x7f330200
232 -Node: Archive Members\x7f330898
233 -Node: Archive Update\x7f332511
234 -Node: Archive Symbols\x7f334425
235 -Node: Archive Pitfalls\x7f335659
236 -Node: Archive Suffix Rules\x7f336382
237 -Node: Features\x7f337929
238 -Node: Missing\x7f346484
239 -Node: Makefile Conventions\x7f350222
240 -Node: Makefile Basics\x7f351008
241 -Node: Utilities in Makefiles\x7f354175
242 -Node: Command Variables\x7f356313
243 -Node: Directory Variables\x7f359883
244 -Node: Standard Targets\x7f374023
245 -Ref: Standard Targets-Footnote-1\x7f387142
246 -Node: Install Command Categories\x7f387242
247 -Node: Quick Reference\x7f391768
248 -Node: Error Messages\x7f402464
249 -Node: Complex Makefile\x7f410154
250 -Node: GNU Free Documentation License\x7f418872
251 -Node: Concept Index\x7f441321
252 -Node: Name Index\x7f506510
253 -\x1f
254 -End Tag Table
255 diff -rNU3 dist.orig/doc/make.info-1 dist/doc/make.info-1
256 --- dist.orig/doc/make.info-1 2006-04-01 08:41:04.000000000 +0200
257 +++ dist/doc/make.info-1 1970-01-01 01:00:00.000000000 +0100
258 @@ -1,7261 +0,0 @@
259 -This is make.info, produced by makeinfo version 4.8 from make.texi.
261 - This file documents the GNU `make' utility, which determines
262 -automatically which pieces of a large program need to be recompiled,
263 -and issues the commands to recompile them.
265 - This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
266 -Manual', for GNU `make' version 3.81.
268 - Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
269 -1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
270 -Foundation, Inc.
272 - Permission is granted to copy, distribute and/or modify this
273 - document under the terms of the GNU Free Documentation License,
274 - Version 1.2 or any later version published by the Free Software
275 - Foundation; with no Invariant Sections, with the Front-Cover Texts
276 - being "A GNU Manual," and with the Back-Cover Texts as in (a)
277 - below. A copy of the license is included in the section entitled
278 - "GNU Free Documentation License."
280 - (a) The FSF's Back-Cover Text is: "You have freedom to copy and
281 - modify this GNU Manual, like GNU software. Copies published by
282 - the Free Software Foundation raise funds for GNU development."
284 -INFO-DIR-SECTION GNU Packages
285 -START-INFO-DIR-ENTRY
286 -* Make: (make). Remake files automatically.
287 -END-INFO-DIR-ENTRY
289 -\x1f
290 -File: make.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)
292 -GNU `make'
293 -**********
295 -This file documents the GNU `make' utility, which determines
296 -automatically which pieces of a large program need to be recompiled,
297 -and issues the commands to recompile them.
299 - This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
300 -Manual', for GNU `make' version 3.81.
302 - Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
303 -1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
304 -Foundation, Inc.
306 - Permission is granted to copy, distribute and/or modify this
307 - document under the terms of the GNU Free Documentation License,
308 - Version 1.2 or any later version published by the Free Software
309 - Foundation; with no Invariant Sections, with the Front-Cover Texts
310 - being "A GNU Manual," and with the Back-Cover Texts as in (a)
311 - below. A copy of the license is included in the section entitled
312 - "GNU Free Documentation License."
314 - (a) The FSF's Back-Cover Text is: "You have freedom to copy and
315 - modify this GNU Manual, like GNU software. Copies published by
316 - the Free Software Foundation raise funds for GNU development."
318 -* Menu:
320 -* Overview:: Overview of `make'.
321 -* Introduction:: An introduction to `make'.
322 -* Makefiles:: Makefiles tell `make' what to do.
323 -* Rules:: Rules describe when a file must be remade.
324 -* Commands:: Commands say how to remake a file.
325 -* Using Variables:: You can use variables to avoid repetition.
326 -* Conditionals:: Use or ignore parts of the makefile based
327 - on the values of variables.
328 -* Functions:: Many powerful ways to manipulate text.
329 -* Invoking make: Running. How to invoke `make' on the command line.
330 -* Implicit Rules:: Use implicit rules to treat many files alike,
331 - based on their file names.
332 -* Archives:: How `make' can update library archives.
333 -* Features:: Features GNU `make' has over other `make's.
334 -* Missing:: What GNU `make' lacks from other `make's.
335 -* Makefile Conventions:: Conventions for writing makefiles for
336 - GNU programs.
337 -* Quick Reference:: A quick reference for experienced users.
338 -* Error Messages:: A list of common errors generated by `make'.
339 -* Complex Makefile:: A real example of a straightforward,
340 - but nontrivial, makefile.
342 -* GNU Free Documentation License:: License for copying this manual
343 -* Concept Index:: Index of Concepts
344 -* Name Index:: Index of Functions, Variables, & Directives
346 - --- The Detailed Node Listing ---
348 -Overview of `make'
350 -* Preparing:: Preparing and Running Make
351 -* Reading:: On Reading this Text
352 -* Bugs:: Problems and Bugs
354 -An Introduction to Makefiles
356 -* Rule Introduction:: What a rule looks like.
357 -* Simple Makefile:: A Simple Makefile
358 -* How Make Works:: How `make' Processes This Makefile
359 -* Variables Simplify:: Variables Make Makefiles Simpler
360 -* make Deduces:: Letting `make' Deduce the Commands
361 -* Combine By Prerequisite:: Another Style of Makefile
362 -* Cleanup:: Rules for Cleaning the Directory
364 -Writing Makefiles
366 -* Makefile Contents:: What makefiles contain.
367 -* Makefile Names:: How to name your makefile.
368 -* Include:: How one makefile can use another makefile.
369 -* MAKEFILES Variable:: The environment can specify extra makefiles.
370 -* MAKEFILE_LIST Variable:: Discover which makefiles have been read.
371 -* Special Variables:: Other special variables.
372 -* Remaking Makefiles:: How makefiles get remade.
373 -* Overriding Makefiles:: How to override part of one makefile
374 - with another makefile.
375 -* Reading Makefiles:: How makefiles are parsed.
376 -* Secondary Expansion:: How and when secondary expansion is performed.
378 -Writing Rules
380 -* Rule Example:: An example explained.
381 -* Rule Syntax:: General syntax explained.
382 -* Prerequisite Types:: There are two types of prerequisites.
383 -* Wildcards:: Using wildcard characters such as `*'.
384 -* Directory Search:: Searching other directories for source files.
385 -* Phony Targets:: Using a target that is not a real file's name.
386 -* Force Targets:: You can use a target without commands
387 - or prerequisites to mark other targets
388 - as phony.
389 -* Empty Targets:: When only the date matters and the
390 - files are empty.
391 -* Special Targets:: Targets with special built-in meanings.
392 -* Multiple Targets:: When to make use of several targets in a rule.
393 -* Multiple Rules:: How to use several rules with the same target.
394 -* Static Pattern:: Static pattern rules apply to multiple targets
395 - and can vary the prerequisites according to
396 - the target name.
397 -* Double-Colon:: How to use a special kind of rule to allow
398 - several independent rules for one target.
399 -* Automatic Prerequisites:: How to automatically generate rules giving
400 - prerequisites from source files themselves.
402 -Using Wildcard Characters in File Names
404 -* Wildcard Examples:: Several examples
405 -* Wildcard Pitfall:: Problems to avoid.
406 -* Wildcard Function:: How to cause wildcard expansion where
407 - it does not normally take place.
409 -Searching Directories for Prerequisites
411 -* General Search:: Specifying a search path that applies
412 - to every prerequisite.
413 -* Selective Search:: Specifying a search path
414 - for a specified class of names.
415 -* Search Algorithm:: When and how search paths are applied.
416 -* Commands/Search:: How to write shell commands that work together
417 - with search paths.
418 -* Implicit/Search:: How search paths affect implicit rules.
419 -* Libraries/Search:: Directory search for link libraries.
421 -Static Pattern Rules
423 -* Static Usage:: The syntax of static pattern rules.
424 -* Static versus Implicit:: When are they better than implicit rules?
426 -Writing the Commands in Rules
428 -* Command Syntax:: Command syntax features and pitfalls.
429 -* Echoing:: How to control when commands are echoed.
430 -* Execution:: How commands are executed.
431 -* Parallel:: How commands can be executed in parallel.
432 -* Errors:: What happens after a command execution error.
433 -* Interrupts:: What happens when a command is interrupted.
434 -* Recursion:: Invoking `make' from makefiles.
435 -* Sequences:: Defining canned sequences of commands.
436 -* Empty Commands:: Defining useful, do-nothing commands.
438 -Command Syntax
440 -* Splitting Lines:: Breaking long command lines for readability.
441 -* Variables in Commands:: Using `make' variables in commands.
443 -Command Execution
445 -* Choosing the Shell:: How `make' chooses the shell used
446 - to run commands.
448 -Recursive Use of `make'
450 -* MAKE Variable:: The special effects of using `$(MAKE)'.
451 -* Variables/Recursion:: How to communicate variables to a sub-`make'.
452 -* Options/Recursion:: How to communicate options to a sub-`make'.
453 -* -w Option:: How the `-w' or `--print-directory' option
454 - helps debug use of recursive `make' commands.
456 -How to Use Variables
458 -* Reference:: How to use the value of a variable.
459 -* Flavors:: Variables come in two flavors.
460 -* Advanced:: Advanced features for referencing a variable.
461 -* Values:: All the ways variables get their values.
462 -* Setting:: How to set a variable in the makefile.
463 -* Appending:: How to append more text to the old value
464 - of a variable.
465 -* Override Directive:: How to set a variable in the makefile even if
466 - the user has set it with a command argument.
467 -* Defining:: An alternate way to set a variable
468 - to a verbatim string.
469 -* Environment:: Variable values can come from the environment.
470 -* Target-specific:: Variable values can be defined on a per-target
471 - basis.
472 -* Pattern-specific:: Target-specific variable values can be applied
473 - to a group of targets that match a pattern.
475 -Advanced Features for Reference to Variables
477 -* Substitution Refs:: Referencing a variable with
478 - substitutions on the value.
479 -* Computed Names:: Computing the name of the variable to refer to.
481 -Conditional Parts of Makefiles
483 -* Conditional Example:: Example of a conditional
484 -* Conditional Syntax:: The syntax of conditionals.
485 -* Testing Flags:: Conditionals that test flags.
487 -Functions for Transforming Text
489 -* Syntax of Functions:: How to write a function call.
490 -* Text Functions:: General-purpose text manipulation functions.
491 -* File Name Functions:: Functions for manipulating file names.
492 -* Conditional Functions:: Functions that implement conditions.
493 -* Foreach Function:: Repeat some text with controlled variation.
494 -* Call Function:: Expand a user-defined function.
495 -* Value Function:: Return the un-expanded value of a variable.
496 -* Eval Function:: Evaluate the arguments as makefile syntax.
497 -* Origin Function:: Find where a variable got its value.
498 -* Flavor Function:: Find out the flavor of a variable.
499 -* Shell Function:: Substitute the output of a shell command.
500 -* Make Control Functions:: Functions that control how make runs.
502 -How to Run `make'
504 -* Makefile Arguments:: How to specify which makefile to use.
505 -* Goals:: How to use goal arguments to specify which
506 - parts of the makefile to use.
507 -* Instead of Execution:: How to use mode flags to specify what
508 - kind of thing to do with the commands
509 - in the makefile other than simply
510 - execute them.
511 -* Avoiding Compilation:: How to avoid recompiling certain files.
512 -* Overriding:: How to override a variable to specify
513 - an alternate compiler and other things.
514 -* Testing:: How to proceed past some errors, to
515 - test compilation.
516 -* Options Summary:: Summary of Options
518 -Using Implicit Rules
520 -* Using Implicit:: How to use an existing implicit rule
521 - to get the commands for updating a file.
522 -* Catalogue of Rules:: A list of built-in implicit rules.
523 -* Implicit Variables:: How to change what predefined rules do.
524 -* Chained Rules:: How to use a chain of implicit rules.
525 -* Pattern Rules:: How to define new implicit rules.
526 -* Last Resort:: How to define commands for rules which
527 - cannot find any.
528 -* Suffix Rules:: The old-fashioned style of implicit rule.
529 -* Implicit Rule Search:: The precise algorithm for applying
530 - implicit rules.
532 -Defining and Redefining Pattern Rules
534 -* Pattern Intro:: An introduction to pattern rules.
535 -* Pattern Examples:: Examples of pattern rules.
536 -* Automatic Variables:: How to use automatic variables in the
537 - commands of implicit rules.
538 -* Pattern Match:: How patterns match.
539 -* Match-Anything Rules:: Precautions you should take prior to
540 - defining rules that can match any
541 - target file whatever.
542 -* Canceling Rules:: How to override or cancel built-in rules.
544 -Using `make' to Update Archive Files
546 -* Archive Members:: Archive members as targets.
547 -* Archive Update:: The implicit rule for archive member targets.
548 -* Archive Pitfalls:: Dangers to watch out for when using archives.
549 -* Archive Suffix Rules:: You can write a special kind of suffix rule
550 - for updating archives.
552 -Implicit Rule for Archive Member Targets
554 -* Archive Symbols:: How to update archive symbol directories.
556 -\x1f
557 -File: make.info, Node: Overview, Next: Introduction, Prev: Top, Up: Top
559 -1 Overview of `make'
560 -********************
562 -The `make' utility automatically determines which pieces of a large
563 -program need to be recompiled, and issues commands to recompile them.
564 -This manual describes GNU `make', which was implemented by Richard
565 -Stallman and Roland McGrath. Development since Version 3.76 has been
566 -handled by Paul D. Smith.
568 - GNU `make' conforms to section 6.2 of `IEEE Standard 1003.2-1992'
569 -(POSIX.2).
571 - Our examples show C programs, since they are most common, but you
572 -can use `make' with any programming language whose compiler can be run
573 -with a shell command. Indeed, `make' is not limited to programs. You
574 -can use it to describe any task where some files must be updated
575 -automatically from others whenever the others change.
577 -* Menu:
579 -* Preparing:: Preparing and Running Make
580 -* Reading:: On Reading this Text
581 -* Bugs:: Problems and Bugs
583 -\x1f
584 -File: make.info, Node: Preparing, Next: Reading, Prev: Overview, Up: Overview
586 -Preparing and Running Make
587 -==========================
589 - To prepare to use `make', you must write a file called the
590 -"makefile" that describes the relationships among files in your program
591 -and provides commands for updating each file. In a program, typically,
592 -the executable file is updated from object files, which are in turn
593 -made by compiling source files.
595 - Once a suitable makefile exists, each time you change some source
596 -files, this simple shell command:
598 - make
600 -suffices to perform all necessary recompilations. The `make' program
601 -uses the makefile data base and the last-modification times of the
602 -files to decide which of the files need to be updated. For each of
603 -those files, it issues the commands recorded in the data base.
605 - You can provide command line arguments to `make' to control which
606 -files should be recompiled, or how. *Note How to Run `make': Running.
608 -\x1f
609 -File: make.info, Node: Reading, Next: Bugs, Prev: Preparing, Up: Overview
611 -1.1 How to Read This Manual
612 -===========================
614 -If you are new to `make', or are looking for a general introduction,
615 -read the first few sections of each chapter, skipping the later
616 -sections. In each chapter, the first few sections contain introductory
617 -or general information and the later sections contain specialized or
618 -technical information. The exception is the second chapter, *Note An
619 -Introduction to Makefiles: Introduction, all of which is introductory.
621 - If you are familiar with other `make' programs, see *Note Features
622 -of GNU `make': Features, which lists the enhancements GNU `make' has,
623 -and *Note Incompatibilities and Missing Features: Missing, which
624 -explains the few things GNU `make' lacks that others have.
626 - For a quick summary, see *Note Options Summary::, *Note Quick
627 -Reference::, and *Note Special Targets::.
629 -\x1f
630 -File: make.info, Node: Bugs, Prev: Reading, Up: Overview
632 -1.2 Problems and Bugs
633 -=====================
635 -If you have problems with GNU `make' or think you've found a bug,
636 -please report it to the developers; we cannot promise to do anything but
637 -we might well want to fix it.
639 - Before reporting a bug, make sure you've actually found a real bug.
640 -Carefully reread the documentation and see if it really says you can do
641 -what you're trying to do. If it's not clear whether you should be able
642 -to do something or not, report that too; it's a bug in the
643 -documentation!
645 - Before reporting a bug or trying to fix it yourself, try to isolate
646 -it to the smallest possible makefile that reproduces the problem. Then
647 -send us the makefile and the exact results `make' gave you, including
648 -any error or warning messages. Please don't paraphrase these messages:
649 -it's best to cut and paste them into your report. When generating this
650 -small makefile, be sure to not use any non-free or unusual tools in
651 -your commands: you can almost always emulate what such a tool would do
652 -with simple shell commands. Finally, be sure to explain what you
653 -expected to occur; this will help us decide whether the problem was
654 -really in the documentation.
656 - Once you have a precise problem you can report it in one of two ways.
657 -Either send electronic mail to:
659 - bug-make@gnu.org
661 -or use our Web-based project management tool, at:
663 - http://savannah.gnu.org/projects/make/
665 -In addition to the information above, please be careful to include the
666 -version number of `make' you are using. You can get this information
667 -with the command `make --version'. Be sure also to include the type of
668 -machine and operating system you are using. One way to obtain this
669 -information is by looking at the final lines of output from the command
670 -`make --help'.
672 -\x1f
673 -File: make.info, Node: Introduction, Next: Makefiles, Prev: Overview, Up: Top
675 -2 An Introduction to Makefiles
676 -******************************
678 -You need a file called a "makefile" to tell `make' what to do. Most
679 -often, the makefile tells `make' how to compile and link a program.
681 - In this chapter, we will discuss a simple makefile that describes
682 -how to compile and link a text editor which consists of eight C source
683 -files and three header files. The makefile can also tell `make' how to
684 -run miscellaneous commands when explicitly asked (for example, to remove
685 -certain files as a clean-up operation). To see a more complex example
686 -of a makefile, see *Note Complex Makefile::.
688 - When `make' recompiles the editor, each changed C source file must
689 -be recompiled. If a header file has changed, each C source file that
690 -includes the header file must be recompiled to be safe. Each
691 -compilation produces an object file corresponding to the source file.
692 -Finally, if any source file has been recompiled, all the object files,
693 -whether newly made or saved from previous compilations, must be linked
694 -together to produce the new executable editor.
696 -* Menu:
698 -* Rule Introduction:: What a rule looks like.
699 -* Simple Makefile:: A Simple Makefile
700 -* How Make Works:: How `make' Processes This Makefile
701 -* Variables Simplify:: Variables Make Makefiles Simpler
702 -* make Deduces:: Letting `make' Deduce the Commands
703 -* Combine By Prerequisite:: Another Style of Makefile
704 -* Cleanup:: Rules for Cleaning the Directory
706 -\x1f
707 -File: make.info, Node: Rule Introduction, Next: Simple Makefile, Prev: Introduction, Up: Introduction
709 -2.1 What a Rule Looks Like
710 -==========================
712 -A simple makefile consists of "rules" with the following shape:
714 - TARGET ... : PREREQUISITES ...
715 - COMMAND
716 - ...
717 - ...
719 - A "target" is usually the name of a file that is generated by a
720 -program; examples of targets are executable or object files. A target
721 -can also be the name of an action to carry out, such as `clean' (*note
722 -Phony Targets::).
724 - A "prerequisite" is a file that is used as input to create the
725 -target. A target often depends on several files.
727 - A "command" is an action that `make' carries out. A rule may have
728 -more than one command, each on its own line. *Please note:* you need
729 -to put a tab character at the beginning of every command line! This is
730 -an obscurity that catches the unwary.
732 - Usually a command is in a rule with prerequisites and serves to
733 -create a target file if any of the prerequisites change. However, the
734 -rule that specifies commands for the target need not have
735 -prerequisites. For example, the rule containing the delete command
736 -associated with the target `clean' does not have prerequisites.
738 - A "rule", then, explains how and when to remake certain files which
739 -are the targets of the particular rule. `make' carries out the
740 -commands on the prerequisites to create or update the target. A rule
741 -can also explain how and when to carry out an action. *Note Writing
742 -Rules: Rules.
744 - A makefile may contain other text besides rules, but a simple
745 -makefile need only contain rules. Rules may look somewhat more
746 -complicated than shown in this template, but all fit the pattern more
747 -or less.
749 -\x1f
750 -File: make.info, Node: Simple Makefile, Next: How Make Works, Prev: Rule Introduction, Up: Introduction
752 -2.2 A Simple Makefile
753 -=====================
755 -Here is a straightforward makefile that describes the way an executable
756 -file called `edit' depends on eight object files which, in turn, depend
757 -on eight C source and three header files.
759 - In this example, all the C files include `defs.h', but only those
760 -defining editing commands include `command.h', and only low level files
761 -that change the editor buffer include `buffer.h'.
763 - edit : main.o kbd.o command.o display.o \
764 - insert.o search.o files.o utils.o
765 - cc -o edit main.o kbd.o command.o display.o \
766 - insert.o search.o files.o utils.o
768 - main.o : main.c defs.h
769 - cc -c main.c
770 - kbd.o : kbd.c defs.h command.h
771 - cc -c kbd.c
772 - command.o : command.c defs.h command.h
773 - cc -c command.c
774 - display.o : display.c defs.h buffer.h
775 - cc -c display.c
776 - insert.o : insert.c defs.h buffer.h
777 - cc -c insert.c
778 - search.o : search.c defs.h buffer.h
779 - cc -c search.c
780 - files.o : files.c defs.h buffer.h command.h
781 - cc -c files.c
782 - utils.o : utils.c defs.h
783 - cc -c utils.c
784 - clean :
785 - rm edit main.o kbd.o command.o display.o \
786 - insert.o search.o files.o utils.o
788 -We split each long line into two lines using backslash-newline; this is
789 -like using one long line, but is easier to read.
791 - To use this makefile to create the executable file called `edit',
792 -type:
794 - make
796 - To use this makefile to delete the executable file and all the object
797 -files from the directory, type:
799 - make clean
801 - In the example makefile, the targets include the executable file
802 -`edit', and the object files `main.o' and `kbd.o'. The prerequisites
803 -are files such as `main.c' and `defs.h'. In fact, each `.o' file is
804 -both a target and a prerequisite. Commands include `cc -c main.c' and
805 -`cc -c kbd.c'.
807 - When a target is a file, it needs to be recompiled or relinked if any
808 -of its prerequisites change. In addition, any prerequisites that are
809 -themselves automatically generated should be updated first. In this
810 -example, `edit' depends on each of the eight object files; the object
811 -file `main.o' depends on the source file `main.c' and on the header
812 -file `defs.h'.
814 - A shell command follows each line that contains a target and
815 -prerequisites. These shell commands say how to update the target file.
816 -A tab character must come at the beginning of every command line to
817 -distinguish command lines from other lines in the makefile. (Bear in
818 -mind that `make' does not know anything about how the commands work.
819 -It is up to you to supply commands that will update the target file
820 -properly. All `make' does is execute the commands in the rule you have
821 -specified when the target file needs to be updated.)
823 - The target `clean' is not a file, but merely the name of an action.
824 -Since you normally do not want to carry out the actions in this rule,
825 -`clean' is not a prerequisite of any other rule. Consequently, `make'
826 -never does anything with it unless you tell it specifically. Note that
827 -this rule not only is not a prerequisite, it also does not have any
828 -prerequisites, so the only purpose of the rule is to run the specified
829 -commands. Targets that do not refer to files but are just actions are
830 -called "phony targets". *Note Phony Targets::, for information about
831 -this kind of target. *Note Errors in Commands: Errors, to see how to
832 -cause `make' to ignore errors from `rm' or any other command.
834 -\x1f
835 -File: make.info, Node: How Make Works, Next: Variables Simplify, Prev: Simple Makefile, Up: Introduction
837 -2.3 How `make' Processes a Makefile
838 -===================================
840 -By default, `make' starts with the first target (not targets whose
841 -names start with `.'). This is called the "default goal". ("Goals"
842 -are the targets that `make' strives ultimately to update. You can
843 -override this behavior using the command line (*note Arguments to
844 -Specify the Goals: Goals.) or with the `.DEFAULT_GOAL' special variable
845 -(*note Other Special Variables: Special Variables.).
847 - In the simple example of the previous section, the default goal is to
848 -update the executable program `edit'; therefore, we put that rule first.
850 - Thus, when you give the command:
852 - make
854 -`make' reads the makefile in the current directory and begins by
855 -processing the first rule. In the example, this rule is for relinking
856 -`edit'; but before `make' can fully process this rule, it must process
857 -the rules for the files that `edit' depends on, which in this case are
858 -the object files. Each of these files is processed according to its
859 -own rule. These rules say to update each `.o' file by compiling its
860 -source file. The recompilation must be done if the source file, or any
861 -of the header files named as prerequisites, is more recent than the
862 -object file, or if the object file does not exist.
864 - The other rules are processed because their targets appear as
865 -prerequisites of the goal. If some other rule is not depended on by the
866 -goal (or anything it depends on, etc.), that rule is not processed,
867 -unless you tell `make' to do so (with a command such as `make clean').
869 - Before recompiling an object file, `make' considers updating its
870 -prerequisites, the source file and header files. This makefile does not
871 -specify anything to be done for them--the `.c' and `.h' files are not
872 -the targets of any rules--so `make' does nothing for these files. But
873 -`make' would update automatically generated C programs, such as those
874 -made by Bison or Yacc, by their own rules at this time.
876 - After recompiling whichever object files need it, `make' decides
877 -whether to relink `edit'. This must be done if the file `edit' does
878 -not exist, or if any of the object files are newer than it. If an
879 -object file was just recompiled, it is now newer than `edit', so `edit'
880 -is relinked.
882 - Thus, if we change the file `insert.c' and run `make', `make' will
883 -compile that file to update `insert.o', and then link `edit'. If we
884 -change the file `command.h' and run `make', `make' will recompile the
885 -object files `kbd.o', `command.o' and `files.o' and then link the file
886 -`edit'.
888 -\x1f
889 -File: make.info, Node: Variables Simplify, Next: make Deduces, Prev: How Make Works, Up: Introduction
891 -2.4 Variables Make Makefiles Simpler
892 -====================================
894 -In our example, we had to list all the object files twice in the rule
895 -for `edit' (repeated here):
897 - edit : main.o kbd.o command.o display.o \
898 - insert.o search.o files.o utils.o
899 - cc -o edit main.o kbd.o command.o display.o \
900 - insert.o search.o files.o utils.o
902 - Such duplication is error-prone; if a new object file is added to the
903 -system, we might add it to one list and forget the other. We can
904 -eliminate the risk and simplify the makefile by using a variable.
905 -"Variables" allow a text string to be defined once and substituted in
906 -multiple places later (*note How to Use Variables: Using Variables.).
908 - It is standard practice for every makefile to have a variable named
909 -`objects', `OBJECTS', `objs', `OBJS', `obj', or `OBJ' which is a list
910 -of all object file names. We would define such a variable `objects'
911 -with a line like this in the makefile:
913 - objects = main.o kbd.o command.o display.o \
914 - insert.o search.o files.o utils.o
916 -Then, each place we want to put a list of the object file names, we can
917 -substitute the variable's value by writing `$(objects)' (*note How to
918 -Use Variables: Using Variables.).
920 - Here is how the complete simple makefile looks when you use a
921 -variable for the object files:
923 - objects = main.o kbd.o command.o display.o \
924 - insert.o search.o files.o utils.o
926 - edit : $(objects)
927 - cc -o edit $(objects)
928 - main.o : main.c defs.h
929 - cc -c main.c
930 - kbd.o : kbd.c defs.h command.h
931 - cc -c kbd.c
932 - command.o : command.c defs.h command.h
933 - cc -c command.c
934 - display.o : display.c defs.h buffer.h
935 - cc -c display.c
936 - insert.o : insert.c defs.h buffer.h
937 - cc -c insert.c
938 - search.o : search.c defs.h buffer.h
939 - cc -c search.c
940 - files.o : files.c defs.h buffer.h command.h
941 - cc -c files.c
942 - utils.o : utils.c defs.h
943 - cc -c utils.c
944 - clean :
945 - rm edit $(objects)
947 -\x1f
948 -File: make.info, Node: make Deduces, Next: Combine By Prerequisite, Prev: Variables Simplify, Up: Introduction
950 -2.5 Letting `make' Deduce the Commands
951 -======================================
953 -It is not necessary to spell out the commands for compiling the
954 -individual C source files, because `make' can figure them out: it has an
955 -"implicit rule" for updating a `.o' file from a correspondingly named
956 -`.c' file using a `cc -c' command. For example, it will use the
957 -command `cc -c main.c -o main.o' to compile `main.c' into `main.o'. We
958 -can therefore omit the commands from the rules for the object files.
959 -*Note Using Implicit Rules: Implicit Rules.
961 - When a `.c' file is used automatically in this way, it is also
962 -automatically added to the list of prerequisites. We can therefore omit
963 -the `.c' files from the prerequisites, provided we omit the commands.
965 - Here is the entire example, with both of these changes, and a
966 -variable `objects' as suggested above:
968 - objects = main.o kbd.o command.o display.o \
969 - insert.o search.o files.o utils.o
971 - edit : $(objects)
972 - cc -o edit $(objects)
974 - main.o : defs.h
975 - kbd.o : defs.h command.h
976 - command.o : defs.h command.h
977 - display.o : defs.h buffer.h
978 - insert.o : defs.h buffer.h
979 - search.o : defs.h buffer.h
980 - files.o : defs.h buffer.h command.h
981 - utils.o : defs.h
983 - .PHONY : clean
984 - clean :
985 - rm edit $(objects)
987 -This is how we would write the makefile in actual practice. (The
988 -complications associated with `clean' are described elsewhere. See
989 -*Note Phony Targets::, and *Note Errors in Commands: Errors.)
991 - Because implicit rules are so convenient, they are important. You
992 -will see them used frequently.
994 -\x1f
995 -File: make.info, Node: Combine By Prerequisite, Next: Cleanup, Prev: make Deduces, Up: Introduction
997 -2.6 Another Style of Makefile
998 -=============================
1000 -When the objects of a makefile are created only by implicit rules, an
1001 -alternative style of makefile is possible. In this style of makefile,
1002 -you group entries by their prerequisites instead of by their targets.
1003 -Here is what one looks like:
1005 - objects = main.o kbd.o command.o display.o \
1006 - insert.o search.o files.o utils.o
1008 - edit : $(objects)
1009 - cc -o edit $(objects)
1011 - $(objects) : defs.h
1012 - kbd.o command.o files.o : command.h
1013 - display.o insert.o search.o files.o : buffer.h
1015 -Here `defs.h' is given as a prerequisite of all the object files;
1016 -`command.h' and `buffer.h' are prerequisites of the specific object
1017 -files listed for them.
1019 - Whether this is better is a matter of taste: it is more compact, but
1020 -some people dislike it because they find it clearer to put all the
1021 -information about each target in one place.
1023 -\x1f
1024 -File: make.info, Node: Cleanup, Prev: Combine By Prerequisite, Up: Introduction
1026 -2.7 Rules for Cleaning the Directory
1027 -====================================
1029 -Compiling a program is not the only thing you might want to write rules
1030 -for. Makefiles commonly tell how to do a few other things besides
1031 -compiling a program: for example, how to delete all the object files
1032 -and executables so that the directory is `clean'.
1034 - Here is how we could write a `make' rule for cleaning our example
1035 -editor:
1037 - clean:
1038 - rm edit $(objects)
1040 - In practice, we might want to write the rule in a somewhat more
1041 -complicated manner to handle unanticipated situations. We would do
1042 -this:
1044 - .PHONY : clean
1045 - clean :
1046 - -rm edit $(objects)
1048 -This prevents `make' from getting confused by an actual file called
1049 -`clean' and causes it to continue in spite of errors from `rm'. (See
1050 -*Note Phony Targets::, and *Note Errors in Commands: Errors.)
1052 -A rule such as this should not be placed at the beginning of the
1053 -makefile, because we do not want it to run by default! Thus, in the
1054 -example makefile, we want the rule for `edit', which recompiles the
1055 -editor, to remain the default goal.
1057 - Since `clean' is not a prerequisite of `edit', this rule will not
1058 -run at all if we give the command `make' with no arguments. In order
1059 -to make the rule run, we have to type `make clean'. *Note How to Run
1060 -`make': Running.
1062 -\x1f
1063 -File: make.info, Node: Makefiles, Next: Rules, Prev: Introduction, Up: Top
1065 -3 Writing Makefiles
1066 -*******************
1068 -The information that tells `make' how to recompile a system comes from
1069 -reading a data base called the "makefile".
1071 -* Menu:
1073 -* Makefile Contents:: What makefiles contain.
1074 -* Makefile Names:: How to name your makefile.
1075 -* Include:: How one makefile can use another makefile.
1076 -* MAKEFILES Variable:: The environment can specify extra makefiles.
1077 -* MAKEFILE_LIST Variable:: Discover which makefiles have been read.
1078 -* Special Variables:: Other special variables.
1079 -* Remaking Makefiles:: How makefiles get remade.
1080 -* Overriding Makefiles:: How to override part of one makefile
1081 - with another makefile.
1082 -* Reading Makefiles:: How makefiles are parsed.
1083 -* Secondary Expansion:: How and when secondary expansion is performed.
1085 -\x1f
1086 -File: make.info, Node: Makefile Contents, Next: Makefile Names, Prev: Makefiles, Up: Makefiles
1088 -3.1 What Makefiles Contain
1089 -==========================
1091 -Makefiles contain five kinds of things: "explicit rules", "implicit
1092 -rules", "variable definitions", "directives", and "comments". Rules,
1093 -variables, and directives are described at length in later chapters.
1095 - * An "explicit rule" says when and how to remake one or more files,
1096 - called the rule's "targets". It lists the other files that the
1097 - targets depend on, called the "prerequisites" of the target, and
1098 - may also give commands to use to create or update the targets.
1099 - *Note Writing Rules: Rules.
1101 - * An "implicit rule" says when and how to remake a class of files
1102 - based on their names. It describes how a target may depend on a
1103 - file with a name similar to the target and gives commands to
1104 - create or update such a target. *Note Using Implicit Rules:
1105 - Implicit Rules.
1107 - * A "variable definition" is a line that specifies a text string
1108 - value for a variable that can be substituted into the text later.
1109 - The simple makefile example shows a variable definition for
1110 - `objects' as a list of all object files (*note Variables Make
1111 - Makefiles Simpler: Variables Simplify.).
1113 - * A "directive" is a command for `make' to do something special while
1114 - reading the makefile. These include:
1116 - * Reading another makefile (*note Including Other Makefiles:
1117 - Include.).
1119 - * Deciding (based on the values of variables) whether to use or
1120 - ignore a part of the makefile (*note Conditional Parts of
1121 - Makefiles: Conditionals.).
1123 - * Defining a variable from a verbatim string containing
1124 - multiple lines (*note Defining Variables Verbatim: Defining.).
1126 - * `#' in a line of a makefile starts a "comment". It and the rest
1127 - of the line are ignored, except that a trailing backslash not
1128 - escaped by another backslash will continue the comment across
1129 - multiple lines. A line containing just a comment (with perhaps
1130 - spaces before it) is effectively blank, and is ignored. If you
1131 - want a literal `#', escape it with a backslash (e.g., `\#').
1132 - Comments may appear on any line in the makefile, although they are
1133 - treated specially in certain situations.
1135 - Within a command script (if the line begins with a TAB character)
1136 - the entire line is passed to the shell, just as with any other
1137 - line that begins with a TAB. The shell decides how to interpret
1138 - the text: whether or not this is a comment is up to the shell.
1140 - Within a `define' directive, comments are not ignored during the
1141 - definition of the variable, but rather kept intact in the value of
1142 - the variable. When the variable is expanded they will either be
1143 - treated as `make' comments or as command script text, depending on
1144 - the context in which the variable is evaluated.
1146 -\x1f
1147 -File: make.info, Node: Makefile Names, Next: Include, Prev: Makefile Contents, Up: Makefiles
1149 -3.2 What Name to Give Your Makefile
1150 -===================================
1152 -By default, when `make' looks for the makefile, it tries the following
1153 -names, in order: `GNUmakefile', `makefile' and `Makefile'.
1155 - Normally you should call your makefile either `makefile' or
1156 -`Makefile'. (We recommend `Makefile' because it appears prominently
1157 -near the beginning of a directory listing, right near other important
1158 -files such as `README'.) The first name checked, `GNUmakefile', is not
1159 -recommended for most makefiles. You should use this name if you have a
1160 -makefile that is specific to GNU `make', and will not be understood by
1161 -other versions of `make'. Other `make' programs look for `makefile' and
1162 -`Makefile', but not `GNUmakefile'.
1164 - If `make' finds none of these names, it does not use any makefile.
1165 -Then you must specify a goal with a command argument, and `make' will
1166 -attempt to figure out how to remake it using only its built-in implicit
1167 -rules. *Note Using Implicit Rules: Implicit Rules.
1169 - If you want to use a nonstandard name for your makefile, you can
1170 -specify the makefile name with the `-f' or `--file' option. The
1171 -arguments `-f NAME' or `--file=NAME' tell `make' to read the file NAME
1172 -as the makefile. If you use more than one `-f' or `--file' option, you
1173 -can specify several makefiles. All the makefiles are effectively
1174 -concatenated in the order specified. The default makefile names
1175 -`GNUmakefile', `makefile' and `Makefile' are not checked automatically
1176 -if you specify `-f' or `--file'.
1178 -\x1f
1179 -File: make.info, Node: Include, Next: MAKEFILES Variable, Prev: Makefile Names, Up: Makefiles
1181 -3.3 Including Other Makefiles
1182 -=============================
1184 -The `include' directive tells `make' to suspend reading the current
1185 -makefile and read one or more other makefiles before continuing. The
1186 -directive is a line in the makefile that looks like this:
1188 - include FILENAMES...
1190 -FILENAMES can contain shell file name patterns. If FILENAMES is empty,
1191 -nothing is included and no error is printed.
1193 - Extra spaces are allowed and ignored at the beginning of the line,
1194 -but a tab is not allowed. (If the line begins with a tab, it will be
1195 -considered a command line.) Whitespace is required between `include'
1196 -and the file names, and between file names; extra whitespace is ignored
1197 -there and at the end of the directive. A comment starting with `#' is
1198 -allowed at the end of the line. If the file names contain any variable
1199 -or function references, they are expanded. *Note How to Use Variables:
1200 -Using Variables.
1202 - For example, if you have three `.mk' files, `a.mk', `b.mk', and
1203 -`c.mk', and `$(bar)' expands to `bish bash', then the following
1204 -expression
1206 - include foo *.mk $(bar)
1208 - is equivalent to
1210 - include foo a.mk b.mk c.mk bish bash
1212 - When `make' processes an `include' directive, it suspends reading of
1213 -the containing makefile and reads from each listed file in turn. When
1214 -that is finished, `make' resumes reading the makefile in which the
1215 -directive appears.
1217 - One occasion for using `include' directives is when several programs,
1218 -handled by individual makefiles in various directories, need to use a
1219 -common set of variable definitions (*note Setting Variables: Setting.)
1220 -or pattern rules (*note Defining and Redefining Pattern Rules: Pattern
1221 -Rules.).
1223 - Another such occasion is when you want to generate prerequisites from
1224 -source files automatically; the prerequisites can be put in a file that
1225 -is included by the main makefile. This practice is generally cleaner
1226 -than that of somehow appending the prerequisites to the end of the main
1227 -makefile as has been traditionally done with other versions of `make'.
1228 -*Note Automatic Prerequisites::.
1230 - If the specified name does not start with a slash, and the file is
1231 -not found in the current directory, several other directories are
1232 -searched. First, any directories you have specified with the `-I' or
1233 -`--include-dir' option are searched (*note Summary of Options: Options
1234 -Summary.). Then the following directories (if they exist) are
1235 -searched, in this order: `PREFIX/include' (normally `/usr/local/include'
1236 -(1)) `/usr/gnu/include', `/usr/local/include', `/usr/include'.
1238 - If an included makefile cannot be found in any of these directories,
1239 -a warning message is generated, but it is not an immediately fatal
1240 -error; processing of the makefile containing the `include' continues.
1241 -Once it has finished reading makefiles, `make' will try to remake any
1242 -that are out of date or don't exist. *Note How Makefiles Are Remade:
1243 -Remaking Makefiles. Only after it has tried to find a way to remake a
1244 -makefile and failed, will `make' diagnose the missing makefile as a
1245 -fatal error.
1247 - If you want `make' to simply ignore a makefile which does not exist
1248 -and cannot be remade, with no error message, use the `-include'
1249 -directive instead of `include', like this:
1251 - -include FILENAMES...
1253 - This acts like `include' in every way except that there is no error
1254 -(not even a warning) if any of the FILENAMES do not exist. For
1255 -compatibility with some other `make' implementations, `sinclude' is
1256 -another name for `-include'.
1258 - ---------- Footnotes ----------
1260 - (1) GNU Make compiled for MS-DOS and MS-Windows behaves as if PREFIX
1261 -has been defined to be the root of the DJGPP tree hierarchy.
1263 -\x1f
1264 -File: make.info, Node: MAKEFILES Variable, Next: MAKEFILE_LIST Variable, Prev: Include, Up: Makefiles
1266 -3.4 The Variable `MAKEFILES'
1267 -============================
1269 -If the environment variable `MAKEFILES' is defined, `make' considers
1270 -its value as a list of names (separated by whitespace) of additional
1271 -makefiles to be read before the others. This works much like the
1272 -`include' directive: various directories are searched for those files
1273 -(*note Including Other Makefiles: Include.). In addition, the default
1274 -goal is never taken from one of these makefiles and it is not an error
1275 -if the files listed in `MAKEFILES' are not found.
1277 - The main use of `MAKEFILES' is in communication between recursive
1278 -invocations of `make' (*note Recursive Use of `make': Recursion.). It
1279 -usually is not desirable to set the environment variable before a
1280 -top-level invocation of `make', because it is usually better not to
1281 -mess with a makefile from outside. However, if you are running `make'
1282 -without a specific makefile, a makefile in `MAKEFILES' can do useful
1283 -things to help the built-in implicit rules work better, such as
1284 -defining search paths (*note Directory Search::).
1286 - Some users are tempted to set `MAKEFILES' in the environment
1287 -automatically on login, and program makefiles to expect this to be done.
1288 -This is a very bad idea, because such makefiles will fail to work if
1289 -run by anyone else. It is much better to write explicit `include'
1290 -directives in the makefiles. *Note Including Other Makefiles: Include.
1292 -\x1f
1293 -File: make.info, Node: MAKEFILE_LIST Variable, Next: Special Variables, Prev: MAKEFILES Variable, Up: Makefiles
1295 -3.5 The Variable `MAKEFILE_LIST'
1296 -================================
1298 -As `make' reads various makefiles, including any obtained from the
1299 -`MAKEFILES' variable, the command line, the default files, or from
1300 -`include' directives, their names will be automatically appended to the
1301 -`MAKEFILE_LIST' variable. They are added right before `make' begins to
1302 -parse them.
1304 - This means that if the first thing a makefile does is examine the
1305 -last word in this variable, it will be the name of the current makefile.
1306 -Once the current makefile has used `include', however, the last word
1307 -will be the just-included makefile.
1309 - If a makefile named `Makefile' has this content:
1311 - name1 := $(lastword $(MAKEFILE_LIST))
1313 - include inc.mk
1315 - name2 := $(lastword $(MAKEFILE_LIST))
1317 - all:
1318 - @echo name1 = $(name1)
1319 - @echo name2 = $(name2)
1321 -then you would expect to see this output:
1323 - name1 = Makefile
1324 - name2 = inc.mk
1326 - *Note Text Functions::, for more information on the `word' and
1327 -`words' functions used above. *Note The Two Flavors of Variables:
1328 -Flavors, for more information on simply-expanded (`:=') variable
1329 -definitions.
1331 -\x1f
1332 -File: make.info, Node: Special Variables, Next: Remaking Makefiles, Prev: MAKEFILE_LIST Variable, Up: Makefiles
1334 -3.6 Other Special Variables
1335 -===========================
1337 -GNU `make' also supports other special variables. Unless otherwise
1338 -documented here, these values lose their special properties if they are
1339 -set by a makefile or on the command line.
1341 -`.DEFAULT_GOAL'
1342 - Sets the default goal to be used if no targets were specified on
1343 - the command line (*note Arguments to Specify the Goals: Goals.).
1344 - The `.DEFAULT_GOAL' variable allows you to discover the current
1345 - default goal, restart the default goal selection algorithm by
1346 - clearing its value, or to explicitly set the default goal. The
1347 - following example illustrates these cases:
1349 - # Query the default goal.
1350 - ifeq ($(.DEFAULT_GOAL),)
1351 - $(warning no default goal is set)
1352 - endif
1354 - .PHONY: foo
1355 - foo: ; @echo $@
1357 - $(warning default goal is $(.DEFAULT_GOAL))
1359 - # Reset the default goal.
1360 - .DEFAULT_GOAL :=
1362 - .PHONY: bar
1363 - bar: ; @echo $@
1365 - $(warning default goal is $(.DEFAULT_GOAL))
1367 - # Set our own.
1368 - .DEFAULT_GOAL := foo
1370 - This makefile prints:
1372 - no default goal is set
1373 - default goal is foo
1374 - default goal is bar
1375 - foo
1377 - Note that assigning more than one target name to `.DEFAULT_GOAL' is
1378 - illegal and will result in an error.
1380 -`MAKE_RESTARTS'
1381 - This variable is set only if this instance of `make' has restarted
1382 - (*note How Makefiles Are Remade: Remaking Makefiles.): it will
1383 - contain the number of times this instance has restarted. Note
1384 - this is not the same as recursion (counted by the `MAKELEVEL'
1385 - variable). You should not set, modify, or export this variable.
1387 -`.VARIABLES'
1388 - Expands to a list of the _names_ of all global variables defined
1389 - so far. This includes variables which have empty values, as well
1390 - as built-in variables (*note Variables Used by Implicit Rules:
1391 - Implicit Variables.), but does not include any variables which are
1392 - only defined in a target-specific context. Note that any value
1393 - you assign to this variable will be ignored; it will always return
1394 - its special value.
1396 -`.FEATURES'
1397 - Expands to a list of special features supported by this version of
1398 - `make'. Possible values include:
1400 - `archives'
1401 - Supports `ar' (archive) files using special filename syntax.
1402 - *Note Using `make' to Update Archive Files: Archives.
1404 - `check-symlink'
1405 - Supports the `-L' (`--check-symlink-times') flag. *Note
1406 - Summary of Options: Options Summary.
1408 - `else-if'
1409 - Supports "else if" non-nested conditionals. *Note Syntax of
1410 - Conditionals: Conditional Syntax.
1412 - `jobserver'
1413 - Supports "job server" enhanced parallel builds. *Note
1414 - Parallel Execution: Parallel.
1416 - `second-expansion'
1417 - Supports secondary expansion of prerequisite lists.
1419 - `order-only'
1420 - Supports order-only prerequisites. *Note Types of
1421 - Prerequisites: Prerequisite Types.
1423 - `target-specific'
1424 - Supports target-specific and pattern-specific variable
1425 - assignments. *Note Target-specific Variable Values:
1426 - Target-specific.
1429 -`.INCLUDE_DIRS'
1430 - Expands to a list of directories that `make' searches for included
1431 - makefiles (*note Including Other Makefiles: Include.).
1434 -\x1f
1435 -File: make.info, Node: Remaking Makefiles, Next: Overriding Makefiles, Prev: Special Variables, Up: Makefiles
1437 -3.7 How Makefiles Are Remade
1438 -============================
1440 -Sometimes makefiles can be remade from other files, such as RCS or SCCS
1441 -files. If a makefile can be remade from other files, you probably want
1442 -`make' to get an up-to-date version of the makefile to read in.
1444 - To this end, after reading in all makefiles, `make' will consider
1445 -each as a goal target and attempt to update it. If a makefile has a
1446 -rule which says how to update it (found either in that very makefile or
1447 -in another one) or if an implicit rule applies to it (*note Using
1448 -Implicit Rules: Implicit Rules.), it will be updated if necessary.
1449 -After all makefiles have been checked, if any have actually been
1450 -changed, `make' starts with a clean slate and reads all the makefiles
1451 -over again. (It will also attempt to update each of them over again,
1452 -but normally this will not change them again, since they are already up
1453 -to date.)
1455 - If you know that one or more of your makefiles cannot be remade and
1456 -you want to keep `make' from performing an implicit rule search on
1457 -them, perhaps for efficiency reasons, you can use any normal method of
1458 -preventing implicit rule lookup to do so. For example, you can write an
1459 -explicit rule with the makefile as the target, and an empty command
1460 -string (*note Using Empty Commands: Empty Commands.).
1462 - If the makefiles specify a double-colon rule to remake a file with
1463 -commands but no prerequisites, that file will always be remade (*note
1464 -Double-Colon::). In the case of makefiles, a makefile that has a
1465 -double-colon rule with commands but no prerequisites will be remade
1466 -every time `make' is run, and then again after `make' starts over and
1467 -reads the makefiles in again. This would cause an infinite loop:
1468 -`make' would constantly remake the makefile, and never do anything
1469 -else. So, to avoid this, `make' will *not* attempt to remake makefiles
1470 -which are specified as targets of a double-colon rule with commands but
1471 -no prerequisites.
1473 - If you do not specify any makefiles to be read with `-f' or `--file'
1474 -options, `make' will try the default makefile names; *note What Name to
1475 -Give Your Makefile: Makefile Names. Unlike makefiles explicitly
1476 -requested with `-f' or `--file' options, `make' is not certain that
1477 -these makefiles should exist. However, if a default makefile does not
1478 -exist but can be created by running `make' rules, you probably want the
1479 -rules to be run so that the makefile can be used.
1481 - Therefore, if none of the default makefiles exists, `make' will try
1482 -to make each of them in the same order in which they are searched for
1483 -(*note What Name to Give Your Makefile: Makefile Names.) until it
1484 -succeeds in making one, or it runs out of names to try. Note that it
1485 -is not an error if `make' cannot find or make any makefile; a makefile
1486 -is not always necessary.
1488 - When you use the `-t' or `--touch' option (*note Instead of
1489 -Executing the Commands: Instead of Execution.), you would not want to
1490 -use an out-of-date makefile to decide which targets to touch. So the
1491 -`-t' option has no effect on updating makefiles; they are really
1492 -updated even if `-t' is specified. Likewise, `-q' (or `--question')
1493 -and `-n' (or `--just-print') do not prevent updating of makefiles,
1494 -because an out-of-date makefile would result in the wrong output for
1495 -other targets. Thus, `make -f mfile -n foo' will update `mfile', read
1496 -it in, and then print the commands to update `foo' and its prerequisites
1497 -without running them. The commands printed for `foo' will be those
1498 -specified in the updated contents of `mfile'.
1500 - However, on occasion you might actually wish to prevent updating of
1501 -even the makefiles. You can do this by specifying the makefiles as
1502 -goals in the command line as well as specifying them as makefiles.
1503 -When the makefile name is specified explicitly as a goal, the options
1504 -`-t' and so on do apply to them.
1506 - Thus, `make -f mfile -n mfile foo' would read the makefile `mfile',
1507 -print the commands needed to update it without actually running them,
1508 -and then print the commands needed to update `foo' without running
1509 -them. The commands for `foo' will be those specified by the existing
1510 -contents of `mfile'.
1512 -\x1f
1513 -File: make.info, Node: Overriding Makefiles, Next: Reading Makefiles, Prev: Remaking Makefiles, Up: Makefiles
1515 -3.8 Overriding Part of Another Makefile
1516 -=======================================
1518 -Sometimes it is useful to have a makefile that is mostly just like
1519 -another makefile. You can often use the `include' directive to include
1520 -one in the other, and add more targets or variable definitions.
1521 -However, if the two makefiles give different commands for the same
1522 -target, `make' will not let you just do this. But there is another way.
1524 - In the containing makefile (the one that wants to include the other),
1525 -you can use a match-anything pattern rule to say that to remake any
1526 -target that cannot be made from the information in the containing
1527 -makefile, `make' should look in another makefile. *Note Pattern
1528 -Rules::, for more information on pattern rules.
1530 - For example, if you have a makefile called `Makefile' that says how
1531 -to make the target `foo' (and other targets), you can write a makefile
1532 -called `GNUmakefile' that contains:
1534 - foo:
1535 - frobnicate > foo
1537 - %: force
1538 - @$(MAKE) -f Makefile $@
1539 - force: ;
1541 - If you say `make foo', `make' will find `GNUmakefile', read it, and
1542 -see that to make `foo', it needs to run the command `frobnicate > foo'.
1543 -If you say `make bar', `make' will find no way to make `bar' in
1544 -`GNUmakefile', so it will use the commands from the pattern rule: `make
1545 --f Makefile bar'. If `Makefile' provides a rule for updating `bar',
1546 -`make' will apply the rule. And likewise for any other target that
1547 -`GNUmakefile' does not say how to make.
1549 - The way this works is that the pattern rule has a pattern of just
1550 -`%', so it matches any target whatever. The rule specifies a
1551 -prerequisite `force', to guarantee that the commands will be run even
1552 -if the target file already exists. We give `force' target empty
1553 -commands to prevent `make' from searching for an implicit rule to build
1554 -it--otherwise it would apply the same match-anything rule to `force'
1555 -itself and create a prerequisite loop!
1557 -\x1f
1558 -File: make.info, Node: Reading Makefiles, Next: Secondary Expansion, Prev: Overriding Makefiles, Up: Makefiles
1560 -3.9 How `make' Reads a Makefile
1561 -===============================
1563 -GNU `make' does its work in two distinct phases. During the first
1564 -phase it reads all the makefiles, included makefiles, etc. and
1565 -internalizes all the variables and their values, implicit and explicit
1566 -rules, and constructs a dependency graph of all the targets and their
1567 -prerequisites. During the second phase, `make' uses these internal
1568 -structures to determine what targets will need to be rebuilt and to
1569 -invoke the rules necessary to do so.
1571 - It's important to understand this two-phase approach because it has a
1572 -direct impact on how variable and function expansion happens; this is
1573 -often a source of some confusion when writing makefiles. Here we will
1574 -present a summary of the phases in which expansion happens for different
1575 -constructs within the makefile. We say that expansion is "immediate"
1576 -if it happens during the first phase: in this case `make' will expand
1577 -any variables or functions in that section of a construct as the
1578 -makefile is parsed. We say that expansion is "deferred" if expansion
1579 -is not performed immediately. Expansion of deferred construct is not
1580 -performed until either the construct appears later in an immediate
1581 -context, or until the second phase.
1583 - You may not be familiar with some of these constructs yet. You can
1584 -reference this section as you become familiar with them, in later
1585 -chapters.
1587 -Variable Assignment
1588 --------------------
1590 -Variable definitions are parsed as follows:
1592 - IMMEDIATE = DEFERRED
1593 - IMMEDIATE ?= DEFERRED
1594 - IMMEDIATE := IMMEDIATE
1595 - IMMEDIATE += DEFERRED or IMMEDIATE
1597 - define IMMEDIATE
1598 - DEFERRED
1599 - endef
1601 - For the append operator, `+=', the right-hand side is considered
1602 -immediate if the variable was previously set as a simple variable
1603 -(`:='), and deferred otherwise.
1605 -Conditional Statements
1606 -----------------------
1608 -All instances of conditional syntax are parsed immediately, in their
1609 -entirety; this includes the `ifdef', `ifeq', `ifndef', and `ifneq'
1610 -forms. Of course this means that automatic variables cannot be used in
1611 -conditional statements, as automatic variables are not set until the
1612 -command script for that rule is invoked. If you need to use automatic
1613 -variables in a conditional you _must_ use shell conditional syntax, in
1614 -your command script proper, for these tests, not `make' conditionals.
1616 -Rule Definition
1617 ----------------
1619 -A rule is always expanded the same way, regardless of the form:
1621 - IMMEDIATE : IMMEDIATE ; DEFERRED
1622 - DEFERRED
1624 - That is, the target and prerequisite sections are expanded
1625 -immediately, and the commands used to construct the target are always
1626 -deferred. This general rule is true for explicit rules, pattern rules,
1627 -suffix rules, static pattern rules, and simple prerequisite definitions.
1629 -\x1f
1630 -File: make.info, Node: Secondary Expansion, Prev: Reading Makefiles, Up: Makefiles
1632 -3.10 Secondary Expansion
1633 -========================
1635 -In the previous section we learned that GNU `make' works in two
1636 -distinct phases: a read-in phase and a target-update phase (*note How
1637 -`make' Reads a Makefile: Reading Makefiles.). GNU make also has the
1638 -ability to enable a _second expansion_ of the prerequisites (only) for
1639 -some or all targets defined in the makefile. In order for this second
1640 -expansion to occur, the special target `.SECONDEXPANSION' must be
1641 -defined before the first prerequisite list that makes use of this
1642 -feature.
1644 - If that special target is defined then in between the two phases
1645 -mentioned above, right at the end of the read-in phase, all the
1646 -prerequisites of the targets defined after the special target are
1647 -expanded a _second time_. In most circumstances this secondary
1648 -expansion will have no effect, since all variable and function
1649 -references will have been expanded during the initial parsing of the
1650 -makefiles. In order to take advantage of the secondary expansion phase
1651 -of the parser, then, it's necessary to _escape_ the variable or
1652 -function reference in the makefile. In this case the first expansion
1653 -merely un-escapes the reference but doesn't expand it, and expansion is
1654 -left to the secondary expansion phase. For example, consider this
1655 -makefile:
1657 - .SECONDEXPANSION:
1658 - ONEVAR = onefile
1659 - TWOVAR = twofile
1660 - myfile: $(ONEVAR) $$(TWOVAR)
1662 - After the first expansion phase the prerequisites list of the
1663 -`myfile' target will be `onefile' and `$(TWOVAR)'; the first
1664 -(unescaped) variable reference to ONEVAR is expanded, while the second
1665 -(escaped) variable reference is simply unescaped, without being
1666 -recognized as a variable reference. Now during the secondary expansion
1667 -the first word is expanded again but since it contains no variable or
1668 -function references it remains the static value `onefile', while the
1669 -second word is now a normal reference to the variable TWOVAR, which is
1670 -expanded to the value `twofile'. The final result is that there are
1671 -two prerequisites, `onefile' and `twofile'.
1673 - Obviously, this is not a very interesting case since the same result
1674 -could more easily have been achieved simply by having both variables
1675 -appear, unescaped, in the prerequisites list. One difference becomes
1676 -apparent if the variables are reset; consider this example:
1678 - .SECONDEXPANSION:
1679 - AVAR = top
1680 - onefile: $(AVAR)
1681 - twofile: $$(AVAR)
1682 - AVAR = bottom
1684 - Here the prerequisite of `onefile' will be expanded immediately, and
1685 -resolve to the value `top', while the prerequisite of `twofile' will
1686 -not be full expanded until the secondary expansion and yield a value of
1687 -`bottom'.
1689 - This is marginally more exciting, but the true power of this feature
1690 -only becomes apparent when you discover that secondary expansions
1691 -always take place within the scope of the automatic variables for that
1692 -target. This means that you can use variables such as `$@', `$*', etc.
1693 -during the second expansion and they will have their expected values,
1694 -just as in the command script. All you have to do is defer the
1695 -expansion by escaping the `$'. Also, secondary expansion occurs for
1696 -both explicit and implicit (pattern) rules. Knowing this, the possible
1697 -uses for this feature increase dramatically. For example:
1699 - .SECONDEXPANSION:
1700 - main_OBJS := main.o try.o test.o
1701 - lib_OBJS := lib.o api.o
1703 - main lib: $$($$@_OBJS)
1705 - Here, after the initial expansion the prerequisites of both the
1706 -`main' and `lib' targets will be `$($@_OBJS)'. During the secondary
1707 -expansion, the `$@' variable is set to the name of the target and so
1708 -the expansion for the `main' target will yield `$(main_OBJS)', or
1709 -`main.o try.o test.o', while the secondary expansion for the `lib'
1710 -target will yield `$(lib_OBJS)', or `lib.o api.o'.
1712 - You can also mix functions here, as long as they are properly
1713 -escaped:
1715 - main_SRCS := main.c try.c test.c
1716 - lib_SRCS := lib.c api.c
1718 - .SECONDEXPANSION:
1719 - main lib: $$(patsubst %.c,%.o,$$($$@_SRCS))
1721 - This version allows users to specify source files rather than object
1722 -files, but gives the same resulting prerequisites list as the previous
1723 -example.
1725 - Evaluation of automatic variables during the secondary expansion
1726 -phase, especially of the target name variable `$$@', behaves similarly
1727 -to evaluation within command scripts. However, there are some subtle
1728 -differences and "corner cases" which come into play for the different
1729 -types of rule definitions that `make' understands. The subtleties of
1730 -using the different automatic variables are described below.
1732 -Secondary Expansion of Explicit Rules
1733 --------------------------------------
1735 -During the secondary expansion of explicit rules, `$$@' and `$$%'
1736 -evaluate, respectively, to the file name of the target and, when the
1737 -target is an archive member, the target member name. The `$$<'
1738 -variable evaluates to the first prerequisite in the first rule for this
1739 -target. `$$^' and `$$+' evaluate to the list of all prerequisites of
1740 -rules _that have already appeared_ for the same target (`$$+' with
1741 -repetitions and `$$^' without). The following example will help
1742 -illustrate these behaviors:
1744 - .SECONDEXPANSION:
1746 - foo: foo.1 bar.1 $$< $$^ $$+ # line #1
1748 - foo: foo.2 bar.2 $$< $$^ $$+ # line #2
1750 - foo: foo.3 bar.3 $$< $$^ $$+ # line #3
1752 - In the first prerequisite list, all three variables (`$$<', `$$^',
1753 -and `$$+') expand to the empty string. In the second, they will have
1754 -values `foo.1', `foo.1 bar.1', and `foo.1 bar.1' respectively. In the
1755 -third they will have values `foo.1', `foo.1 bar.1 foo.2 bar.2', and
1756 -`foo.1 bar.1 foo.2 bar.2' respectively.
1758 - Rules undergo secondary expansion in makefile order, except that the
1759 -rule with the command script is always evaluated last.
1761 - The variables `$$?' and `$$*' are not available and expand to the
1762 -empty string.
1764 -Secondary Expansion of Static Pattern Rules
1765 --------------------------------------------
1767 -Rules for secondary expansion of static pattern rules are identical to
1768 -those for explicit rules, above, with one exception: for static pattern
1769 -rules the `$$*' variable is set to the pattern stem. As with explicit
1770 -rules, `$$?' is not available and expands to the empty string.
1772 -Secondary Expansion of Implicit Rules
1773 --------------------------------------
1775 -As `make' searches for an implicit rule, it substitutes the stem and
1776 -then performs secondary expansion for every rule with a matching target
1777 -pattern. The value of the automatic variables is derived in the same
1778 -fashion as for static pattern rules. As an example:
1780 - .SECONDEXPANSION:
1782 - foo: bar
1784 - foo foz: fo%: bo%
1786 - %oo: $$< $$^ $$+ $$*
1788 - When the implicit rule is tried for target `foo', `$$<' expands to
1789 -`bar', `$$^' expands to `bar boo', `$$+' also expands to `bar boo', and
1790 -`$$*' expands to `f'.
1792 - Note that the directory prefix (D), as described in *Note Implicit
1793 -Rule Search Algorithm: Implicit Rule Search, is appended (after
1794 -expansion) to all the patterns in the prerequisites list. As an
1795 -example:
1797 - .SECONDEXPANSION:
1799 - /tmp/foo.o:
1801 - %.o: $$(addsuffix /%.c,foo bar) foo.h
1803 - The prerequisite list after the secondary expansion and directory
1804 -prefix reconstruction will be `/tmp/foo/foo.c /tmp/var/bar/foo.c
1805 -foo.h'. If you are not interested in this reconstruction, you can use
1806 -`$$*' instead of `%' in the prerequisites list.
1808 -\x1f
1809 -File: make.info, Node: Rules, Next: Commands, Prev: Makefiles, Up: Top
1811 -4 Writing Rules
1812 -***************
1814 -A "rule" appears in the makefile and says when and how to remake
1815 -certain files, called the rule's "targets" (most often only one per
1816 -rule). It lists the other files that are the "prerequisites" of the
1817 -target, and "commands" to use to create or update the target.
1819 - The order of rules is not significant, except for determining the
1820 -"default goal": the target for `make' to consider, if you do not
1821 -otherwise specify one. The default goal is the target of the first
1822 -rule in the first makefile. If the first rule has multiple targets,
1823 -only the first target is taken as the default. There are two
1824 -exceptions: a target starting with a period is not a default unless it
1825 -contains one or more slashes, `/', as well; and, a target that defines
1826 -a pattern rule has no effect on the default goal. (*Note Defining and
1827 -Redefining Pattern Rules: Pattern Rules.)
1829 - Therefore, we usually write the makefile so that the first rule is
1830 -the one for compiling the entire program or all the programs described
1831 -by the makefile (often with a target called `all'). *Note Arguments to
1832 -Specify the Goals: Goals.
1834 -* Menu:
1836 -* Rule Example:: An example explained.
1837 -* Rule Syntax:: General syntax explained.
1838 -* Prerequisite Types:: There are two types of prerequisites.
1839 -* Wildcards:: Using wildcard characters such as `*'.
1840 -* Directory Search:: Searching other directories for source files.
1841 -* Phony Targets:: Using a target that is not a real file's name.
1842 -* Force Targets:: You can use a target without commands
1843 - or prerequisites to mark other targets
1844 - as phony.
1845 -* Empty Targets:: When only the date matters and the
1846 - files are empty.
1847 -* Special Targets:: Targets with special built-in meanings.
1848 -* Multiple Targets:: When to make use of several targets in a rule.
1849 -* Multiple Rules:: How to use several rules with the same target.
1850 -* Static Pattern:: Static pattern rules apply to multiple targets
1851 - and can vary the prerequisites according to
1852 - the target name.
1853 -* Double-Colon:: How to use a special kind of rule to allow
1854 - several independent rules for one target.
1855 -* Automatic Prerequisites:: How to automatically generate rules giving
1856 - prerequisites from source files themselves.
1858 -\x1f
1859 -File: make.info, Node: Rule Example, Next: Rule Syntax, Prev: Rules, Up: Rules
1861 -4.1 Rule Example
1862 -================
1864 -Here is an example of a rule:
1866 - foo.o : foo.c defs.h # module for twiddling the frobs
1867 - cc -c -g foo.c
1869 - Its target is `foo.o' and its prerequisites are `foo.c' and
1870 -`defs.h'. It has one command, which is `cc -c -g foo.c'. The command
1871 -line starts with a tab to identify it as a command.
1873 - This rule says two things:
1875 - * How to decide whether `foo.o' is out of date: it is out of date if
1876 - it does not exist, or if either `foo.c' or `defs.h' is more recent
1877 - than it.
1879 - * How to update the file `foo.o': by running `cc' as stated. The
1880 - command does not explicitly mention `defs.h', but we presume that
1881 - `foo.c' includes it, and that that is why `defs.h' was added to
1882 - the prerequisites.
1884 -\x1f
1885 -File: make.info, Node: Rule Syntax, Next: Prerequisite Types, Prev: Rule Example, Up: Rules
1887 -4.2 Rule Syntax
1888 -===============
1890 -In general, a rule looks like this:
1892 - TARGETS : PREREQUISITES
1893 - COMMAND
1894 - ...
1896 -or like this:
1898 - TARGETS : PREREQUISITES ; COMMAND
1899 - COMMAND
1900 - ...
1902 - The TARGETS are file names, separated by spaces. Wildcard
1903 -characters may be used (*note Using Wildcard Characters in File Names:
1904 -Wildcards.) and a name of the form `A(M)' represents member M in
1905 -archive file A (*note Archive Members as Targets: Archive Members.).
1906 -Usually there is only one target per rule, but occasionally there is a
1907 -reason to have more (*note Multiple Targets in a Rule: Multiple
1908 -Targets.).
1910 - The COMMAND lines start with a tab character. The first command may
1911 -appear on the line after the prerequisites, with a tab character, or may
1912 -appear on the same line, with a semicolon. Either way, the effect is
1913 -the same. There are other differences in the syntax of command lines.
1914 -*Note Writing the Commands in Rules: Commands.
1916 - Because dollar signs are used to start `make' variable references,
1917 -if you really want a dollar sign in a target or prerequisite you must
1918 -write two of them, `$$' (*note How to Use Variables: Using Variables.).
1919 -If you have enabled secondary expansion (*note Secondary Expansion::)
1920 -and you want a literal dollar sign in the prerequisites lise, you must
1921 -actually write _four_ dollar signs (`$$$$').
1923 - You may split a long line by inserting a backslash followed by a
1924 -newline, but this is not required, as `make' places no limit on the
1925 -length of a line in a makefile.
1927 - A rule tells `make' two things: when the targets are out of date,
1928 -and how to update them when necessary.
1930 - The criterion for being out of date is specified in terms of the
1931 -PREREQUISITES, which consist of file names separated by spaces.
1932 -(Wildcards and archive members (*note Archives::) are allowed here too.)
1933 -A target is out of date if it does not exist or if it is older than any
1934 -of the prerequisites (by comparison of last-modification times). The
1935 -idea is that the contents of the target file are computed based on
1936 -information in the prerequisites, so if any of the prerequisites
1937 -changes, the contents of the existing target file are no longer
1938 -necessarily valid.
1940 - How to update is specified by COMMANDS. These are lines to be
1941 -executed by the shell (normally `sh'), but with some extra features
1942 -(*note Writing the Commands in Rules: Commands.).
1944 -\x1f
1945 -File: make.info, Node: Prerequisite Types, Next: Wildcards, Prev: Rule Syntax, Up: Rules
1947 -4.3 Types of Prerequisites
1948 -==========================
1950 -There are actually two different types of prerequisites understood by
1951 -GNU `make': normal prerequisites such as described in the previous
1952 -section, and "order-only" prerequisites. A normal prerequisite makes
1953 -two statements: first, it imposes an order of execution of build
1954 -commands: any commands necessary to build any of a target's
1955 -prerequisites will be fully executed before any commands necessary to
1956 -build the target. Second, it imposes a dependency relationship: if any
1957 -prerequisite is newer than the target, then the target is considered
1958 -out-of-date and must be rebuilt.
1960 - Normally, this is exactly what you want: if a target's prerequisite
1961 -is updated, then the target should also be updated.
1963 - Occasionally, however, you have a situation where you want to impose
1964 -a specific ordering on the rules to be invoked _without_ forcing the
1965 -target to be updated if one of those rules is executed. In that case,
1966 -you want to define "order-only" prerequisites. Order-only
1967 -prerequisites can be specified by placing a pipe symbol (`|') in the
1968 -prerequisites list: any prerequisites to the left of the pipe symbol
1969 -are normal; any prerequisites to the right are order-only:
1971 - TARGETS : NORMAL-PREREQUISITES | ORDER-ONLY-PREREQUISITES
1973 - The normal prerequisites section may of course be empty. Also, you
1974 -may still declare multiple lines of prerequisites for the same target:
1975 -they are appended appropriately. Note that if you declare the same
1976 -file to be both a normal and an order-only prerequisite, the normal
1977 -prerequisite takes precedence (since they are a strict superset of the
1978 -behavior of an order-only prerequisite).
1980 -\x1f
1981 -File: make.info, Node: Wildcards, Next: Directory Search, Prev: Prerequisite Types, Up: Rules
1983 -4.4 Using Wildcard Characters in File Names
1984 -===========================================
1986 -A single file name can specify many files using "wildcard characters".
1987 -The wildcard characters in `make' are `*', `?' and `[...]', the same as
1988 -in the Bourne shell. For example, `*.c' specifies a list of all the
1989 -files (in the working directory) whose names end in `.c'.
1991 - The character `~' at the beginning of a file name also has special
1992 -significance. If alone, or followed by a slash, it represents your home
1993 -directory. For example `~/bin' expands to `/home/you/bin'. If the `~'
1994 -is followed by a word, the string represents the home directory of the
1995 -user named by that word. For example `~john/bin' expands to
1996 -`/home/john/bin'. On systems which don't have a home directory for
1997 -each user (such as MS-DOS or MS-Windows), this functionality can be
1998 -simulated by setting the environment variable HOME.
2000 - Wildcard expansion is performed by `make' automatically in targets
2001 -and in prerequisites. In commands the shell is responsible for
2002 -wildcard expansion. In other contexts, wildcard expansion happens only
2003 -if you request it explicitly with the `wildcard' function.
2005 - The special significance of a wildcard character can be turned off by
2006 -preceding it with a backslash. Thus, `foo\*bar' would refer to a
2007 -specific file whose name consists of `foo', an asterisk, and `bar'.
2009 -* Menu:
2011 -* Wildcard Examples:: Several examples
2012 -* Wildcard Pitfall:: Problems to avoid.
2013 -* Wildcard Function:: How to cause wildcard expansion where
2014 - it does not normally take place.
2016 -\x1f
2017 -File: make.info, Node: Wildcard Examples, Next: Wildcard Pitfall, Prev: Wildcards, Up: Wildcards
2019 -4.4.1 Wildcard Examples
2020 ------------------------
2022 -Wildcards can be used in the commands of a rule, where they are expanded
2023 -by the shell. For example, here is a rule to delete all the object
2024 -files:
2026 - clean:
2027 - rm -f *.o
2029 - Wildcards are also useful in the prerequisites of a rule. With the
2030 -following rule in the makefile, `make print' will print all the `.c'
2031 -files that have changed since the last time you printed them:
2033 - print: *.c
2034 - lpr -p $?
2035 - touch print
2037 -This rule uses `print' as an empty target file; see *Note Empty Target
2038 -Files to Record Events: Empty Targets. (The automatic variable `$?' is
2039 -used to print only those files that have changed; see *Note Automatic
2040 -Variables::.)
2042 - Wildcard expansion does not happen when you define a variable.
2043 -Thus, if you write this:
2045 - objects = *.o
2047 -then the value of the variable `objects' is the actual string `*.o'.
2048 -However, if you use the value of `objects' in a target, prerequisite or
2049 -command, wildcard expansion will take place at that time. To set
2050 -`objects' to the expansion, instead use:
2052 - objects := $(wildcard *.o)
2054 -*Note Wildcard Function::.
2056 -\x1f
2057 -File: make.info, Node: Wildcard Pitfall, Next: Wildcard Function, Prev: Wildcard Examples, Up: Wildcards
2059 -4.4.2 Pitfalls of Using Wildcards
2060 ----------------------------------
2062 -Now here is an example of a naive way of using wildcard expansion, that
2063 -does not do what you would intend. Suppose you would like to say that
2064 -the executable file `foo' is made from all the object files in the
2065 -directory, and you write this:
2067 - objects = *.o
2069 - foo : $(objects)
2070 - cc -o foo $(CFLAGS) $(objects)
2072 -The value of `objects' is the actual string `*.o'. Wildcard expansion
2073 -happens in the rule for `foo', so that each _existing_ `.o' file
2074 -becomes a prerequisite of `foo' and will be recompiled if necessary.
2076 - But what if you delete all the `.o' files? When a wildcard matches
2077 -no files, it is left as it is, so then `foo' will depend on the
2078 -oddly-named file `*.o'. Since no such file is likely to exist, `make'
2079 -will give you an error saying it cannot figure out how to make `*.o'.
2080 -This is not what you want!
2082 - Actually it is possible to obtain the desired result with wildcard
2083 -expansion, but you need more sophisticated techniques, including the
2084 -`wildcard' function and string substitution. *Note The Function
2085 -`wildcard': Wildcard Function.
2087 - Microsoft operating systems (MS-DOS and MS-Windows) use backslashes
2088 -to separate directories in pathnames, like so:
2090 - c:\foo\bar\baz.c
2092 - This is equivalent to the Unix-style `c:/foo/bar/baz.c' (the `c:'
2093 -part is the so-called drive letter). When `make' runs on these
2094 -systems, it supports backslashes as well as the Unix-style forward
2095 -slashes in pathnames. However, this support does _not_ include the
2096 -wildcard expansion, where backslash is a quote character. Therefore,
2097 -you _must_ use Unix-style slashes in these cases.
2099 -\x1f
2100 -File: make.info, Node: Wildcard Function, Prev: Wildcard Pitfall, Up: Wildcards
2102 -4.4.3 The Function `wildcard'
2103 ------------------------------
2105 -Wildcard expansion happens automatically in rules. But wildcard
2106 -expansion does not normally take place when a variable is set, or
2107 -inside the arguments of a function. If you want to do wildcard
2108 -expansion in such places, you need to use the `wildcard' function, like
2109 -this:
2111 - $(wildcard PATTERN...)
2113 -This string, used anywhere in a makefile, is replaced by a
2114 -space-separated list of names of existing files that match one of the
2115 -given file name patterns. If no existing file name matches a pattern,
2116 -then that pattern is omitted from the output of the `wildcard'
2117 -function. Note that this is different from how unmatched wildcards
2118 -behave in rules, where they are used verbatim rather than ignored
2119 -(*note Wildcard Pitfall::).
2121 - One use of the `wildcard' function is to get a list of all the C
2122 -source files in a directory, like this:
2124 - $(wildcard *.c)
2126 - We can change the list of C source files into a list of object files
2127 -by replacing the `.c' suffix with `.o' in the result, like this:
2129 - $(patsubst %.c,%.o,$(wildcard *.c))
2131 -(Here we have used another function, `patsubst'. *Note Functions for
2132 -String Substitution and Analysis: Text Functions.)
2134 - Thus, a makefile to compile all C source files in the directory and
2135 -then link them together could be written as follows:
2137 - objects := $(patsubst %.c,%.o,$(wildcard *.c))
2139 - foo : $(objects)
2140 - cc -o foo $(objects)
2142 -(This takes advantage of the implicit rule for compiling C programs, so
2143 -there is no need to write explicit rules for compiling the files.
2144 -*Note The Two Flavors of Variables: Flavors, for an explanation of
2145 -`:=', which is a variant of `='.)
2147 -\x1f
2148 -File: make.info, Node: Directory Search, Next: Phony Targets, Prev: Wildcards, Up: Rules
2150 -4.5 Searching Directories for Prerequisites
2151 -===========================================
2153 -For large systems, it is often desirable to put sources in a separate
2154 -directory from the binaries. The "directory search" features of `make'
2155 -facilitate this by searching several directories automatically to find
2156 -a prerequisite. When you redistribute the files among directories, you
2157 -do not need to change the individual rules, just the search paths.
2159 -* Menu:
2161 -* General Search:: Specifying a search path that applies
2162 - to every prerequisite.
2163 -* Selective Search:: Specifying a search path
2164 - for a specified class of names.
2165 -* Search Algorithm:: When and how search paths are applied.
2166 -* Commands/Search:: How to write shell commands that work together
2167 - with search paths.
2168 -* Implicit/Search:: How search paths affect implicit rules.
2169 -* Libraries/Search:: Directory search for link libraries.
2171 -\x1f
2172 -File: make.info, Node: General Search, Next: Selective Search, Prev: Directory Search, Up: Directory Search
2174 -4.5.1 `VPATH': Search Path for All Prerequisites
2175 -------------------------------------------------
2177 -The value of the `make' variable `VPATH' specifies a list of
2178 -directories that `make' should search. Most often, the directories are
2179 -expected to contain prerequisite files that are not in the current
2180 -directory; however, `make' uses `VPATH' as a search list for both
2181 -prerequisites and targets of rules.
2183 - Thus, if a file that is listed as a target or prerequisite does not
2184 -exist in the current directory, `make' searches the directories listed
2185 -in `VPATH' for a file with that name. If a file is found in one of
2186 -them, that file may become the prerequisite (see below). Rules may then
2187 -specify the names of files in the prerequisite list as if they all
2188 -existed in the current directory. *Note Writing Shell Commands with
2189 -Directory Search: Commands/Search.
2191 - In the `VPATH' variable, directory names are separated by colons or
2192 -blanks. The order in which directories are listed is the order followed
2193 -by `make' in its search. (On MS-DOS and MS-Windows, semi-colons are
2194 -used as separators of directory names in `VPATH', since the colon can
2195 -be used in the pathname itself, after the drive letter.)
2197 - For example,
2199 - VPATH = src:../headers
2201 -specifies a path containing two directories, `src' and `../headers',
2202 -which `make' searches in that order.
2204 - With this value of `VPATH', the following rule,
2206 - foo.o : foo.c
2208 -is interpreted as if it were written like this:
2210 - foo.o : src/foo.c
2212 -assuming the file `foo.c' does not exist in the current directory but
2213 -is found in the directory `src'.
2215 -\x1f
2216 -File: make.info, Node: Selective Search, Next: Search Algorithm, Prev: General Search, Up: Directory Search
2218 -4.5.2 The `vpath' Directive
2219 ----------------------------
2221 -Similar to the `VPATH' variable, but more selective, is the `vpath'
2222 -directive (note lower case), which allows you to specify a search path
2223 -for a particular class of file names: those that match a particular
2224 -pattern. Thus you can supply certain search directories for one class
2225 -of file names and other directories (or none) for other file names.
2227 - There are three forms of the `vpath' directive:
2229 -`vpath PATTERN DIRECTORIES'
2230 - Specify the search path DIRECTORIES for file names that match
2231 - PATTERN.
2233 - The search path, DIRECTORIES, is a list of directories to be
2234 - searched, separated by colons (semi-colons on MS-DOS and
2235 - MS-Windows) or blanks, just like the search path used in the
2236 - `VPATH' variable.
2238 -`vpath PATTERN'
2239 - Clear out the search path associated with PATTERN.
2241 -`vpath'
2242 - Clear all search paths previously specified with `vpath'
2243 - directives.
2245 - A `vpath' pattern is a string containing a `%' character. The
2246 -string must match the file name of a prerequisite that is being searched
2247 -for, the `%' character matching any sequence of zero or more characters
2248 -(as in pattern rules; *note Defining and Redefining Pattern Rules:
2249 -Pattern Rules.). For example, `%.h' matches files that end in `.h'.
2250 -(If there is no `%', the pattern must match the prerequisite exactly,
2251 -which is not useful very often.)
2253 - `%' characters in a `vpath' directive's pattern can be quoted with
2254 -preceding backslashes (`\'). Backslashes that would otherwise quote
2255 -`%' characters can be quoted with more backslashes. Backslashes that
2256 -quote `%' characters or other backslashes are removed from the pattern
2257 -before it is compared to file names. Backslashes that are not in
2258 -danger of quoting `%' characters go unmolested.
2260 - When a prerequisite fails to exist in the current directory, if the
2261 -PATTERN in a `vpath' directive matches the name of the prerequisite
2262 -file, then the DIRECTORIES in that directive are searched just like
2263 -(and before) the directories in the `VPATH' variable.
2265 - For example,
2267 - vpath %.h ../headers
2269 -tells `make' to look for any prerequisite whose name ends in `.h' in
2270 -the directory `../headers' if the file is not found in the current
2271 -directory.
2273 - If several `vpath' patterns match the prerequisite file's name, then
2274 -`make' processes each matching `vpath' directive one by one, searching
2275 -all the directories mentioned in each directive. `make' handles
2276 -multiple `vpath' directives in the order in which they appear in the
2277 -makefile; multiple directives with the same pattern are independent of
2278 -each other.
2280 - Thus,
2282 - vpath %.c foo
2283 - vpath % blish
2284 - vpath %.c bar
2286 -will look for a file ending in `.c' in `foo', then `blish', then `bar',
2287 -while
2289 - vpath %.c foo:bar
2290 - vpath % blish
2292 -will look for a file ending in `.c' in `foo', then `bar', then `blish'.
2294 -\x1f
2295 -File: make.info, Node: Search Algorithm, Next: Commands/Search, Prev: Selective Search, Up: Directory Search
2297 -4.5.3 How Directory Searches are Performed
2298 -------------------------------------------
2300 -When a prerequisite is found through directory search, regardless of
2301 -type (general or selective), the pathname located may not be the one
2302 -that `make' actually provides you in the prerequisite list. Sometimes
2303 -the path discovered through directory search is thrown away.
2305 - The algorithm `make' uses to decide whether to keep or abandon a
2306 -path found via directory search is as follows:
2308 - 1. If a target file does not exist at the path specified in the
2309 - makefile, directory search is performed.
2311 - 2. If the directory search is successful, that path is kept and this
2312 - file is tentatively stored as the target.
2314 - 3. All prerequisites of this target are examined using this same
2315 - method.
2317 - 4. After processing the prerequisites, the target may or may not need
2318 - to be rebuilt:
2320 - a. If the target does _not_ need to be rebuilt, the path to the
2321 - file found during directory search is used for any
2322 - prerequisite lists which contain this target. In short, if
2323 - `make' doesn't need to rebuild the target then you use the
2324 - path found via directory search.
2326 - b. If the target _does_ need to be rebuilt (is out-of-date), the
2327 - pathname found during directory search is _thrown away_, and
2328 - the target is rebuilt using the file name specified in the
2329 - makefile. In short, if `make' must rebuild, then the target
2330 - is rebuilt locally, not in the directory found via directory
2331 - search.
2333 - This algorithm may seem complex, but in practice it is quite often
2334 -exactly what you want.
2336 - Other versions of `make' use a simpler algorithm: if the file does
2337 -not exist, and it is found via directory search, then that pathname is
2338 -always used whether or not the target needs to be built. Thus, if the
2339 -target is rebuilt it is created at the pathname discovered during
2340 -directory search.
2342 - If, in fact, this is the behavior you want for some or all of your
2343 -directories, you can use the `GPATH' variable to indicate this to
2344 -`make'.
2346 - `GPATH' has the same syntax and format as `VPATH' (that is, a space-
2347 -or colon-delimited list of pathnames). If an out-of-date target is
2348 -found by directory search in a directory that also appears in `GPATH',
2349 -then that pathname is not thrown away. The target is rebuilt using the
2350 -expanded path.
2352 -\x1f
2353 -File: make.info, Node: Commands/Search, Next: Implicit/Search, Prev: Search Algorithm, Up: Directory Search
2355 -4.5.4 Writing Shell Commands with Directory Search
2356 ---------------------------------------------------
2358 -When a prerequisite is found in another directory through directory
2359 -search, this cannot change the commands of the rule; they will execute
2360 -as written. Therefore, you must write the commands with care so that
2361 -they will look for the prerequisite in the directory where `make' finds
2362 -it.
2364 - This is done with the "automatic variables" such as `$^' (*note
2365 -Automatic Variables::). For instance, the value of `$^' is a list of
2366 -all the prerequisites of the rule, including the names of the
2367 -directories in which they were found, and the value of `$@' is the
2368 -target. Thus:
2370 - foo.o : foo.c
2371 - cc -c $(CFLAGS) $^ -o $@
2373 -(The variable `CFLAGS' exists so you can specify flags for C
2374 -compilation by implicit rules; we use it here for consistency so it will
2375 -affect all C compilations uniformly; *note Variables Used by Implicit
2376 -Rules: Implicit Variables.)
2378 - Often the prerequisites include header files as well, which you do
2379 -not want to mention in the commands. The automatic variable `$<' is
2380 -just the first prerequisite:
2382 - VPATH = src:../headers
2383 - foo.o : foo.c defs.h hack.h
2384 - cc -c $(CFLAGS) $< -o $@
2386 -\x1f
2387 -File: make.info, Node: Implicit/Search, Next: Libraries/Search, Prev: Commands/Search, Up: Directory Search
2389 -4.5.5 Directory Search and Implicit Rules
2390 ------------------------------------------
2392 -The search through the directories specified in `VPATH' or with `vpath'
2393 -also happens during consideration of implicit rules (*note Using
2394 -Implicit Rules: Implicit Rules.).
2396 - For example, when a file `foo.o' has no explicit rule, `make'
2397 -considers implicit rules, such as the built-in rule to compile `foo.c'
2398 -if that file exists. If such a file is lacking in the current
2399 -directory, the appropriate directories are searched for it. If `foo.c'
2400 -exists (or is mentioned in the makefile) in any of the directories, the
2401 -implicit rule for C compilation is applied.
2403 - The commands of implicit rules normally use automatic variables as a
2404 -matter of necessity; consequently they will use the file names found by
2405 -directory search with no extra effort.
2407 -\x1f
2408 -File: make.info, Node: Libraries/Search, Prev: Implicit/Search, Up: Directory Search
2410 -4.5.6 Directory Search for Link Libraries
2411 ------------------------------------------
2413 -Directory search applies in a special way to libraries used with the
2414 -linker. This special feature comes into play when you write a
2415 -prerequisite whose name is of the form `-lNAME'. (You can tell
2416 -something strange is going on here because the prerequisite is normally
2417 -the name of a file, and the _file name_ of a library generally looks
2418 -like `libNAME.a', not like `-lNAME'.)
2420 - When a prerequisite's name has the form `-lNAME', `make' handles it
2421 -specially by searching for the file `libNAME.so' in the current
2422 -directory, in directories specified by matching `vpath' search paths
2423 -and the `VPATH' search path, and then in the directories `/lib',
2424 -`/usr/lib', and `PREFIX/lib' (normally `/usr/local/lib', but
2425 -MS-DOS/MS-Windows versions of `make' behave as if PREFIX is defined to
2426 -be the root of the DJGPP installation tree).
2428 - If that file is not found, then the file `libNAME.a' is searched
2429 -for, in the same directories as above.
2431 - For example, if there is a `/usr/lib/libcurses.a' library on your
2432 -system (and no `/usr/lib/libcurses.so' file), then
2434 - foo : foo.c -lcurses
2435 - cc $^ -o $@
2437 -would cause the command `cc foo.c /usr/lib/libcurses.a -o foo' to be
2438 -executed when `foo' is older than `foo.c' or than
2439 -`/usr/lib/libcurses.a'.
2441 - Although the default set of files to be searched for is `libNAME.so'
2442 -and `libNAME.a', this is customizable via the `.LIBPATTERNS' variable.
2443 -Each word in the value of this variable is a pattern string. When a
2444 -prerequisite like `-lNAME' is seen, `make' will replace the percent in
2445 -each pattern in the list with NAME and perform the above directory
2446 -searches using that library filename. If no library is found, the next
2447 -word in the list will be used.
2449 - The default value for `.LIBPATTERNS' is `lib%.so lib%.a', which
2450 -provides the default behavior described above.
2452 - You can turn off link library expansion completely by setting this
2453 -variable to an empty value.
2455 -\x1f
2456 -File: make.info, Node: Phony Targets, Next: Force Targets, Prev: Directory Search, Up: Rules
2458 -4.6 Phony Targets
2459 -=================
2461 -A phony target is one that is not really the name of a file. It is
2462 -just a name for some commands to be executed when you make an explicit
2463 -request. There are two reasons to use a phony target: to avoid a
2464 -conflict with a file of the same name, and to improve performance.
2466 - If you write a rule whose commands will not create the target file,
2467 -the commands will be executed every time the target comes up for
2468 -remaking. Here is an example:
2470 - clean:
2471 - rm *.o temp
2473 -Because the `rm' command does not create a file named `clean', probably
2474 -no such file will ever exist. Therefore, the `rm' command will be
2475 -executed every time you say `make clean'.
2477 - The phony target will cease to work if anything ever does create a
2478 -file named `clean' in this directory. Since it has no prerequisites,
2479 -the file `clean' would inevitably be considered up to date, and its
2480 -commands would not be executed. To avoid this problem, you can
2481 -explicitly declare the target to be phony, using the special target
2482 -`.PHONY' (*note Special Built-in Target Names: Special Targets.) as
2483 -follows:
2485 - .PHONY : clean
2487 -Once this is done, `make clean' will run the commands regardless of
2488 -whether there is a file named `clean'.
2490 - Since it knows that phony targets do not name actual files that
2491 -could be remade from other files, `make' skips the implicit rule search
2492 -for phony targets (*note Implicit Rules::). This is why declaring a
2493 -target phony is good for performance, even if you are not worried about
2494 -the actual file existing.
2496 - Thus, you first write the line that states that `clean' is a phony
2497 -target, then you write the rule, like this:
2499 - .PHONY: clean
2500 - clean:
2501 - rm *.o temp
2503 - Another example of the usefulness of phony targets is in conjunction
2504 -with recursive invocations of `make' (for more information, see *Note
2505 -Recursive Use of `make': Recursion.). In this case the makefile will
2506 -often contain a variable which lists a number of subdirectories to be
2507 -built. One way to handle this is with one rule whose command is a
2508 -shell loop over the subdirectories, like this:
2510 - SUBDIRS = foo bar baz
2512 - subdirs:
2513 - for dir in $(SUBDIRS); do \
2514 - $(MAKE) -C $$dir; \
2515 - done
2517 - There are a few problems with this method, however. First, any error
2518 -detected in a submake is not noted by this rule, so it will continue to
2519 -build the rest of the directories even when one fails. This can be
2520 -overcome by adding shell commands to note the error and exit, but then
2521 -it will do so even if `make' is invoked with the `-k' option, which is
2522 -unfortunate. Second, and perhaps more importantly, you cannot take
2523 -advantage of `make''s ability to build targets in parallel (*note
2524 -Parallel Execution: Parallel.), since there is only one rule.
2526 - By declaring the subdirectories as phony targets (you must do this as
2527 -the subdirectory obviously always exists; otherwise it won't be built)
2528 -you can remove these problems:
2530 - SUBDIRS = foo bar baz
2532 - .PHONY: subdirs $(SUBDIRS)
2534 - subdirs: $(SUBDIRS)
2536 - $(SUBDIRS):
2537 - $(MAKE) -C $@
2539 - foo: baz
2541 - Here we've also declared that the `foo' subdirectory cannot be built
2542 -until after the `baz' subdirectory is complete; this kind of
2543 -relationship declaration is particularly important when attempting
2544 -parallel builds.
2546 - A phony target should not be a prerequisite of a real target file;
2547 -if it is, its commands are run every time `make' goes to update that
2548 -file. As long as a phony target is never a prerequisite of a real
2549 -target, the phony target commands will be executed only when the phony
2550 -target is a specified goal (*note Arguments to Specify the Goals:
2551 -Goals.).
2553 - Phony targets can have prerequisites. When one directory contains
2554 -multiple programs, it is most convenient to describe all of the
2555 -programs in one makefile `./Makefile'. Since the target remade by
2556 -default will be the first one in the makefile, it is common to make
2557 -this a phony target named `all' and give it, as prerequisites, all the
2558 -individual programs. For example:
2560 - all : prog1 prog2 prog3
2561 - .PHONY : all
2563 - prog1 : prog1.o utils.o
2564 - cc -o prog1 prog1.o utils.o
2566 - prog2 : prog2.o
2567 - cc -o prog2 prog2.o
2569 - prog3 : prog3.o sort.o utils.o
2570 - cc -o prog3 prog3.o sort.o utils.o
2572 -Now you can say just `make' to remake all three programs, or specify as
2573 -arguments the ones to remake (as in `make prog1 prog3'). Phoniness is
2574 -not inherited: the prerequisites of a phony target are not themselves
2575 -phony, unless explicitly declared to be so.
2577 - When one phony target is a prerequisite of another, it serves as a
2578 -subroutine of the other. For example, here `make cleanall' will delete
2579 -the object files, the difference files, and the file `program':
2581 - .PHONY: cleanall cleanobj cleandiff
2583 - cleanall : cleanobj cleandiff
2584 - rm program
2586 - cleanobj :
2587 - rm *.o
2589 - cleandiff :
2590 - rm *.diff
2592 -\x1f
2593 -File: make.info, Node: Force Targets, Next: Empty Targets, Prev: Phony Targets, Up: Rules
2595 -4.7 Rules without Commands or Prerequisites
2596 -===========================================
2598 -If a rule has no prerequisites or commands, and the target of the rule
2599 -is a nonexistent file, then `make' imagines this target to have been
2600 -updated whenever its rule is run. This implies that all targets
2601 -depending on this one will always have their commands run.
2603 - An example will illustrate this:
2605 - clean: FORCE
2606 - rm $(objects)
2607 - FORCE:
2609 - Here the target `FORCE' satisfies the special conditions, so the
2610 -target `clean' that depends on it is forced to run its commands. There
2611 -is nothing special about the name `FORCE', but that is one name
2612 -commonly used this way.
2614 - As you can see, using `FORCE' this way has the same results as using
2615 -`.PHONY: clean'.
2617 - Using `.PHONY' is more explicit and more efficient. However, other
2618 -versions of `make' do not support `.PHONY'; thus `FORCE' appears in
2619 -many makefiles. *Note Phony Targets::.
2621 -\x1f
2622 -File: make.info, Node: Empty Targets, Next: Special Targets, Prev: Force Targets, Up: Rules
2624 -4.8 Empty Target Files to Record Events
2625 -=======================================
2627 -The "empty target" is a variant of the phony target; it is used to hold
2628 -commands for an action that you request explicitly from time to time.
2629 -Unlike a phony target, this target file can really exist; but the file's
2630 -contents do not matter, and usually are empty.
2632 - The purpose of the empty target file is to record, with its
2633 -last-modification time, when the rule's commands were last executed. It
2634 -does so because one of the commands is a `touch' command to update the
2635 -target file.
2637 - The empty target file should have some prerequisites (otherwise it
2638 -doesn't make sense). When you ask to remake the empty target, the
2639 -commands are executed if any prerequisite is more recent than the
2640 -target; in other words, if a prerequisite has changed since the last
2641 -time you remade the target. Here is an example:
2643 - print: foo.c bar.c
2644 - lpr -p $?
2645 - touch print
2647 -With this rule, `make print' will execute the `lpr' command if either
2648 -source file has changed since the last `make print'. The automatic
2649 -variable `$?' is used to print only those files that have changed
2650 -(*note Automatic Variables::).
2652 -\x1f
2653 -File: make.info, Node: Special Targets, Next: Multiple Targets, Prev: Empty Targets, Up: Rules
2655 -4.9 Special Built-in Target Names
2656 -=================================
2658 -Certain names have special meanings if they appear as targets.
2660 -`.PHONY'
2661 - The prerequisites of the special target `.PHONY' are considered to
2662 - be phony targets. When it is time to consider such a target,
2663 - `make' will run its commands unconditionally, regardless of
2664 - whether a file with that name exists or what its last-modification
2665 - time is. *Note Phony Targets: Phony Targets.
2667 -`.SUFFIXES'
2668 - The prerequisites of the special target `.SUFFIXES' are the list
2669 - of suffixes to be used in checking for suffix rules. *Note
2670 - Old-Fashioned Suffix Rules: Suffix Rules.
2672 -`.DEFAULT'
2673 - The commands specified for `.DEFAULT' are used for any target for
2674 - which no rules are found (either explicit rules or implicit rules).
2675 - *Note Last Resort::. If `.DEFAULT' commands are specified, every
2676 - file mentioned as a prerequisite, but not as a target in a rule,
2677 - will have these commands executed on its behalf. *Note Implicit
2678 - Rule Search Algorithm: Implicit Rule Search.
2680 -`.PRECIOUS'
2681 - The targets which `.PRECIOUS' depends on are given the following
2682 - special treatment: if `make' is killed or interrupted during the
2683 - execution of their commands, the target is not deleted. *Note
2684 - Interrupting or Killing `make': Interrupts. Also, if the target
2685 - is an intermediate file, it will not be deleted after it is no
2686 - longer needed, as is normally done. *Note Chains of Implicit
2687 - Rules: Chained Rules. In this latter respect it overlaps with the
2688 - `.SECONDARY' special target.
2690 - You can also list the target pattern of an implicit rule (such as
2691 - `%.o') as a prerequisite file of the special target `.PRECIOUS' to
2692 - preserve intermediate files created by rules whose target patterns
2693 - match that file's name.
2695 -`.INTERMEDIATE'
2696 - The targets which `.INTERMEDIATE' depends on are treated as
2697 - intermediate files. *Note Chains of Implicit Rules: Chained Rules.
2698 - `.INTERMEDIATE' with no prerequisites has no effect.
2700 -`.SECONDARY'
2701 - The targets which `.SECONDARY' depends on are treated as
2702 - intermediate files, except that they are never automatically
2703 - deleted. *Note Chains of Implicit Rules: Chained Rules.
2705 - `.SECONDARY' with no prerequisites causes all targets to be treated
2706 - as secondary (i.e., no target is removed because it is considered
2707 - intermediate).
2709 -`.SECONDEXPANSION'
2710 - If `.SECONDEXPANSION' is mentioned as a target anywhere in the
2711 - makefile, then all prerequisite lists defined _after_ it appears
2712 - will be expanded a second time after all makefiles have been read
2713 - in. *Note Secondary Expansion: Secondary Expansion.
2715 - The prerequisites of the special target `.SUFFIXES' are the list
2716 - of suffixes to be used in checking for suffix rules. *Note
2717 - Old-Fashioned Suffix Rules: Suffix Rules.
2719 -`.DELETE_ON_ERROR'
2720 - If `.DELETE_ON_ERROR' is mentioned as a target anywhere in the
2721 - makefile, then `make' will delete the target of a rule if it has
2722 - changed and its commands exit with a nonzero exit status, just as
2723 - it does when it receives a signal. *Note Errors in Commands:
2724 - Errors.
2726 -`.IGNORE'
2727 - If you specify prerequisites for `.IGNORE', then `make' will
2728 - ignore errors in execution of the commands run for those particular
2729 - files. The commands for `.IGNORE' are not meaningful.
2731 - If mentioned as a target with no prerequisites, `.IGNORE' says to
2732 - ignore errors in execution of commands for all files. This usage
2733 - of `.IGNORE' is supported only for historical compatibility. Since
2734 - this affects every command in the makefile, it is not very useful;
2735 - we recommend you use the more selective ways to ignore errors in
2736 - specific commands. *Note Errors in Commands: Errors.
2738 -`.LOW_RESOLUTION_TIME'
2739 - If you specify prerequisites for `.LOW_RESOLUTION_TIME', `make'
2740 - assumes that these files are created by commands that generate low
2741 - resolution time stamps. The commands for `.LOW_RESOLUTION_TIME'
2742 - are not meaningful.
2744 - The high resolution file time stamps of many modern hosts lessen
2745 - the chance of `make' incorrectly concluding that a file is up to
2746 - date. Unfortunately, these hosts provide no way to set a high
2747 - resolution file time stamp, so commands like `cp -p' that
2748 - explicitly set a file's time stamp must discard its subsecond
2749 - part. If a file is created by such a command, you should list it
2750 - as a prerequisite of `.LOW_RESOLUTION_TIME' so that `make' does
2751 - not mistakenly conclude that the file is out of date. For example:
2753 - .LOW_RESOLUTION_TIME: dst
2754 - dst: src
2755 - cp -p src dst
2757 - Since `cp -p' discards the subsecond part of `src''s time stamp,
2758 - `dst' is typically slightly older than `src' even when it is up to
2759 - date. The `.LOW_RESOLUTION_TIME' line causes `make' to consider
2760 - `dst' to be up to date if its time stamp is at the start of the
2761 - same second that `src''s time stamp is in.
2763 - Due to a limitation of the archive format, archive member time
2764 - stamps are always low resolution. You need not list archive
2765 - members as prerequisites of `.LOW_RESOLUTION_TIME', as `make' does
2766 - this automatically.
2768 -`.SILENT'
2769 - If you specify prerequisites for `.SILENT', then `make' will not
2770 - print the commands to remake those particular files before
2771 - executing them. The commands for `.SILENT' are not meaningful.
2773 - If mentioned as a target with no prerequisites, `.SILENT' says not
2774 - to print any commands before executing them. This usage of
2775 - `.SILENT' is supported only for historical compatibility. We
2776 - recommend you use the more selective ways to silence specific
2777 - commands. *Note Command Echoing: Echoing. If you want to silence
2778 - all commands for a particular run of `make', use the `-s' or
2779 - `--silent' option (*note Options Summary::).
2781 -`.EXPORT_ALL_VARIABLES'
2782 - Simply by being mentioned as a target, this tells `make' to export
2783 - all variables to child processes by default. *Note Communicating
2784 - Variables to a Sub-`make': Variables/Recursion.
2786 -`.NOTPARALLEL'
2787 - If `.NOTPARALLEL' is mentioned as a target, then this invocation of
2788 - `make' will be run serially, even if the `-j' option is given.
2789 - Any recursively invoked `make' command will still be run in
2790 - parallel (unless its makefile contains this target). Any
2791 - prerequisites on this target are ignored.
2793 - Any defined implicit rule suffix also counts as a special target if
2794 -it appears as a target, and so does the concatenation of two suffixes,
2795 -such as `.c.o'. These targets are suffix rules, an obsolete way of
2796 -defining implicit rules (but a way still widely used). In principle,
2797 -any target name could be special in this way if you break it in two and
2798 -add both pieces to the suffix list. In practice, suffixes normally
2799 -begin with `.', so these special target names also begin with `.'.
2800 -*Note Old-Fashioned Suffix Rules: Suffix Rules.
2802 -\x1f
2803 -File: make.info, Node: Multiple Targets, Next: Multiple Rules, Prev: Special Targets, Up: Rules
2805 -4.10 Multiple Targets in a Rule
2806 -===============================
2808 -A rule with multiple targets is equivalent to writing many rules, each
2809 -with one target, and all identical aside from that. The same commands
2810 -apply to all the targets, but their effects may vary because you can
2811 -substitute the actual target name into the command using `$@'. The
2812 -rule contributes the same prerequisites to all the targets also.
2814 - This is useful in two cases.
2816 - * You want just prerequisites, no commands. For example:
2818 - kbd.o command.o files.o: command.h
2820 - gives an additional prerequisite to each of the three object files
2821 - mentioned.
2823 - * Similar commands work for all the targets. The commands do not
2824 - need to be absolutely identical, since the automatic variable `$@'
2825 - can be used to substitute the particular target to be remade into
2826 - the commands (*note Automatic Variables::). For example:
2828 - bigoutput littleoutput : text.g
2829 - generate text.g -$(subst output,,$@) > $@
2831 - is equivalent to
2833 - bigoutput : text.g
2834 - generate text.g -big > bigoutput
2835 - littleoutput : text.g
2836 - generate text.g -little > littleoutput
2838 - Here we assume the hypothetical program `generate' makes two types
2839 - of output, one if given `-big' and one if given `-little'. *Note
2840 - Functions for String Substitution and Analysis: Text Functions,
2841 - for an explanation of the `subst' function.
2843 - Suppose you would like to vary the prerequisites according to the
2844 -target, much as the variable `$@' allows you to vary the commands. You
2845 -cannot do this with multiple targets in an ordinary rule, but you can
2846 -do it with a "static pattern rule". *Note Static Pattern Rules: Static
2847 -Pattern.
2849 -\x1f
2850 -File: make.info, Node: Multiple Rules, Next: Static Pattern, Prev: Multiple Targets, Up: Rules
2852 -4.11 Multiple Rules for One Target
2853 -==================================
2855 -One file can be the target of several rules. All the prerequisites
2856 -mentioned in all the rules are merged into one list of prerequisites for
2857 -the target. If the target is older than any prerequisite from any rule,
2858 -the commands are executed.
2860 - There can only be one set of commands to be executed for a file. If
2861 -more than one rule gives commands for the same file, `make' uses the
2862 -last set given and prints an error message. (As a special case, if the
2863 -file's name begins with a dot, no error message is printed. This odd
2864 -behavior is only for compatibility with other implementations of
2865 -`make'... you should avoid using it). Occasionally it is useful to
2866 -have the same target invoke multiple commands which are defined in
2867 -different parts of your makefile; you can use "double-colon rules"
2868 -(*note Double-Colon::) for this.
2870 - An extra rule with just prerequisites can be used to give a few extra
2871 -prerequisites to many files at once. For example, makefiles often have
2872 -a variable, such as `objects', containing a list of all the compiler
2873 -output files in the system being made. An easy way to say that all of
2874 -them must be recompiled if `config.h' changes is to write the following:
2876 - objects = foo.o bar.o
2877 - foo.o : defs.h
2878 - bar.o : defs.h test.h
2879 - $(objects) : config.h
2881 - This could be inserted or taken out without changing the rules that
2882 -really specify how to make the object files, making it a convenient
2883 -form to use if you wish to add the additional prerequisite
2884 -intermittently.
2886 - Another wrinkle is that the additional prerequisites could be
2887 -specified with a variable that you set with a command argument to `make'
2888 -(*note Overriding Variables: Overriding.). For example,
2890 - extradeps=
2891 - $(objects) : $(extradeps)
2893 -means that the command `make extradeps=foo.h' will consider `foo.h' as
2894 -a prerequisite of each object file, but plain `make' will not.
2896 - If none of the explicit rules for a target has commands, then `make'
2897 -searches for an applicable implicit rule to find some commands *note
2898 -Using Implicit Rules: Implicit Rules.).
2900 -\x1f
2901 -File: make.info, Node: Static Pattern, Next: Double-Colon, Prev: Multiple Rules, Up: Rules
2903 -4.12 Static Pattern Rules
2904 -=========================
2906 -"Static pattern rules" are rules which specify multiple targets and
2907 -construct the prerequisite names for each target based on the target
2908 -name. They are more general than ordinary rules with multiple targets
2909 -because the targets do not have to have identical prerequisites. Their
2910 -prerequisites must be _analogous_, but not necessarily _identical_.
2912 -* Menu:
2914 -* Static Usage:: The syntax of static pattern rules.
2915 -* Static versus Implicit:: When are they better than implicit rules?
2917 -\x1f
2918 -File: make.info, Node: Static Usage, Next: Static versus Implicit, Prev: Static Pattern, Up: Static Pattern
2920 -4.12.1 Syntax of Static Pattern Rules
2921 --------------------------------------
2923 -Here is the syntax of a static pattern rule:
2925 - TARGETS ...: TARGET-PATTERN: PREREQ-PATTERNS ...
2926 - COMMANDS
2927 - ...
2929 -The TARGETS list specifies the targets that the rule applies to. The
2930 -targets can contain wildcard characters, just like the targets of
2931 -ordinary rules (*note Using Wildcard Characters in File Names:
2932 -Wildcards.).
2934 - The TARGET-PATTERN and PREREQ-PATTERNS say how to compute the
2935 -prerequisites of each target. Each target is matched against the
2936 -TARGET-PATTERN to extract a part of the target name, called the "stem".
2937 -This stem is substituted into each of the PREREQ-PATTERNS to make the
2938 -prerequisite names (one from each PREREQ-PATTERN).
2940 - Each pattern normally contains the character `%' just once. When the
2941 -TARGET-PATTERN matches a target, the `%' can match any part of the
2942 -target name; this part is called the "stem". The rest of the pattern
2943 -must match exactly. For example, the target `foo.o' matches the
2944 -pattern `%.o', with `foo' as the stem. The targets `foo.c' and
2945 -`foo.out' do not match that pattern.
2947 - The prerequisite names for each target are made by substituting the
2948 -stem for the `%' in each prerequisite pattern. For example, if one
2949 -prerequisite pattern is `%.c', then substitution of the stem `foo'
2950 -gives the prerequisite name `foo.c'. It is legitimate to write a
2951 -prerequisite pattern that does not contain `%'; then this prerequisite
2952 -is the same for all targets.
2954 - `%' characters in pattern rules can be quoted with preceding
2955 -backslashes (`\'). Backslashes that would otherwise quote `%'
2956 -characters can be quoted with more backslashes. Backslashes that quote
2957 -`%' characters or other backslashes are removed from the pattern before
2958 -it is compared to file names or has a stem substituted into it.
2959 -Backslashes that are not in danger of quoting `%' characters go
2960 -unmolested. For example, the pattern `the\%weird\\%pattern\\' has
2961 -`the%weird\' preceding the operative `%' character, and `pattern\\'
2962 -following it. The final two backslashes are left alone because they
2963 -cannot affect any `%' character.
2965 - Here is an example, which compiles each of `foo.o' and `bar.o' from
2966 -the corresponding `.c' file:
2968 - objects = foo.o bar.o
2970 - all: $(objects)
2972 - $(objects): %.o: %.c
2973 - $(CC) -c $(CFLAGS) $< -o $@
2975 -Here `$<' is the automatic variable that holds the name of the
2976 -prerequisite and `$@' is the automatic variable that holds the name of
2977 -the target; see *Note Automatic Variables::.
2979 - Each target specified must match the target pattern; a warning is
2980 -issued for each target that does not. If you have a list of files,
2981 -only some of which will match the pattern, you can use the `filter'
2982 -function to remove nonmatching file names (*note Functions for String
2983 -Substitution and Analysis: Text Functions.):
2985 - files = foo.elc bar.o lose.o
2987 - $(filter %.o,$(files)): %.o: %.c
2988 - $(CC) -c $(CFLAGS) $< -o $@
2989 - $(filter %.elc,$(files)): %.elc: %.el
2990 - emacs -f batch-byte-compile $<
2992 -In this example the result of `$(filter %.o,$(files))' is `bar.o
2993 -lose.o', and the first static pattern rule causes each of these object
2994 -files to be updated by compiling the corresponding C source file. The
2995 -result of `$(filter %.elc,$(files))' is `foo.elc', so that file is made
2996 -from `foo.el'.
2998 - Another example shows how to use `$*' in static pattern rules:
3000 - bigoutput littleoutput : %output : text.g
3001 - generate text.g -$* > $@
3003 -When the `generate' command is run, `$*' will expand to the stem,
3004 -either `big' or `little'.
3006 -\x1f
3007 -File: make.info, Node: Static versus Implicit, Prev: Static Usage, Up: Static Pattern
3009 -4.12.2 Static Pattern Rules versus Implicit Rules
3010 --------------------------------------------------
3012 -A static pattern rule has much in common with an implicit rule defined
3013 -as a pattern rule (*note Defining and Redefining Pattern Rules: Pattern
3014 -Rules.). Both have a pattern for the target and patterns for
3015 -constructing the names of prerequisites. The difference is in how
3016 -`make' decides _when_ the rule applies.
3018 - An implicit rule _can_ apply to any target that matches its pattern,
3019 -but it _does_ apply only when the target has no commands otherwise
3020 -specified, and only when the prerequisites can be found. If more than
3021 -one implicit rule appears applicable, only one applies; the choice
3022 -depends on the order of rules.
3024 - By contrast, a static pattern rule applies to the precise list of
3025 -targets that you specify in the rule. It cannot apply to any other
3026 -target and it invariably does apply to each of the targets specified.
3027 -If two conflicting rules apply, and both have commands, that's an error.
3029 - The static pattern rule can be better than an implicit rule for these
3030 -reasons:
3032 - * You may wish to override the usual implicit rule for a few files
3033 - whose names cannot be categorized syntactically but can be given
3034 - in an explicit list.
3036 - * If you cannot be sure of the precise contents of the directories
3037 - you are using, you may not be sure which other irrelevant files
3038 - might lead `make' to use the wrong implicit rule. The choice
3039 - might depend on the order in which the implicit rule search is
3040 - done. With static pattern rules, there is no uncertainty: each
3041 - rule applies to precisely the targets specified.
3043 -\x1f
3044 -File: make.info, Node: Double-Colon, Next: Automatic Prerequisites, Prev: Static Pattern, Up: Rules
3046 -4.13 Double-Colon Rules
3047 -=======================
3049 -"Double-colon" rules are rules written with `::' instead of `:' after
3050 -the target names. They are handled differently from ordinary rules
3051 -when the same target appears in more than one rule.
3053 - When a target appears in multiple rules, all the rules must be the
3054 -same type: all ordinary, or all double-colon. If they are
3055 -double-colon, each of them is independent of the others. Each
3056 -double-colon rule's commands are executed if the target is older than
3057 -any prerequisites of that rule. If there are no prerequisites for that
3058 -rule, its commands are always executed (even if the target already
3059 -exists). This can result in executing none, any, or all of the
3060 -double-colon rules.
3062 - Double-colon rules with the same target are in fact completely
3063 -separate from one another. Each double-colon rule is processed
3064 -individually, just as rules with different targets are processed.
3066 - The double-colon rules for a target are executed in the order they
3067 -appear in the makefile. However, the cases where double-colon rules
3068 -really make sense are those where the order of executing the commands
3069 -would not matter.
3071 - Double-colon rules are somewhat obscure and not often very useful;
3072 -they provide a mechanism for cases in which the method used to update a
3073 -target differs depending on which prerequisite files caused the update,
3074 -and such cases are rare.
3076 - Each double-colon rule should specify commands; if it does not, an
3077 -implicit rule will be used if one applies. *Note Using Implicit Rules:
3078 -Implicit Rules.
3080 -\x1f
3081 -File: make.info, Node: Automatic Prerequisites, Prev: Double-Colon, Up: Rules
3083 -4.14 Generating Prerequisites Automatically
3084 -===========================================
3086 -In the makefile for a program, many of the rules you need to write often
3087 -say only that some object file depends on some header file. For
3088 -example, if `main.c' uses `defs.h' via an `#include', you would write:
3090 - main.o: defs.h
3092 -You need this rule so that `make' knows that it must remake `main.o'
3093 -whenever `defs.h' changes. You can see that for a large program you
3094 -would have to write dozens of such rules in your makefile. And, you
3095 -must always be very careful to update the makefile every time you add
3096 -or remove an `#include'.
3098 - To avoid this hassle, most modern C compilers can write these rules
3099 -for you, by looking at the `#include' lines in the source files.
3100 -Usually this is done with the `-M' option to the compiler. For
3101 -example, the command:
3103 - cc -M main.c
3105 -generates the output:
3107 - main.o : main.c defs.h
3109 -Thus you no longer have to write all those rules yourself. The
3110 -compiler will do it for you.
3112 - Note that such a prerequisite constitutes mentioning `main.o' in a
3113 -makefile, so it can never be considered an intermediate file by implicit
3114 -rule search. This means that `make' won't ever remove the file after
3115 -using it; *note Chains of Implicit Rules: Chained Rules.
3117 - With old `make' programs, it was traditional practice to use this
3118 -compiler feature to generate prerequisites on demand with a command like
3119 -`make depend'. That command would create a file `depend' containing
3120 -all the automatically-generated prerequisites; then the makefile could
3121 -use `include' to read them in (*note Include::).
3123 - In GNU `make', the feature of remaking makefiles makes this practice
3124 -obsolete--you need never tell `make' explicitly to regenerate the
3125 -prerequisites, because it always regenerates any makefile that is out
3126 -of date. *Note Remaking Makefiles::.
3128 - The practice we recommend for automatic prerequisite generation is
3129 -to have one makefile corresponding to each source file. For each
3130 -source file `NAME.c' there is a makefile `NAME.d' which lists what
3131 -files the object file `NAME.o' depends on. That way only the source
3132 -files that have changed need to be rescanned to produce the new
3133 -prerequisites.
3135 - Here is the pattern rule to generate a file of prerequisites (i.e.,
3136 -a makefile) called `NAME.d' from a C source file called `NAME.c':
3138 - %.d: %.c
3139 - @set -e; rm -f $@; \
3140 - $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
3141 - sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
3142 - rm -f $@.$$$$
3144 -*Note Pattern Rules::, for information on defining pattern rules. The
3145 -`-e' flag to the shell causes it to exit immediately if the `$(CC)'
3146 -command (or any other command) fails (exits with a nonzero status).
3148 - With the GNU C compiler, you may wish to use the `-MM' flag instead
3149 -of `-M'. This omits prerequisites on system header files. *Note
3150 -Options Controlling the Preprocessor: (gcc.info)Preprocessor Options,
3151 -for details.
3153 - The purpose of the `sed' command is to translate (for example):
3155 - main.o : main.c defs.h
3157 -into:
3159 - main.o main.d : main.c defs.h
3161 -This makes each `.d' file depend on all the source and header files
3162 -that the corresponding `.o' file depends on. `make' then knows it must
3163 -regenerate the prerequisites whenever any of the source or header files
3164 -changes.
3166 - Once you've defined the rule to remake the `.d' files, you then use
3167 -the `include' directive to read them all in. *Note Include::. For
3168 -example:
3170 - sources = foo.c bar.c
3172 - include $(sources:.c=.d)
3174 -(This example uses a substitution variable reference to translate the
3175 -list of source files `foo.c bar.c' into a list of prerequisite
3176 -makefiles, `foo.d bar.d'. *Note Substitution Refs::, for full
3177 -information on substitution references.) Since the `.d' files are
3178 -makefiles like any others, `make' will remake them as necessary with no
3179 -further work from you. *Note Remaking Makefiles::.
3181 - Note that the `.d' files contain target definitions; you should be
3182 -sure to place the `include' directive _after_ the first, default goal
3183 -in your makefiles or run the risk of having a random object file become
3184 -the default goal. *Note How Make Works::.
3186 -\x1f
3187 -File: make.info, Node: Commands, Next: Using Variables, Prev: Rules, Up: Top
3189 -5 Writing the Commands in Rules
3190 -*******************************
3192 -The commands of a rule consist of one or more shell command lines to be
3193 -executed, one at a time, in the order they appear. Typically, the
3194 -result of executing these commands is that the target of the rule is
3195 -brought up to date.
3197 - Users use many different shell programs, but commands in makefiles
3198 -are always interpreted by `/bin/sh' unless the makefile specifies
3199 -otherwise. *Note Command Execution: Execution.
3201 -* Menu:
3203 -* Command Syntax:: Command syntax features and pitfalls.
3204 -* Echoing:: How to control when commands are echoed.
3205 -* Execution:: How commands are executed.
3206 -* Parallel:: How commands can be executed in parallel.
3207 -* Errors:: What happens after a command execution error.
3208 -* Interrupts:: What happens when a command is interrupted.
3209 -* Recursion:: Invoking `make' from makefiles.
3210 -* Sequences:: Defining canned sequences of commands.
3211 -* Empty Commands:: Defining useful, do-nothing commands.
3213 -\x1f
3214 -File: make.info, Node: Command Syntax, Next: Echoing, Prev: Commands, Up: Commands
3216 -5.1 Command Syntax
3217 -==================
3219 -Makefiles have the unusual property that there are really two distinct
3220 -syntaxes in one file. Most of the makefile uses `make' syntax (*note
3221 -Writing Makefiles: Makefiles.). However, commands are meant to be
3222 -interpreted by the shell and so they are written using shell syntax.
3223 -The `make' program does not try to understand shell syntax: it performs
3224 -only a very few specific translations on the content of the command
3225 -before handing it to the shell.
3227 - Each command line must start with a tab, except that the first
3228 -command line may be attached to the target-and-prerequisites line with a
3229 -semicolon in between. _Any_ line in the makefile that begins with a
3230 -tab and appears in a "rule context" (that is, after a rule has been
3231 -started until another rule or variable definition) will be considered a
3232 -command line for that rule. Blank lines and lines of just comments may
3233 -appear among the command lines; they are ignored.
3235 - Some consequences of these rules include:
3237 - * A blank line that begins with a tab is not blank: it's an empty
3238 - command (*note Empty Commands::).
3240 - * A comment in a command line is not a `make' comment; it will be
3241 - passed to the shell as-is. Whether the shell treats it as a
3242 - comment or not depends on your shell.
3244 - * A variable definition in a "rule context" which is indented by a
3245 - tab as the first character on the line, will be considered a
3246 - command line, not a `make' variable definition, and passed to the
3247 - shell.
3249 - * A conditional expression (`ifdef', `ifeq', etc. *note Syntax of
3250 - Conditionals: Conditional Syntax.) in a "rule context" which is
3251 - indented by a tab as the first character on the line, will be
3252 - considered a command line and be passed to the shell.
3255 -* Menu:
3257 -* Splitting Lines:: Breaking long command lines for readability.
3258 -* Variables in Commands:: Using `make' variables in commands.
3260 -\x1f
3261 -File: make.info, Node: Splitting Lines, Next: Variables in Commands, Prev: Command Syntax, Up: Command Syntax
3263 -5.1.1 Splitting Command Lines
3264 ------------------------------
3266 -One of the few ways in which `make' does interpret command lines is
3267 -checking for a backslash just before the newline. As in normal
3268 -makefile syntax, a single command can be split into multiple lines in
3269 -the makefile by placing a backslash before each newline. A sequence of
3270 -lines like this is considered a single command, and one instance of the
3271 -shell will be invoked to run it.
3273 - However, in contrast to how they are treated in other places in a
3274 -makefile, backslash-newline pairs are _not_ removed from the command.
3275 -Both the backslash and the newline characters are preserved and passed
3276 -to the shell. How the backslash-newline is interpreted depends on your
3277 -shell. If the first character of the next line after the
3278 -backslash-newline is a tab, then that tab (and only that tab) is
3279 -removed. Whitespace is never added to the command.
3281 - For example, this makefile:
3283 - all :
3284 - @echo no\
3285 - space
3286 - @echo no\
3287 - space
3288 - @echo one \
3289 - space
3290 - @echo one\
3291 - space
3293 -consists of four separate shell commands where the output is:
3295 - nospace
3296 - nospace
3297 - one space
3298 - one space
3300 - As a more complex example, this makefile:
3302 - all : ; @echo 'hello \
3303 - world' ; echo "hello \
3304 - world"
3306 -will run one shell with a command script of:
3308 - echo 'hello \
3309 - world' ; echo "hello \
3310 - world"
3312 -which, according to shell quoting rules, will yield the following
3313 -output:
3315 - hello \
3316 - world
3317 - hello world
3319 -Notice how the backslash/newline pair was removed inside the string
3320 -quoted with double quotes (`"..."'), but not from the string quoted
3321 -with single quotes (`'...''). This is the way the default shell
3322 -(`/bin/sh') handles backslash/newline pairs. If you specify a
3323 -different shell in your makefiles it may treat them differently.
3325 - Sometimes you want to split a long line inside of single quotes, but
3326 -you don't want the backslash-newline to appear in the quoted content.
3327 -This is often the case when passing scripts to languages such as Perl,
3328 -where extraneous backslashes inside the script can change its meaning
3329 -or even be a syntax error. One simple way of handling this is to place
3330 -the quoted string, or even the entire command, into a `make' variable
3331 -then use the variable in the command. In this situation the newline
3332 -quoting rules for makefiles will be used, and the backslash-newline
3333 -will be removed. If we rewrite our example above using this method:
3335 - HELLO = 'hello \
3336 - world'
3338 - all : ; @echo $(HELLO)
3340 -we will get output like this:
3342 - hello world
3344 - If you like, you can also use target-specific variables (*note
3345 -Target-specific Variable Values: Target-specific.) to obtain a tighter
3346 -correspondence between the variable and the command that uses it.
3348 -\x1f
3349 -File: make.info, Node: Variables in Commands, Prev: Splitting Lines, Up: Command Syntax
3351 -5.1.2 Using Variables in Commands
3352 ----------------------------------
3354 -The other way in which `make' processes commands is by expanding any
3355 -variable references in them (*note Basics of Variable References:
3356 -Reference.). This occurs after make has finished reading all the
3357 -makefiles and the target is determined to be out of date; so, the
3358 -commands for targets which are not rebuilt are never expanded.
3360 - Variable and function references in commands have identical syntax
3361 -and semantics to references elsewhere in the makefile. They also have
3362 -the same quoting rules: if you want a dollar sign to appear in your
3363 -command, you must double it (`$$'). For shells like the default shell,
3364 -that use dollar signs to introduce variables, it's important to keep
3365 -clear in your mind whether the variable you want to reference is a
3366 -`make' variable (use a single dollar sign) or a shell variable (use two
3367 -dollar signs). For example:
3369 - LIST = one two three
3370 - all:
3371 - for i in $(LIST); do \
3372 - echo $$i; \
3373 - done
3375 -results in the following command being passed to the shell:
3377 - for i in one two three; do \
3378 - echo $i; \
3379 - done
3381 -which generates the expected result:
3383 - one
3384 - two
3385 - three
3387 -\x1f
3388 -File: make.info, Node: Echoing, Next: Execution, Prev: Command Syntax, Up: Commands
3390 -5.2 Command Echoing
3391 -===================
3393 -Normally `make' prints each command line before it is executed. We
3394 -call this "echoing" because it gives the appearance that you are typing
3395 -the commands yourself.
3397 - When a line starts with `@', the echoing of that line is suppressed.
3398 -The `@' is discarded before the command is passed to the shell.
3399 -Typically you would use this for a command whose only effect is to print
3400 -something, such as an `echo' command to indicate progress through the
3401 -makefile:
3403 - @echo About to make distribution files
3405 - When `make' is given the flag `-n' or `--just-print' it only echoes
3406 -commands, it won't execute them. *Note Summary of Options: Options
3407 -Summary. In this case and only this case, even the commands starting
3408 -with `@' are printed. This flag is useful for finding out which
3409 -commands `make' thinks are necessary without actually doing them.
3411 - The `-s' or `--silent' flag to `make' prevents all echoing, as if
3412 -all commands started with `@'. A rule in the makefile for the special
3413 -target `.SILENT' without prerequisites has the same effect (*note
3414 -Special Built-in Target Names: Special Targets.). `.SILENT' is
3415 -essentially obsolete since `@' is more flexible.
3417 -\x1f
3418 -File: make.info, Node: Execution, Next: Parallel, Prev: Echoing, Up: Commands
3420 -5.3 Command Execution
3421 -=====================
3423 -When it is time to execute commands to update a target, they are
3424 -executed by invoking a new subshell for each command line. (In
3425 -practice, `make' may take shortcuts that do not affect the results.)
3427 - *Please note:* this implies that setting shell variables and
3428 -invoking shell commands such as `cd' that set a context local to each
3429 -process will not affect the following command lines.(1) If you want to
3430 -use `cd' to affect the next statement, put both statements in a single
3431 -command line. Then `make' will invoke one shell to run the entire
3432 -line, and the shell will execute the statements in sequence. For
3433 -example:
3435 - foo : bar/lose
3436 - cd $(@D) && gobble $(@F) > ../$@
3438 -Here we use the shell AND operator (`&&') so that if the `cd' command
3439 -fails, the script will fail without trying to invoke the `gobble'
3440 -command in the wrong directory, which could cause problems (in this
3441 -case it would certainly cause `../foo' to be truncated, at least).
3443 -* Menu:
3445 -* Choosing the Shell:: How `make' chooses the shell used
3446 - to run commands.
3448 - ---------- Footnotes ----------
3450 - (1) On MS-DOS, the value of current working directory is *global*, so
3451 -changing it _will_ affect the following command lines on those systems.
3453 -\x1f
3454 -File: make.info, Node: Choosing the Shell, Prev: Execution, Up: Execution
3456 -5.3.1 Choosing the Shell
3457 -------------------------
3459 -The program used as the shell is taken from the variable `SHELL'. If
3460 -this variable is not set in your makefile, the program `/bin/sh' is
3461 -used as the shell.
3463 - Unlike most variables, the variable `SHELL' is never set from the
3464 -environment. This is because the `SHELL' environment variable is used
3465 -to specify your personal choice of shell program for interactive use.
3466 -It would be very bad for personal choices like this to affect the
3467 -functioning of makefiles. *Note Variables from the Environment:
3468 -Environment.
3470 - Furthermore, when you do set `SHELL' in your makefile that value is
3471 -_not_ exported in the environment to commands that `make' invokes.
3472 -Instead, the value inherited from the user's environment, if any, is
3473 -exported. You can override this behavior by explicitly exporting
3474 -`SHELL' (*note Communicating Variables to a Sub-`make':
3475 -Variables/Recursion.), forcing it to be passed in the environment to
3476 -commands.
3478 - However, on MS-DOS and MS-Windows the value of `SHELL' in the
3479 -environment *is* used, since on those systems most users do not set
3480 -this variable, and therefore it is most likely set specifically to be
3481 -used by `make'. On MS-DOS, if the setting of `SHELL' is not suitable
3482 -for `make', you can set the variable `MAKESHELL' to the shell that
3483 -`make' should use; if set it will be used as the shell instead of the
3484 -value of `SHELL'.
3486 -Choosing a Shell in DOS and Windows
3487 -...................................
3489 -Choosing a shell in MS-DOS and MS-Windows is much more complex than on
3490 -other systems.
3492 - On MS-DOS, if `SHELL' is not set, the value of the variable
3493 -`COMSPEC' (which is always set) is used instead.
3495 - The processing of lines that set the variable `SHELL' in Makefiles
3496 -is different on MS-DOS. The stock shell, `command.com', is
3497 -ridiculously limited in its functionality and many users of `make' tend
3498 -to install a replacement shell. Therefore, on MS-DOS, `make' examines
3499 -the value of `SHELL', and changes its behavior based on whether it
3500 -points to a Unix-style or DOS-style shell. This allows reasonable
3501 -functionality even if `SHELL' points to `command.com'.
3503 - If `SHELL' points to a Unix-style shell, `make' on MS-DOS
3504 -additionally checks whether that shell can indeed be found; if not, it
3505 -ignores the line that sets `SHELL'. In MS-DOS, GNU `make' searches for
3506 -the shell in the following places:
3508 - 1. In the precise place pointed to by the value of `SHELL'. For
3509 - example, if the makefile specifies `SHELL = /bin/sh', `make' will
3510 - look in the directory `/bin' on the current drive.
3512 - 2. In the current directory.
3514 - 3. In each of the directories in the `PATH' variable, in order.
3517 - In every directory it examines, `make' will first look for the
3518 -specific file (`sh' in the example above). If this is not found, it
3519 -will also look in that directory for that file with one of the known
3520 -extensions which identify executable files. For example `.exe',
3521 -`.com', `.bat', `.btm', `.sh', and some others.
3523 - If any of these attempts is successful, the value of `SHELL' will be
3524 -set to the full pathname of the shell as found. However, if none of
3525 -these is found, the value of `SHELL' will not be changed, and thus the
3526 -line that sets it will be effectively ignored. This is so `make' will
3527 -only support features specific to a Unix-style shell if such a shell is
3528 -actually installed on the system where `make' runs.
3530 - Note that this extended search for the shell is limited to the cases
3531 -where `SHELL' is set from the Makefile; if it is set in the environment
3532 -or command line, you are expected to set it to the full pathname of the
3533 -shell, exactly as things are on Unix.
3535 - The effect of the above DOS-specific processing is that a Makefile
3536 -that contains `SHELL = /bin/sh' (as many Unix makefiles do), will work
3537 -on MS-DOS unaltered if you have e.g. `sh.exe' installed in some
3538 -directory along your `PATH'.
3540 -\x1f
3541 -File: make.info, Node: Parallel, Next: Errors, Prev: Execution, Up: Commands
3543 -5.4 Parallel Execution
3544 -======================
3546 -GNU `make' knows how to execute several commands at once. Normally,
3547 -`make' will execute only one command at a time, waiting for it to
3548 -finish before executing the next. However, the `-j' or `--jobs' option
3549 -tells `make' to execute many commands simultaneously.
3551 - On MS-DOS, the `-j' option has no effect, since that system doesn't
3552 -support multi-processing.
3554 - If the `-j' option is followed by an integer, this is the number of
3555 -commands to execute at once; this is called the number of "job slots".
3556 -If there is nothing looking like an integer after the `-j' option,
3557 -there is no limit on the number of job slots. The default number of job
3558 -slots is one, which means serial execution (one thing at a time).
3560 - One unpleasant consequence of running several commands
3561 -simultaneously is that output generated by the commands appears
3562 -whenever each command sends it, so messages from different commands may
3563 -be interspersed.
3565 - Another problem is that two processes cannot both take input from the
3566 -same device; so to make sure that only one command tries to take input
3567 -from the terminal at once, `make' will invalidate the standard input
3568 -streams of all but one running command. This means that attempting to
3569 -read from standard input will usually be a fatal error (a `Broken pipe'
3570 -signal) for most child processes if there are several.
3572 - It is unpredictable which command will have a valid standard input
3573 -stream (which will come from the terminal, or wherever you redirect the
3574 -standard input of `make'). The first command run will always get it
3575 -first, and the first command started after that one finishes will get
3576 -it next, and so on.
3578 - We will change how this aspect of `make' works if we find a better
3579 -alternative. In the mean time, you should not rely on any command using
3580 -standard input at all if you are using the parallel execution feature;
3581 -but if you are not using this feature, then standard input works
3582 -normally in all commands.
3584 - Finally, handling recursive `make' invocations raises issues. For
3585 -more information on this, see *Note Communicating Options to a
3586 -Sub-`make': Options/Recursion.
3588 - If a command fails (is killed by a signal or exits with a nonzero
3589 -status), and errors are not ignored for that command (*note Errors in
3590 -Commands: Errors.), the remaining command lines to remake the same
3591 -target will not be run. If a command fails and the `-k' or
3592 -`--keep-going' option was not given (*note Summary of Options: Options
3593 -Summary.), `make' aborts execution. If make terminates for any reason
3594 -(including a signal) with child processes running, it waits for them to
3595 -finish before actually exiting.
3597 - When the system is heavily loaded, you will probably want to run
3598 -fewer jobs than when it is lightly loaded. You can use the `-l' option
3599 -to tell `make' to limit the number of jobs to run at once, based on the
3600 -load average. The `-l' or `--max-load' option is followed by a
3601 -floating-point number. For example,
3603 - -l 2.5
3605 -will not let `make' start more than one job if the load average is
3606 -above 2.5. The `-l' option with no following number removes the load
3607 -limit, if one was given with a previous `-l' option.
3609 - More precisely, when `make' goes to start up a job, and it already
3610 -has at least one job running, it checks the current load average; if it
3611 -is not lower than the limit given with `-l', `make' waits until the load
3612 -average goes below that limit, or until all the other jobs finish.
3614 - By default, there is no load limit.
3616 -\x1f
3617 -File: make.info, Node: Errors, Next: Interrupts, Prev: Parallel, Up: Commands
3619 -5.5 Errors in Commands
3620 -======================
3622 -After each shell command returns, `make' looks at its exit status. If
3623 -the command completed successfully, the next command line is executed
3624 -in a new shell; after the last command line is finished, the rule is
3625 -finished.
3627 - If there is an error (the exit status is nonzero), `make' gives up on
3628 -the current rule, and perhaps on all rules.
3630 - Sometimes the failure of a certain command does not indicate a
3631 -problem. For example, you may use the `mkdir' command to ensure that a
3632 -directory exists. If the directory already exists, `mkdir' will report
3633 -an error, but you probably want `make' to continue regardless.
3635 - To ignore errors in a command line, write a `-' at the beginning of
3636 -the line's text (after the initial tab). The `-' is discarded before
3637 -the command is passed to the shell for execution.
3639 - For example,
3641 - clean:
3642 - -rm -f *.o
3644 -This causes `rm' to continue even if it is unable to remove a file.
3646 - When you run `make' with the `-i' or `--ignore-errors' flag, errors
3647 -are ignored in all commands of all rules. A rule in the makefile for
3648 -the special target `.IGNORE' has the same effect, if there are no
3649 -prerequisites. These ways of ignoring errors are obsolete because `-'
3650 -is more flexible.
3652 - When errors are to be ignored, because of either a `-' or the `-i'
3653 -flag, `make' treats an error return just like success, except that it
3654 -prints out a message that tells you the status code the command exited
3655 -with, and says that the error has been ignored.
3657 - When an error happens that `make' has not been told to ignore, it
3658 -implies that the current target cannot be correctly remade, and neither
3659 -can any other that depends on it either directly or indirectly. No
3660 -further commands will be executed for these targets, since their
3661 -preconditions have not been achieved.
3663 - Normally `make' gives up immediately in this circumstance, returning
3664 -a nonzero status. However, if the `-k' or `--keep-going' flag is
3665 -specified, `make' continues to consider the other prerequisites of the
3666 -pending targets, remaking them if necessary, before it gives up and
3667 -returns nonzero status. For example, after an error in compiling one
3668 -object file, `make -k' will continue compiling other object files even
3669 -though it already knows that linking them will be impossible. *Note
3670 -Summary of Options: Options Summary.
3672 - The usual behavior assumes that your purpose is to get the specified
3673 -targets up to date; once `make' learns that this is impossible, it
3674 -might as well report the failure immediately. The `-k' option says
3675 -that the real purpose is to test as many of the changes made in the
3676 -program as possible, perhaps to find several independent problems so
3677 -that you can correct them all before the next attempt to compile. This
3678 -is why Emacs' `compile' command passes the `-k' flag by default.
3680 - Usually when a command fails, if it has changed the target file at
3681 -all, the file is corrupted and cannot be used--or at least it is not
3682 -completely updated. Yet the file's time stamp says that it is now up to
3683 -date, so the next time `make' runs, it will not try to update that
3684 -file. The situation is just the same as when the command is killed by a
3685 -signal; *note Interrupts::. So generally the right thing to do is to
3686 -delete the target file if the command fails after beginning to change
3687 -the file. `make' will do this if `.DELETE_ON_ERROR' appears as a
3688 -target. This is almost always what you want `make' to do, but it is
3689 -not historical practice; so for compatibility, you must explicitly
3690 -request it.
3692 -\x1f
3693 -File: make.info, Node: Interrupts, Next: Recursion, Prev: Errors, Up: Commands
3695 -5.6 Interrupting or Killing `make'
3696 -==================================
3698 -If `make' gets a fatal signal while a command is executing, it may
3699 -delete the target file that the command was supposed to update. This is
3700 -done if the target file's last-modification time has changed since
3701 -`make' first checked it.
3703 - The purpose of deleting the target is to make sure that it is remade
3704 -from scratch when `make' is next run. Why is this? Suppose you type
3705 -`Ctrl-c' while a compiler is running, and it has begun to write an
3706 -object file `foo.o'. The `Ctrl-c' kills the compiler, resulting in an
3707 -incomplete file whose last-modification time is newer than the source
3708 -file `foo.c'. But `make' also receives the `Ctrl-c' signal and deletes
3709 -this incomplete file. If `make' did not do this, the next invocation
3710 -of `make' would think that `foo.o' did not require updating--resulting
3711 -in a strange error message from the linker when it tries to link an
3712 -object file half of which is missing.
3714 - You can prevent the deletion of a target file in this way by making
3715 -the special target `.PRECIOUS' depend on it. Before remaking a target,
3716 -`make' checks to see whether it appears on the prerequisites of
3717 -`.PRECIOUS', and thereby decides whether the target should be deleted
3718 -if a signal happens. Some reasons why you might do this are that the
3719 -target is updated in some atomic fashion, or exists only to record a
3720 -modification-time (its contents do not matter), or must exist at all
3721 -times to prevent other sorts of trouble.
3723 -\x1f
3724 -File: make.info, Node: Recursion, Next: Sequences, Prev: Interrupts, Up: Commands
3726 -5.7 Recursive Use of `make'
3727 -===========================
3729 -Recursive use of `make' means using `make' as a command in a makefile.
3730 -This technique is useful when you want separate makefiles for various
3731 -subsystems that compose a larger system. For example, suppose you have
3732 -a subdirectory `subdir' which has its own makefile, and you would like
3733 -the containing directory's makefile to run `make' on the subdirectory.
3734 -You can do it by writing this:
3736 - subsystem:
3737 - cd subdir && $(MAKE)
3739 -or, equivalently, this (*note Summary of Options: Options Summary.):
3741 - subsystem:
3742 - $(MAKE) -C subdir
3744 - You can write recursive `make' commands just by copying this example,
3745 -but there are many things to know about how they work and why, and about
3746 -how the sub-`make' relates to the top-level `make'. You may also find
3747 -it useful to declare targets that invoke recursive `make' commands as
3748 -`.PHONY' (for more discussion on when this is useful, see *Note Phony
3749 -Targets::).
3751 - For your convenience, when GNU `make' starts (after it has processed
3752 -any `-C' options) it sets the variable `CURDIR' to the pathname of the
3753 -current working directory. This value is never touched by `make'
3754 -again: in particular note that if you include files from other
3755 -directories the value of `CURDIR' does not change. The value has the
3756 -same precedence it would have if it were set in the makefile (by
3757 -default, an environment variable `CURDIR' will not override this
3758 -value). Note that setting this variable has no impact on the operation
3759 -of `make' (it does not cause `make' to change its working directory,
3760 -for example).
3762 -* Menu:
3764 -* MAKE Variable:: The special effects of using `$(MAKE)'.
3765 -* Variables/Recursion:: How to communicate variables to a sub-`make'.
3766 -* Options/Recursion:: How to communicate options to a sub-`make'.
3767 -* -w Option:: How the `-w' or `--print-directory' option
3768 - helps debug use of recursive `make' commands.
3770 -\x1f
3771 -File: make.info, Node: MAKE Variable, Next: Variables/Recursion, Prev: Recursion, Up: Recursion
3773 -5.7.1 How the `MAKE' Variable Works
3774 ------------------------------------
3776 -Recursive `make' commands should always use the variable `MAKE', not
3777 -the explicit command name `make', as shown here:
3779 - subsystem:
3780 - cd subdir && $(MAKE)
3782 - The value of this variable is the file name with which `make' was
3783 -invoked. If this file name was `/bin/make', then the command executed
3784 -is `cd subdir && /bin/make'. If you use a special version of `make' to
3785 -run the top-level makefile, the same special version will be executed
3786 -for recursive invocations.
3788 - As a special feature, using the variable `MAKE' in the commands of a
3789 -rule alters the effects of the `-t' (`--touch'), `-n' (`--just-print'),
3790 -or `-q' (`--question') option. Using the `MAKE' variable has the same
3791 -effect as using a `+' character at the beginning of the command line.
3792 -*Note Instead of Executing the Commands: Instead of Execution. This
3793 -special feature is only enabled if the `MAKE' variable appears directly
3794 -in the command script: it does not apply if the `MAKE' variable is
3795 -referenced through expansion of another variable. In the latter case
3796 -you must use the `+' token to get these special effects.
3798 - Consider the command `make -t' in the above example. (The `-t'
3799 -option marks targets as up to date without actually running any
3800 -commands; see *Note Instead of Execution::.) Following the usual
3801 -definition of `-t', a `make -t' command in the example would create a
3802 -file named `subsystem' and do nothing else. What you really want it to
3803 -do is run `cd subdir && make -t'; but that would require executing the
3804 -command, and `-t' says not to execute commands.
3806 - The special feature makes this do what you want: whenever a command
3807 -line of a rule contains the variable `MAKE', the flags `-t', `-n' and
3808 -`-q' do not apply to that line. Command lines containing `MAKE' are
3809 -executed normally despite the presence of a flag that causes most
3810 -commands not to be run. The usual `MAKEFLAGS' mechanism passes the
3811 -flags to the sub-`make' (*note Communicating Options to a Sub-`make':
3812 -Options/Recursion.), so your request to touch the files, or print the
3813 -commands, is propagated to the subsystem.
3815 -\x1f
3816 -File: make.info, Node: Variables/Recursion, Next: Options/Recursion, Prev: MAKE Variable, Up: Recursion
3818 -5.7.2 Communicating Variables to a Sub-`make'
3819 ----------------------------------------------
3821 -Variable values of the top-level `make' can be passed to the sub-`make'
3822 -through the environment by explicit request. These variables are
3823 -defined in the sub-`make' as defaults, but do not override what is
3824 -specified in the makefile used by the sub-`make' makefile unless you
3825 -use the `-e' switch (*note Summary of Options: Options Summary.).
3827 - To pass down, or "export", a variable, `make' adds the variable and
3828 -its value to the environment for running each command. The sub-`make',
3829 -in turn, uses the environment to initialize its table of variable
3830 -values. *Note Variables from the Environment: Environment.
3832 - Except by explicit request, `make' exports a variable only if it is
3833 -either defined in the environment initially or set on the command line,
3834 -and if its name consists only of letters, numbers, and underscores.
3835 -Some shells cannot cope with environment variable names consisting of
3836 -characters other than letters, numbers, and underscores.
3838 - The value of the `make' variable `SHELL' is not exported. Instead,
3839 -the value of the `SHELL' variable from the invoking environment is
3840 -passed to the sub-`make'. You can force `make' to export its value for
3841 -`SHELL' by using the `export' directive, described below. *Note
3842 -Choosing the Shell::.
3844 - The special variable `MAKEFLAGS' is always exported (unless you
3845 -unexport it). `MAKEFILES' is exported if you set it to anything.
3847 - `make' automatically passes down variable values that were defined
3848 -on the command line, by putting them in the `MAKEFLAGS' variable.
3849 -*Note Options/Recursion::.
3851 - Variables are _not_ normally passed down if they were created by
3852 -default by `make' (*note Variables Used by Implicit Rules: Implicit
3853 -Variables.). The sub-`make' will define these for itself.
3855 - If you want to export specific variables to a sub-`make', use the
3856 -`export' directive, like this:
3858 - export VARIABLE ...
3860 -If you want to _prevent_ a variable from being exported, use the
3861 -`unexport' directive, like this:
3863 - unexport VARIABLE ...
3865 -In both of these forms, the arguments to `export' and `unexport' are
3866 -expanded, and so could be variables or functions which expand to a
3867 -(list of) variable names to be (un)exported.
3869 - As a convenience, you can define a variable and export it at the same
3870 -time by doing:
3872 - export VARIABLE = value
3874 -has the same result as:
3876 - VARIABLE = value
3877 - export VARIABLE
3879 -and
3881 - export VARIABLE := value
3883 -has the same result as:
3885 - VARIABLE := value
3886 - export VARIABLE
3888 - Likewise,
3890 - export VARIABLE += value
3892 -is just like:
3894 - VARIABLE += value
3895 - export VARIABLE
3897 -*Note Appending More Text to Variables: Appending.
3899 - You may notice that the `export' and `unexport' directives work in
3900 -`make' in the same way they work in the shell, `sh'.
3902 - If you want all variables to be exported by default, you can use
3903 -`export' by itself:
3905 - export
3907 -This tells `make' that variables which are not explicitly mentioned in
3908 -an `export' or `unexport' directive should be exported. Any variable
3909 -given in an `unexport' directive will still _not_ be exported. If you
3910 -use `export' by itself to export variables by default, variables whose
3911 -names contain characters other than alphanumerics and underscores will
3912 -not be exported unless specifically mentioned in an `export' directive.
3914 - The behavior elicited by an `export' directive by itself was the
3915 -default in older versions of GNU `make'. If your makefiles depend on
3916 -this behavior and you want to be compatible with old versions of
3917 -`make', you can write a rule for the special target
3918 -`.EXPORT_ALL_VARIABLES' instead of using the `export' directive. This
3919 -will be ignored by old `make's, while the `export' directive will cause
3920 -a syntax error.
3922 - Likewise, you can use `unexport' by itself to tell `make' _not_ to
3923 -export variables by default. Since this is the default behavior, you
3924 -would only need to do this if `export' had been used by itself earlier
3925 -(in an included makefile, perhaps). You *cannot* use `export' and
3926 -`unexport' by themselves to have variables exported for some commands
3927 -and not for others. The last `export' or `unexport' directive that
3928 -appears by itself determines the behavior for the entire run of `make'.
3930 - As a special feature, the variable `MAKELEVEL' is changed when it is
3931 -passed down from level to level. This variable's value is a string
3932 -which is the depth of the level as a decimal number. The value is `0'
3933 -for the top-level `make'; `1' for a sub-`make', `2' for a
3934 -sub-sub-`make', and so on. The incrementation happens when `make' sets
3935 -up the environment for a command.
3937 - The main use of `MAKELEVEL' is to test it in a conditional directive
3938 -(*note Conditional Parts of Makefiles: Conditionals.); this way you can
3939 -write a makefile that behaves one way if run recursively and another
3940 -way if run directly by you.
3942 - You can use the variable `MAKEFILES' to cause all sub-`make'
3943 -commands to use additional makefiles. The value of `MAKEFILES' is a
3944 -whitespace-separated list of file names. This variable, if defined in
3945 -the outer-level makefile, is passed down through the environment; then
3946 -it serves as a list of extra makefiles for the sub-`make' to read
3947 -before the usual or specified ones. *Note The Variable `MAKEFILES':
3948 -MAKEFILES Variable.
3950 -\x1f
3951 -File: make.info, Node: Options/Recursion, Next: -w Option, Prev: Variables/Recursion, Up: Recursion
3953 -5.7.3 Communicating Options to a Sub-`make'
3954 --------------------------------------------
3956 -Flags such as `-s' and `-k' are passed automatically to the sub-`make'
3957 -through the variable `MAKEFLAGS'. This variable is set up
3958 -automatically by `make' to contain the flag letters that `make'
3959 -received. Thus, if you do `make -ks' then `MAKEFLAGS' gets the value
3960 -`ks'.
3962 - As a consequence, every sub-`make' gets a value for `MAKEFLAGS' in
3963 -its environment. In response, it takes the flags from that value and
3964 -processes them as if they had been given as arguments. *Note Summary
3965 -of Options: Options Summary.
3967 - Likewise variables defined on the command line are passed to the
3968 -sub-`make' through `MAKEFLAGS'. Words in the value of `MAKEFLAGS' that
3969 -contain `=', `make' treats as variable definitions just as if they
3970 -appeared on the command line. *Note Overriding Variables: Overriding.
3972 - The options `-C', `-f', `-o', and `-W' are not put into `MAKEFLAGS';
3973 -these options are not passed down.
3975 - The `-j' option is a special case (*note Parallel Execution:
3976 -Parallel.). If you set it to some numeric value `N' and your operating
3977 -system supports it (most any UNIX system will; others typically won't),
3978 -the parent `make' and all the sub-`make's will communicate to ensure
3979 -that there are only `N' jobs running at the same time between them all.
3980 -Note that any job that is marked recursive (*note Instead of Executing
3981 -the Commands: Instead of Execution.) doesn't count against the total
3982 -jobs (otherwise we could get `N' sub-`make's running and have no slots
3983 -left over for any real work!)
3985 - If your operating system doesn't support the above communication,
3986 -then `-j 1' is always put into `MAKEFLAGS' instead of the value you
3987 -specified. This is because if the `-j' option were passed down to
3988 -sub-`make's, you would get many more jobs running in parallel than you
3989 -asked for. If you give `-j' with no numeric argument, meaning to run
3990 -as many jobs as possible in parallel, this is passed down, since
3991 -multiple infinities are no more than one.
3993 - If you do not want to pass the other flags down, you must change the
3994 -value of `MAKEFLAGS', like this:
3996 - subsystem:
3997 - cd subdir && $(MAKE) MAKEFLAGS=
3999 - The command line variable definitions really appear in the variable
4000 -`MAKEOVERRIDES', and `MAKEFLAGS' contains a reference to this variable.
4001 -If you do want to pass flags down normally, but don't want to pass
4002 -down the command line variable definitions, you can reset
4003 -`MAKEOVERRIDES' to empty, like this:
4005 - MAKEOVERRIDES =
4007 -This is not usually useful to do. However, some systems have a small
4008 -fixed limit on the size of the environment, and putting so much
4009 -information into the value of `MAKEFLAGS' can exceed it. If you see
4010 -the error message `Arg list too long', this may be the problem. (For
4011 -strict compliance with POSIX.2, changing `MAKEOVERRIDES' does not
4012 -affect `MAKEFLAGS' if the special target `.POSIX' appears in the
4013 -makefile. You probably do not care about this.)
4015 - A similar variable `MFLAGS' exists also, for historical
4016 -compatibility. It has the same value as `MAKEFLAGS' except that it
4017 -does not contain the command line variable definitions, and it always
4018 -begins with a hyphen unless it is empty (`MAKEFLAGS' begins with a
4019 -hyphen only when it begins with an option that has no single-letter
4020 -version, such as `--warn-undefined-variables'). `MFLAGS' was
4021 -traditionally used explicitly in the recursive `make' command, like
4022 -this:
4024 - subsystem:
4025 - cd subdir && $(MAKE) $(MFLAGS)
4027 -but now `MAKEFLAGS' makes this usage redundant. If you want your
4028 -makefiles to be compatible with old `make' programs, use this
4029 -technique; it will work fine with more modern `make' versions too.
4031 - The `MAKEFLAGS' variable can also be useful if you want to have
4032 -certain options, such as `-k' (*note Summary of Options: Options
4033 -Summary.), set each time you run `make'. You simply put a value for
4034 -`MAKEFLAGS' in your environment. You can also set `MAKEFLAGS' in a
4035 -makefile, to specify additional flags that should also be in effect for
4036 -that makefile. (Note that you cannot use `MFLAGS' this way. That
4037 -variable is set only for compatibility; `make' does not interpret a
4038 -value you set for it in any way.)
4040 - When `make' interprets the value of `MAKEFLAGS' (either from the
4041 -environment or from a makefile), it first prepends a hyphen if the value
4042 -does not already begin with one. Then it chops the value into words
4043 -separated by blanks, and parses these words as if they were options
4044 -given on the command line (except that `-C', `-f', `-h', `-o', `-W',
4045 -and their long-named versions are ignored; and there is no error for an
4046 -invalid option).
4048 - If you do put `MAKEFLAGS' in your environment, you should be sure not
4049 -to include any options that will drastically affect the actions of
4050 -`make' and undermine the purpose of makefiles and of `make' itself.
4051 -For instance, the `-t', `-n', and `-q' options, if put in one of these
4052 -variables, could have disastrous consequences and would certainly have
4053 -at least surprising and probably annoying effects.
4055 -\x1f
4056 -File: make.info, Node: -w Option, Prev: Options/Recursion, Up: Recursion
4058 -5.7.4 The `--print-directory' Option
4059 -------------------------------------
4061 -If you use several levels of recursive `make' invocations, the `-w' or
4062 -`--print-directory' option can make the output a lot easier to
4063 -understand by showing each directory as `make' starts processing it and
4064 -as `make' finishes processing it. For example, if `make -w' is run in
4065 -the directory `/u/gnu/make', `make' will print a line of the form:
4067 - make: Entering directory `/u/gnu/make'.
4069 -before doing anything else, and a line of the form:
4071 - make: Leaving directory `/u/gnu/make'.
4073 -when processing is completed.
4075 - Normally, you do not need to specify this option because `make' does
4076 -it for you: `-w' is turned on automatically when you use the `-C'
4077 -option, and in sub-`make's. `make' will not automatically turn on `-w'
4078 -if you also use `-s', which says to be silent, or if you use
4079 -`--no-print-directory' to explicitly disable it.
4081 -\x1f
4082 -File: make.info, Node: Sequences, Next: Empty Commands, Prev: Recursion, Up: Commands
4084 -5.8 Defining Canned Command Sequences
4085 -=====================================
4087 -When the same sequence of commands is useful in making various targets,
4088 -you can define it as a canned sequence with the `define' directive, and
4089 -refer to the canned sequence from the rules for those targets. The
4090 -canned sequence is actually a variable, so the name must not conflict
4091 -with other variable names.
4093 - Here is an example of defining a canned sequence of commands:
4095 - define run-yacc
4096 - yacc $(firstword $^)
4097 - mv y.tab.c $@
4098 - endef
4100 -Here `run-yacc' is the name of the variable being defined; `endef'
4101 -marks the end of the definition; the lines in between are the commands.
4102 -The `define' directive does not expand variable references and
4103 -function calls in the canned sequence; the `$' characters, parentheses,
4104 -variable names, and so on, all become part of the value of the variable
4105 -you are defining. *Note Defining Variables Verbatim: Defining, for a
4106 -complete explanation of `define'.
4108 - The first command in this example runs Yacc on the first
4109 -prerequisite of whichever rule uses the canned sequence. The output
4110 -file from Yacc is always named `y.tab.c'. The second command moves the
4111 -output to the rule's target file name.
4113 - To use the canned sequence, substitute the variable into the
4114 -commands of a rule. You can substitute it like any other variable
4115 -(*note Basics of Variable References: Reference.). Because variables
4116 -defined by `define' are recursively expanded variables, all the
4117 -variable references you wrote inside the `define' are expanded now.
4118 -For example:
4120 - foo.c : foo.y
4121 - $(run-yacc)
4123 -`foo.y' will be substituted for the variable `$^' when it occurs in
4124 -`run-yacc''s value, and `foo.c' for `$@'.
4126 - This is a realistic example, but this particular one is not needed in
4127 -practice because `make' has an implicit rule to figure out these
4128 -commands based on the file names involved (*note Using Implicit Rules:
4129 -Implicit Rules.).
4131 - In command execution, each line of a canned sequence is treated just
4132 -as if the line appeared on its own in the rule, preceded by a tab. In
4133 -particular, `make' invokes a separate subshell for each line. You can
4134 -use the special prefix characters that affect command lines (`@', `-',
4135 -and `+') on each line of a canned sequence. *Note Writing the Commands
4136 -in Rules: Commands. For example, using this canned sequence:
4138 - define frobnicate
4139 - @echo "frobnicating target $@"
4140 - frob-step-1 $< -o $@-step-1
4141 - frob-step-2 $@-step-1 -o $@
4142 - endef
4144 -`make' will not echo the first line, the `echo' command. But it _will_
4145 -echo the following two command lines.
4147 - On the other hand, prefix characters on the command line that refers
4148 -to a canned sequence apply to every line in the sequence. So the rule:
4150 - frob.out: frob.in
4151 - @$(frobnicate)
4153 -does not echo _any_ commands. (*Note Command Echoing: Echoing, for a
4154 -full explanation of `@'.)
4156 -\x1f
4157 -File: make.info, Node: Empty Commands, Prev: Sequences, Up: Commands
4159 -5.9 Using Empty Commands
4160 -========================
4162 -It is sometimes useful to define commands which do nothing. This is
4163 -done simply by giving a command that consists of nothing but
4164 -whitespace. For example:
4166 - target: ;
4168 -defines an empty command string for `target'. You could also use a
4169 -line beginning with a tab character to define an empty command string,
4170 -but this would be confusing because such a line looks empty.
4172 - You may be wondering why you would want to define a command string
4173 -that does nothing. The only reason this is useful is to prevent a
4174 -target from getting implicit commands (from implicit rules or the
4175 -`.DEFAULT' special target; *note Implicit Rules:: and *note Defining
4176 -Last-Resort Default Rules: Last Resort.).
4178 - You may be inclined to define empty command strings for targets that
4179 -are not actual files, but only exist so that their prerequisites can be
4180 -remade. However, this is not the best way to do that, because the
4181 -prerequisites may not be remade properly if the target file actually
4182 -does exist. *Note Phony Targets: Phony Targets, for a better way to do
4183 -this.
4185 -\x1f
4186 -File: make.info, Node: Using Variables, Next: Conditionals, Prev: Commands, Up: Top
4188 -6 How to Use Variables
4189 -**********************
4191 -A "variable" is a name defined in a makefile to represent a string of
4192 -text, called the variable's "value". These values are substituted by
4193 -explicit request into targets, prerequisites, commands, and other parts
4194 -of the makefile. (In some other versions of `make', variables are
4195 -called "macros".)
4197 - Variables and functions in all parts of a makefile are expanded when
4198 -read, except for the shell commands in rules, the right-hand sides of
4199 -variable definitions using `=', and the bodies of variable definitions
4200 -using the `define' directive.
4202 - Variables can represent lists of file names, options to pass to
4203 -compilers, programs to run, directories to look in for source files,
4204 -directories to write output in, or anything else you can imagine.
4206 - A variable name may be any sequence of characters not containing `:',
4207 -`#', `=', or leading or trailing whitespace. However, variable names
4208 -containing characters other than letters, numbers, and underscores
4209 -should be avoided, as they may be given special meanings in the future,
4210 -and with some shells they cannot be passed through the environment to a
4211 -sub-`make' (*note Communicating Variables to a Sub-`make':
4212 -Variables/Recursion.).
4214 - Variable names are case-sensitive. The names `foo', `FOO', and
4215 -`Foo' all refer to different variables.
4217 - It is traditional to use upper case letters in variable names, but we
4218 -recommend using lower case letters for variable names that serve
4219 -internal purposes in the makefile, and reserving upper case for
4220 -parameters that control implicit rules or for parameters that the user
4221 -should override with command options (*note Overriding Variables:
4222 -Overriding.).
4224 - A few variables have names that are a single punctuation character or
4225 -just a few characters. These are the "automatic variables", and they
4226 -have particular specialized uses. *Note Automatic Variables::.
4228 -* Menu:
4230 -* Reference:: How to use the value of a variable.
4231 -* Flavors:: Variables come in two flavors.
4232 -* Advanced:: Advanced features for referencing a variable.
4233 -* Values:: All the ways variables get their values.
4234 -* Setting:: How to set a variable in the makefile.
4235 -* Appending:: How to append more text to the old value
4236 - of a variable.
4237 -* Override Directive:: How to set a variable in the makefile even if
4238 - the user has set it with a command argument.
4239 -* Defining:: An alternate way to set a variable
4240 - to a verbatim string.
4241 -* Environment:: Variable values can come from the environment.
4242 -* Target-specific:: Variable values can be defined on a per-target
4243 - basis.
4244 -* Pattern-specific:: Target-specific variable values can be applied
4245 - to a group of targets that match a pattern.
4247 -\x1f
4248 -File: make.info, Node: Reference, Next: Flavors, Prev: Using Variables, Up: Using Variables
4250 -6.1 Basics of Variable References
4251 -=================================
4253 -To substitute a variable's value, write a dollar sign followed by the
4254 -name of the variable in parentheses or braces: either `$(foo)' or
4255 -`${foo}' is a valid reference to the variable `foo'. This special
4256 -significance of `$' is why you must write `$$' to have the effect of a
4257 -single dollar sign in a file name or command.
4259 - Variable references can be used in any context: targets,
4260 -prerequisites, commands, most directives, and new variable values.
4261 -Here is an example of a common case, where a variable holds the names
4262 -of all the object files in a program:
4264 - objects = program.o foo.o utils.o
4265 - program : $(objects)
4266 - cc -o program $(objects)
4268 - $(objects) : defs.h
4270 - Variable references work by strict textual substitution. Thus, the
4271 -rule
4273 - foo = c
4274 - prog.o : prog.$(foo)
4275 - $(foo)$(foo) -$(foo) prog.$(foo)
4277 -could be used to compile a C program `prog.c'. Since spaces before the
4278 -variable value are ignored in variable assignments, the value of `foo'
4279 -is precisely `c'. (Don't actually write your makefiles this way!)
4281 - A dollar sign followed by a character other than a dollar sign,
4282 -open-parenthesis or open-brace treats that single character as the
4283 -variable name. Thus, you could reference the variable `x' with `$x'.
4284 -However, this practice is strongly discouraged, except in the case of
4285 -the automatic variables (*note Automatic Variables::).
4287 -\x1f
4288 -File: make.info, Node: Flavors, Next: Advanced, Prev: Reference, Up: Using Variables
4290 -6.2 The Two Flavors of Variables
4291 -================================
4293 -There are two ways that a variable in GNU `make' can have a value; we
4294 -call them the two "flavors" of variables. The two flavors are
4295 -distinguished in how they are defined and in what they do when expanded.
4297 - The first flavor of variable is a "recursively expanded" variable.
4298 -Variables of this sort are defined by lines using `=' (*note Setting
4299 -Variables: Setting.) or by the `define' directive (*note Defining
4300 -Variables Verbatim: Defining.). The value you specify is installed
4301 -verbatim; if it contains references to other variables, these
4302 -references are expanded whenever this variable is substituted (in the
4303 -course of expanding some other string). When this happens, it is
4304 -called "recursive expansion".
4306 - For example,
4308 - foo = $(bar)
4309 - bar = $(ugh)
4310 - ugh = Huh?
4312 - all:;echo $(foo)
4314 -will echo `Huh?': `$(foo)' expands to `$(bar)' which expands to
4315 -`$(ugh)' which finally expands to `Huh?'.
4317 - This flavor of variable is the only sort supported by other versions
4318 -of `make'. It has its advantages and its disadvantages. An advantage
4319 -(most would say) is that:
4321 - CFLAGS = $(include_dirs) -O
4322 - include_dirs = -Ifoo -Ibar
4324 -will do what was intended: when `CFLAGS' is expanded in a command, it
4325 -will expand to `-Ifoo -Ibar -O'. A major disadvantage is that you
4326 -cannot append something on the end of a variable, as in
4328 - CFLAGS = $(CFLAGS) -O
4330 -because it will cause an infinite loop in the variable expansion.
4331 -(Actually `make' detects the infinite loop and reports an error.)
4333 - Another disadvantage is that any functions (*note Functions for
4334 -Transforming Text: Functions.) referenced in the definition will be
4335 -executed every time the variable is expanded. This makes `make' run
4336 -slower; worse, it causes the `wildcard' and `shell' functions to give
4337 -unpredictable results because you cannot easily control when they are
4338 -called, or even how many times.
4340 - To avoid all the problems and inconveniences of recursively expanded
4341 -variables, there is another flavor: simply expanded variables.
4343 - "Simply expanded variables" are defined by lines using `:=' (*note
4344 -Setting Variables: Setting.). The value of a simply expanded variable
4345 -is scanned once and for all, expanding any references to other
4346 -variables and functions, when the variable is defined. The actual
4347 -value of the simply expanded variable is the result of expanding the
4348 -text that you write. It does not contain any references to other
4349 -variables; it contains their values _as of the time this variable was
4350 -defined_. Therefore,
4352 - x := foo
4353 - y := $(x) bar
4354 - x := later
4356 -is equivalent to
4358 - y := foo bar
4359 - x := later
4361 - When a simply expanded variable is referenced, its value is
4362 -substituted verbatim.
4364 - Here is a somewhat more complicated example, illustrating the use of
4365 -`:=' in conjunction with the `shell' function. (*Note The `shell'
4366 -Function: Shell Function.) This example also shows use of the variable
4367 -`MAKELEVEL', which is changed when it is passed down from level to
4368 -level. (*Note Communicating Variables to a Sub-`make':
4369 -Variables/Recursion, for information about `MAKELEVEL'.)
4371 - ifeq (0,${MAKELEVEL})
4372 - whoami := $(shell whoami)
4373 - host-type := $(shell arch)
4374 - MAKE := ${MAKE} host-type=${host-type} whoami=${whoami}
4375 - endif
4377 -An advantage of this use of `:=' is that a typical `descend into a
4378 -directory' command then looks like this:
4380 - ${subdirs}:
4381 - ${MAKE} -C $@ all
4383 - Simply expanded variables generally make complicated makefile
4384 -programming more predictable because they work like variables in most
4385 -programming languages. They allow you to redefine a variable using its
4386 -own value (or its value processed in some way by one of the expansion
4387 -functions) and to use the expansion functions much more efficiently
4388 -(*note Functions for Transforming Text: Functions.).
4390 - You can also use them to introduce controlled leading whitespace into
4391 -variable values. Leading whitespace characters are discarded from your
4392 -input before substitution of variable references and function calls;
4393 -this means you can include leading spaces in a variable value by
4394 -protecting them with variable references, like this:
4396 - nullstring :=
4397 - space := $(nullstring) # end of the line
4399 -Here the value of the variable `space' is precisely one space. The
4400 -comment `# end of the line' is included here just for clarity. Since
4401 -trailing space characters are _not_ stripped from variable values, just
4402 -a space at the end of the line would have the same effect (but be
4403 -rather hard to read). If you put whitespace at the end of a variable
4404 -value, it is a good idea to put a comment like that at the end of the
4405 -line to make your intent clear. Conversely, if you do _not_ want any
4406 -whitespace characters at the end of your variable value, you must
4407 -remember not to put a random comment on the end of the line after some
4408 -whitespace, such as this:
4410 - dir := /foo/bar # directory to put the frobs in
4412 -Here the value of the variable `dir' is `/foo/bar ' (with four
4413 -trailing spaces), which was probably not the intention. (Imagine
4414 -something like `$(dir)/file' with this definition!)
4416 - There is another assignment operator for variables, `?='. This is
4417 -called a conditional variable assignment operator, because it only has
4418 -an effect if the variable is not yet defined. This statement:
4420 - FOO ?= bar
4422 -is exactly equivalent to this (*note The `origin' Function: Origin
4423 -Function.):
4425 - ifeq ($(origin FOO), undefined)
4426 - FOO = bar
4427 - endif
4429 - Note that a variable set to an empty value is still defined, so `?='
4430 -will not set that variable.
4432 -\x1f
4433 -File: make.info, Node: Advanced, Next: Values, Prev: Flavors, Up: Using Variables
4435 -6.3 Advanced Features for Reference to Variables
4436 -================================================
4438 -This section describes some advanced features you can use to reference
4439 -variables in more flexible ways.
4441 -* Menu:
4443 -* Substitution Refs:: Referencing a variable with
4444 - substitutions on the value.
4445 -* Computed Names:: Computing the name of the variable to refer to.
4447 -\x1f
4448 -File: make.info, Node: Substitution Refs, Next: Computed Names, Prev: Advanced, Up: Advanced
4450 -6.3.1 Substitution References
4451 ------------------------------
4453 -A "substitution reference" substitutes the value of a variable with
4454 -alterations that you specify. It has the form `$(VAR:A=B)' (or
4455 -`${VAR:A=B}') and its meaning is to take the value of the variable VAR,
4456 -replace every A at the end of a word with B in that value, and
4457 -substitute the resulting string.
4459 - When we say "at the end of a word", we mean that A must appear
4460 -either followed by whitespace or at the end of the value in order to be
4461 -replaced; other occurrences of A in the value are unaltered. For
4462 -example:
4464 - foo := a.o b.o c.o
4465 - bar := $(foo:.o=.c)
4467 -sets `bar' to `a.c b.c c.c'. *Note Setting Variables: Setting.
4469 - A substitution reference is actually an abbreviation for use of the
4470 -`patsubst' expansion function (*note Functions for String Substitution
4471 -and Analysis: Text Functions.). We provide substitution references as
4472 -well as `patsubst' for compatibility with other implementations of
4473 -`make'.
4475 - Another type of substitution reference lets you use the full power of
4476 -the `patsubst' function. It has the same form `$(VAR:A=B)' described
4477 -above, except that now A must contain a single `%' character. This
4478 -case is equivalent to `$(patsubst A,B,$(VAR))'. *Note Functions for
4479 -String Substitution and Analysis: Text Functions, for a description of
4480 -the `patsubst' function.
4482 -For example:
4484 - foo := a.o b.o c.o
4485 - bar := $(foo:%.o=%.c)
4487 -sets `bar' to `a.c b.c c.c'.
4489 -\x1f
4490 -File: make.info, Node: Computed Names, Prev: Substitution Refs, Up: Advanced
4492 -6.3.2 Computed Variable Names
4493 ------------------------------
4495 -Computed variable names are a complicated concept needed only for
4496 -sophisticated makefile programming. For most purposes you need not
4497 -consider them, except to know that making a variable with a dollar sign
4498 -in its name might have strange results. However, if you are the type
4499 -that wants to understand everything, or you are actually interested in
4500 -what they do, read on.
4502 - Variables may be referenced inside the name of a variable. This is
4503 -called a "computed variable name" or a "nested variable reference".
4504 -For example,
4506 - x = y
4507 - y = z
4508 - a := $($(x))
4510 -defines `a' as `z': the `$(x)' inside `$($(x))' expands to `y', so
4511 -`$($(x))' expands to `$(y)' which in turn expands to `z'. Here the
4512 -name of the variable to reference is not stated explicitly; it is
4513 -computed by expansion of `$(x)'. The reference `$(x)' here is nested
4514 -within the outer variable reference.
4516 - The previous example shows two levels of nesting, but any number of
4517 -levels is possible. For example, here are three levels:
4519 - x = y
4520 - y = z
4521 - z = u
4522 - a := $($($(x)))
4524 -Here the innermost `$(x)' expands to `y', so `$($(x))' expands to
4525 -`$(y)' which in turn expands to `z'; now we have `$(z)', which becomes
4526 -`u'.
4528 - References to recursively-expanded variables within a variable name
4529 -are reexpanded in the usual fashion. For example:
4531 - x = $(y)
4532 - y = z
4533 - z = Hello
4534 - a := $($(x))
4536 -defines `a' as `Hello': `$($(x))' becomes `$($(y))' which becomes
4537 -`$(z)' which becomes `Hello'.
4539 - Nested variable references can also contain modified references and
4540 -function invocations (*note Functions for Transforming Text:
4541 -Functions.), just like any other reference. For example, using the
4542 -`subst' function (*note Functions for String Substitution and Analysis:
4543 -Text Functions.):
4545 - x = variable1
4546 - variable2 := Hello
4547 - y = $(subst 1,2,$(x))
4548 - z = y
4549 - a := $($($(z)))
4551 -eventually defines `a' as `Hello'. It is doubtful that anyone would
4552 -ever want to write a nested reference as convoluted as this one, but it
4553 -works: `$($($(z)))' expands to `$($(y))' which becomes `$($(subst
4554 -1,2,$(x)))'. This gets the value `variable1' from `x' and changes it
4555 -by substitution to `variable2', so that the entire string becomes
4556 -`$(variable2)', a simple variable reference whose value is `Hello'.
4558 - A computed variable name need not consist entirely of a single
4559 -variable reference. It can contain several variable references, as
4560 -well as some invariant text. For example,
4562 - a_dirs := dira dirb
4563 - 1_dirs := dir1 dir2
4565 - a_files := filea fileb
4566 - 1_files := file1 file2
4568 - ifeq "$(use_a)" "yes"
4569 - a1 := a
4570 - else
4571 - a1 := 1
4572 - endif
4574 - ifeq "$(use_dirs)" "yes"
4575 - df := dirs
4576 - else
4577 - df := files
4578 - endif
4580 - dirs := $($(a1)_$(df))
4582 -will give `dirs' the same value as `a_dirs', `1_dirs', `a_files' or
4583 -`1_files' depending on the settings of `use_a' and `use_dirs'.
4585 - Computed variable names can also be used in substitution references:
4587 - a_objects := a.o b.o c.o
4588 - 1_objects := 1.o 2.o 3.o
4590 - sources := $($(a1)_objects:.o=.c)
4592 -defines `sources' as either `a.c b.c c.c' or `1.c 2.c 3.c', depending
4593 -on the value of `a1'.
4595 - The only restriction on this sort of use of nested variable
4596 -references is that they cannot specify part of the name of a function
4597 -to be called. This is because the test for a recognized function name
4598 -is done before the expansion of nested references. For example,
4600 - ifdef do_sort
4601 - func := sort
4602 - else
4603 - func := strip
4604 - endif
4606 - bar := a d b g q c
4608 - foo := $($(func) $(bar))
4610 -attempts to give `foo' the value of the variable `sort a d b g q c' or
4611 -`strip a d b g q c', rather than giving `a d b g q c' as the argument
4612 -to either the `sort' or the `strip' function. This restriction could
4613 -be removed in the future if that change is shown to be a good idea.
4615 - You can also use computed variable names in the left-hand side of a
4616 -variable assignment, or in a `define' directive, as in:
4618 - dir = foo
4619 - $(dir)_sources := $(wildcard $(dir)/*.c)
4620 - define $(dir)_print
4621 - lpr $($(dir)_sources)
4622 - endef
4624 -This example defines the variables `dir', `foo_sources', and
4625 -`foo_print'.
4627 - Note that "nested variable references" are quite different from
4628 -"recursively expanded variables" (*note The Two Flavors of Variables:
4629 -Flavors.), though both are used together in complex ways when doing
4630 -makefile programming.
4632 -\x1f
4633 -File: make.info, Node: Values, Next: Setting, Prev: Advanced, Up: Using Variables
4635 -6.4 How Variables Get Their Values
4636 -==================================
4638 -Variables can get values in several different ways:
4640 - * You can specify an overriding value when you run `make'. *Note
4641 - Overriding Variables: Overriding.
4643 - * You can specify a value in the makefile, either with an assignment
4644 - (*note Setting Variables: Setting.) or with a verbatim definition
4645 - (*note Defining Variables Verbatim: Defining.).
4647 - * Variables in the environment become `make' variables. *Note
4648 - Variables from the Environment: Environment.
4650 - * Several "automatic" variables are given new values for each rule.
4651 - Each of these has a single conventional use. *Note Automatic
4652 - Variables::.
4654 - * Several variables have constant initial values. *Note Variables
4655 - Used by Implicit Rules: Implicit Variables.
4657 -\x1f
4658 -File: make.info, Node: Setting, Next: Appending, Prev: Values, Up: Using Variables
4660 -6.5 Setting Variables
4661 -=====================
4663 -To set a variable from the makefile, write a line starting with the
4664 -variable name followed by `=' or `:='. Whatever follows the `=' or
4665 -`:=' on the line becomes the value. For example,
4667 - objects = main.o foo.o bar.o utils.o
4669 -defines a variable named `objects'. Whitespace around the variable
4670 -name and immediately after the `=' is ignored.
4672 - Variables defined with `=' are "recursively expanded" variables.
4673 -Variables defined with `:=' are "simply expanded" variables; these
4674 -definitions can contain variable references which will be expanded
4675 -before the definition is made. *Note The Two Flavors of Variables:
4676 -Flavors.
4678 - The variable name may contain function and variable references, which
4679 -are expanded when the line is read to find the actual variable name to
4680 -use.
4682 - There is no limit on the length of the value of a variable except the
4683 -amount of swapping space on the computer. When a variable definition is
4684 -long, it is a good idea to break it into several lines by inserting
4685 -backslash-newline at convenient places in the definition. This will not
4686 -affect the functioning of `make', but it will make the makefile easier
4687 -to read.
4689 - Most variable names are considered to have the empty string as a
4690 -value if you have never set them. Several variables have built-in
4691 -initial values that are not empty, but you can set them in the usual
4692 -ways (*note Variables Used by Implicit Rules: Implicit Variables.).
4693 -Several special variables are set automatically to a new value for each
4694 -rule; these are called the "automatic" variables (*note Automatic
4695 -Variables::).
4697 - If you'd like a variable to be set to a value only if it's not
4698 -already set, then you can use the shorthand operator `?=' instead of
4699 -`='. These two settings of the variable `FOO' are identical (*note The
4700 -`origin' Function: Origin Function.):
4702 - FOO ?= bar
4704 -and
4706 - ifeq ($(origin FOO), undefined)
4707 - FOO = bar
4708 - endif
4710 -\x1f
4711 -File: make.info, Node: Appending, Next: Override Directive, Prev: Setting, Up: Using Variables
4713 -6.6 Appending More Text to Variables
4714 -====================================
4716 -Often it is useful to add more text to the value of a variable already
4717 -defined. You do this with a line containing `+=', like this:
4719 - objects += another.o
4721 -This takes the value of the variable `objects', and adds the text
4722 -`another.o' to it (preceded by a single space). Thus:
4724 - objects = main.o foo.o bar.o utils.o
4725 - objects += another.o
4727 -sets `objects' to `main.o foo.o bar.o utils.o another.o'.
4729 - Using `+=' is similar to:
4731 - objects = main.o foo.o bar.o utils.o
4732 - objects := $(objects) another.o
4734 -but differs in ways that become important when you use more complex
4735 -values.
4737 - When the variable in question has not been defined before, `+=' acts
4738 -just like normal `=': it defines a recursively-expanded variable.
4739 -However, when there _is_ a previous definition, exactly what `+=' does
4740 -depends on what flavor of variable you defined originally. *Note The
4741 -Two Flavors of Variables: Flavors, for an explanation of the two
4742 -flavors of variables.
4744 - When you add to a variable's value with `+=', `make' acts
4745 -essentially as if you had included the extra text in the initial
4746 -definition of the variable. If you defined it first with `:=', making
4747 -it a simply-expanded variable, `+=' adds to that simply-expanded
4748 -definition, and expands the new text before appending it to the old
4749 -value just as `:=' does (see *Note Setting Variables: Setting, for a
4750 -full explanation of `:='). In fact,
4752 - variable := value
4753 - variable += more
4755 -is exactly equivalent to:
4758 - variable := value
4759 - variable := $(variable) more
4761 - On the other hand, when you use `+=' with a variable that you defined
4762 -first to be recursively-expanded using plain `=', `make' does something
4763 -a bit different. Recall that when you define a recursively-expanded
4764 -variable, `make' does not expand the value you set for variable and
4765 -function references immediately. Instead it stores the text verbatim,
4766 -and saves these variable and function references to be expanded later,
4767 -when you refer to the new variable (*note The Two Flavors of Variables:
4768 -Flavors.). When you use `+=' on a recursively-expanded variable, it is
4769 -this unexpanded text to which `make' appends the new text you specify.
4771 - variable = value
4772 - variable += more
4774 -is roughly equivalent to:
4776 - temp = value
4777 - variable = $(temp) more
4779 -except that of course it never defines a variable called `temp'. The
4780 -importance of this comes when the variable's old value contains
4781 -variable references. Take this common example:
4783 - CFLAGS = $(includes) -O
4784 - ...
4785 - CFLAGS += -pg # enable profiling
4787 -The first line defines the `CFLAGS' variable with a reference to another
4788 -variable, `includes'. (`CFLAGS' is used by the rules for C
4789 -compilation; *note Catalogue of Implicit Rules: Catalogue of Rules.)
4790 -Using `=' for the definition makes `CFLAGS' a recursively-expanded
4791 -variable, meaning `$(includes) -O' is _not_ expanded when `make'
4792 -processes the definition of `CFLAGS'. Thus, `includes' need not be
4793 -defined yet for its value to take effect. It only has to be defined
4794 -before any reference to `CFLAGS'. If we tried to append to the value
4795 -of `CFLAGS' without using `+=', we might do it like this:
4797 - CFLAGS := $(CFLAGS) -pg # enable profiling
4799 -This is pretty close, but not quite what we want. Using `:=' redefines
4800 -`CFLAGS' as a simply-expanded variable; this means `make' expands the
4801 -text `$(CFLAGS) -pg' before setting the variable. If `includes' is not
4802 -yet defined, we get ` -O -pg', and a later definition of `includes'
4803 -will have no effect. Conversely, by using `+=' we set `CFLAGS' to the
4804 -_unexpanded_ value `$(includes) -O -pg'. Thus we preserve the
4805 -reference to `includes', so if that variable gets defined at any later
4806 -point, a reference like `$(CFLAGS)' still uses its value.
4808 -\x1f
4809 -File: make.info, Node: Override Directive, Next: Defining, Prev: Appending, Up: Using Variables
4811 -6.7 The `override' Directive
4812 -============================
4814 -If a variable has been set with a command argument (*note Overriding
4815 -Variables: Overriding.), then ordinary assignments in the makefile are
4816 -ignored. If you want to set the variable in the makefile even though
4817 -it was set with a command argument, you can use an `override'
4818 -directive, which is a line that looks like this:
4820 - override VARIABLE = VALUE
4824 - override VARIABLE := VALUE
4826 - To append more text to a variable defined on the command line, use:
4828 - override VARIABLE += MORE TEXT
4830 -*Note Appending More Text to Variables: Appending.
4832 - The `override' directive was not invented for escalation in the war
4833 -between makefiles and command arguments. It was invented so you can
4834 -alter and add to values that the user specifies with command arguments.
4836 - For example, suppose you always want the `-g' switch when you run the
4837 -C compiler, but you would like to allow the user to specify the other
4838 -switches with a command argument just as usual. You could use this
4839 -`override' directive:
4841 - override CFLAGS += -g
4843 - You can also use `override' directives with `define' directives.
4844 -This is done as you might expect:
4846 - override define foo
4847 - bar
4848 - endef
4850 -*Note Defining Variables Verbatim: Defining.
4852 -\x1f
4853 -File: make.info, Node: Defining, Next: Environment, Prev: Override Directive, Up: Using Variables
4855 -6.8 Defining Variables Verbatim
4856 -===============================
4858 -Another way to set the value of a variable is to use the `define'
4859 -directive. This directive has an unusual syntax which allows newline
4860 -characters to be included in the value, which is convenient for defining
4861 -both canned sequences of commands (*note Defining Canned Command
4862 -Sequences: Sequences.), and also sections of makefile syntax to use
4863 -with `eval' (*note Eval Function::).
4865 - The `define' directive is followed on the same line by the name of
4866 -the variable and nothing more. The value to give the variable appears
4867 -on the following lines. The end of the value is marked by a line
4868 -containing just the word `endef'. Aside from this difference in
4869 -syntax, `define' works just like `=': it creates a recursively-expanded
4870 -variable (*note The Two Flavors of Variables: Flavors.). The variable
4871 -name may contain function and variable references, which are expanded
4872 -when the directive is read to find the actual variable name to use.
4874 - You may nest `define' directives: `make' will keep track of nested
4875 -directives and report an error if they are not all properly closed with
4876 -`endef'. Note that lines beginning with tab characters are considered
4877 -part of a command script, so any `define' or `endef' strings appearing
4878 -on such a line will not be considered `make' operators.
4880 - define two-lines
4881 - echo foo
4882 - echo $(bar)
4883 - endef
4885 - The value in an ordinary assignment cannot contain a newline; but the
4886 -newlines that separate the lines of the value in a `define' become part
4887 -of the variable's value (except for the final newline which precedes
4888 -the `endef' and is not considered part of the value).
4890 - When used in a command script, the previous example is functionally
4891 -equivalent to this:
4893 - two-lines = echo foo; echo $(bar)
4895 -since two commands separated by semicolon behave much like two separate
4896 -shell commands. However, note that using two separate lines means
4897 -`make' will invoke the shell twice, running an independent subshell for
4898 -each line. *Note Command Execution: Execution.
4900 - If you want variable definitions made with `define' to take
4901 -precedence over command-line variable definitions, you can use the
4902 -`override' directive together with `define':
4904 - override define two-lines
4905 - foo
4906 - $(bar)
4907 - endef
4909 -*Note The `override' Directive: Override Directive.
4911 -\x1f
4912 -File: make.info, Node: Environment, Next: Target-specific, Prev: Defining, Up: Using Variables
4914 -6.9 Variables from the Environment
4915 -==================================
4917 -Variables in `make' can come from the environment in which `make' is
4918 -run. Every environment variable that `make' sees when it starts up is
4919 -transformed into a `make' variable with the same name and value.
4920 -However, an explicit assignment in the makefile, or with a command
4921 -argument, overrides the environment. (If the `-e' flag is specified,
4922 -then values from the environment override assignments in the makefile.
4923 -*Note Summary of Options: Options Summary. But this is not recommended
4924 -practice.)
4926 - Thus, by setting the variable `CFLAGS' in your environment, you can
4927 -cause all C compilations in most makefiles to use the compiler switches
4928 -you prefer. This is safe for variables with standard or conventional
4929 -meanings because you know that no makefile will use them for other
4930 -things. (Note this is not totally reliable; some makefiles set
4931 -`CFLAGS' explicitly and therefore are not affected by the value in the
4932 -environment.)
4934 - When `make' runs a command script, variables defined in the makefile
4935 -are placed into the environment of that command. This allows you to
4936 -pass values to sub-`make' invocations (*note Recursive Use of `make':
4937 -Recursion.). By default, only variables that came from the environment
4938 -or the command line are passed to recursive invocations. You can use
4939 -the `export' directive to pass other variables. *Note Communicating
4940 -Variables to a Sub-`make': Variables/Recursion, for full details.
4942 - Other use of variables from the environment is not recommended. It
4943 -is not wise for makefiles to depend for their functioning on
4944 -environment variables set up outside their control, since this would
4945 -cause different users to get different results from the same makefile.
4946 -This is against the whole purpose of most makefiles.
4948 - Such problems would be especially likely with the variable `SHELL',
4949 -which is normally present in the environment to specify the user's
4950 -choice of interactive shell. It would be very undesirable for this
4951 -choice to affect `make'; so, `make' handles the `SHELL' environment
4952 -variable in a special way; see *Note Choosing the Shell::.
4954 -\x1f
4955 -File: make.info, Node: Target-specific, Next: Pattern-specific, Prev: Environment, Up: Using Variables
4957 -6.10 Target-specific Variable Values
4958 -====================================
4960 -Variable values in `make' are usually global; that is, they are the
4961 -same regardless of where they are evaluated (unless they're reset, of
4962 -course). One exception to that is automatic variables (*note Automatic
4963 -Variables::).
4965 - The other exception is "target-specific variable values". This
4966 -feature allows you to define different values for the same variable,
4967 -based on the target that `make' is currently building. As with
4968 -automatic variables, these values are only available within the context
4969 -of a target's command script (and in other target-specific assignments).
4971 - Set a target-specific variable value like this:
4973 - TARGET ... : VARIABLE-ASSIGNMENT
4975 -or like this:
4977 - TARGET ... : override VARIABLE-ASSIGNMENT
4979 -or like this:
4981 - TARGET ... : export VARIABLE-ASSIGNMENT
4983 - Multiple TARGET values create a target-specific variable value for
4984 -each member of the target list individually.
4986 - The VARIABLE-ASSIGNMENT can be any valid form of assignment;
4987 -recursive (`='), static (`:='), appending (`+='), or conditional
4988 -(`?='). All variables that appear within the VARIABLE-ASSIGNMENT are
4989 -evaluated within the context of the target: thus, any
4990 -previously-defined target-specific variable values will be in effect.
4991 -Note that this variable is actually distinct from any "global" value:
4992 -the two variables do not have to have the same flavor (recursive vs.
4993 -static).
4995 - Target-specific variables have the same priority as any other
4996 -makefile variable. Variables provided on the command-line (and in the
4997 -environment if the `-e' option is in force) will take precedence.
4998 -Specifying the `override' directive will allow the target-specific
4999 -variable value to be preferred.
5001 - There is one more special feature of target-specific variables: when
5002 -you define a target-specific variable that variable value is also in
5003 -effect for all prerequisites of this target, and all their
5004 -prerequisites, etc. (unless those prerequisites override that variable
5005 -with their own target-specific variable value). So, for example, a
5006 -statement like this:
5008 - prog : CFLAGS = -g
5009 - prog : prog.o foo.o bar.o
5011 -will set `CFLAGS' to `-g' in the command script for `prog', but it will
5012 -also set `CFLAGS' to `-g' in the command scripts that create `prog.o',
5013 -`foo.o', and `bar.o', and any command scripts which create their
5014 -prerequisites.
5016 - Be aware that a given prerequisite will only be built once per
5017 -invocation of make, at most. If the same file is a prerequisite of
5018 -multiple targets, and each of those targets has a different value for
5019 -the same target-specific variable, then the first target to be built
5020 -will cause that prerequisite to be built and the prerequisite will
5021 -inherit the target-specific value from the first target. It will
5022 -ignore the target-specific values from any other targets.
5024 -\x1f
5025 -File: make.info, Node: Pattern-specific, Prev: Target-specific, Up: Using Variables
5027 -6.11 Pattern-specific Variable Values
5028 -=====================================
5030 -In addition to target-specific variable values (*note Target-specific
5031 -Variable Values: Target-specific.), GNU `make' supports
5032 -pattern-specific variable values. In this form, the variable is
5033 -defined for any target that matches the pattern specified. If a target
5034 -matches more than one pattern, all the matching pattern-specific
5035 -variables are interpreted in the order in which they were defined in
5036 -the makefile, and collected together into one set. Variables defined
5037 -in this way are searched after any target-specific variables defined
5038 -explicitly for that target, and before target-specific variables
5039 -defined for the parent target.
5041 - Set a pattern-specific variable value like this:
5043 - PATTERN ... : VARIABLE-ASSIGNMENT
5045 -or like this:
5047 - PATTERN ... : override VARIABLE-ASSIGNMENT
5049 -where PATTERN is a %-pattern. As with target-specific variable values,
5050 -multiple PATTERN values create a pattern-specific variable value for
5051 -each pattern individually. The VARIABLE-ASSIGNMENT can be any valid
5052 -form of assignment. Any command-line variable setting will take
5053 -precedence, unless `override' is specified.
5055 - For example:
5057 - %.o : CFLAGS = -O
5059 -will assign `CFLAGS' the value of `-O' for all targets matching the
5060 -pattern `%.o'.
5062 -\x1f
5063 -File: make.info, Node: Conditionals, Next: Functions, Prev: Using Variables, Up: Top
5065 -7 Conditional Parts of Makefiles
5066 -********************************
5068 -A "conditional" causes part of a makefile to be obeyed or ignored
5069 -depending on the values of variables. Conditionals can compare the
5070 -value of one variable to another, or the value of a variable to a
5071 -constant string. Conditionals control what `make' actually "sees" in
5072 -the makefile, so they _cannot_ be used to control shell commands at the
5073 -time of execution.
5075 -* Menu:
5077 -* Conditional Example:: Example of a conditional
5078 -* Conditional Syntax:: The syntax of conditionals.
5079 -* Testing Flags:: Conditionals that test flags.
5081 -\x1f
5082 -File: make.info, Node: Conditional Example, Next: Conditional Syntax, Prev: Conditionals, Up: Conditionals
5084 -7.1 Example of a Conditional
5085 -============================
5087 -The following example of a conditional tells `make' to use one set of
5088 -libraries if the `CC' variable is `gcc', and a different set of
5089 -libraries otherwise. It works by controlling which of two command
5090 -lines will be used as the command for a rule. The result is that
5091 -`CC=gcc' as an argument to `make' changes not only which compiler is
5092 -used but also which libraries are linked.
5094 - libs_for_gcc = -lgnu
5095 - normal_libs =
5097 - foo: $(objects)
5098 - ifeq ($(CC),gcc)
5099 - $(CC) -o foo $(objects) $(libs_for_gcc)
5100 - else
5101 - $(CC) -o foo $(objects) $(normal_libs)
5102 - endif
5104 - This conditional uses three directives: one `ifeq', one `else' and
5105 -one `endif'.
5107 - The `ifeq' directive begins the conditional, and specifies the
5108 -condition. It contains two arguments, separated by a comma and
5109 -surrounded by parentheses. Variable substitution is performed on both
5110 -arguments and then they are compared. The lines of the makefile
5111 -following the `ifeq' are obeyed if the two arguments match; otherwise
5112 -they are ignored.
5114 - The `else' directive causes the following lines to be obeyed if the
5115 -previous conditional failed. In the example above, this means that the
5116 -second alternative linking command is used whenever the first
5117 -alternative is not used. It is optional to have an `else' in a
5118 -conditional.
5120 - The `endif' directive ends the conditional. Every conditional must
5121 -end with an `endif'. Unconditional makefile text follows.
5123 - As this example illustrates, conditionals work at the textual level:
5124 -the lines of the conditional are treated as part of the makefile, or
5125 -ignored, according to the condition. This is why the larger syntactic
5126 -units of the makefile, such as rules, may cross the beginning or the
5127 -end of the conditional.
5129 - When the variable `CC' has the value `gcc', the above example has
5130 -this effect:
5132 - foo: $(objects)
5133 - $(CC) -o foo $(objects) $(libs_for_gcc)
5135 -When the variable `CC' has any other value, the effect is this:
5137 - foo: $(objects)
5138 - $(CC) -o foo $(objects) $(normal_libs)
5140 - Equivalent results can be obtained in another way by
5141 -conditionalizing a variable assignment and then using the variable
5142 -unconditionally:
5144 - libs_for_gcc = -lgnu
5145 - normal_libs =
5147 - ifeq ($(CC),gcc)
5148 - libs=$(libs_for_gcc)
5149 - else
5150 - libs=$(normal_libs)
5151 - endif
5153 - foo: $(objects)
5154 - $(CC) -o foo $(objects) $(libs)
5156 -\x1f
5157 -File: make.info, Node: Conditional Syntax, Next: Testing Flags, Prev: Conditional Example, Up: Conditionals
5159 -7.2 Syntax of Conditionals
5160 -==========================
5162 -The syntax of a simple conditional with no `else' is as follows:
5164 - CONDITIONAL-DIRECTIVE
5165 - TEXT-IF-TRUE
5166 - endif
5168 -The TEXT-IF-TRUE may be any lines of text, to be considered as part of
5169 -the makefile if the condition is true. If the condition is false, no
5170 -text is used instead.
5172 - The syntax of a complex conditional is as follows:
5174 - CONDITIONAL-DIRECTIVE
5175 - TEXT-IF-TRUE
5176 - else
5177 - TEXT-IF-FALSE
5178 - endif
5180 - or:
5182 - CONDITIONAL-DIRECTIVE
5183 - TEXT-IF-ONE-IS-TRUE
5184 - else CONDITIONAL-DIRECTIVE
5185 - TEXT-IF-TRUE
5186 - else
5187 - TEXT-IF-FALSE
5188 - endif
5190 -There can be as many "`else' CONDITIONAL-DIRECTIVE" clauses as
5191 -necessary. Once a given condition is true, TEXT-IF-TRUE is used and no
5192 -other clause is used; if no condition is true then TEXT-IF-FALSE is
5193 -used. The TEXT-IF-TRUE and TEXT-IF-FALSE can be any number of lines of
5194 -text.
5196 - The syntax of the CONDITIONAL-DIRECTIVE is the same whether the
5197 -conditional is simple or complex; after an `else' or not. There are
5198 -four different directives that test different conditions. Here is a
5199 -table of them:
5201 -`ifeq (ARG1, ARG2)'
5202 -`ifeq 'ARG1' 'ARG2''
5203 -`ifeq "ARG1" "ARG2"'
5204 -`ifeq "ARG1" 'ARG2''
5205 -`ifeq 'ARG1' "ARG2"'
5206 - Expand all variable references in ARG1 and ARG2 and compare them.
5207 - If they are identical, the TEXT-IF-TRUE is effective; otherwise,
5208 - the TEXT-IF-FALSE, if any, is effective.
5210 - Often you want to test if a variable has a non-empty value. When
5211 - the value results from complex expansions of variables and
5212 - functions, expansions you would consider empty may actually
5213 - contain whitespace characters and thus are not seen as empty.
5214 - However, you can use the `strip' function (*note Text Functions::)
5215 - to avoid interpreting whitespace as a non-empty value. For
5216 - example:
5218 - ifeq ($(strip $(foo)),)
5219 - TEXT-IF-EMPTY
5220 - endif
5222 - will evaluate TEXT-IF-EMPTY even if the expansion of `$(foo)'
5223 - contains whitespace characters.
5225 -`ifneq (ARG1, ARG2)'
5226 -`ifneq 'ARG1' 'ARG2''
5227 -`ifneq "ARG1" "ARG2"'
5228 -`ifneq "ARG1" 'ARG2''
5229 -`ifneq 'ARG1' "ARG2"'
5230 - Expand all variable references in ARG1 and ARG2 and compare them.
5231 - If they are different, the TEXT-IF-TRUE is effective; otherwise,
5232 - the TEXT-IF-FALSE, if any, is effective.
5234 -`ifdef VARIABLE-NAME'
5235 - The `ifdef' form takes the _name_ of a variable as its argument,
5236 - not a reference to a variable. The value of that variable has a
5237 - non-empty value, the TEXT-IF-TRUE is effective; otherwise, the
5238 - TEXT-IF-FALSE, if any, is effective. Variables that have never
5239 - been defined have an empty value. The text VARIABLE-NAME is
5240 - expanded, so it could be a variable or function that expands to
5241 - the name of a variable. For example:
5243 - bar = true
5244 - foo = bar
5245 - ifdef $(foo)
5246 - frobozz = yes
5247 - endif
5249 - The variable reference `$(foo)' is expanded, yielding `bar', which
5250 - is considered to be the name of a variable. The variable `bar' is
5251 - not expanded, but its value is examined to determine if it is
5252 - non-empty.
5254 - Note that `ifdef' only tests whether a variable has a value. It
5255 - does not expand the variable to see if that value is nonempty.
5256 - Consequently, tests using `ifdef' return true for all definitions
5257 - except those like `foo ='. To test for an empty value, use
5258 - `ifeq ($(foo),)'. For example,
5260 - bar =
5261 - foo = $(bar)
5262 - ifdef foo
5263 - frobozz = yes
5264 - else
5265 - frobozz = no
5266 - endif
5268 - sets `frobozz' to `yes', while:
5270 - foo =
5271 - ifdef foo
5272 - frobozz = yes
5273 - else
5274 - frobozz = no
5275 - endif
5277 - sets `frobozz' to `no'.
5279 -`ifndef VARIABLE-NAME'
5280 - If the variable VARIABLE-NAME has an empty value, the TEXT-IF-TRUE
5281 - is effective; otherwise, the TEXT-IF-FALSE, if any, is effective.
5282 - The rules for expansion and testing of VARIABLE-NAME are identical
5283 - to the `ifdef' directive.
5285 - Extra spaces are allowed and ignored at the beginning of the
5286 -conditional directive line, but a tab is not allowed. (If the line
5287 -begins with a tab, it will be considered a command for a rule.) Aside
5288 -from this, extra spaces or tabs may be inserted with no effect anywhere
5289 -except within the directive name or within an argument. A comment
5290 -starting with `#' may appear at the end of the line.
5292 - The other two directives that play a part in a conditional are `else'
5293 -and `endif'. Each of these directives is written as one word, with no
5294 -arguments. Extra spaces are allowed and ignored at the beginning of the
5295 -line, and spaces or tabs at the end. A comment starting with `#' may
5296 -appear at the end of the line.
5298 - Conditionals affect which lines of the makefile `make' uses. If the
5299 -condition is true, `make' reads the lines of the TEXT-IF-TRUE as part
5300 -of the makefile; if the condition is false, `make' ignores those lines
5301 -completely. It follows that syntactic units of the makefile, such as
5302 -rules, may safely be split across the beginning or the end of the
5303 -conditional.
5305 - `make' evaluates conditionals when it reads a makefile.
5306 -Consequently, you cannot use automatic variables in the tests of
5307 -conditionals because they are not defined until commands are run (*note
5308 -Automatic Variables::).
5310 - To prevent intolerable confusion, it is not permitted to start a
5311 -conditional in one makefile and end it in another. However, you may
5312 -write an `include' directive within a conditional, provided you do not
5313 -attempt to terminate the conditional inside the included file.
5315 -\x1f
5316 -File: make.info, Node: Testing Flags, Prev: Conditional Syntax, Up: Conditionals
5318 -7.3 Conditionals that Test Flags
5319 -================================
5321 -You can write a conditional that tests `make' command flags such as
5322 -`-t' by using the variable `MAKEFLAGS' together with the `findstring'
5323 -function (*note Functions for String Substitution and Analysis: Text
5324 -Functions.). This is useful when `touch' is not enough to make a file
5325 -appear up to date.
5327 - The `findstring' function determines whether one string appears as a
5328 -substring of another. If you want to test for the `-t' flag, use `t'
5329 -as the first string and the value of `MAKEFLAGS' as the other.
5331 - For example, here is how to arrange to use `ranlib -t' to finish
5332 -marking an archive file up to date:
5334 - archive.a: ...
5335 - ifneq (,$(findstring t,$(MAKEFLAGS)))
5336 - +touch archive.a
5337 - +ranlib -t archive.a
5338 - else
5339 - ranlib archive.a
5340 - endif
5342 -The `+' prefix marks those command lines as "recursive" so that they
5343 -will be executed despite use of the `-t' flag. *Note Recursive Use of
5344 -`make': Recursion.
5346 -\x1f
5347 -File: make.info, Node: Functions, Next: Running, Prev: Conditionals, Up: Top
5349 -8 Functions for Transforming Text
5350 -*********************************
5352 -"Functions" allow you to do text processing in the makefile to compute
5353 -the files to operate on or the commands to use. You use a function in a
5354 -"function call", where you give the name of the function and some text
5355 -(the "arguments") for the function to operate on. The result of the
5356 -function's processing is substituted into the makefile at the point of
5357 -the call, just as a variable might be substituted.
5359 -* Menu:
5361 -* Syntax of Functions:: How to write a function call.
5362 -* Text Functions:: General-purpose text manipulation functions.
5363 -* File Name Functions:: Functions for manipulating file names.
5364 -* Conditional Functions:: Functions that implement conditions.
5365 -* Foreach Function:: Repeat some text with controlled variation.
5366 -* Call Function:: Expand a user-defined function.
5367 -* Value Function:: Return the un-expanded value of a variable.
5368 -* Eval Function:: Evaluate the arguments as makefile syntax.
5369 -* Origin Function:: Find where a variable got its value.
5370 -* Flavor Function:: Find out the flavor of a variable.
5371 -* Shell Function:: Substitute the output of a shell command.
5372 -* Make Control Functions:: Functions that control how make runs.
5374 -\x1f
5375 -File: make.info, Node: Syntax of Functions, Next: Text Functions, Prev: Functions, Up: Functions
5377 -8.1 Function Call Syntax
5378 -========================
5380 -A function call resembles a variable reference. It looks like this:
5382 - $(FUNCTION ARGUMENTS)
5384 -or like this:
5386 - ${FUNCTION ARGUMENTS}
5388 - Here FUNCTION is a function name; one of a short list of names that
5389 -are part of `make'. You can also essentially create your own functions
5390 -by using the `call' builtin function.
5392 - The ARGUMENTS are the arguments of the function. They are separated
5393 -from the function name by one or more spaces or tabs, and if there is
5394 -more than one argument, then they are separated by commas. Such
5395 -whitespace and commas are not part of an argument's value. The
5396 -delimiters which you use to surround the function call, whether
5397 -parentheses or braces, can appear in an argument only in matching pairs;
5398 -the other kind of delimiters may appear singly. If the arguments
5399 -themselves contain other function calls or variable references, it is
5400 -wisest to use the same kind of delimiters for all the references; write
5401 -`$(subst a,b,$(x))', not `$(subst a,b,${x})'. This is because it is
5402 -clearer, and because only one type of delimiter is matched to find the
5403 -end of the reference.
5405 - The text written for each argument is processed by substitution of
5406 -variables and function calls to produce the argument value, which is
5407 -the text on which the function acts. The substitution is done in the
5408 -order in which the arguments appear.
5410 - Commas and unmatched parentheses or braces cannot appear in the text
5411 -of an argument as written; leading spaces cannot appear in the text of
5412 -the first argument as written. These characters can be put into the
5413 -argument value by variable substitution. First define variables
5414 -`comma' and `space' whose values are isolated comma and space
5415 -characters, then substitute these variables where such characters are
5416 -wanted, like this:
5418 - comma:= ,
5419 - empty:=
5420 - space:= $(empty) $(empty)
5421 - foo:= a b c
5422 - bar:= $(subst $(space),$(comma),$(foo))
5423 - # bar is now `a,b,c'.
5425 -Here the `subst' function replaces each space with a comma, through the
5426 -value of `foo', and substitutes the result.
5428 -\x1f
5429 -File: make.info, Node: Text Functions, Next: File Name Functions, Prev: Syntax of Functions, Up: Functions
5431 -8.2 Functions for String Substitution and Analysis
5432 -==================================================
5434 -Here are some functions that operate on strings:
5436 -`$(subst FROM,TO,TEXT)'
5437 - Performs a textual replacement on the text TEXT: each occurrence
5438 - of FROM is replaced by TO. The result is substituted for the
5439 - function call. For example,
5441 - $(subst ee,EE,feet on the street)
5443 - substitutes the string `fEEt on the strEEt'.
5445 -`$(patsubst PATTERN,REPLACEMENT,TEXT)'
5446 - Finds whitespace-separated words in TEXT that match PATTERN and
5447 - replaces them with REPLACEMENT. Here PATTERN may contain a `%'
5448 - which acts as a wildcard, matching any number of any characters
5449 - within a word. If REPLACEMENT also contains a `%', the `%' is
5450 - replaced by the text that matched the `%' in PATTERN. Only the
5451 - first `%' in the PATTERN and REPLACEMENT is treated this way; any
5452 - subsequent `%' is unchanged.
5454 - `%' characters in `patsubst' function invocations can be quoted
5455 - with preceding backslashes (`\'). Backslashes that would
5456 - otherwise quote `%' characters can be quoted with more backslashes.
5457 - Backslashes that quote `%' characters or other backslashes are
5458 - removed from the pattern before it is compared file names or has a
5459 - stem substituted into it. Backslashes that are not in danger of
5460 - quoting `%' characters go unmolested. For example, the pattern
5461 - `the\%weird\\%pattern\\' has `the%weird\' preceding the operative
5462 - `%' character, and `pattern\\' following it. The final two
5463 - backslashes are left alone because they cannot affect any `%'
5464 - character.
5466 - Whitespace between words is folded into single space characters;
5467 - leading and trailing whitespace is discarded.
5469 - For example,
5471 - $(patsubst %.c,%.o,x.c.c bar.c)
5473 - produces the value `x.c.o bar.o'.
5475 - Substitution references (*note Substitution References:
5476 - Substitution Refs.) are a simpler way to get the effect of the
5477 - `patsubst' function:
5479 - $(VAR:PATTERN=REPLACEMENT)
5481 - is equivalent to
5483 - $(patsubst PATTERN,REPLACEMENT,$(VAR))
5485 - The second shorthand simplifies one of the most common uses of
5486 - `patsubst': replacing the suffix at the end of file names.
5488 - $(VAR:SUFFIX=REPLACEMENT)
5490 - is equivalent to
5492 - $(patsubst %SUFFIX,%REPLACEMENT,$(VAR))
5494 - For example, you might have a list of object files:
5496 - objects = foo.o bar.o baz.o
5498 - To get the list of corresponding source files, you could simply
5499 - write:
5501 - $(objects:.o=.c)
5503 - instead of using the general form:
5505 - $(patsubst %.o,%.c,$(objects))
5507 -`$(strip STRING)'
5508 - Removes leading and trailing whitespace from STRING and replaces
5509 - each internal sequence of one or more whitespace characters with a
5510 - single space. Thus, `$(strip a b c )' results in `a b c'.
5512 - The function `strip' can be very useful when used in conjunction
5513 - with conditionals. When comparing something with the empty string
5514 - `' using `ifeq' or `ifneq', you usually want a string of just
5515 - whitespace to match the empty string (*note Conditionals::).
5517 - Thus, the following may fail to have the desired results:
5519 - .PHONY: all
5520 - ifneq "$(needs_made)" ""
5521 - all: $(needs_made)
5522 - else
5523 - all:;@echo 'Nothing to make!'
5524 - endif
5526 - Replacing the variable reference `$(needs_made)' with the function
5527 - call `$(strip $(needs_made))' in the `ifneq' directive would make
5528 - it more robust.
5530 -`$(findstring FIND,IN)'
5531 - Searches IN for an occurrence of FIND. If it occurs, the value is
5532 - FIND; otherwise, the value is empty. You can use this function in
5533 - a conditional to test for the presence of a specific substring in
5534 - a given string. Thus, the two examples,
5536 - $(findstring a,a b c)
5537 - $(findstring a,b c)
5539 - produce the values `a' and `' (the empty string), respectively.
5540 - *Note Testing Flags::, for a practical application of `findstring'.
5542 -`$(filter PATTERN...,TEXT)'
5543 - Returns all whitespace-separated words in TEXT that _do_ match any
5544 - of the PATTERN words, removing any words that _do not_ match. The
5545 - patterns are written using `%', just like the patterns used in the
5546 - `patsubst' function above.
5548 - The `filter' function can be used to separate out different types
5549 - of strings (such as file names) in a variable. For example:
5551 - sources := foo.c bar.c baz.s ugh.h
5552 - foo: $(sources)
5553 - cc $(filter %.c %.s,$(sources)) -o foo
5555 - says that `foo' depends of `foo.c', `bar.c', `baz.s' and `ugh.h'
5556 - but only `foo.c', `bar.c' and `baz.s' should be specified in the
5557 - command to the compiler.
5559 -`$(filter-out PATTERN...,TEXT)'
5560 - Returns all whitespace-separated words in TEXT that _do not_ match
5561 - any of the PATTERN words, removing the words that _do_ match one
5562 - or more. This is the exact opposite of the `filter' function.
5564 - For example, given:
5566 - objects=main1.o foo.o main2.o bar.o
5567 - mains=main1.o main2.o
5569 - the following generates a list which contains all the object files
5570 - not in `mains':
5572 - $(filter-out $(mains),$(objects))
5574 -`$(sort LIST)'
5575 - Sorts the words of LIST in lexical order, removing duplicate
5576 - words. The output is a list of words separated by single spaces.
5577 - Thus,
5579 - $(sort foo bar lose)
5581 - returns the value `bar foo lose'.
5583 - Incidentally, since `sort' removes duplicate words, you can use it
5584 - for this purpose even if you don't care about the sort order.
5586 -`$(word N,TEXT)'
5587 - Returns the Nth word of TEXT. The legitimate values of N start
5588 - from 1. If N is bigger than the number of words in TEXT, the
5589 - value is empty. For example,
5591 - $(word 2, foo bar baz)
5593 - returns `bar'.
5595 -`$(wordlist S,E,TEXT)'
5596 - Returns the list of words in TEXT starting with word S and ending
5597 - with word E (inclusive). The legitimate values of S start from 1;
5598 - E may start from 0. If S is bigger than the number of words in
5599 - TEXT, the value is empty. If E is bigger than the number of words
5600 - in TEXT, words up to the end of TEXT are returned. If S is
5601 - greater than E, nothing is returned. For example,
5603 - $(wordlist 2, 3, foo bar baz)
5605 - returns `bar baz'.
5607 -`$(words TEXT)'
5608 - Returns the number of words in TEXT. Thus, the last word of TEXT
5609 - is `$(word $(words TEXT),TEXT)'.
5611 -`$(firstword NAMES...)'
5612 - The argument NAMES is regarded as a series of names, separated by
5613 - whitespace. The value is the first name in the series. The rest
5614 - of the names are ignored.
5616 - For example,
5618 - $(firstword foo bar)
5620 - produces the result `foo'. Although `$(firstword TEXT)' is the
5621 - same as `$(word 1,TEXT)', the `firstword' function is retained for
5622 - its simplicity.
5624 -`$(lastword NAMES...)'
5625 - The argument NAMES is regarded as a series of names, separated by
5626 - whitespace. The value is the last name in the series.
5628 - For example,
5630 - $(lastword foo bar)
5632 - produces the result `bar'. Although `$(lastword TEXT)' is the
5633 - same as `$(word $(words TEXT),TEXT)', the `lastword' function was
5634 - added for its simplicity and better performance.
5636 - Here is a realistic example of the use of `subst' and `patsubst'.
5637 -Suppose that a makefile uses the `VPATH' variable to specify a list of
5638 -directories that `make' should search for prerequisite files (*note
5639 -`VPATH' Search Path for All Prerequisites: General Search.). This
5640 -example shows how to tell the C compiler to search for header files in
5641 -the same list of directories.
5643 - The value of `VPATH' is a list of directories separated by colons,
5644 -such as `src:../headers'. First, the `subst' function is used to
5645 -change the colons to spaces:
5647 - $(subst :, ,$(VPATH))
5649 -This produces `src ../headers'. Then `patsubst' is used to turn each
5650 -directory name into a `-I' flag. These can be added to the value of
5651 -the variable `CFLAGS', which is passed automatically to the C compiler,
5652 -like this:
5654 - override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH)))
5656 -The effect is to append the text `-Isrc -I../headers' to the previously
5657 -given value of `CFLAGS'. The `override' directive is used so that the
5658 -new value is assigned even if the previous value of `CFLAGS' was
5659 -specified with a command argument (*note The `override' Directive:
5660 -Override Directive.).
5662 -\x1f
5663 -File: make.info, Node: File Name Functions, Next: Conditional Functions, Prev: Text Functions, Up: Functions
5665 -8.3 Functions for File Names
5666 -============================
5668 -Several of the built-in expansion functions relate specifically to
5669 -taking apart file names or lists of file names.
5671 - Each of the following functions performs a specific transformation
5672 -on a file name. The argument of the function is regarded as a series
5673 -of file names, separated by whitespace. (Leading and trailing
5674 -whitespace is ignored.) Each file name in the series is transformed in
5675 -the same way and the results are concatenated with single spaces
5676 -between them.
5678 -`$(dir NAMES...)'
5679 - Extracts the directory-part of each file name in NAMES. The
5680 - directory-part of the file name is everything up through (and
5681 - including) the last slash in it. If the file name contains no
5682 - slash, the directory part is the string `./'. For example,
5684 - $(dir src/foo.c hacks)
5686 - produces the result `src/ ./'.
5688 -`$(notdir NAMES...)'
5689 - Extracts all but the directory-part of each file name in NAMES.
5690 - If the file name contains no slash, it is left unchanged.
5691 - Otherwise, everything through the last slash is removed from it.
5693 - A file name that ends with a slash becomes an empty string. This
5694 - is unfortunate, because it means that the result does not always
5695 - have the same number of whitespace-separated file names as the
5696 - argument had; but we do not see any other valid alternative.
5698 - For example,
5700 - $(notdir src/foo.c hacks)
5702 - produces the result `foo.c hacks'.
5704 -`$(suffix NAMES...)'
5705 - Extracts the suffix of each file name in NAMES. If the file name
5706 - contains a period, the suffix is everything starting with the last
5707 - period. Otherwise, the suffix is the empty string. This
5708 - frequently means that the result will be empty when NAMES is not,
5709 - and if NAMES contains multiple file names, the result may contain
5710 - fewer file names.
5712 - For example,
5714 - $(suffix src/foo.c src-1.0/bar.c hacks)
5716 - produces the result `.c .c'.
5718 -`$(basename NAMES...)'
5719 - Extracts all but the suffix of each file name in NAMES. If the
5720 - file name contains a period, the basename is everything starting
5721 - up to (and not including) the last period. Periods in the
5722 - directory part are ignored. If there is no period, the basename
5723 - is the entire file name. For example,
5725 - $(basename src/foo.c src-1.0/bar hacks)
5727 - produces the result `src/foo src-1.0/bar hacks'.
5729 -`$(addsuffix SUFFIX,NAMES...)'
5730 - The argument NAMES is regarded as a series of names, separated by
5731 - whitespace; SUFFIX is used as a unit. The value of SUFFIX is
5732 - appended to the end of each individual name and the resulting
5733 - larger names are concatenated with single spaces between them.
5734 - For example,
5736 - $(addsuffix .c,foo bar)
5738 - produces the result `foo.c bar.c'.
5740 -`$(addprefix PREFIX,NAMES...)'
5741 - The argument NAMES is regarded as a series of names, separated by
5742 - whitespace; PREFIX is used as a unit. The value of PREFIX is
5743 - prepended to the front of each individual name and the resulting
5744 - larger names are concatenated with single spaces between them.
5745 - For example,
5747 - $(addprefix src/,foo bar)
5749 - produces the result `src/foo src/bar'.
5751 -`$(join LIST1,LIST2)'
5752 - Concatenates the two arguments word by word: the two first words
5753 - (one from each argument) concatenated form the first word of the
5754 - result, the two second words form the second word of the result,
5755 - and so on. So the Nth word of the result comes from the Nth word
5756 - of each argument. If one argument has more words that the other,
5757 - the extra words are copied unchanged into the result.
5759 - For example, `$(join a b,.c .o)' produces `a.c b.o'.
5761 - Whitespace between the words in the lists is not preserved; it is
5762 - replaced with a single space.
5764 - This function can merge the results of the `dir' and `notdir'
5765 - functions, to produce the original list of files which was given
5766 - to those two functions.
5768 -`$(wildcard PATTERN)'
5769 - The argument PATTERN is a file name pattern, typically containing
5770 - wildcard characters (as in shell file name patterns). The result
5771 - of `wildcard' is a space-separated list of the names of existing
5772 - files that match the pattern. *Note Using Wildcard Characters in
5773 - File Names: Wildcards.
5775 -`$(realpath NAMES...)'
5776 - For each file name in NAMES return the canonical absolute name. A
5777 - canonical name does not contain any `.' or `..' components, nor
5778 - any repeated path separators (`/') or symlinks. In case of a
5779 - failure the empty string is returned. Consult the `realpath(3)'
5780 - documentation for a list of possible failure causes.
5782 -`$(abspath NAMES...)'
5783 - For each file name in NAMES return an absolute name that does not
5784 - contain any `.' or `..' components, nor any repeated path
5785 - separators (`/'). Note that, in contrast to `realpath' function,
5786 - `abspath' does not resolve symlinks and does not require the file
5787 - names to refer to an existing file or directory. Use the
5788 - `wildcard' function to test for existence.
5790 -\x1f
5791 -File: make.info, Node: Conditional Functions, Next: Foreach Function, Prev: File Name Functions, Up: Functions
5793 -8.4 Functions for Conditionals
5794 -==============================
5796 -There are three functions that provide conditional expansion. A key
5797 -aspect of these functions is that not all of the arguments are expanded
5798 -initially. Only those arguments which need to be expanded, will be
5799 -expanded.
5801 -`$(if CONDITION,THEN-PART[,ELSE-PART])'
5802 - The `if' function provides support for conditional expansion in a
5803 - functional context (as opposed to the GNU `make' makefile
5804 - conditionals such as `ifeq' (*note Syntax of Conditionals:
5805 - Conditional Syntax.).
5807 - The first argument, CONDITION, first has all preceding and
5808 - trailing whitespace stripped, then is expanded. If it expands to
5809 - any non-empty string, then the condition is considered to be true.
5810 - If it expands to an empty string, the condition is considered to
5811 - be false.
5813 - If the condition is true then the second argument, THEN-PART, is
5814 - evaluated and this is used as the result of the evaluation of the
5815 - entire `if' function.
5817 - If the condition is false then the third argument, ELSE-PART, is
5818 - evaluated and this is the result of the `if' function. If there is
5819 - no third argument, the `if' function evaluates to nothing (the
5820 - empty string).
5822 - Note that only one of the THEN-PART or the ELSE-PART will be
5823 - evaluated, never both. Thus, either can contain side-effects
5824 - (such as `shell' function calls, etc.)
5826 -`$(or CONDITION1[,CONDITION2[,CONDITION3...]])'
5827 - The `or' function provides a "short-circuiting" OR operation.
5828 - Each argument is expanded, in order. If an argument expands to a
5829 - non-empty string the processing stops and the result of the
5830 - expansion is that string. If, after all arguments are expanded,
5831 - all of them are false (empty), then the result of the expansion is
5832 - the empty string.
5834 -`$(and CONDITION1[,CONDITION2[,CONDITION3...]])'
5835 - The `and' function provides a "short-circuiting" AND operation.
5836 - Each argument is expanded, in order. If an argument expands to an
5837 - empty string the processing stops and the result of the expansion
5838 - is the empty string. If all arguments expand to a non-empty
5839 - string then the result of the expansion is the expansion of the
5840 - last argument.
5843 -\x1f
5844 -File: make.info, Node: Foreach Function, Next: Call Function, Prev: Conditional Functions, Up: Functions
5846 -8.5 The `foreach' Function
5847 -==========================
5849 -The `foreach' function is very different from other functions. It
5850 -causes one piece of text to be used repeatedly, each time with a
5851 -different substitution performed on it. It resembles the `for' command
5852 -in the shell `sh' and the `foreach' command in the C-shell `csh'.
5854 - The syntax of the `foreach' function is:
5856 - $(foreach VAR,LIST,TEXT)
5858 -The first two arguments, VAR and LIST, are expanded before anything
5859 -else is done; note that the last argument, TEXT, is *not* expanded at
5860 -the same time. Then for each word of the expanded value of LIST, the
5861 -variable named by the expanded value of VAR is set to that word, and
5862 -TEXT is expanded. Presumably TEXT contains references to that
5863 -variable, so its expansion will be different each time.
5865 - The result is that TEXT is expanded as many times as there are
5866 -whitespace-separated words in LIST. The multiple expansions of TEXT
5867 -are concatenated, with spaces between them, to make the result of
5868 -`foreach'.
5870 - This simple example sets the variable `files' to the list of all
5871 -files in the directories in the list `dirs':
5873 - dirs := a b c d
5874 - files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
5876 - Here TEXT is `$(wildcard $(dir)/*)'. The first repetition finds the
5877 -value `a' for `dir', so it produces the same result as `$(wildcard
5878 -a/*)'; the second repetition produces the result of `$(wildcard b/*)';
5879 -and the third, that of `$(wildcard c/*)'.
5881 - This example has the same result (except for setting `dirs') as the
5882 -following example:
5884 - files := $(wildcard a/* b/* c/* d/*)
5886 - When TEXT is complicated, you can improve readability by giving it a
5887 -name, with an additional variable:
5889 - find_files = $(wildcard $(dir)/*)
5890 - dirs := a b c d
5891 - files := $(foreach dir,$(dirs),$(find_files))
5893 -Here we use the variable `find_files' this way. We use plain `=' to
5894 -define a recursively-expanding variable, so that its value contains an
5895 -actual function call to be reexpanded under the control of `foreach'; a
5896 -simply-expanded variable would not do, since `wildcard' would be called
5897 -only once at the time of defining `find_files'.
5899 - The `foreach' function has no permanent effect on the variable VAR;
5900 -its value and flavor after the `foreach' function call are the same as
5901 -they were beforehand. The other values which are taken from LIST are
5902 -in effect only temporarily, during the execution of `foreach'. The
5903 -variable VAR is a simply-expanded variable during the execution of
5904 -`foreach'. If VAR was undefined before the `foreach' function call, it
5905 -is undefined after the call. *Note The Two Flavors of Variables:
5906 -Flavors.
5908 - You must take care when using complex variable expressions that
5909 -result in variable names because many strange things are valid variable
5910 -names, but are probably not what you intended. For example,
5912 - files := $(foreach Esta escrito en espanol!,b c ch,$(find_files))
5914 -might be useful if the value of `find_files' references the variable
5915 -whose name is `Esta escrito en espanol!' (es un nombre bastante largo,
5916 -no?), but it is more likely to be a mistake.
5918 -\x1f
5919 -File: make.info, Node: Call Function, Next: Value Function, Prev: Foreach Function, Up: Functions
5921 -8.6 The `call' Function
5922 -=======================
5924 -The `call' function is unique in that it can be used to create new
5925 -parameterized functions. You can write a complex expression as the
5926 -value of a variable, then use `call' to expand it with different values.
5928 - The syntax of the `call' function is:
5930 - $(call VARIABLE,PARAM,PARAM,...)
5932 - When `make' expands this function, it assigns each PARAM to
5933 -temporary variables `$(1)', `$(2)', etc. The variable `$(0)' will
5934 -contain VARIABLE. There is no maximum number of parameter arguments.
5935 -There is no minimum, either, but it doesn't make sense to use `call'
5936 -with no parameters.
5938 - Then VARIABLE is expanded as a `make' variable in the context of
5939 -these temporary assignments. Thus, any reference to `$(1)' in the
5940 -value of VARIABLE will resolve to the first PARAM in the invocation of
5941 -`call'.
5943 - Note that VARIABLE is the _name_ of a variable, not a _reference_ to
5944 -that variable. Therefore you would not normally use a `$' or
5945 -parentheses when writing it. (You can, however, use a variable
5946 -reference in the name if you want the name not to be a constant.)
5948 - If VARIABLE is the name of a builtin function, the builtin function
5949 -is always invoked (even if a `make' variable by that name also exists).
5951 - The `call' function expands the PARAM arguments before assigning
5952 -them to temporary variables. This means that VARIABLE values
5953 -containing references to builtin functions that have special expansion
5954 -rules, like `foreach' or `if', may not work as you expect.
5956 - Some examples may make this clearer.
5958 - This macro simply reverses its arguments:
5960 - reverse = $(2) $(1)
5962 - foo = $(call reverse,a,b)
5964 -Here FOO will contain `b a'.
5966 - This one is slightly more interesting: it defines a macro to search
5967 -for the first instance of a program in `PATH':
5969 - pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
5971 - LS := $(call pathsearch,ls)
5973 -Now the variable LS contains `/bin/ls' or similar.
5975 - The `call' function can be nested. Each recursive invocation gets
5976 -its own local values for `$(1)', etc. that mask the values of
5977 -higher-level `call'. For example, here is an implementation of a "map"
5978 -function:
5980 - map = $(foreach a,$(2),$(call $(1),$(a)))
5982 - Now you can MAP a function that normally takes only one argument,
5983 -such as `origin', to multiple values in one step:
5985 - o = $(call map,origin,o map MAKE)
5987 - and end up with O containing something like `file file default'.
5989 - A final caution: be careful when adding whitespace to the arguments
5990 -to `call'. As with other functions, any whitespace contained in the
5991 -second and subsequent arguments is kept; this can cause strange
5992 -effects. It's generally safest to remove all extraneous whitespace when
5993 -providing parameters to `call'.
5995 -\x1f
5996 -File: make.info, Node: Value Function, Next: Eval Function, Prev: Call Function, Up: Functions
5998 -8.7 The `value' Function
5999 -========================
6001 -The `value' function provides a way for you to use the value of a
6002 -variable _without_ having it expanded. Please note that this does not
6003 -undo expansions which have already occurred; for example if you create
6004 -a simply expanded variable its value is expanded during the definition;
6005 -in that case the `value' function will return the same result as using
6006 -the variable directly.
6008 - The syntax of the `value' function is:
6010 - $(value VARIABLE)
6012 - Note that VARIABLE is the _name_ of a variable; not a _reference_ to
6013 -that variable. Therefore you would not normally use a `$' or
6014 -parentheses when writing it. (You can, however, use a variable
6015 -reference in the name if you want the name not to be a constant.)
6017 - The result of this function is a string containing the value of
6018 -VARIABLE, without any expansion occurring. For example, in this
6019 -makefile:
6021 - FOO = $PATH
6023 - all:
6024 - @echo $(FOO)
6025 - @echo $(value FOO)
6027 -The first output line would be `ATH', since the "$P" would be expanded
6028 -as a `make' variable, while the second output line would be the current
6029 -value of your `$PATH' environment variable, since the `value' function
6030 -avoided the expansion.
6032 - The `value' function is most often used in conjunction with the
6033 -`eval' function (*note Eval Function::).
6035 -\x1f
6036 -File: make.info, Node: Eval Function, Next: Origin Function, Prev: Value Function, Up: Functions
6038 -8.8 The `eval' Function
6039 -=======================
6041 -The `eval' function is very special: it allows you to define new
6042 -makefile constructs that are not constant; which are the result of
6043 -evaluating other variables and functions. The argument to the `eval'
6044 -function is expanded, then the results of that expansion are parsed as
6045 -makefile syntax. The expanded results can define new `make' variables,
6046 -targets, implicit or explicit rules, etc.
6048 - The result of the `eval' function is always the empty string; thus,
6049 -it can be placed virtually anywhere in a makefile without causing
6050 -syntax errors.
6052 - It's important to realize that the `eval' argument is expanded
6053 -_twice_; first by the `eval' function, then the results of that
6054 -expansion are expanded again when they are parsed as makefile syntax.
6055 -This means you may need to provide extra levels of escaping for "$"
6056 -characters when using `eval'. The `value' function (*note Value
6057 -Function::) can sometimes be useful in these situations, to circumvent
6058 -unwanted expansions.
6060 - Here is an example of how `eval' can be used; this example combines
6061 -a number of concepts and other functions. Although it might seem
6062 -overly complex to use `eval' in this example, rather than just writing
6063 -out the rules, consider two things: first, the template definition (in
6064 -`PROGRAM_template') could need to be much more complex than it is here;
6065 -and second, you might put the complex, "generic" part of this example
6066 -into another makefile, then include it in all the individual makefiles.
6067 -Now your individual makefiles are quite straightforward.
6069 - PROGRAMS = server client
6071 - server_OBJS = server.o server_priv.o server_access.o
6072 - server_LIBS = priv protocol
6074 - client_OBJS = client.o client_api.o client_mem.o
6075 - client_LIBS = protocol
6077 - # Everything after this is generic
6079 - .PHONY: all
6080 - all: $(PROGRAMS)
6082 - define PROGRAM_template
6083 - $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%)
6084 - ALL_OBJS += $$($(1)_OBJS)
6085 - endef
6087 - $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
6089 - $(PROGRAMS):
6090 - $(LINK.o) $^ $(LDLIBS) -o $@
6092 - clean:
6093 - rm -f $(ALL_OBJS) $(PROGRAMS)
6095 -\x1f
6096 -File: make.info, Node: Origin Function, Next: Flavor Function, Prev: Eval Function, Up: Functions
6098 -8.9 The `origin' Function
6099 -=========================
6101 -The `origin' function is unlike most other functions in that it does
6102 -not operate on the values of variables; it tells you something _about_
6103 -a variable. Specifically, it tells you where it came from.
6105 - The syntax of the `origin' function is:
6107 - $(origin VARIABLE)
6109 - Note that VARIABLE is the _name_ of a variable to inquire about; not
6110 -a _reference_ to that variable. Therefore you would not normally use a
6111 -`$' or parentheses when writing it. (You can, however, use a variable
6112 -reference in the name if you want the name not to be a constant.)
6114 - The result of this function is a string telling you how the variable
6115 -VARIABLE was defined:
6117 -`undefined'
6118 - if VARIABLE was never defined.
6120 -`default'
6121 - if VARIABLE has a default definition, as is usual with `CC' and so
6122 - on. *Note Variables Used by Implicit Rules: Implicit Variables.
6123 - Note that if you have redefined a default variable, the `origin'
6124 - function will return the origin of the later definition.
6126 -`environment'
6127 - if VARIABLE was defined as an environment variable and the `-e'
6128 - option is _not_ turned on (*note Summary of Options: Options
6129 - Summary.).
6131 -`environment override'
6132 - if VARIABLE was defined as an environment variable and the `-e'
6133 - option _is_ turned on (*note Summary of Options: Options Summary.).
6135 -`file'
6136 - if VARIABLE was defined in a makefile.
6138 -`command line'
6139 - if VARIABLE was defined on the command line.
6141 -`override'
6142 - if VARIABLE was defined with an `override' directive in a makefile
6143 - (*note The `override' Directive: Override Directive.).
6145 -`automatic'
6146 - if VARIABLE is an automatic variable defined for the execution of
6147 - the commands for each rule (*note Automatic Variables::).
6149 - This information is primarily useful (other than for your curiosity)
6150 -to determine if you want to believe the value of a variable. For
6151 -example, suppose you have a makefile `foo' that includes another
6152 -makefile `bar'. You want a variable `bletch' to be defined in `bar' if
6153 -you run the command `make -f bar', even if the environment contains a
6154 -definition of `bletch'. However, if `foo' defined `bletch' before
6155 -including `bar', you do not want to override that definition. This
6156 -could be done by using an `override' directive in `foo', giving that
6157 -definition precedence over the later definition in `bar';
6158 -unfortunately, the `override' directive would also override any command
6159 -line definitions. So, `bar' could include:
6161 - ifdef bletch
6162 - ifeq "$(origin bletch)" "environment"
6163 - bletch = barf, gag, etc.
6164 - endif
6165 - endif
6167 -If `bletch' has been defined from the environment, this will redefine
6168 -it.
6170 - If you want to override a previous definition of `bletch' if it came
6171 -from the environment, even under `-e', you could instead write:
6173 - ifneq "$(findstring environment,$(origin bletch))" ""
6174 - bletch = barf, gag, etc.
6175 - endif
6177 - Here the redefinition takes place if `$(origin bletch)' returns
6178 -either `environment' or `environment override'. *Note Functions for
6179 -String Substitution and Analysis: Text Functions.
6181 -\x1f
6182 -File: make.info, Node: Flavor Function, Next: Shell Function, Prev: Origin Function, Up: Functions
6184 -8.10 The `flavor' Function
6185 -==========================
6187 -The `flavor' function is unlike most other functions (and like `origin'
6188 -function) in that it does not operate on the values of variables; it
6189 -tells you something _about_ a variable. Specifically, it tells you the
6190 -flavor of a variable (*note The Two Flavors of Variables: Flavors.).
6192 - The syntax of the `flavor' function is:
6194 - $(flavor VARIABLE)
6196 - Note that VARIABLE is the _name_ of a variable to inquire about; not
6197 -a _reference_ to that variable. Therefore you would not normally use a
6198 -`$' or parentheses when writing it. (You can, however, use a variable
6199 -reference in the name if you want the name not to be a constant.)
6201 - The result of this function is a string that identifies the flavor
6202 -of the variable VARIABLE:
6204 -`undefined'
6205 - if VARIABLE was never defined.
6207 -`recursive'
6208 - if VARIABLE is a recursively expanded variable.
6210 -`simple'
6211 - if VARIABLE is a simply expanded variable.
6214 -\x1f
6215 -File: make.info, Node: Shell Function, Next: Make Control Functions, Prev: Flavor Function, Up: Functions
6217 -8.11 The `shell' Function
6218 -=========================
6220 -The `shell' function is unlike any other function other than the
6221 -`wildcard' function (*note The Function `wildcard': Wildcard Function.)
6222 -in that it communicates with the world outside of `make'.
6224 - The `shell' function performs the same function that backquotes
6225 -(``') perform in most shells: it does "command expansion". This means
6226 -that it takes as an argument a shell command and evaluates to the
6227 -output of the command. The only processing `make' does on the result
6228 -is to convert each newline (or carriage-return / newline pair) to a
6229 -single space. If there is a trailing (carriage-return and) newline it
6230 -will simply be removed.
6232 - The commands run by calls to the `shell' function are run when the
6233 -function calls are expanded (*note How `make' Reads a Makefile: Reading
6234 -Makefiles.). Because this function involves spawning a new shell, you
6235 -should carefully consider the performance implications of using the
6236 -`shell' function within recursively expanded variables vs. simply
6237 -expanded variables (*note The Two Flavors of Variables: Flavors.).
6239 - Here are some examples of the use of the `shell' function:
6241 - contents := $(shell cat foo)
6243 -sets `contents' to the contents of the file `foo', with a space (rather
6244 -than a newline) separating each line.
6246 - files := $(shell echo *.c)
6248 -sets `files' to the expansion of `*.c'. Unless `make' is using a very
6249 -strange shell, this has the same result as `$(wildcard *.c)' (as long
6250 -as at least one `.c' file exists).
6252 -\x1f
6253 -File: make.info, Node: Make Control Functions, Prev: Shell Function, Up: Functions
6255 -8.12 Functions That Control Make
6256 -================================
6258 -These functions control the way make runs. Generally, they are used to
6259 -provide information to the user of the makefile or to cause make to stop
6260 -if some sort of environmental error is detected.
6262 -`$(error TEXT...)'
6263 - Generates a fatal error where the message is TEXT. Note that the
6264 - error is generated whenever this function is evaluated. So, if
6265 - you put it inside a command script or on the right side of a
6266 - recursive variable assignment, it won't be evaluated until later.
6267 - The TEXT will be expanded before the error is generated.
6269 - For example,
6271 - ifdef ERROR1
6272 - $(error error is $(ERROR1))
6273 - endif
6275 - will generate a fatal error during the read of the makefile if the
6276 - `make' variable `ERROR1' is defined. Or,
6278 - ERR = $(error found an error!)
6280 - .PHONY: err
6281 - err: ; $(ERR)
6283 - will generate a fatal error while `make' is running, if the `err'
6284 - target is invoked.
6286 -`$(warning TEXT...)'
6287 - This function works similarly to the `error' function, above,
6288 - except that `make' doesn't exit. Instead, TEXT is expanded and
6289 - the resulting message is displayed, but processing of the makefile
6290 - continues.
6292 - The result of the expansion of this function is the empty string.
6294 -`$(info TEXT...)'
6295 - This function does nothing more than print its (expanded)
6296 - argument(s) to standard output. No makefile name or line number
6297 - is added. The result of the expansion of this function is the
6298 - empty string.
6300 -\x1f
6301 -File: make.info, Node: Running, Next: Implicit Rules, Prev: Functions, Up: Top
6303 -9 How to Run `make'
6304 -*******************
6306 -A makefile that says how to recompile a program can be used in more
6307 -than one way. The simplest use is to recompile every file that is out
6308 -of date. Usually, makefiles are written so that if you run `make' with
6309 -no arguments, it does just that.
6311 - But you might want to update only some of the files; you might want
6312 -to use a different compiler or different compiler options; you might
6313 -want just to find out which files are out of date without changing them.
6315 - By giving arguments when you run `make', you can do any of these
6316 -things and many others.
6318 - The exit status of `make' is always one of three values:
6319 -`0'
6320 - The exit status is zero if `make' is successful.
6322 -`2'
6323 - The exit status is two if `make' encounters any errors. It will
6324 - print messages describing the particular errors.
6326 -`1'
6327 - The exit status is one if you use the `-q' flag and `make'
6328 - determines that some target is not already up to date. *Note
6329 - Instead of Executing the Commands: Instead of Execution.
6331 -* Menu:
6333 -* Makefile Arguments:: How to specify which makefile to use.
6334 -* Goals:: How to use goal arguments to specify which
6335 - parts of the makefile to use.
6336 -* Instead of Execution:: How to use mode flags to specify what
6337 - kind of thing to do with the commands
6338 - in the makefile other than simply
6339 - execute them.
6340 -* Avoiding Compilation:: How to avoid recompiling certain files.
6341 -* Overriding:: How to override a variable to specify
6342 - an alternate compiler and other things.
6343 -* Testing:: How to proceed past some errors, to
6344 - test compilation.
6345 -* Options Summary:: Summary of Options
6347 -\x1f
6348 -File: make.info, Node: Makefile Arguments, Next: Goals, Prev: Running, Up: Running
6350 -9.1 Arguments to Specify the Makefile
6351 -=====================================
6353 -The way to specify the name of the makefile is with the `-f' or
6354 -`--file' option (`--makefile' also works). For example, `-f altmake'
6355 -says to use the file `altmake' as the makefile.
6357 - If you use the `-f' flag several times and follow each `-f' with an
6358 -argument, all the specified files are used jointly as makefiles.
6360 - If you do not use the `-f' or `--file' flag, the default is to try
6361 -`GNUmakefile', `makefile', and `Makefile', in that order, and use the
6362 -first of these three which exists or can be made (*note Writing
6363 -Makefiles: Makefiles.).
6365 -\x1f
6366 -File: make.info, Node: Goals, Next: Instead of Execution, Prev: Makefile Arguments, Up: Running
6368 -9.2 Arguments to Specify the Goals
6369 -==================================
6371 -The "goals" are the targets that `make' should strive ultimately to
6372 -update. Other targets are updated as well if they appear as
6373 -prerequisites of goals, or prerequisites of prerequisites of goals, etc.
6375 - By default, the goal is the first target in the makefile (not
6376 -counting targets that start with a period). Therefore, makefiles are
6377 -usually written so that the first target is for compiling the entire
6378 -program or programs they describe. If the first rule in the makefile
6379 -has several targets, only the first target in the rule becomes the
6380 -default goal, not the whole list. You can manage the selection of the
6381 -default goal from within your makefile using the `.DEFAULT_GOAL'
6382 -variable (*note Other Special Variables: Special Variables.).
6384 - You can also specify a different goal or goals with command-line
6385 -arguments to `make'. Use the name of the goal as an argument. If you
6386 -specify several goals, `make' processes each of them in turn, in the
6387 -order you name them.
6389 - Any target in the makefile may be specified as a goal (unless it
6390 -starts with `-' or contains an `=', in which case it will be parsed as
6391 -a switch or variable definition, respectively). Even targets not in
6392 -the makefile may be specified, if `make' can find implicit rules that
6393 -say how to make them.
6395 - `Make' will set the special variable `MAKECMDGOALS' to the list of
6396 -goals you specified on the command line. If no goals were given on the
6397 -command line, this variable is empty. Note that this variable should
6398 -be used only in special circumstances.
6400 - An example of appropriate use is to avoid including `.d' files
6401 -during `clean' rules (*note Automatic Prerequisites::), so `make' won't
6402 -create them only to immediately remove them again:
6404 - sources = foo.c bar.c
6406 - ifneq ($(MAKECMDGOALS),clean)
6407 - include $(sources:.c=.d)
6408 - endif
6410 - One use of specifying a goal is if you want to compile only a part of
6411 -the program, or only one of several programs. Specify as a goal each
6412 -file that you wish to remake. For example, consider a directory
6413 -containing several programs, with a makefile that starts like this:
6415 - .PHONY: all
6416 - all: size nm ld ar as
6418 - If you are working on the program `size', you might want to say
6419 -`make size' so that only the files of that program are recompiled.
6421 - Another use of specifying a goal is to make files that are not
6422 -normally made. For example, there may be a file of debugging output,
6423 -or a version of the program that is compiled specially for testing,
6424 -which has a rule in the makefile but is not a prerequisite of the
6425 -default goal.
6427 - Another use of specifying a goal is to run the commands associated
6428 -with a phony target (*note Phony Targets::) or empty target (*note
6429 -Empty Target Files to Record Events: Empty Targets.). Many makefiles
6430 -contain a phony target named `clean' which deletes everything except
6431 -source files. Naturally, this is done only if you request it
6432 -explicitly with `make clean'. Following is a list of typical phony and
6433 -empty target names. *Note Standard Targets::, for a detailed list of
6434 -all the standard target names which GNU software packages use.
6436 -`all'
6437 - Make all the top-level targets the makefile knows about.
6439 -`clean'
6440 - Delete all files that are normally created by running `make'.
6442 -`mostlyclean'
6443 - Like `clean', but may refrain from deleting a few files that people
6444 - normally don't want to recompile. For example, the `mostlyclean'
6445 - target for GCC does not delete `libgcc.a', because recompiling it
6446 - is rarely necessary and takes a lot of time.
6448 -`distclean'
6449 -`realclean'
6450 -`clobber'
6451 - Any of these targets might be defined to delete _more_ files than
6452 - `clean' does. For example, this would delete configuration files
6453 - or links that you would normally create as preparation for
6454 - compilation, even if the makefile itself cannot create these files.
6456 -`install'
6457 - Copy the executable file into a directory that users typically
6458 - search for commands; copy any auxiliary files that the executable
6459 - uses into the directories where it will look for them.
6461 -`print'
6462 - Print listings of the source files that have changed.
6464 -`tar'
6465 - Create a tar file of the source files.
6467 -`shar'
6468 - Create a shell archive (shar file) of the source files.
6470 -`dist'
6471 - Create a distribution file of the source files. This might be a
6472 - tar file, or a shar file, or a compressed version of one of the
6473 - above, or even more than one of the above.
6475 -`TAGS'
6476 - Update a tags table for this program.
6478 -`check'
6479 -`test'
6480 - Perform self tests on the program this makefile builds.
6482 -\x1f
6483 -File: make.info, Node: Instead of Execution, Next: Avoiding Compilation, Prev: Goals, Up: Running
6485 -9.3 Instead of Executing the Commands
6486 -=====================================
6488 -The makefile tells `make' how to tell whether a target is up to date,
6489 -and how to update each target. But updating the targets is not always
6490 -what you want. Certain options specify other activities for `make'.
6492 -`-n'
6493 -`--just-print'
6494 -`--dry-run'
6495 -`--recon'
6496 - "No-op". The activity is to print what commands would be used to
6497 - make the targets up to date, but not actually execute them.
6499 -`-t'
6500 -`--touch'
6501 - "Touch". The activity is to mark the targets as up to date without
6502 - actually changing them. In other words, `make' pretends to compile
6503 - the targets but does not really change their contents.
6505 -`-q'
6506 -`--question'
6507 - "Question". The activity is to find out silently whether the
6508 - targets are up to date already; but execute no commands in either
6509 - case. In other words, neither compilation nor output will occur.
6511 -`-W FILE'
6512 -`--what-if=FILE'
6513 -`--assume-new=FILE'
6514 -`--new-file=FILE'
6515 - "What if". Each `-W' flag is followed by a file name. The given
6516 - files' modification times are recorded by `make' as being the
6517 - present time, although the actual modification times remain the
6518 - same. You can use the `-W' flag in conjunction with the `-n' flag
6519 - to see what would happen if you were to modify specific files.
6521 - With the `-n' flag, `make' prints the commands that it would
6522 -normally execute but does not execute them.
6524 - With the `-t' flag, `make' ignores the commands in the rules and
6525 -uses (in effect) the command `touch' for each target that needs to be
6526 -remade. The `touch' command is also printed, unless `-s' or `.SILENT'
6527 -is used. For speed, `make' does not actually invoke the program
6528 -`touch'. It does the work directly.
6530 - With the `-q' flag, `make' prints nothing and executes no commands,
6531 -but the exit status code it returns is zero if and only if the targets
6532 -to be considered are already up to date. If the exit status is one,
6533 -then some updating needs to be done. If `make' encounters an error,
6534 -the exit status is two, so you can distinguish an error from a target
6535 -that is not up to date.
6537 - It is an error to use more than one of these three flags in the same
6538 -invocation of `make'.
6540 - The `-n', `-t', and `-q' options do not affect command lines that
6541 -begin with `+' characters or contain the strings `$(MAKE)' or
6542 -`${MAKE}'. Note that only the line containing the `+' character or the
6543 -strings `$(MAKE)' or `${MAKE}' is run regardless of these options.
6544 -Other lines in the same rule are not run unless they too begin with `+'
6545 -or contain `$(MAKE)' or `${MAKE}' (*Note How the `MAKE' Variable Works:
6546 -MAKE Variable.)
6548 - The `-W' flag provides two features:
6550 - * If you also use the `-n' or `-q' flag, you can see what `make'
6551 - would do if you were to modify some files.
6553 - * Without the `-n' or `-q' flag, when `make' is actually executing
6554 - commands, the `-W' flag can direct `make' to act as if some files
6555 - had been modified, without actually modifying the files.
6557 - Note that the options `-p' and `-v' allow you to obtain other
6558 -information about `make' or about the makefiles in use (*note Summary
6559 -of Options: Options Summary.).
6561 -\x1f
6562 -File: make.info, Node: Avoiding Compilation, Next: Overriding, Prev: Instead of Execution, Up: Running
6564 -9.4 Avoiding Recompilation of Some Files
6565 -========================================
6567 -Sometimes you may have changed a source file but you do not want to
6568 -recompile all the files that depend on it. For example, suppose you add
6569 -a macro or a declaration to a header file that many other files depend
6570 -on. Being conservative, `make' assumes that any change in the header
6571 -file requires recompilation of all dependent files, but you know that
6572 -they do not need to be recompiled and you would rather not waste the
6573 -time waiting for them to compile.
6575 - If you anticipate the problem before changing the header file, you
6576 -can use the `-t' flag. This flag tells `make' not to run the commands
6577 -in the rules, but rather to mark the target up to date by changing its
6578 -last-modification date. You would follow this procedure:
6580 - 1. Use the command `make' to recompile the source files that really
6581 - need recompilation, ensuring that the object files are up-to-date
6582 - before you begin.
6584 - 2. Make the changes in the header files.
6586 - 3. Use the command `make -t' to mark all the object files as up to
6587 - date. The next time you run `make', the changes in the header
6588 - files will not cause any recompilation.
6590 - If you have already changed the header file at a time when some files
6591 -do need recompilation, it is too late to do this. Instead, you can use
6592 -the `-o FILE' flag, which marks a specified file as "old" (*note
6593 -Summary of Options: Options Summary.). This means that the file itself
6594 -will not be remade, and nothing else will be remade on its account.
6595 -Follow this procedure:
6597 - 1. Recompile the source files that need compilation for reasons
6598 - independent of the particular header file, with `make -o
6599 - HEADERFILE'. If several header files are involved, use a separate
6600 - `-o' option for each header file.
6602 - 2. Touch all the object files with `make -t'.
6604 -\x1f
6605 -File: make.info, Node: Overriding, Next: Testing, Prev: Avoiding Compilation, Up: Running
6607 -9.5 Overriding Variables
6608 -========================
6610 -An argument that contains `=' specifies the value of a variable: `V=X'
6611 -sets the value of the variable V to X. If you specify a value in this
6612 -way, all ordinary assignments of the same variable in the makefile are
6613 -ignored; we say they have been "overridden" by the command line
6614 -argument.
6616 - The most common way to use this facility is to pass extra flags to
6617 -compilers. For example, in a properly written makefile, the variable
6618 -`CFLAGS' is included in each command that runs the C compiler, so a
6619 -file `foo.c' would be compiled something like this:
6621 - cc -c $(CFLAGS) foo.c
6623 - Thus, whatever value you set for `CFLAGS' affects each compilation
6624 -that occurs. The makefile probably specifies the usual value for
6625 -`CFLAGS', like this:
6627 - CFLAGS=-g
6629 - Each time you run `make', you can override this value if you wish.
6630 -For example, if you say `make CFLAGS='-g -O'', each C compilation will
6631 -be done with `cc -c -g -O'. (This also illustrates how you can use
6632 -quoting in the shell to enclose spaces and other special characters in
6633 -the value of a variable when you override it.)
6635 - The variable `CFLAGS' is only one of many standard variables that
6636 -exist just so that you can change them this way. *Note Variables Used
6637 -by Implicit Rules: Implicit Variables, for a complete list.
6639 - You can also program the makefile to look at additional variables of
6640 -your own, giving the user the ability to control other aspects of how
6641 -the makefile works by changing the variables.
6643 - When you override a variable with a command argument, you can define
6644 -either a recursively-expanded variable or a simply-expanded variable.
6645 -The examples shown above make a recursively-expanded variable; to make a
6646 -simply-expanded variable, write `:=' instead of `='. But, unless you
6647 -want to include a variable reference or function call in the _value_
6648 -that you specify, it makes no difference which kind of variable you
6649 -create.
6651 - There is one way that the makefile can change a variable that you
6652 -have overridden. This is to use the `override' directive, which is a
6653 -line that looks like this: `override VARIABLE = VALUE' (*note The
6654 -`override' Directive: Override Directive.).
6656 -\x1f
6657 -File: make.info, Node: Testing, Next: Options Summary, Prev: Overriding, Up: Running
6659 -9.6 Testing the Compilation of a Program
6660 -========================================
6662 -Normally, when an error happens in executing a shell command, `make'
6663 -gives up immediately, returning a nonzero status. No further commands
6664 -are executed for any target. The error implies that the goal cannot be
6665 -correctly remade, and `make' reports this as soon as it knows.
6667 - When you are compiling a program that you have just changed, this is
6668 -not what you want. Instead, you would rather that `make' try compiling
6669 -every file that can be tried, to show you as many compilation errors as
6670 -possible.
6672 - On these occasions, you should use the `-k' or `--keep-going' flag.
6673 -This tells `make' to continue to consider the other prerequisites of
6674 -the pending targets, remaking them if necessary, before it gives up and
6675 -returns nonzero status. For example, after an error in compiling one
6676 -object file, `make -k' will continue compiling other object files even
6677 -though it already knows that linking them will be impossible. In
6678 -addition to continuing after failed shell commands, `make -k' will
6679 -continue as much as possible after discovering that it does not know
6680 -how to make a target or prerequisite file. This will always cause an
6681 -error message, but without `-k', it is a fatal error (*note Summary of
6682 -Options: Options Summary.).
6684 - The usual behavior of `make' assumes that your purpose is to get the
6685 -goals up to date; once `make' learns that this is impossible, it might
6686 -as well report the failure immediately. The `-k' flag says that the
6687 -real purpose is to test as much as possible of the changes made in the
6688 -program, perhaps to find several independent problems so that you can
6689 -correct them all before the next attempt to compile. This is why Emacs'
6690 -`M-x compile' command passes the `-k' flag by default.
6692 -\x1f
6693 -File: make.info, Node: Options Summary, Prev: Testing, Up: Running
6695 -9.7 Summary of Options
6696 -======================
6698 -Here is a table of all the options `make' understands:
6700 -`-b'
6701 -`-m'
6702 - These options are ignored for compatibility with other versions of
6703 - `make'.
6705 -`-B'
6706 -`--always-make'
6707 - Consider all targets out-of-date. GNU `make' proceeds to consider
6708 - targets and their prerequisites using the normal algorithms;
6709 - however, all targets so considered are always remade regardless of
6710 - the status of their prerequisites. To avoid infinite recursion, if
6711 - `MAKE_RESTARTS' (*note Other Special Variables: Special
6712 - Variables.) is set to a number greater than 0 this option is
6713 - disabled when considering whether to remake makefiles (*note How
6714 - Makefiles Are Remade: Remaking Makefiles.).
6716 -`-C DIR'
6717 -`--directory=DIR'
6718 - Change to directory DIR before reading the makefiles. If multiple
6719 - `-C' options are specified, each is interpreted relative to the
6720 - previous one: `-C / -C etc' is equivalent to `-C /etc'. This is
6721 - typically used with recursive invocations of `make' (*note
6722 - Recursive Use of `make': Recursion.).
6724 -`-d'
6725 - Print debugging information in addition to normal processing. The
6726 - debugging information says which files are being considered for
6727 - remaking, which file-times are being compared and with what
6728 - results, which files actually need to be remade, which implicit
6729 - rules are considered and which are applied--everything interesting
6730 - about how `make' decides what to do. The `-d' option is
6731 - equivalent to `--debug=a' (see below).
6733 -`--debug[=OPTIONS]'
6734 - Print debugging information in addition to normal processing.
6735 - Various levels and types of output can be chosen. With no
6736 - arguments, print the "basic" level of debugging. Possible
6737 - arguments are below; only the first character is considered, and
6738 - values must be comma- or space-separated.
6740 - `a (all)'
6741 - All types of debugging output are enabled. This is
6742 - equivalent to using `-d'.
6744 - `b (basic)'
6745 - Basic debugging prints each target that was found to be
6746 - out-of-date, and whether the build was successful or not.
6748 - `v (verbose)'
6749 - A level above `basic'; includes messages about which
6750 - makefiles were parsed, prerequisites that did not need to be
6751 - rebuilt, etc. This option also enables `basic' messages.
6753 - `i (implicit)'
6754 - Prints messages describing the implicit rule searches for
6755 - each target. This option also enables `basic' messages.
6757 - `j (jobs)'
6758 - Prints messages giving details on the invocation of specific
6759 - subcommands.
6761 - `m (makefile)'
6762 - By default, the above messages are not enabled while trying
6763 - to remake the makefiles. This option enables messages while
6764 - rebuilding makefiles, too. Note that the `all' option does
6765 - enable this option. This option also enables `basic'
6766 - messages.
6768 -`-e'
6769 -`--environment-overrides'
6770 - Give variables taken from the environment precedence over
6771 - variables from makefiles. *Note Variables from the Environment:
6772 - Environment.
6774 -`-f FILE'
6775 -`--file=FILE'
6776 -`--makefile=FILE'
6777 - Read the file named FILE as a makefile. *Note Writing Makefiles:
6778 - Makefiles.
6780 -`-h'
6781 -`--help'
6782 - Remind you of the options that `make' understands and then exit.
6784 -`-i'
6785 -`--ignore-errors'
6786 - Ignore all errors in commands executed to remake files. *Note
6787 - Errors in Commands: Errors.
6789 -`-I DIR'
6790 -`--include-dir=DIR'
6791 - Specifies a directory DIR to search for included makefiles. *Note
6792 - Including Other Makefiles: Include. If several `-I' options are
6793 - used to specify several directories, the directories are searched
6794 - in the order specified.
6796 -`-j [JOBS]'
6797 -`--jobs[=JOBS]'
6798 - Specifies the number of jobs (commands) to run simultaneously.
6799 - With no argument, `make' runs as many jobs simultaneously as
6800 - possible. If there is more than one `-j' option, the last one is
6801 - effective. *Note Parallel Execution: Parallel, for more
6802 - information on how commands are run. Note that this option is
6803 - ignored on MS-DOS.
6805 -`-k'
6806 -`--keep-going'
6807 - Continue as much as possible after an error. While the target that
6808 - failed, and those that depend on it, cannot be remade, the other
6809 - prerequisites of these targets can be processed all the same.
6810 - *Note Testing the Compilation of a Program: Testing.
6812 -`-l [LOAD]'
6813 -`--load-average[=LOAD]'
6814 -`--max-load[=LOAD]'
6815 - Specifies that no new jobs (commands) should be started if there
6816 - are other jobs running and the load average is at least LOAD (a
6817 - floating-point number). With no argument, removes a previous load
6818 - limit. *Note Parallel Execution: Parallel.
6820 -`-L'
6821 -`--check-symlink-times'
6822 - On systems that support symbolic links, this option causes `make'
6823 - to consider the timestamps on any symbolic links in addition to the
6824 - timestamp on the file referenced by those links. When this option
6825 - is provided, the most recent timestamp among the file and the
6826 - symbolic links is taken as the modification time for this target
6827 - file.
6829 -`-n'
6830 -`--just-print'
6831 -`--dry-run'
6832 -`--recon'
6833 - Print the commands that would be executed, but do not execute them.
6834 - *Note Instead of Executing the Commands: Instead of Execution.
6836 -`-o FILE'
6837 -`--old-file=FILE'
6838 -`--assume-old=FILE'
6839 - Do not remake the file FILE even if it is older than its
6840 - prerequisites, and do not remake anything on account of changes in
6841 - FILE. Essentially the file is treated as very old and its rules
6842 - are ignored. *Note Avoiding Recompilation of Some Files: Avoiding
6843 - Compilation.
6845 -`-p'
6846 -`--print-data-base'
6847 - Print the data base (rules and variable values) that results from
6848 - reading the makefiles; then execute as usual or as otherwise
6849 - specified. This also prints the version information given by the
6850 - `-v' switch (see below). To print the data base without trying to
6851 - remake any files, use `make -qp'. To print the data base of
6852 - predefined rules and variables, use `make -p -f /dev/null'. The
6853 - data base output contains filename and linenumber information for
6854 - command and variable definitions, so it can be a useful debugging
6855 - tool in complex environments.
6857 -`-q'
6858 -`--question'
6859 - "Question mode". Do not run any commands, or print anything; just
6860 - return an exit status that is zero if the specified targets are
6861 - already up to date, one if any remaking is required, or two if an
6862 - error is encountered. *Note Instead of Executing the Commands:
6863 - Instead of Execution.
6865 -`-r'
6866 -`--no-builtin-rules'
6867 - Eliminate use of the built-in implicit rules (*note Using Implicit
6868 - Rules: Implicit Rules.). You can still define your own by writing
6869 - pattern rules (*note Defining and Redefining Pattern Rules:
6870 - Pattern Rules.). The `-r' option also clears out the default list
6871 - of suffixes for suffix rules (*note Old-Fashioned Suffix Rules:
6872 - Suffix Rules.). But you can still define your own suffixes with a
6873 - rule for `.SUFFIXES', and then define your own suffix rules. Note
6874 - that only _rules_ are affected by the `-r' option; default
6875 - variables remain in effect (*note Variables Used by Implicit
6876 - Rules: Implicit Variables.); see the `-R' option below.
6878 -`-R'
6879 -`--no-builtin-variables'
6880 - Eliminate use of the built-in rule-specific variables (*note
6881 - Variables Used by Implicit Rules: Implicit Variables.). You can
6882 - still define your own, of course. The `-R' option also
6883 - automatically enables the `-r' option (see above), since it
6884 - doesn't make sense to have implicit rules without any definitions
6885 - for the variables that they use.
6887 -`-s'
6888 -`--silent'
6889 -`--quiet'
6890 - Silent operation; do not print the commands as they are executed.
6891 - *Note Command Echoing: Echoing.
6893 -`-S'
6894 -`--no-keep-going'
6895 -`--stop'
6896 - Cancel the effect of the `-k' option. This is never necessary
6897 - except in a recursive `make' where `-k' might be inherited from
6898 - the top-level `make' via `MAKEFLAGS' (*note Recursive Use of
6899 - `make': Recursion.) or if you set `-k' in `MAKEFLAGS' in your
6900 - environment.
6902 -`-t'
6903 -`--touch'
6904 - Touch files (mark them up to date without really changing them)
6905 - instead of running their commands. This is used to pretend that
6906 - the commands were done, in order to fool future invocations of
6907 - `make'. *Note Instead of Executing the Commands: Instead of
6908 - Execution.
6910 -`-v'
6911 -`--version'
6912 - Print the version of the `make' program plus a copyright, a list
6913 - of authors, and a notice that there is no warranty; then exit.
6915 -`-w'
6916 -`--print-directory'
6917 - Print a message containing the working directory both before and
6918 - after executing the makefile. This may be useful for tracking
6919 - down errors from complicated nests of recursive `make' commands.
6920 - *Note Recursive Use of `make': Recursion. (In practice, you
6921 - rarely need to specify this option since `make' does it for you;
6922 - see *Note The `--print-directory' Option: -w Option.)
6924 -`--no-print-directory'
6925 - Disable printing of the working directory under `-w'. This option
6926 - is useful when `-w' is turned on automatically, but you do not
6927 - want to see the extra messages. *Note The `--print-directory'
6928 - Option: -w Option.
6930 -`-W FILE'
6931 -`--what-if=FILE'
6932 -`--new-file=FILE'
6933 -`--assume-new=FILE'
6934 - Pretend that the target FILE has just been modified. When used
6935 - with the `-n' flag, this shows you what would happen if you were
6936 - to modify that file. Without `-n', it is almost the same as
6937 - running a `touch' command on the given file before running `make',
6938 - except that the modification time is changed only in the
6939 - imagination of `make'. *Note Instead of Executing the Commands:
6940 - Instead of Execution.
6942 -`--warn-undefined-variables'
6943 - Issue a warning message whenever `make' sees a reference to an
6944 - undefined variable. This can be helpful when you are trying to
6945 - debug makefiles which use variables in complex ways.
6947 -\x1f
6948 -File: make.info, Node: Implicit Rules, Next: Archives, Prev: Running, Up: Top
6950 -10 Using Implicit Rules
6951 -***********************
6953 -Certain standard ways of remaking target files are used very often. For
6954 -example, one customary way to make an object file is from a C source
6955 -file using the C compiler, `cc'.
6957 - "Implicit rules" tell `make' how to use customary techniques so that
6958 -you do not have to specify them in detail when you want to use them.
6959 -For example, there is an implicit rule for C compilation. File names
6960 -determine which implicit rules are run. For example, C compilation
6961 -typically takes a `.c' file and makes a `.o' file. So `make' applies
6962 -the implicit rule for C compilation when it sees this combination of
6963 -file name endings.
6965 - A chain of implicit rules can apply in sequence; for example, `make'
6966 -will remake a `.o' file from a `.y' file by way of a `.c' file.
6968 - The built-in implicit rules use several variables in their commands
6969 -so that, by changing the values of the variables, you can change the
6970 -way the implicit rule works. For example, the variable `CFLAGS'
6971 -controls the flags given to the C compiler by the implicit rule for C
6972 -compilation.
6974 - You can define your own implicit rules by writing "pattern rules".
6976 - "Suffix rules" are a more limited way to define implicit rules.
6977 -Pattern rules are more general and clearer, but suffix rules are
6978 -retained for compatibility.
6980 -* Menu:
6982 -* Using Implicit:: How to use an existing implicit rule
6983 - to get the commands for updating a file.
6984 -* Catalogue of Rules:: A list of built-in implicit rules.
6985 -* Implicit Variables:: How to change what predefined rules do.
6986 -* Chained Rules:: How to use a chain of implicit rules.
6987 -* Pattern Rules:: How to define new implicit rules.
6988 -* Last Resort:: How to define commands for rules which
6989 - cannot find any.
6990 -* Suffix Rules:: The old-fashioned style of implicit rule.
6991 -* Implicit Rule Search:: The precise algorithm for applying
6992 - implicit rules.
6994 -\x1f
6995 -File: make.info, Node: Using Implicit, Next: Catalogue of Rules, Prev: Implicit Rules, Up: Implicit Rules
6997 -10.1 Using Implicit Rules
6998 -=========================
7000 -To allow `make' to find a customary method for updating a target file,
7001 -all you have to do is refrain from specifying commands yourself. Either
7002 -write a rule with no command lines, or don't write a rule at all. Then
7003 -`make' will figure out which implicit rule to use based on which kind
7004 -of source file exists or can be made.
7006 - For example, suppose the makefile looks like this:
7008 - foo : foo.o bar.o
7009 - cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)
7011 -Because you mention `foo.o' but do not give a rule for it, `make' will
7012 -automatically look for an implicit rule that tells how to update it.
7013 -This happens whether or not the file `foo.o' currently exists.
7015 - If an implicit rule is found, it can supply both commands and one or
7016 -more prerequisites (the source files). You would want to write a rule
7017 -for `foo.o' with no command lines if you need to specify additional
7018 -prerequisites, such as header files, that the implicit rule cannot
7019 -supply.
7021 - Each implicit rule has a target pattern and prerequisite patterns.
7022 -There may be many implicit rules with the same target pattern. For
7023 -example, numerous rules make `.o' files: one, from a `.c' file with the
7024 -C compiler; another, from a `.p' file with the Pascal compiler; and so
7025 -on. The rule that actually applies is the one whose prerequisites
7026 -exist or can be made. So, if you have a file `foo.c', `make' will run
7027 -the C compiler; otherwise, if you have a file `foo.p', `make' will run
7028 -the Pascal compiler; and so on.
7030 - Of course, when you write the makefile, you know which implicit rule
7031 -you want `make' to use, and you know it will choose that one because you
7032 -know which possible prerequisite files are supposed to exist. *Note
7033 -Catalogue of Implicit Rules: Catalogue of Rules, for a catalogue of all
7034 -the predefined implicit rules.
7036 - Above, we said an implicit rule applies if the required
7037 -prerequisites "exist or can be made". A file "can be made" if it is
7038 -mentioned explicitly in the makefile as a target or a prerequisite, or
7039 -if an implicit rule can be recursively found for how to make it. When
7040 -an implicit prerequisite is the result of another implicit rule, we say
7041 -that "chaining" is occurring. *Note Chains of Implicit Rules: Chained
7042 -Rules.
7044 - In general, `make' searches for an implicit rule for each target, and
7045 -for each double-colon rule, that has no commands. A file that is
7046 -mentioned only as a prerequisite is considered a target whose rule
7047 -specifies nothing, so implicit rule search happens for it. *Note
7048 -Implicit Rule Search Algorithm: Implicit Rule Search, for the details
7049 -of how the search is done.
7051 - Note that explicit prerequisites do not influence implicit rule
7052 -search. For example, consider this explicit rule:
7054 - foo.o: foo.p
7056 -The prerequisite on `foo.p' does not necessarily mean that `make' will
7057 -remake `foo.o' according to the implicit rule to make an object file, a
7058 -`.o' file, from a Pascal source file, a `.p' file. For example, if
7059 -`foo.c' also exists, the implicit rule to make an object file from a C
7060 -source file is used instead, because it appears before the Pascal rule
7061 -in the list of predefined implicit rules (*note Catalogue of Implicit
7062 -Rules: Catalogue of Rules.).
7064 - If you do not want an implicit rule to be used for a target that has
7065 -no commands, you can give that target empty commands by writing a
7066 -semicolon (*note Defining Empty Commands: Empty Commands.).
7068 -\x1f
7069 -File: make.info, Node: Catalogue of Rules, Next: Implicit Variables, Prev: Using Implicit, Up: Implicit Rules
7071 -10.2 Catalogue of Implicit Rules
7072 -================================
7074 -Here is a catalogue of predefined implicit rules which are always
7075 -available unless the makefile explicitly overrides or cancels them.
7076 -*Note Canceling Implicit Rules: Canceling Rules, for information on
7077 -canceling or overriding an implicit rule. The `-r' or
7078 -`--no-builtin-rules' option cancels all predefined rules.
7080 - This manual only documents the default rules available on POSIX-based
7081 -operating systems. Other operating systems, such as VMS, Windows,
7082 -OS/2, etc. may have different sets of default rules. To see the full
7083 -list of default rules and variables available in your version of GNU
7084 -`make', run `make -p' in a directory with no makefile.
7086 - Not all of these rules will always be defined, even when the `-r'
7087 -option is not given. Many of the predefined implicit rules are
7088 -implemented in `make' as suffix rules, so which ones will be defined
7089 -depends on the "suffix list" (the list of prerequisites of the special
7090 -target `.SUFFIXES'). The default suffix list is: `.out', `.a', `.ln',
7091 -`.o', `.c', `.cc', `.C', `.cpp', `.p', `.f', `.F', `.r', `.y', `.l',
7092 -`.s', `.S', `.mod', `.sym', `.def', `.h', `.info', `.dvi', `.tex',
7093 -`.texinfo', `.texi', `.txinfo', `.w', `.ch' `.web', `.sh', `.elc',
7094 -`.el'. All of the implicit rules described below whose prerequisites
7095 -have one of these suffixes are actually suffix rules. If you modify
7096 -the suffix list, the only predefined suffix rules in effect will be
7097 -those named by one or two of the suffixes that are on the list you
7098 -specify; rules whose suffixes fail to be on the list are disabled.
7099 -*Note Old-Fashioned Suffix Rules: Suffix Rules, for full details on
7100 -suffix rules.
7102 -Compiling C programs
7103 - `N.o' is made automatically from `N.c' with a command of the form
7104 - `$(CC) -c $(CPPFLAGS) $(CFLAGS)'.
7106 -Compiling C++ programs
7107 - `N.o' is made automatically from `N.cc', `N.cpp', or `N.C' with a
7108 - command of the form `$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)'. We
7109 - encourage you to use the suffix `.cc' for C++ source files instead
7110 - of `.C'.
7112 -Compiling Pascal programs
7113 - `N.o' is made automatically from `N.p' with the command `$(PC) -c
7114 - $(PFLAGS)'.
7116 -Compiling Fortran and Ratfor programs
7117 - `N.o' is made automatically from `N.r', `N.F' or `N.f' by running
7118 - the Fortran compiler. The precise command used is as follows:
7120 - `.f'
7121 - `$(FC) -c $(FFLAGS)'.
7123 - `.F'
7124 - `$(FC) -c $(FFLAGS) $(CPPFLAGS)'.
7126 - `.r'
7127 - `$(FC) -c $(FFLAGS) $(RFLAGS)'.
7129 -Preprocessing Fortran and Ratfor programs
7130 - `N.f' is made automatically from `N.r' or `N.F'. This rule runs
7131 - just the preprocessor to convert a Ratfor or preprocessable
7132 - Fortran program into a strict Fortran program. The precise
7133 - command used is as follows:
7135 - `.F'
7136 - `$(FC) -F $(CPPFLAGS) $(FFLAGS)'.
7138 - `.r'
7139 - `$(FC) -F $(FFLAGS) $(RFLAGS)'.
7141 -Compiling Modula-2 programs
7142 - `N.sym' is made from `N.def' with a command of the form `$(M2C)
7143 - $(M2FLAGS) $(DEFFLAGS)'. `N.o' is made from `N.mod'; the form is:
7144 - `$(M2C) $(M2FLAGS) $(MODFLAGS)'.
7146 -Assembling and preprocessing assembler programs
7147 - `N.o' is made automatically from `N.s' by running the assembler,
7148 - `as'. The precise command is `$(AS) $(ASFLAGS)'.
7150 - `N.s' is made automatically from `N.S' by running the C
7151 - preprocessor, `cpp'. The precise command is `$(CPP) $(CPPFLAGS)'.
7153 -Linking a single object file
7154 - `N' is made automatically from `N.o' by running the linker
7155 - (usually called `ld') via the C compiler. The precise command
7156 - used is `$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'.
7158 - This rule does the right thing for a simple program with only one
7159 - source file. It will also do the right thing if there are multiple
7160 - object files (presumably coming from various other source files),
7161 - one of which has a name matching that of the executable file.
7162 - Thus,
7164 - x: y.o z.o
7166 - when `x.c', `y.c' and `z.c' all exist will execute:
7168 - cc -c x.c -o x.o
7169 - cc -c y.c -o y.o
7170 - cc -c z.c -o z.o
7171 - cc x.o y.o z.o -o x
7172 - rm -f x.o
7173 - rm -f y.o
7174 - rm -f z.o
7176 - In more complicated cases, such as when there is no object file
7177 - whose name derives from the executable file name, you must write
7178 - an explicit command for linking.
7180 - Each kind of file automatically made into `.o' object files will
7181 - be automatically linked by using the compiler (`$(CC)', `$(FC)' or
7182 - `$(PC)'; the C compiler `$(CC)' is used to assemble `.s' files)
7183 - without the `-c' option. This could be done by using the `.o'
7184 - object files as intermediates, but it is faster to do the
7185 - compiling and linking in one step, so that's how it's done.
7187 -Yacc for C programs
7188 - `N.c' is made automatically from `N.y' by running Yacc with the
7189 - command `$(YACC) $(YFLAGS)'.
7191 -Lex for C programs
7192 - `N.c' is made automatically from `N.l' by running Lex. The actual
7193 - command is `$(LEX) $(LFLAGS)'.
7195 -Lex for Ratfor programs
7196 - `N.r' is made automatically from `N.l' by running Lex. The actual
7197 - command is `$(LEX) $(LFLAGS)'.
7199 - The convention of using the same suffix `.l' for all Lex files
7200 - regardless of whether they produce C code or Ratfor code makes it
7201 - impossible for `make' to determine automatically which of the two
7202 - languages you are using in any particular case. If `make' is
7203 - called upon to remake an object file from a `.l' file, it must
7204 - guess which compiler to use. It will guess the C compiler, because
7205 - that is more common. If you are using Ratfor, make sure `make'
7206 - knows this by mentioning `N.r' in the makefile. Or, if you are
7207 - using Ratfor exclusively, with no C files, remove `.c' from the
7208 - list of implicit rule suffixes with:
7210 - .SUFFIXES:
7211 - .SUFFIXES: .o .r .f .l ...
7213 -Making Lint Libraries from C, Yacc, or Lex programs
7214 - `N.ln' is made from `N.c' by running `lint'. The precise command
7215 - is `$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'. The same command is
7216 - used on the C code produced from `N.y' or `N.l'.
7218 -TeX and Web
7219 - `N.dvi' is made from `N.tex' with the command `$(TEX)'. `N.tex'
7220 - is made from `N.web' with `$(WEAVE)', or from `N.w' (and from
7221 - `N.ch' if it exists or can be made) with `$(CWEAVE)'. `N.p' is
7222 - made from `N.web' with `$(TANGLE)' and `N.c' is made from `N.w'
7223 - (and from `N.ch' if it exists or can be made) with `$(CTANGLE)'.
7225 -Texinfo and Info
7226 - `N.dvi' is made from `N.texinfo', `N.texi', or `N.txinfo', with
7227 - the command `$(TEXI2DVI) $(TEXI2DVI_FLAGS)'. `N.info' is made from
7228 - `N.texinfo', `N.texi', or `N.txinfo', with the command
7229 - `$(MAKEINFO) $(MAKEINFO_FLAGS)'.
7231 -RCS
7232 - Any file `N' is extracted if necessary from an RCS file named
7233 - either `N,v' or `RCS/N,v'. The precise command used is
7234 - `$(CO) $(COFLAGS)'. `N' will not be extracted from RCS if it
7235 - already exists, even if the RCS file is newer. The rules for RCS
7236 - are terminal (*note Match-Anything Pattern Rules: Match-Anything
7237 - Rules.), so RCS files cannot be generated from another source;
7238 - they must actually exist.
7240 -SCCS
7241 - Any file `N' is extracted if necessary from an SCCS file named
7242 - either `s.N' or `SCCS/s.N'. The precise command used is
7243 - `$(GET) $(GFLAGS)'. The rules for SCCS are terminal (*note
7244 - Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS
7245 - files cannot be generated from another source; they must actually
7246 - exist.
7248 - For the benefit of SCCS, a file `N' is copied from `N.sh' and made
7249 - executable (by everyone). This is for shell scripts that are
7250 - checked into SCCS. Since RCS preserves the execution permission
7251 - of a file, you do not need to use this feature with RCS.
7253 - We recommend that you avoid using of SCCS. RCS is widely held to
7254 - be superior, and is also free. By choosing free software in place
7255 - of comparable (or inferior) proprietary software, you support the
7256 - free software movement.
7258 - Usually, you want to change only the variables listed in the table
7259 -above, which are documented in the following section.
7261 - However, the commands in built-in implicit rules actually use
7262 -variables such as `COMPILE.c', `LINK.p', and `PREPROCESS.S', whose
7263 -values contain the commands listed above.
7265 - `make' follows the convention that the rule to compile a `.X' source
7266 -file uses the variable `COMPILE.X'. Similarly, the rule to produce an
7267 -executable from a `.X' file uses `LINK.X'; and the rule to preprocess a
7268 -`.X' file uses `PREPROCESS.X'.
7270 - Every rule that produces an object file uses the variable
7271 -`OUTPUT_OPTION'. `make' defines this variable either to contain `-o
7272 -$@', or to be empty, depending on a compile-time option. You need the
7273 -`-o' option to ensure that the output goes into the right file when the
7274 -source file is in a different directory, as when using `VPATH' (*note
7275 -Directory Search::). However, compilers on some systems do not accept
7276 -a `-o' switch for object files. If you use such a system, and use
7277 -`VPATH', some compilations will put their output in the wrong place. A
7278 -possible workaround for this problem is to give `OUTPUT_OPTION' the
7279 -value `; mv $*.o $@'.
7281 -\x1f
7282 -File: make.info, Node: Implicit Variables, Next: Chained Rules, Prev: Catalogue of Rules, Up: Implicit Rules
7284 -10.3 Variables Used by Implicit Rules
7285 -=====================================
7287 -The commands in built-in implicit rules make liberal use of certain
7288 -predefined variables. You can alter the values of these variables in
7289 -the makefile, with arguments to `make', or in the environment to alter
7290 -how the implicit rules work without redefining the rules themselves.
7291 -You can cancel all variables used by implicit rules with the `-R' or
7292 -`--no-builtin-variables' option.
7294 - For example, the command used to compile a C source file actually
7295 -says `$(CC) -c $(CFLAGS) $(CPPFLAGS)'. The default values of the
7296 -variables used are `cc' and nothing, resulting in the command `cc -c'.
7297 -By redefining `CC' to `ncc', you could cause `ncc' to be used for all C
7298 -compilations performed by the implicit rule. By redefining `CFLAGS' to
7299 -be `-g', you could pass the `-g' option to each compilation. _All_
7300 -implicit rules that do C compilation use `$(CC)' to get the program
7301 -name for the compiler and _all_ include `$(CFLAGS)' among the arguments
7302 -given to the compiler.
7304 - The variables used in implicit rules fall into two classes: those
7305 -that are names of programs (like `CC') and those that contain arguments
7306 -for the programs (like `CFLAGS'). (The "name of a program" may also
7307 -contain some command arguments, but it must start with an actual
7308 -executable program name.) If a variable value contains more than one
7309 -argument, separate them with spaces.
7311 - The following tables describe of some of the more commonly-used
7312 -predefined variables. This list is not exhaustive, and the default
7313 -values shown here may not be what are selected by `make' for your
7314 -environment. To see the complete list of predefined variables for your
7315 -instance of GNU `make' you can run `make -p' in a directory with no
7316 -makefiles.
7318 - Here is a table of some of the more common variables used as names of
7319 -programs in built-in rules: makefiles.
7321 -`AR'
7322 - Archive-maintaining program; default `ar'.
7324 -`AS'
7325 - Program for compiling assembly files; default `as'.
7327 -`CC'
7328 - Program for compiling C programs; default `cc'.
7330 -`CO'
7331 - Program for checking out files from RCS; default `co'.
7333 -`CXX'
7334 - Program for compiling C++ programs; default `g++'.
7336 -`CO'
7337 - Program for extracting a file from RCS; default `co'.
7339 -`CPP'
7340 - Program for running the C preprocessor, with results to standard
7341 - output; default `$(CC) -E'.
7343 -`FC'
7344 - Program for compiling or preprocessing Fortran and Ratfor programs;
7345 - default `f77'.
7347 -`GET'
7348 - Program for extracting a file from SCCS; default `get'.
7350 -`LEX'
7351 - Program to use to turn Lex grammars into source code; default
7352 - `lex'.
7354 -`YACC'
7355 - Program to use to turn Yacc grammars into source code; default
7356 - `yacc'.
7358 -`LINT'
7359 - Program to use to run lint on source code; default `lint'.
7361 -`M2C'
7362 - Program to use to compile Modula-2 source code; default `m2c'.
7364 -`PC'
7365 - Program for compiling Pascal programs; default `pc'.
7367 -`MAKEINFO'
7368 - Program to convert a Texinfo source file into an Info file; default
7369 - `makeinfo'.
7371 -`TEX'
7372 - Program to make TeX DVI files from TeX source; default `tex'.
7374 -`TEXI2DVI'
7375 - Program to make TeX DVI files from Texinfo source; default
7376 - `texi2dvi'.
7378 -`WEAVE'
7379 - Program to translate Web into TeX; default `weave'.
7381 -`CWEAVE'
7382 - Program to translate C Web into TeX; default `cweave'.
7384 -`TANGLE'
7385 - Program to translate Web into Pascal; default `tangle'.
7387 -`CTANGLE'
7388 - Program to translate C Web into C; default `ctangle'.
7390 -`RM'
7391 - Command to remove a file; default `rm -f'.
7393 - Here is a table of variables whose values are additional arguments
7394 -for the programs above. The default values for all of these is the
7395 -empty string, unless otherwise noted.
7397 -`ARFLAGS'
7398 - Flags to give the archive-maintaining program; default `rv'.
7400 -`ASFLAGS'
7401 - Extra flags to give to the assembler (when explicitly invoked on a
7402 - `.s' or `.S' file).
7404 -`CFLAGS'
7405 - Extra flags to give to the C compiler.
7407 -`CXXFLAGS'
7408 - Extra flags to give to the C++ compiler.
7410 -`COFLAGS'
7411 - Extra flags to give to the RCS `co' program.
7413 -`CPPFLAGS'
7414 - Extra flags to give to the C preprocessor and programs that use it
7415 - (the C and Fortran compilers).
7417 -`FFLAGS'
7418 - Extra flags to give to the Fortran compiler.
7420 -`GFLAGS'
7421 - Extra flags to give to the SCCS `get' program.
7423 -`LDFLAGS'
7424 - Extra flags to give to compilers when they are supposed to invoke
7425 - the linker, `ld'.
7427 -`LFLAGS'
7428 - Extra flags to give to Lex.
7430 -`YFLAGS'
7431 - Extra flags to give to Yacc.
7433 -`PFLAGS'
7434 - Extra flags to give to the Pascal compiler.
7436 -`RFLAGS'
7437 - Extra flags to give to the Fortran compiler for Ratfor programs.
7439 -`LINTFLAGS'
7440 - Extra flags to give to lint.
7442 -\x1f
7443 -File: make.info, Node: Chained Rules, Next: Pattern Rules, Prev: Implicit Variables, Up: Implicit Rules
7445 -10.4 Chains of Implicit Rules
7446 -=============================
7448 -Sometimes a file can be made by a sequence of implicit rules. For
7449 -example, a file `N.o' could be made from `N.y' by running first Yacc
7450 -and then `cc'. Such a sequence is called a "chain".
7452 - If the file `N.c' exists, or is mentioned in the makefile, no
7453 -special searching is required: `make' finds that the object file can be
7454 -made by C compilation from `N.c'; later on, when considering how to
7455 -make `N.c', the rule for running Yacc is used. Ultimately both `N.c'
7456 -and `N.o' are updated.
7458 - However, even if `N.c' does not exist and is not mentioned, `make'
7459 -knows how to envision it as the missing link between `N.o' and `N.y'!
7460 -In this case, `N.c' is called an "intermediate file". Once `make' has
7461 -decided to use the intermediate file, it is entered in the data base as
7462 -if it had been mentioned in the makefile, along with the implicit rule
7463 -that says how to create it.
7465 - Intermediate files are remade using their rules just like all other
7466 -files. But intermediate files are treated differently in two ways.
7468 - The first difference is what happens if the intermediate file does
7469 -not exist. If an ordinary file B does not exist, and `make' considers
7470 -a target that depends on B, it invariably creates B and then updates
7471 -the target from B. But if B is an intermediate file, then `make' can
7472 -leave well enough alone. It won't bother updating B, or the ultimate
7473 -target, unless some prerequisite of B is newer than that target or
7474 -there is some other reason to update that target.
7476 - The second difference is that if `make' _does_ create B in order to
7477 -update something else, it deletes B later on after it is no longer
7478 -needed. Therefore, an intermediate file which did not exist before
7479 -`make' also does not exist after `make'. `make' reports the deletion
7480 -to you by printing a `rm -f' command showing which file it is deleting.
7482 - Ordinarily, a file cannot be intermediate if it is mentioned in the
7483 -makefile as a target or prerequisite. However, you can explicitly mark
7484 -a file as intermediate by listing it as a prerequisite of the special
7485 -target `.INTERMEDIATE'. This takes effect even if the file is mentioned
7486 -explicitly in some other way.
7488 - You can prevent automatic deletion of an intermediate file by
7489 -marking it as a "secondary" file. To do this, list it as a
7490 -prerequisite of the special target `.SECONDARY'. When a file is
7491 -secondary, `make' will not create the file merely because it does not
7492 -already exist, but `make' does not automatically delete the file.
7493 -Marking a file as secondary also marks it as intermediate.
7495 - You can list the target pattern of an implicit rule (such as `%.o')
7496 -as a prerequisite of the special target `.PRECIOUS' to preserve
7497 -intermediate files made by implicit rules whose target patterns match
7498 -that file's name; see *Note Interrupts::.
7500 - A chain can involve more than two implicit rules. For example, it is
7501 -possible to make a file `foo' from `RCS/foo.y,v' by running RCS, Yacc
7502 -and `cc'. Then both `foo.y' and `foo.c' are intermediate files that
7503 -are deleted at the end.
7505 - No single implicit rule can appear more than once in a chain. This
7506 -means that `make' will not even consider such a ridiculous thing as
7507 -making `foo' from `foo.o.o' by running the linker twice. This
7508 -constraint has the added benefit of preventing any infinite loop in the
7509 -search for an implicit rule chain.
7511 - There are some special implicit rules to optimize certain cases that
7512 -would otherwise be handled by rule chains. For example, making `foo'
7513 -from `foo.c' could be handled by compiling and linking with separate
7514 -chained rules, using `foo.o' as an intermediate file. But what
7515 -actually happens is that a special rule for this case does the
7516 -compilation and linking with a single `cc' command. The optimized rule
7517 -is used in preference to the step-by-step chain because it comes
7518 -earlier in the ordering of rules.
7520 diff -rNU3 dist.orig/doc/make.info-2 dist/doc/make.info-2
7521 --- dist.orig/doc/make.info-2 2006-04-01 08:41:04.000000000 +0200
7522 +++ dist/doc/make.info-2 1970-01-01 01:00:00.000000000 +0100
7523 @@ -1,4393 +0,0 @@
7524 -This is make.info, produced by makeinfo version 4.8 from make.texi.
7526 - This file documents the GNU `make' utility, which determines
7527 -automatically which pieces of a large program need to be recompiled,
7528 -and issues the commands to recompile them.
7530 - This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
7531 -Manual', for GNU `make' version 3.81.
7533 - Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
7534 -1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
7535 -Foundation, Inc.
7537 - Permission is granted to copy, distribute and/or modify this
7538 - document under the terms of the GNU Free Documentation License,
7539 - Version 1.2 or any later version published by the Free Software
7540 - Foundation; with no Invariant Sections, with the Front-Cover Texts
7541 - being "A GNU Manual," and with the Back-Cover Texts as in (a)
7542 - below. A copy of the license is included in the section entitled
7543 - "GNU Free Documentation License."
7545 - (a) The FSF's Back-Cover Text is: "You have freedom to copy and
7546 - modify this GNU Manual, like GNU software. Copies published by
7547 - the Free Software Foundation raise funds for GNU development."
7549 -INFO-DIR-SECTION GNU Packages
7550 -START-INFO-DIR-ENTRY
7551 -* Make: (make). Remake files automatically.
7552 -END-INFO-DIR-ENTRY
7554 -\x1f
7555 -File: make.info, Node: Pattern Rules, Next: Last Resort, Prev: Chained Rules, Up: Implicit Rules
7557 -10.5 Defining and Redefining Pattern Rules
7558 -==========================================
7560 -You define an implicit rule by writing a "pattern rule". A pattern
7561 -rule looks like an ordinary rule, except that its target contains the
7562 -character `%' (exactly one of them). The target is considered a
7563 -pattern for matching file names; the `%' can match any nonempty
7564 -substring, while other characters match only themselves. The
7565 -prerequisites likewise use `%' to show how their names relate to the
7566 -target name.
7568 - Thus, a pattern rule `%.o : %.c' says how to make any file `STEM.o'
7569 -from another file `STEM.c'.
7571 - Note that expansion using `%' in pattern rules occurs *after* any
7572 -variable or function expansions, which take place when the makefile is
7573 -read. *Note How to Use Variables: Using Variables, and *Note Functions
7574 -for Transforming Text: Functions.
7576 -* Menu:
7578 -* Pattern Intro:: An introduction to pattern rules.
7579 -* Pattern Examples:: Examples of pattern rules.
7580 -* Automatic Variables:: How to use automatic variables in the
7581 - commands of implicit rules.
7582 -* Pattern Match:: How patterns match.
7583 -* Match-Anything Rules:: Precautions you should take prior to
7584 - defining rules that can match any
7585 - target file whatever.
7586 -* Canceling Rules:: How to override or cancel built-in rules.
7588 -\x1f
7589 -File: make.info, Node: Pattern Intro, Next: Pattern Examples, Prev: Pattern Rules, Up: Pattern Rules
7591 -10.5.1 Introduction to Pattern Rules
7592 -------------------------------------
7594 -A pattern rule contains the character `%' (exactly one of them) in the
7595 -target; otherwise, it looks exactly like an ordinary rule. The target
7596 -is a pattern for matching file names; the `%' matches any nonempty
7597 -substring, while other characters match only themselves.
7599 - For example, `%.c' as a pattern matches any file name that ends in
7600 -`.c'. `s.%.c' as a pattern matches any file name that starts with
7601 -`s.', ends in `.c' and is at least five characters long. (There must
7602 -be at least one character to match the `%'.) The substring that the
7603 -`%' matches is called the "stem".
7605 - `%' in a prerequisite of a pattern rule stands for the same stem
7606 -that was matched by the `%' in the target. In order for the pattern
7607 -rule to apply, its target pattern must match the file name under
7608 -consideration and all of its prerequisites (after pattern substitution)
7609 -must name files that exist or can be made. These files become
7610 -prerequisites of the target.
7612 - Thus, a rule of the form
7614 - %.o : %.c ; COMMAND...
7616 -specifies how to make a file `N.o', with another file `N.c' as its
7617 -prerequisite, provided that `N.c' exists or can be made.
7619 - There may also be prerequisites that do not use `%'; such a
7620 -prerequisite attaches to every file made by this pattern rule. These
7621 -unvarying prerequisites are useful occasionally.
7623 - A pattern rule need not have any prerequisites that contain `%', or
7624 -in fact any prerequisites at all. Such a rule is effectively a general
7625 -wildcard. It provides a way to make any file that matches the target
7626 -pattern. *Note Last Resort::.
7628 - Pattern rules may have more than one target. Unlike normal rules,
7629 -this does not act as many different rules with the same prerequisites
7630 -and commands. If a pattern rule has multiple targets, `make' knows that
7631 -the rule's commands are responsible for making all of the targets. The
7632 -commands are executed only once to make all the targets. When searching
7633 -for a pattern rule to match a target, the target patterns of a rule
7634 -other than the one that matches the target in need of a rule are
7635 -incidental: `make' worries only about giving commands and prerequisites
7636 -to the file presently in question. However, when this file's commands
7637 -are run, the other targets are marked as having been updated themselves.
7639 - The order in which pattern rules appear in the makefile is important
7640 -since this is the order in which they are considered. Of equally
7641 -applicable rules, only the first one found is used. The rules you
7642 -write take precedence over those that are built in. Note however, that
7643 -a rule whose prerequisites actually exist or are mentioned always takes
7644 -priority over a rule with prerequisites that must be made by chaining
7645 -other implicit rules.
7647 -\x1f
7648 -File: make.info, Node: Pattern Examples, Next: Automatic Variables, Prev: Pattern Intro, Up: Pattern Rules
7650 -10.5.2 Pattern Rule Examples
7651 -----------------------------
7653 -Here are some examples of pattern rules actually predefined in `make'.
7654 -First, the rule that compiles `.c' files into `.o' files:
7656 - %.o : %.c
7657 - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
7659 -defines a rule that can make any file `X.o' from `X.c'. The command
7660 -uses the automatic variables `$@' and `$<' to substitute the names of
7661 -the target file and the source file in each case where the rule applies
7662 -(*note Automatic Variables::).
7664 - Here is a second built-in rule:
7666 - % :: RCS/%,v
7667 - $(CO) $(COFLAGS) $<
7669 -defines a rule that can make any file `X' whatsoever from a
7670 -corresponding file `X,v' in the subdirectory `RCS'. Since the target
7671 -is `%', this rule will apply to any file whatever, provided the
7672 -appropriate prerequisite file exists. The double colon makes the rule
7673 -"terminal", which means that its prerequisite may not be an intermediate
7674 -file (*note Match-Anything Pattern Rules: Match-Anything Rules.).
7676 - This pattern rule has two targets:
7678 - %.tab.c %.tab.h: %.y
7679 - bison -d $<
7681 -This tells `make' that the command `bison -d X.y' will make both
7682 -`X.tab.c' and `X.tab.h'. If the file `foo' depends on the files
7683 -`parse.tab.o' and `scan.o' and the file `scan.o' depends on the file
7684 -`parse.tab.h', when `parse.y' is changed, the command `bison -d parse.y'
7685 -will be executed only once, and the prerequisites of both `parse.tab.o'
7686 -and `scan.o' will be satisfied. (Presumably the file `parse.tab.o'
7687 -will be recompiled from `parse.tab.c' and the file `scan.o' from
7688 -`scan.c', while `foo' is linked from `parse.tab.o', `scan.o', and its
7689 -other prerequisites, and it will execute happily ever after.)
7691 -\x1f
7692 -File: make.info, Node: Automatic Variables, Next: Pattern Match, Prev: Pattern Examples, Up: Pattern Rules
7694 -10.5.3 Automatic Variables
7695 ---------------------------
7697 -Suppose you are writing a pattern rule to compile a `.c' file into a
7698 -`.o' file: how do you write the `cc' command so that it operates on the
7699 -right source file name? You cannot write the name in the command,
7700 -because the name is different each time the implicit rule is applied.
7702 - What you do is use a special feature of `make', the "automatic
7703 -variables". These variables have values computed afresh for each rule
7704 -that is executed, based on the target and prerequisites of the rule.
7705 -In this example, you would use `$@' for the object file name and `$<'
7706 -for the source file name.
7708 - It's very important that you recognize the limited scope in which
7709 -automatic variable values are available: they only have values within
7710 -the command script. In particular, you cannot use them anywhere within
7711 -the target list of a rule; they have no value there and will expand to
7712 -the empty string. Also, they cannot be accessed directly within the
7713 -prerequisite list of a rule. A common mistake is attempting to use
7714 -`$@' within the prerequisites list; this will not work. However, there
7715 -is a special feature of GNU `make', secondary expansion (*note
7716 -Secondary Expansion::), which will allow automatic variable values to
7717 -be used in prerequisite lists.
7719 - Here is a table of automatic variables:
7721 -`$@'
7722 - The file name of the target of the rule. If the target is an
7723 - archive member, then `$@' is the name of the archive file. In a
7724 - pattern rule that has multiple targets (*note Introduction to
7725 - Pattern Rules: Pattern Intro.), `$@' is the name of whichever
7726 - target caused the rule's commands to be run.
7728 -`$%'
7729 - The target member name, when the target is an archive member.
7730 - *Note Archives::. For example, if the target is `foo.a(bar.o)'
7731 - then `$%' is `bar.o' and `$@' is `foo.a'. `$%' is empty when the
7732 - target is not an archive member.
7734 -`$<'
7735 - The name of the first prerequisite. If the target got its
7736 - commands from an implicit rule, this will be the first
7737 - prerequisite added by the implicit rule (*note Implicit Rules::).
7739 -`$?'
7740 - The names of all the prerequisites that are newer than the target,
7741 - with spaces between them. For prerequisites which are archive
7742 - members, only the member named is used (*note Archives::).
7744 -`$^'
7745 - The names of all the prerequisites, with spaces between them. For
7746 - prerequisites which are archive members, only the member named is
7747 - used (*note Archives::). A target has only one prerequisite on
7748 - each other file it depends on, no matter how many times each file
7749 - is listed as a prerequisite. So if you list a prerequisite more
7750 - than once for a target, the value of `$^' contains just one copy
7751 - of the name. This list does *not* contain any of the order-only
7752 - prerequisites; for those see the `$|' variable, below.
7754 -`$+'
7755 - This is like `$^', but prerequisites listed more than once are
7756 - duplicated in the order they were listed in the makefile. This is
7757 - primarily useful for use in linking commands where it is
7758 - meaningful to repeat library file names in a particular order.
7760 -`$|'
7761 - The names of all the order-only prerequisites, with spaces between
7762 - them.
7764 -`$*'
7765 - The stem with which an implicit rule matches (*note How Patterns
7766 - Match: Pattern Match.). If the target is `dir/a.foo.b' and the
7767 - target pattern is `a.%.b' then the stem is `dir/foo'. The stem is
7768 - useful for constructing names of related files.
7770 - In a static pattern rule, the stem is part of the file name that
7771 - matched the `%' in the target pattern.
7773 - In an explicit rule, there is no stem; so `$*' cannot be determined
7774 - in that way. Instead, if the target name ends with a recognized
7775 - suffix (*note Old-Fashioned Suffix Rules: Suffix Rules.), `$*' is
7776 - set to the target name minus the suffix. For example, if the
7777 - target name is `foo.c', then `$*' is set to `foo', since `.c' is a
7778 - suffix. GNU `make' does this bizarre thing only for compatibility
7779 - with other implementations of `make'. You should generally avoid
7780 - using `$*' except in implicit rules or static pattern rules.
7782 - If the target name in an explicit rule does not end with a
7783 - recognized suffix, `$*' is set to the empty string for that rule.
7785 - `$?' is useful even in explicit rules when you wish to operate on
7786 -only the prerequisites that have changed. For example, suppose that an
7787 -archive named `lib' is supposed to contain copies of several object
7788 -files. This rule copies just the changed object files into the archive:
7790 - lib: foo.o bar.o lose.o win.o
7791 - ar r lib $?
7793 - Of the variables listed above, four have values that are single file
7794 -names, and three have values that are lists of file names. These seven
7795 -have variants that get just the file's directory name or just the file
7796 -name within the directory. The variant variables' names are formed by
7797 -appending `D' or `F', respectively. These variants are semi-obsolete
7798 -in GNU `make' since the functions `dir' and `notdir' can be used to get
7799 -a similar effect (*note Functions for File Names: File Name
7800 -Functions.). Note, however, that the `D' variants all omit the
7801 -trailing slash which always appears in the output of the `dir'
7802 -function. Here is a table of the variants:
7804 -`$(@D)'
7805 - The directory part of the file name of the target, with the
7806 - trailing slash removed. If the value of `$@' is `dir/foo.o' then
7807 - `$(@D)' is `dir'. This value is `.' if `$@' does not contain a
7808 - slash.
7810 -`$(@F)'
7811 - The file-within-directory part of the file name of the target. If
7812 - the value of `$@' is `dir/foo.o' then `$(@F)' is `foo.o'. `$(@F)'
7813 - is equivalent to `$(notdir $@)'.
7815 -`$(*D)'
7816 -`$(*F)'
7817 - The directory part and the file-within-directory part of the stem;
7818 - `dir' and `foo' in this example.
7820 -`$(%D)'
7821 -`$(%F)'
7822 - The directory part and the file-within-directory part of the target
7823 - archive member name. This makes sense only for archive member
7824 - targets of the form `ARCHIVE(MEMBER)' and is useful only when
7825 - MEMBER may contain a directory name. (*Note Archive Members as
7826 - Targets: Archive Members.)
7828 -`$(<D)'
7829 -`$(<F)'
7830 - The directory part and the file-within-directory part of the first
7831 - prerequisite.
7833 -`$(^D)'
7834 -`$(^F)'
7835 - Lists of the directory parts and the file-within-directory parts
7836 - of all prerequisites.
7838 -`$(+D)'
7839 -`$(+F)'
7840 - Lists of the directory parts and the file-within-directory parts
7841 - of all prerequisites, including multiple instances of duplicated
7842 - prerequisites.
7844 -`$(?D)'
7845 -`$(?F)'
7846 - Lists of the directory parts and the file-within-directory parts of
7847 - all prerequisites that are newer than the target.
7849 - Note that we use a special stylistic convention when we talk about
7850 -these automatic variables; we write "the value of `$<'", rather than
7851 -"the variable `<'" as we would write for ordinary variables such as
7852 -`objects' and `CFLAGS'. We think this convention looks more natural in
7853 -this special case. Please do not assume it has a deep significance;
7854 -`$<' refers to the variable named `<' just as `$(CFLAGS)' refers to the
7855 -variable named `CFLAGS'. You could just as well use `$(<)' in place of
7856 -`$<'.
7858 -\x1f
7859 -File: make.info, Node: Pattern Match, Next: Match-Anything Rules, Prev: Automatic Variables, Up: Pattern Rules
7861 -10.5.4 How Patterns Match
7862 --------------------------
7864 -A target pattern is composed of a `%' between a prefix and a suffix,
7865 -either or both of which may be empty. The pattern matches a file name
7866 -only if the file name starts with the prefix and ends with the suffix,
7867 -without overlap. The text between the prefix and the suffix is called
7868 -the "stem". Thus, when the pattern `%.o' matches the file name
7869 -`test.o', the stem is `test'. The pattern rule prerequisites are
7870 -turned into actual file names by substituting the stem for the character
7871 -`%'. Thus, if in the same example one of the prerequisites is written
7872 -as `%.c', it expands to `test.c'.
7874 - When the target pattern does not contain a slash (and it usually does
7875 -not), directory names in the file names are removed from the file name
7876 -before it is compared with the target prefix and suffix. After the
7877 -comparison of the file name to the target pattern, the directory names,
7878 -along with the slash that ends them, are added on to the prerequisite
7879 -file names generated from the pattern rule's prerequisite patterns and
7880 -the file name. The directories are ignored only for the purpose of
7881 -finding an implicit rule to use, not in the application of that rule.
7882 -Thus, `e%t' matches the file name `src/eat', with `src/a' as the stem.
7883 -When prerequisites are turned into file names, the directories from the
7884 -stem are added at the front, while the rest of the stem is substituted
7885 -for the `%'. The stem `src/a' with a prerequisite pattern `c%r' gives
7886 -the file name `src/car'.
7888 -\x1f
7889 -File: make.info, Node: Match-Anything Rules, Next: Canceling Rules, Prev: Pattern Match, Up: Pattern Rules
7891 -10.5.5 Match-Anything Pattern Rules
7892 ------------------------------------
7894 -When a pattern rule's target is just `%', it matches any file name
7895 -whatever. We call these rules "match-anything" rules. They are very
7896 -useful, but it can take a lot of time for `make' to think about them,
7897 -because it must consider every such rule for each file name listed
7898 -either as a target or as a prerequisite.
7900 - Suppose the makefile mentions `foo.c'. For this target, `make'
7901 -would have to consider making it by linking an object file `foo.c.o',
7902 -or by C compilation-and-linking in one step from `foo.c.c', or by
7903 -Pascal compilation-and-linking from `foo.c.p', and many other
7904 -possibilities.
7906 - We know these possibilities are ridiculous since `foo.c' is a C
7907 -source file, not an executable. If `make' did consider these
7908 -possibilities, it would ultimately reject them, because files such as
7909 -`foo.c.o' and `foo.c.p' would not exist. But these possibilities are so
7910 -numerous that `make' would run very slowly if it had to consider them.
7912 - To gain speed, we have put various constraints on the way `make'
7913 -considers match-anything rules. There are two different constraints
7914 -that can be applied, and each time you define a match-anything rule you
7915 -must choose one or the other for that rule.
7917 - One choice is to mark the match-anything rule as "terminal" by
7918 -defining it with a double colon. When a rule is terminal, it does not
7919 -apply unless its prerequisites actually exist. Prerequisites that
7920 -could be made with other implicit rules are not good enough. In other
7921 -words, no further chaining is allowed beyond a terminal rule.
7923 - For example, the built-in implicit rules for extracting sources from
7924 -RCS and SCCS files are terminal; as a result, if the file `foo.c,v' does
7925 -not exist, `make' will not even consider trying to make it as an
7926 -intermediate file from `foo.c,v.o' or from `RCS/SCCS/s.foo.c,v'. RCS
7927 -and SCCS files are generally ultimate source files, which should not be
7928 -remade from any other files; therefore, `make' can save time by not
7929 -looking for ways to remake them.
7931 - If you do not mark the match-anything rule as terminal, then it is
7932 -nonterminal. A nonterminal match-anything rule cannot apply to a file
7933 -name that indicates a specific type of data. A file name indicates a
7934 -specific type of data if some non-match-anything implicit rule target
7935 -matches it.
7937 - For example, the file name `foo.c' matches the target for the pattern
7938 -rule `%.c : %.y' (the rule to run Yacc). Regardless of whether this
7939 -rule is actually applicable (which happens only if there is a file
7940 -`foo.y'), the fact that its target matches is enough to prevent
7941 -consideration of any nonterminal match-anything rules for the file
7942 -`foo.c'. Thus, `make' will not even consider trying to make `foo.c' as
7943 -an executable file from `foo.c.o', `foo.c.c', `foo.c.p', etc.
7945 - The motivation for this constraint is that nonterminal match-anything
7946 -rules are used for making files containing specific types of data (such
7947 -as executable files) and a file name with a recognized suffix indicates
7948 -some other specific type of data (such as a C source file).
7950 - Special built-in dummy pattern rules are provided solely to recognize
7951 -certain file names so that nonterminal match-anything rules will not be
7952 -considered. These dummy rules have no prerequisites and no commands,
7953 -and they are ignored for all other purposes. For example, the built-in
7954 -implicit rule
7956 - %.p :
7958 -exists to make sure that Pascal source files such as `foo.p' match a
7959 -specific target pattern and thereby prevent time from being wasted
7960 -looking for `foo.p.o' or `foo.p.c'.
7962 - Dummy pattern rules such as the one for `%.p' are made for every
7963 -suffix listed as valid for use in suffix rules (*note Old-Fashioned
7964 -Suffix Rules: Suffix Rules.).
7966 -\x1f
7967 -File: make.info, Node: Canceling Rules, Prev: Match-Anything Rules, Up: Pattern Rules
7969 -10.5.6 Canceling Implicit Rules
7970 --------------------------------
7972 -You can override a built-in implicit rule (or one you have defined
7973 -yourself) by defining a new pattern rule with the same target and
7974 -prerequisites, but different commands. When the new rule is defined,
7975 -the built-in one is replaced. The new rule's position in the sequence
7976 -of implicit rules is determined by where you write the new rule.
7978 - You can cancel a built-in implicit rule by defining a pattern rule
7979 -with the same target and prerequisites, but no commands. For example,
7980 -the following would cancel the rule that runs the assembler:
7982 - %.o : %.s
7984 -\x1f
7985 -File: make.info, Node: Last Resort, Next: Suffix Rules, Prev: Pattern Rules, Up: Implicit Rules
7987 -10.6 Defining Last-Resort Default Rules
7988 -=======================================
7990 -You can define a last-resort implicit rule by writing a terminal
7991 -match-anything pattern rule with no prerequisites (*note Match-Anything
7992 -Rules::). This is just like any other pattern rule; the only thing
7993 -special about it is that it will match any target. So such a rule's
7994 -commands are used for all targets and prerequisites that have no
7995 -commands of their own and for which no other implicit rule applies.
7997 - For example, when testing a makefile, you might not care if the
7998 -source files contain real data, only that they exist. Then you might
7999 -do this:
8001 - %::
8002 - touch $@
8004 -to cause all the source files needed (as prerequisites) to be created
8005 -automatically.
8007 - You can instead define commands to be used for targets for which
8008 -there are no rules at all, even ones which don't specify commands. You
8009 -do this by writing a rule for the target `.DEFAULT'. Such a rule's
8010 -commands are used for all prerequisites which do not appear as targets
8011 -in any explicit rule, and for which no implicit rule applies.
8012 -Naturally, there is no `.DEFAULT' rule unless you write one.
8014 - If you use `.DEFAULT' with no commands or prerequisites:
8016 - .DEFAULT:
8018 -the commands previously stored for `.DEFAULT' are cleared. Then `make'
8019 -acts as if you had never defined `.DEFAULT' at all.
8021 - If you do not want a target to get the commands from a match-anything
8022 -pattern rule or `.DEFAULT', but you also do not want any commands to be
8023 -run for the target, you can give it empty commands (*note Defining
8024 -Empty Commands: Empty Commands.).
8026 - You can use a last-resort rule to override part of another makefile.
8027 -*Note Overriding Part of Another Makefile: Overriding Makefiles.
8029 -\x1f
8030 -File: make.info, Node: Suffix Rules, Next: Implicit Rule Search, Prev: Last Resort, Up: Implicit Rules
8032 -10.7 Old-Fashioned Suffix Rules
8033 -===============================
8035 -"Suffix rules" are the old-fashioned way of defining implicit rules for
8036 -`make'. Suffix rules are obsolete because pattern rules are more
8037 -general and clearer. They are supported in GNU `make' for
8038 -compatibility with old makefiles. They come in two kinds:
8039 -"double-suffix" and "single-suffix".
8041 - A double-suffix rule is defined by a pair of suffixes: the target
8042 -suffix and the source suffix. It matches any file whose name ends with
8043 -the target suffix. The corresponding implicit prerequisite is made by
8044 -replacing the target suffix with the source suffix in the file name. A
8045 -two-suffix rule whose target and source suffixes are `.o' and `.c' is
8046 -equivalent to the pattern rule `%.o : %.c'.
8048 - A single-suffix rule is defined by a single suffix, which is the
8049 -source suffix. It matches any file name, and the corresponding implicit
8050 -prerequisite name is made by appending the source suffix. A
8051 -single-suffix rule whose source suffix is `.c' is equivalent to the
8052 -pattern rule `% : %.c'.
8054 - Suffix rule definitions are recognized by comparing each rule's
8055 -target against a defined list of known suffixes. When `make' sees a
8056 -rule whose target is a known suffix, this rule is considered a
8057 -single-suffix rule. When `make' sees a rule whose target is two known
8058 -suffixes concatenated, this rule is taken as a double-suffix rule.
8060 - For example, `.c' and `.o' are both on the default list of known
8061 -suffixes. Therefore, if you define a rule whose target is `.c.o',
8062 -`make' takes it to be a double-suffix rule with source suffix `.c' and
8063 -target suffix `.o'. Here is the old-fashioned way to define the rule
8064 -for compiling a C source file:
8066 - .c.o:
8067 - $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
8069 - Suffix rules cannot have any prerequisites of their own. If they
8070 -have any, they are treated as normal files with funny names, not as
8071 -suffix rules. Thus, the rule:
8073 - .c.o: foo.h
8074 - $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
8076 -tells how to make the file `.c.o' from the prerequisite file `foo.h',
8077 -and is not at all like the pattern rule:
8079 - %.o: %.c foo.h
8080 - $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
8082 -which tells how to make `.o' files from `.c' files, and makes all `.o'
8083 -files using this pattern rule also depend on `foo.h'.
8085 - Suffix rules with no commands are also meaningless. They do not
8086 -remove previous rules as do pattern rules with no commands (*note
8087 -Canceling Implicit Rules: Canceling Rules.). They simply enter the
8088 -suffix or pair of suffixes concatenated as a target in the data base.
8090 - The known suffixes are simply the names of the prerequisites of the
8091 -special target `.SUFFIXES'. You can add your own suffixes by writing a
8092 -rule for `.SUFFIXES' that adds more prerequisites, as in:
8094 - .SUFFIXES: .hack .win
8096 -which adds `.hack' and `.win' to the end of the list of suffixes.
8098 - If you wish to eliminate the default known suffixes instead of just
8099 -adding to them, write a rule for `.SUFFIXES' with no prerequisites. By
8100 -special dispensation, this eliminates all existing prerequisites of
8101 -`.SUFFIXES'. You can then write another rule to add the suffixes you
8102 -want. For example,
8104 - .SUFFIXES: # Delete the default suffixes
8105 - .SUFFIXES: .c .o .h # Define our suffix list
8107 - The `-r' or `--no-builtin-rules' flag causes the default list of
8108 -suffixes to be empty.
8110 - The variable `SUFFIXES' is defined to the default list of suffixes
8111 -before `make' reads any makefiles. You can change the list of suffixes
8112 -with a rule for the special target `.SUFFIXES', but that does not alter
8113 -this variable.
8115 -\x1f
8116 -File: make.info, Node: Implicit Rule Search, Prev: Suffix Rules, Up: Implicit Rules
8118 -10.8 Implicit Rule Search Algorithm
8119 -===================================
8121 -Here is the procedure `make' uses for searching for an implicit rule
8122 -for a target T. This procedure is followed for each double-colon rule
8123 -with no commands, for each target of ordinary rules none of which have
8124 -commands, and for each prerequisite that is not the target of any rule.
8125 -It is also followed recursively for prerequisites that come from
8126 -implicit rules, in the search for a chain of rules.
8128 - Suffix rules are not mentioned in this algorithm because suffix
8129 -rules are converted to equivalent pattern rules once the makefiles have
8130 -been read in.
8132 - For an archive member target of the form `ARCHIVE(MEMBER)', the
8133 -following algorithm is run twice, first using the entire target name T,
8134 -and second using `(MEMBER)' as the target T if the first run found no
8135 -rule.
8137 - 1. Split T into a directory part, called D, and the rest, called N.
8138 - For example, if T is `src/foo.o', then D is `src/' and N is
8139 - `foo.o'.
8141 - 2. Make a list of all the pattern rules one of whose targets matches
8142 - T or N. If the target pattern contains a slash, it is matched
8143 - against T; otherwise, against N.
8145 - 3. If any rule in that list is _not_ a match-anything rule, then
8146 - remove all nonterminal match-anything rules from the list.
8148 - 4. Remove from the list all rules with no commands.
8150 - 5. For each pattern rule in the list:
8152 - a. Find the stem S, which is the nonempty part of T or N matched
8153 - by the `%' in the target pattern.
8155 - b. Compute the prerequisite names by substituting S for `%'; if
8156 - the target pattern does not contain a slash, append D to the
8157 - front of each prerequisite name.
8159 - c. Test whether all the prerequisites exist or ought to exist.
8160 - (If a file name is mentioned in the makefile as a target or
8161 - as an explicit prerequisite, then we say it ought to exist.)
8163 - If all prerequisites exist or ought to exist, or there are no
8164 - prerequisites, then this rule applies.
8166 - 6. If no pattern rule has been found so far, try harder. For each
8167 - pattern rule in the list:
8169 - a. If the rule is terminal, ignore it and go on to the next rule.
8171 - b. Compute the prerequisite names as before.
8173 - c. Test whether all the prerequisites exist or ought to exist.
8175 - d. For each prerequisite that does not exist, follow this
8176 - algorithm recursively to see if the prerequisite can be made
8177 - by an implicit rule.
8179 - e. If all prerequisites exist, ought to exist, or can be made by
8180 - implicit rules, then this rule applies.
8182 - 7. If no implicit rule applies, the rule for `.DEFAULT', if any,
8183 - applies. In that case, give T the same commands that `.DEFAULT'
8184 - has. Otherwise, there are no commands for T.
8186 - Once a rule that applies has been found, for each target pattern of
8187 -the rule other than the one that matched T or N, the `%' in the pattern
8188 -is replaced with S and the resultant file name is stored until the
8189 -commands to remake the target file T are executed. After these
8190 -commands are executed, each of these stored file names are entered into
8191 -the data base and marked as having been updated and having the same
8192 -update status as the file T.
8194 - When the commands of a pattern rule are executed for T, the automatic
8195 -variables are set corresponding to the target and prerequisites. *Note
8196 -Automatic Variables::.
8198 -\x1f
8199 -File: make.info, Node: Archives, Next: Features, Prev: Implicit Rules, Up: Top
8201 -11 Using `make' to Update Archive Files
8202 -***************************************
8204 -"Archive files" are files containing named subfiles called "members";
8205 -they are maintained with the program `ar' and their main use is as
8206 -subroutine libraries for linking.
8208 -* Menu:
8210 -* Archive Members:: Archive members as targets.
8211 -* Archive Update:: The implicit rule for archive member targets.
8212 -* Archive Pitfalls:: Dangers to watch out for when using archives.
8213 -* Archive Suffix Rules:: You can write a special kind of suffix rule
8214 - for updating archives.
8216 -\x1f
8217 -File: make.info, Node: Archive Members, Next: Archive Update, Prev: Archives, Up: Archives
8219 -11.1 Archive Members as Targets
8220 -===============================
8222 -An individual member of an archive file can be used as a target or
8223 -prerequisite in `make'. You specify the member named MEMBER in archive
8224 -file ARCHIVE as follows:
8226 - ARCHIVE(MEMBER)
8228 -This construct is available only in targets and prerequisites, not in
8229 -commands! Most programs that you might use in commands do not support
8230 -this syntax and cannot act directly on archive members. Only `ar' and
8231 -other programs specifically designed to operate on archives can do so.
8232 -Therefore, valid commands to update an archive member target probably
8233 -must use `ar'. For example, this rule says to create a member `hack.o'
8234 -in archive `foolib' by copying the file `hack.o':
8236 - foolib(hack.o) : hack.o
8237 - ar cr foolib hack.o
8239 - In fact, nearly all archive member targets are updated in just this
8240 -way and there is an implicit rule to do it for you. *Please note:* The
8241 -`c' flag to `ar' is required if the archive file does not already exist.
8243 - To specify several members in the same archive, you can write all the
8244 -member names together between the parentheses. For example:
8246 - foolib(hack.o kludge.o)
8248 -is equivalent to:
8250 - foolib(hack.o) foolib(kludge.o)
8252 - You can also use shell-style wildcards in an archive member
8253 -reference. *Note Using Wildcard Characters in File Names: Wildcards.
8254 -For example, `foolib(*.o)' expands to all existing members of the
8255 -`foolib' archive whose names end in `.o'; perhaps `foolib(hack.o)
8256 -foolib(kludge.o)'.
8258 -\x1f
8259 -File: make.info, Node: Archive Update, Next: Archive Pitfalls, Prev: Archive Members, Up: Archives
8261 -11.2 Implicit Rule for Archive Member Targets
8262 -=============================================
8264 -Recall that a target that looks like `A(M)' stands for the member named
8265 -M in the archive file A.
8267 - When `make' looks for an implicit rule for such a target, as a
8268 -special feature it considers implicit rules that match `(M)', as well as
8269 -those that match the actual target `A(M)'.
8271 - This causes one special rule whose target is `(%)' to match. This
8272 -rule updates the target `A(M)' by copying the file M into the archive.
8273 -For example, it will update the archive member target `foo.a(bar.o)' by
8274 -copying the _file_ `bar.o' into the archive `foo.a' as a _member_ named
8275 -`bar.o'.
8277 - When this rule is chained with others, the result is very powerful.
8278 -Thus, `make "foo.a(bar.o)"' (the quotes are needed to protect the `('
8279 -and `)' from being interpreted specially by the shell) in the presence
8280 -of a file `bar.c' is enough to cause the following commands to be run,
8281 -even without a makefile:
8283 - cc -c bar.c -o bar.o
8284 - ar r foo.a bar.o
8285 - rm -f bar.o
8287 -Here `make' has envisioned the file `bar.o' as an intermediate file.
8288 -*Note Chains of Implicit Rules: Chained Rules.
8290 - Implicit rules such as this one are written using the automatic
8291 -variable `$%'. *Note Automatic Variables::.
8293 - An archive member name in an archive cannot contain a directory
8294 -name, but it may be useful in a makefile to pretend that it does. If
8295 -you write an archive member target `foo.a(dir/file.o)', `make' will
8296 -perform automatic updating with this command:
8298 - ar r foo.a dir/file.o
8300 -which has the effect of copying the file `dir/file.o' into a member
8301 -named `file.o'. In connection with such usage, the automatic variables
8302 -`%D' and `%F' may be useful.
8304 -* Menu:
8306 -* Archive Symbols:: How to update archive symbol directories.
8308 -\x1f
8309 -File: make.info, Node: Archive Symbols, Prev: Archive Update, Up: Archive Update
8311 -11.2.1 Updating Archive Symbol Directories
8312 -------------------------------------------
8314 -An archive file that is used as a library usually contains a special
8315 -member named `__.SYMDEF' that contains a directory of the external
8316 -symbol names defined by all the other members. After you update any
8317 -other members, you need to update `__.SYMDEF' so that it will summarize
8318 -the other members properly. This is done by running the `ranlib'
8319 -program:
8321 - ranlib ARCHIVEFILE
8323 - Normally you would put this command in the rule for the archive file,
8324 -and make all the members of the archive file prerequisites of that rule.
8325 -For example,
8327 - libfoo.a: libfoo.a(x.o) libfoo.a(y.o) ...
8328 - ranlib libfoo.a
8330 -The effect of this is to update archive members `x.o', `y.o', etc., and
8331 -then update the symbol directory member `__.SYMDEF' by running
8332 -`ranlib'. The rules for updating the members are not shown here; most
8333 -likely you can omit them and use the implicit rule which copies files
8334 -into the archive, as described in the preceding section.
8336 - This is not necessary when using the GNU `ar' program, which updates
8337 -the `__.SYMDEF' member automatically.
8339 -\x1f
8340 -File: make.info, Node: Archive Pitfalls, Next: Archive Suffix Rules, Prev: Archive Update, Up: Archives
8342 -11.3 Dangers When Using Archives
8343 -================================
8345 -It is important to be careful when using parallel execution (the `-j'
8346 -switch; *note Parallel Execution: Parallel.) and archives. If multiple
8347 -`ar' commands run at the same time on the same archive file, they will
8348 -not know about each other and can corrupt the file.
8350 - Possibly a future version of `make' will provide a mechanism to
8351 -circumvent this problem by serializing all commands that operate on the
8352 -same archive file. But for the time being, you must either write your
8353 -makefiles to avoid this problem in some other way, or not use `-j'.
8355 -\x1f
8356 -File: make.info, Node: Archive Suffix Rules, Prev: Archive Pitfalls, Up: Archives
8358 -11.4 Suffix Rules for Archive Files
8359 -===================================
8361 -You can write a special kind of suffix rule for dealing with archive
8362 -files. *Note Suffix Rules::, for a full explanation of suffix rules.
8363 -Archive suffix rules are obsolete in GNU `make', because pattern rules
8364 -for archives are a more general mechanism (*note Archive Update::).
8365 -But they are retained for compatibility with other `make's.
8367 - To write a suffix rule for archives, you simply write a suffix rule
8368 -using the target suffix `.a' (the usual suffix for archive files). For
8369 -example, here is the old-fashioned suffix rule to update a library
8370 -archive from C source files:
8372 - .c.a:
8373 - $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
8374 - $(AR) r $@ $*.o
8375 - $(RM) $*.o
8377 -This works just as if you had written the pattern rule:
8379 - (%.o): %.c
8380 - $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
8381 - $(AR) r $@ $*.o
8382 - $(RM) $*.o
8384 - In fact, this is just what `make' does when it sees a suffix rule
8385 -with `.a' as the target suffix. Any double-suffix rule `.X.a' is
8386 -converted to a pattern rule with the target pattern `(%.o)' and a
8387 -prerequisite pattern of `%.X'.
8389 - Since you might want to use `.a' as the suffix for some other kind
8390 -of file, `make' also converts archive suffix rules to pattern rules in
8391 -the normal way (*note Suffix Rules::). Thus a double-suffix rule
8392 -`.X.a' produces two pattern rules: `(%.o): %.X' and `%.a: %.X'.
8394 -\x1f
8395 -File: make.info, Node: Features, Next: Missing, Prev: Archives, Up: Top
8397 -12 Features of GNU `make'
8398 -*************************
8400 -Here is a summary of the features of GNU `make', for comparison with
8401 -and credit to other versions of `make'. We consider the features of
8402 -`make' in 4.2 BSD systems as a baseline. If you are concerned with
8403 -writing portable makefiles, you should not use the features of `make'
8404 -listed here, nor the ones in *Note Missing::.
8406 - Many features come from the version of `make' in System V.
8408 - * The `VPATH' variable and its special meaning. *Note Searching
8409 - Directories for Prerequisites: Directory Search. This feature
8410 - exists in System V `make', but is undocumented. It is documented
8411 - in 4.3 BSD `make' (which says it mimics System V's `VPATH'
8412 - feature).
8414 - * Included makefiles. *Note Including Other Makefiles: Include.
8415 - Allowing multiple files to be included with a single directive is
8416 - a GNU extension.
8418 - * Variables are read from and communicated via the environment.
8419 - *Note Variables from the Environment: Environment.
8421 - * Options passed through the variable `MAKEFLAGS' to recursive
8422 - invocations of `make'. *Note Communicating Options to a
8423 - Sub-`make': Options/Recursion.
8425 - * The automatic variable `$%' is set to the member name in an
8426 - archive reference. *Note Automatic Variables::.
8428 - * The automatic variables `$@', `$*', `$<', `$%', and `$?' have
8429 - corresponding forms like `$(@F)' and `$(@D)'. We have generalized
8430 - this to `$^' as an obvious extension. *Note Automatic Variables::.
8432 - * Substitution variable references. *Note Basics of Variable
8433 - References: Reference.
8435 - * The command-line options `-b' and `-m', accepted and ignored. In
8436 - System V `make', these options actually do something.
8438 - * Execution of recursive commands to run `make' via the variable
8439 - `MAKE' even if `-n', `-q' or `-t' is specified. *Note Recursive
8440 - Use of `make': Recursion.
8442 - * Support for suffix `.a' in suffix rules. *Note Archive Suffix
8443 - Rules::. This feature is obsolete in GNU `make', because the
8444 - general feature of rule chaining (*note Chains of Implicit Rules:
8445 - Chained Rules.) allows one pattern rule for installing members in
8446 - an archive (*note Archive Update::) to be sufficient.
8448 - * The arrangement of lines and backslash-newline combinations in
8449 - commands is retained when the commands are printed, so they appear
8450 - as they do in the makefile, except for the stripping of initial
8451 - whitespace.
8453 - The following features were inspired by various other versions of
8454 -`make'. In some cases it is unclear exactly which versions inspired
8455 -which others.
8457 - * Pattern rules using `%'. This has been implemented in several
8458 - versions of `make'. We're not sure who invented it first, but
8459 - it's been spread around a bit. *Note Defining and Redefining
8460 - Pattern Rules: Pattern Rules.
8462 - * Rule chaining and implicit intermediate files. This was
8463 - implemented by Stu Feldman in his version of `make' for AT&T
8464 - Eighth Edition Research Unix, and later by Andrew Hume of AT&T
8465 - Bell Labs in his `mk' program (where he terms it "transitive
8466 - closure"). We do not really know if we got this from either of
8467 - them or thought it up ourselves at the same time. *Note Chains of
8468 - Implicit Rules: Chained Rules.
8470 - * The automatic variable `$^' containing a list of all prerequisites
8471 - of the current target. We did not invent this, but we have no
8472 - idea who did. *Note Automatic Variables::. The automatic variable
8473 - `$+' is a simple extension of `$^'.
8475 - * The "what if" flag (`-W' in GNU `make') was (as far as we know)
8476 - invented by Andrew Hume in `mk'. *Note Instead of Executing the
8477 - Commands: Instead of Execution.
8479 - * The concept of doing several things at once (parallelism) exists in
8480 - many incarnations of `make' and similar programs, though not in the
8481 - System V or BSD implementations. *Note Command Execution:
8482 - Execution.
8484 - * Modified variable references using pattern substitution come from
8485 - SunOS 4. *Note Basics of Variable References: Reference. This
8486 - functionality was provided in GNU `make' by the `patsubst'
8487 - function before the alternate syntax was implemented for
8488 - compatibility with SunOS 4. It is not altogether clear who
8489 - inspired whom, since GNU `make' had `patsubst' before SunOS 4 was
8490 - released.
8492 - * The special significance of `+' characters preceding command lines
8493 - (*note Instead of Executing the Commands: Instead of Execution.) is
8494 - mandated by `IEEE Standard 1003.2-1992' (POSIX.2).
8496 - * The `+=' syntax to append to the value of a variable comes from
8497 - SunOS 4 `make'. *Note Appending More Text to Variables: Appending.
8499 - * The syntax `ARCHIVE(MEM1 MEM2...)' to list multiple members in a
8500 - single archive file comes from SunOS 4 `make'. *Note Archive
8501 - Members::.
8503 - * The `-include' directive to include makefiles with no error for a
8504 - nonexistent file comes from SunOS 4 `make'. (But note that SunOS 4
8505 - `make' does not allow multiple makefiles to be specified in one
8506 - `-include' directive.) The same feature appears with the name
8507 - `sinclude' in SGI `make' and perhaps others.
8509 - The remaining features are inventions new in GNU `make':
8511 - * Use the `-v' or `--version' option to print version and copyright
8512 - information.
8514 - * Use the `-h' or `--help' option to summarize the options to `make'.
8516 - * Simply-expanded variables. *Note The Two Flavors of Variables:
8517 - Flavors.
8519 - * Pass command-line variable assignments automatically through the
8520 - variable `MAKE' to recursive `make' invocations. *Note Recursive
8521 - Use of `make': Recursion.
8523 - * Use the `-C' or `--directory' command option to change directory.
8524 - *Note Summary of Options: Options Summary.
8526 - * Make verbatim variable definitions with `define'. *Note Defining
8527 - Variables Verbatim: Defining.
8529 - * Declare phony targets with the special target `.PHONY'.
8531 - Andrew Hume of AT&T Bell Labs implemented a similar feature with a
8532 - different syntax in his `mk' program. This seems to be a case of
8533 - parallel discovery. *Note Phony Targets: Phony Targets.
8535 - * Manipulate text by calling functions. *Note Functions for
8536 - Transforming Text: Functions.
8538 - * Use the `-o' or `--old-file' option to pretend a file's
8539 - modification-time is old. *Note Avoiding Recompilation of Some
8540 - Files: Avoiding Compilation.
8542 - * Conditional execution.
8544 - This feature has been implemented numerous times in various
8545 - versions of `make'; it seems a natural extension derived from the
8546 - features of the C preprocessor and similar macro languages and is
8547 - not a revolutionary concept. *Note Conditional Parts of
8548 - Makefiles: Conditionals.
8550 - * Specify a search path for included makefiles. *Note Including
8551 - Other Makefiles: Include.
8553 - * Specify extra makefiles to read with an environment variable.
8554 - *Note The Variable `MAKEFILES': MAKEFILES Variable.
8556 - * Strip leading sequences of `./' from file names, so that `./FILE'
8557 - and `FILE' are considered to be the same file.
8559 - * Use a special search method for library prerequisites written in
8560 - the form `-lNAME'. *Note Directory Search for Link Libraries:
8561 - Libraries/Search.
8563 - * Allow suffixes for suffix rules (*note Old-Fashioned Suffix Rules:
8564 - Suffix Rules.) to contain any characters. In other versions of
8565 - `make', they must begin with `.' and not contain any `/'
8566 - characters.
8568 - * Keep track of the current level of `make' recursion using the
8569 - variable `MAKELEVEL'. *Note Recursive Use of `make': Recursion.
8571 - * Provide any goals given on the command line in the variable
8572 - `MAKECMDGOALS'. *Note Arguments to Specify the Goals: Goals.
8574 - * Specify static pattern rules. *Note Static Pattern Rules: Static
8575 - Pattern.
8577 - * Provide selective `vpath' search. *Note Searching Directories for
8578 - Prerequisites: Directory Search.
8580 - * Provide computed variable references. *Note Basics of Variable
8581 - References: Reference.
8583 - * Update makefiles. *Note How Makefiles Are Remade: Remaking
8584 - Makefiles. System V `make' has a very, very limited form of this
8585 - functionality in that it will check out SCCS files for makefiles.
8587 - * Various new built-in implicit rules. *Note Catalogue of Implicit
8588 - Rules: Catalogue of Rules.
8590 - * The built-in variable `MAKE_VERSION' gives the version number of
8591 - `make'.
8593 -\x1f
8594 -File: make.info, Node: Missing, Next: Makefile Conventions, Prev: Features, Up: Top
8596 -13 Incompatibilities and Missing Features
8597 -*****************************************
8599 -The `make' programs in various other systems support a few features
8600 -that are not implemented in GNU `make'. The POSIX.2 standard (`IEEE
8601 -Standard 1003.2-1992') which specifies `make' does not require any of
8602 -these features.
8604 - * A target of the form `FILE((ENTRY))' stands for a member of
8605 - archive file FILE. The member is chosen, not by name, but by
8606 - being an object file which defines the linker symbol ENTRY.
8608 - This feature was not put into GNU `make' because of the
8609 - nonmodularity of putting knowledge into `make' of the internal
8610 - format of archive file symbol tables. *Note Updating Archive
8611 - Symbol Directories: Archive Symbols.
8613 - * Suffixes (used in suffix rules) that end with the character `~'
8614 - have a special meaning to System V `make'; they refer to the SCCS
8615 - file that corresponds to the file one would get without the `~'.
8616 - For example, the suffix rule `.c~.o' would make the file `N.o' from
8617 - the SCCS file `s.N.c'. For complete coverage, a whole series of
8618 - such suffix rules is required. *Note Old-Fashioned Suffix Rules:
8619 - Suffix Rules.
8621 - In GNU `make', this entire series of cases is handled by two
8622 - pattern rules for extraction from SCCS, in combination with the
8623 - general feature of rule chaining. *Note Chains of Implicit Rules:
8624 - Chained Rules.
8626 - * In System V and 4.3 BSD `make', files found by `VPATH' search
8627 - (*note Searching Directories for Prerequisites: Directory Search.)
8628 - have their names changed inside command strings. We feel it is
8629 - much cleaner to always use automatic variables and thus make this
8630 - feature obsolete.
8632 - * In some Unix `make's, the automatic variable `$*' appearing in the
8633 - prerequisites of a rule has the amazingly strange "feature" of
8634 - expanding to the full name of the _target of that rule_. We cannot
8635 - imagine what went on in the minds of Unix `make' developers to do
8636 - this; it is utterly inconsistent with the normal definition of
8637 - `$*'.
8639 - * In some Unix `make's, implicit rule search (*note Using Implicit
8640 - Rules: Implicit Rules.) is apparently done for _all_ targets, not
8641 - just those without commands. This means you can do:
8643 - foo.o:
8644 - cc -c foo.c
8646 - and Unix `make' will intuit that `foo.o' depends on `foo.c'.
8648 - We feel that such usage is broken. The prerequisite properties of
8649 - `make' are well-defined (for GNU `make', at least), and doing such
8650 - a thing simply does not fit the model.
8652 - * GNU `make' does not include any built-in implicit rules for
8653 - compiling or preprocessing EFL programs. If we hear of anyone who
8654 - is using EFL, we will gladly add them.
8656 - * It appears that in SVR4 `make', a suffix rule can be specified with
8657 - no commands, and it is treated as if it had empty commands (*note
8658 - Empty Commands::). For example:
8660 - .c.a:
8662 - will override the built-in `.c.a' suffix rule.
8664 - We feel that it is cleaner for a rule without commands to always
8665 - simply add to the prerequisite list for the target. The above
8666 - example can be easily rewritten to get the desired behavior in GNU
8667 - `make':
8669 - .c.a: ;
8671 - * Some versions of `make' invoke the shell with the `-e' flag,
8672 - except under `-k' (*note Testing the Compilation of a Program:
8673 - Testing.). The `-e' flag tells the shell to exit as soon as any
8674 - program it runs returns a nonzero status. We feel it is cleaner to
8675 - write each shell command line to stand on its own and not require
8676 - this special treatment.
8678 -\x1f
8679 -File: make.info, Node: Makefile Conventions, Next: Quick Reference, Prev: Missing, Up: Top
8681 -14 Makefile Conventions
8682 -***********************
8684 -This node describes conventions for writing the Makefiles for GNU
8685 -programs. Using Automake will help you write a Makefile that follows
8686 -these conventions.
8688 -* Menu:
8690 -* Makefile Basics:: General Conventions for Makefiles
8691 -* Utilities in Makefiles:: Utilities in Makefiles
8692 -* Command Variables:: Variables for Specifying Commands
8693 -* Directory Variables:: Variables for Installation Directories
8694 -* Standard Targets:: Standard Targets for Users
8695 -* Install Command Categories:: Three categories of commands in the `install'
8696 - rule: normal, pre-install and post-install.
8698 -\x1f
8699 -File: make.info, Node: Makefile Basics, Next: Utilities in Makefiles, Up: Makefile Conventions
8701 -14.1 General Conventions for Makefiles
8702 -======================================
8704 -Every Makefile should contain this line:
8706 - SHELL = /bin/sh
8708 -to avoid trouble on systems where the `SHELL' variable might be
8709 -inherited from the environment. (This is never a problem with GNU
8710 -`make'.)
8712 - Different `make' programs have incompatible suffix lists and
8713 -implicit rules, and this sometimes creates confusion or misbehavior. So
8714 -it is a good idea to set the suffix list explicitly using only the
8715 -suffixes you need in the particular Makefile, like this:
8717 - .SUFFIXES:
8718 - .SUFFIXES: .c .o
8720 -The first line clears out the suffix list, the second introduces all
8721 -suffixes which may be subject to implicit rules in this Makefile.
8723 - Don't assume that `.' is in the path for command execution. When
8724 -you need to run programs that are a part of your package during the
8725 -make, please make sure that it uses `./' if the program is built as
8726 -part of the make or `$(srcdir)/' if the file is an unchanging part of
8727 -the source code. Without one of these prefixes, the current search
8728 -path is used.
8730 - The distinction between `./' (the "build directory") and
8731 -`$(srcdir)/' (the "source directory") is important because users can
8732 -build in a separate directory using the `--srcdir' option to
8733 -`configure'. A rule of the form:
8735 - foo.1 : foo.man sedscript
8736 - sed -e sedscript foo.man > foo.1
8738 -will fail when the build directory is not the source directory, because
8739 -`foo.man' and `sedscript' are in the source directory.
8741 - When using GNU `make', relying on `VPATH' to find the source file
8742 -will work in the case where there is a single dependency file, since
8743 -the `make' automatic variable `$<' will represent the source file
8744 -wherever it is. (Many versions of `make' set `$<' only in implicit
8745 -rules.) A Makefile target like
8747 - foo.o : bar.c
8748 - $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
8750 -should instead be written as
8752 - foo.o : bar.c
8753 - $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@
8755 -in order to allow `VPATH' to work correctly. When the target has
8756 -multiple dependencies, using an explicit `$(srcdir)' is the easiest way
8757 -to make the rule work well. For example, the target above for `foo.1'
8758 -is best written as:
8760 - foo.1 : foo.man sedscript
8761 - sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@
8763 - GNU distributions usually contain some files which are not source
8764 -files--for example, Info files, and the output from Autoconf, Automake,
8765 -Bison or Flex. Since these files normally appear in the source
8766 -directory, they should always appear in the source directory, not in the
8767 -build directory. So Makefile rules to update them should put the
8768 -updated files in the source directory.
8770 - However, if a file does not appear in the distribution, then the
8771 -Makefile should not put it in the source directory, because building a
8772 -program in ordinary circumstances should not modify the source directory
8773 -in any way.
8775 - Try to make the build and installation targets, at least (and all
8776 -their subtargets) work correctly with a parallel `make'.
8778 -\x1f
8779 -File: make.info, Node: Utilities in Makefiles, Next: Command Variables, Prev: Makefile Basics, Up: Makefile Conventions
8781 -14.2 Utilities in Makefiles
8782 -===========================
8784 -Write the Makefile commands (and any shell scripts, such as
8785 -`configure') to run in `sh', not in `csh'. Don't use any special
8786 -features of `ksh' or `bash'.
8788 - The `configure' script and the Makefile rules for building and
8789 -installation should not use any utilities directly except these:
8791 - cat cmp cp diff echo egrep expr false grep install-info
8792 - ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
8794 - The compression program `gzip' can be used in the `dist' rule.
8796 - Stick to the generally supported options for these programs. For
8797 -example, don't use `mkdir -p', convenient as it may be, because most
8798 -systems don't support it.
8800 - It is a good idea to avoid creating symbolic links in makefiles,
8801 -since a few systems don't support them.
8803 - The Makefile rules for building and installation can also use
8804 -compilers and related programs, but should do so via `make' variables
8805 -so that the user can substitute alternatives. Here are some of the
8806 -programs we mean:
8808 - ar bison cc flex install ld ldconfig lex
8809 - make makeinfo ranlib texi2dvi yacc
8811 - Use the following `make' variables to run those programs:
8813 - $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
8814 - $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
8816 - When you use `ranlib' or `ldconfig', you should make sure nothing
8817 -bad happens if the system does not have the program in question.
8818 -Arrange to ignore an error from that command, and print a message before
8819 -the command to tell the user that failure of this command does not mean
8820 -a problem. (The Autoconf `AC_PROG_RANLIB' macro can help with this.)
8822 - If you use symbolic links, you should implement a fallback for
8823 -systems that don't have symbolic links.
8825 - Additional utilities that can be used via Make variables are:
8827 - chgrp chmod chown mknod
8829 - It is ok to use other utilities in Makefile portions (or scripts)
8830 -intended only for particular systems where you know those utilities
8831 -exist.
8833 -\x1f
8834 -File: make.info, Node: Command Variables, Next: Directory Variables, Prev: Utilities in Makefiles, Up: Makefile Conventions
8836 -14.3 Variables for Specifying Commands
8837 -======================================
8839 -Makefiles should provide variables for overriding certain commands,
8840 -options, and so on.
8842 - In particular, you should run most utility programs via variables.
8843 -Thus, if you use Bison, have a variable named `BISON' whose default
8844 -value is set with `BISON = bison', and refer to it with `$(BISON)'
8845 -whenever you need to use Bison.
8847 - File management utilities such as `ln', `rm', `mv', and so on, need
8848 -not be referred to through variables in this way, since users don't
8849 -need to replace them with other programs.
8851 - Each program-name variable should come with an options variable that
8852 -is used to supply options to the program. Append `FLAGS' to the
8853 -program-name variable name to get the options variable name--for
8854 -example, `BISONFLAGS'. (The names `CFLAGS' for the C compiler,
8855 -`YFLAGS' for yacc, and `LFLAGS' for lex, are exceptions to this rule,
8856 -but we keep them because they are standard.) Use `CPPFLAGS' in any
8857 -compilation command that runs the preprocessor, and use `LDFLAGS' in
8858 -any compilation command that does linking as well as in any direct use
8859 -of `ld'.
8861 - If there are C compiler options that _must_ be used for proper
8862 -compilation of certain files, do not include them in `CFLAGS'. Users
8863 -expect to be able to specify `CFLAGS' freely themselves. Instead,
8864 -arrange to pass the necessary options to the C compiler independently
8865 -of `CFLAGS', by writing them explicitly in the compilation commands or
8866 -by defining an implicit rule, like this:
8868 - CFLAGS = -g
8869 - ALL_CFLAGS = -I. $(CFLAGS)
8870 - .c.o:
8871 - $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
8873 - Do include the `-g' option in `CFLAGS', because that is not
8874 -_required_ for proper compilation. You can consider it a default that
8875 -is only recommended. If the package is set up so that it is compiled
8876 -with GCC by default, then you might as well include `-O' in the default
8877 -value of `CFLAGS' as well.
8879 - Put `CFLAGS' last in the compilation command, after other variables
8880 -containing compiler options, so the user can use `CFLAGS' to override
8881 -the others.
8883 - `CFLAGS' should be used in every invocation of the C compiler, both
8884 -those which do compilation and those which do linking.
8886 - Every Makefile should define the variable `INSTALL', which is the
8887 -basic command for installing a file into the system.
8889 - Every Makefile should also define the variables `INSTALL_PROGRAM'
8890 -and `INSTALL_DATA'. (The default for `INSTALL_PROGRAM' should be
8891 -`$(INSTALL)'; the default for `INSTALL_DATA' should be `${INSTALL} -m
8892 -644'.) Then it should use those variables as the commands for actual
8893 -installation, for executables and nonexecutables respectively. Use
8894 -these variables as follows:
8896 - $(INSTALL_PROGRAM) foo $(bindir)/foo
8897 - $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
8899 - Optionally, you may prepend the value of `DESTDIR' to the target
8900 -filename. Doing this allows the installer to create a snapshot of the
8901 -installation to be copied onto the real target filesystem later. Do not
8902 -set the value of `DESTDIR' in your Makefile, and do not include it in
8903 -any installed files. With support for `DESTDIR', the above examples
8904 -become:
8906 - $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
8907 - $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
8909 -Always use a file name, not a directory name, as the second argument of
8910 -the installation commands. Use a separate command for each file to be
8911 -installed.
8913 -\x1f
8914 -File: make.info, Node: Directory Variables, Next: Standard Targets, Prev: Command Variables, Up: Makefile Conventions
8916 -14.4 Variables for Installation Directories
8917 -===========================================
8919 -Installation directories should always be named by variables, so it is
8920 -easy to install in a nonstandard place. The standard names for these
8921 -variables and the values they should have in GNU packages are described
8922 -below. They are based on a standard filesystem layout; variants of it
8923 -are used in GNU/Linux and other modern operating systems.
8925 - Installers are expected to override these values when calling `make'
8926 -(e.g., `make prefix=/usr install' or `configure' (e.g., `configure
8927 ---prefix=/usr'). GNU packages should not try to guess which value
8928 -should be appropriate for these variables on the system they are being
8929 -installed onto: use the default settings specified here so that all GNU
8930 -packages behave identically, allowing the installer to achieve any
8931 -desired layout.
8933 - These two variables set the root for the installation. All the other
8934 -installation directories should be subdirectories of one of these two,
8935 -and nothing should be directly installed into these two directories.
8937 -`prefix'
8938 - A prefix used in constructing the default values of the variables
8939 - listed below. The default value of `prefix' should be
8940 - `/usr/local'. When building the complete GNU system, the prefix
8941 - will be empty and `/usr' will be a symbolic link to `/'. (If you
8942 - are using Autoconf, write it as `@prefix@'.)
8944 - Running `make install' with a different value of `prefix' from the
8945 - one used to build the program should _not_ recompile the program.
8947 -`exec_prefix'
8948 - A prefix used in constructing the default values of some of the
8949 - variables listed below. The default value of `exec_prefix' should
8950 - be `$(prefix)'. (If you are using Autoconf, write it as
8951 - `@exec_prefix@'.)
8953 - Generally, `$(exec_prefix)' is used for directories that contain
8954 - machine-specific files (such as executables and subroutine
8955 - libraries), while `$(prefix)' is used directly for other
8956 - directories.
8958 - Running `make install' with a different value of `exec_prefix'
8959 - from the one used to build the program should _not_ recompile the
8960 - program.
8962 - Executable programs are installed in one of the following
8963 -directories.
8965 -`bindir'
8966 - The directory for installing executable programs that users can
8967 - run. This should normally be `/usr/local/bin', but write it as
8968 - `$(exec_prefix)/bin'. (If you are using Autoconf, write it as
8969 - `@bindir@'.)
8971 -`sbindir'
8972 - The directory for installing executable programs that can be run
8973 - from the shell, but are only generally useful to system
8974 - administrators. This should normally be `/usr/local/sbin', but
8975 - write it as `$(exec_prefix)/sbin'. (If you are using Autoconf,
8976 - write it as `@sbindir@'.)
8978 -`libexecdir'
8979 - The directory for installing executable programs to be run by other
8980 - programs rather than by users. This directory should normally be
8981 - `/usr/local/libexec', but write it as `$(exec_prefix)/libexec'.
8982 - (If you are using Autoconf, write it as `@libexecdir@'.)
8984 - The definition of `libexecdir' is the same for all packages, so
8985 - you should install your data in a subdirectory thereof. Most
8986 - packages install their data under `$(libexecdir)/PACKAGE-NAME/',
8987 - possibly within additional subdirectories thereof, such as
8988 - `$(libexecdir)/PACKAGE-NAME/MACHINE/VERSION'.
8990 - Data files used by the program during its execution are divided into
8991 -categories in two ways.
8993 - * Some files are normally modified by programs; others are never
8994 - normally modified (though users may edit some of these).
8996 - * Some files are architecture-independent and can be shared by all
8997 - machines at a site; some are architecture-dependent and can be
8998 - shared only by machines of the same kind and operating system;
8999 - others may never be shared between two machines.
9001 - This makes for six different possibilities. However, we want to
9002 -discourage the use of architecture-dependent files, aside from object
9003 -files and libraries. It is much cleaner to make other data files
9004 -architecture-independent, and it is generally not hard.
9006 - Here are the variables Makefiles should use to specify directories
9007 -to put these various kinds of files in:
9009 -`datarootdir'
9010 - The root of the directory tree for read-only
9011 - architecture-independent data files. This should normally be
9012 - `/usr/local/share', but write it as `$(prefix)/share'. (If you
9013 - are using Autoconf, write it as `@datarootdir@'.) `datadir''s
9014 - default value is based on this variable; so are `infodir',
9015 - `mandir', and others.
9017 -`datadir'
9018 - The directory for installing idiosyncratic read-only
9019 - architecture-independent data files for this program. This is
9020 - usually the same place as `datarootdir', but we use the two
9021 - separate variables so that you can move these program-specific
9022 - files without altering the location for Info files, man pages, etc.
9024 - This should normally be `/usr/local/share', but write it as
9025 - `$(datarootdir)'. (If you are using Autoconf, write it as
9026 - `@datadir@'.)
9028 - The definition of `datadir' is the same for all packages, so you
9029 - should install your data in a subdirectory thereof. Most packages
9030 - install their data under `$(datadir)/PACKAGE-NAME/'.
9032 -`sysconfdir'
9033 - The directory for installing read-only data files that pertain to a
9034 - single machine-that is to say, files for configuring a host.
9035 - Mailer and network configuration files, `/etc/passwd', and so
9036 - forth belong here. All the files in this directory should be
9037 - ordinary ASCII text files. This directory should normally be
9038 - `/usr/local/etc', but write it as `$(prefix)/etc'. (If you are
9039 - using Autoconf, write it as `@sysconfdir@'.)
9041 - Do not install executables here in this directory (they probably
9042 - belong in `$(libexecdir)' or `$(sbindir)'). Also do not install
9043 - files that are modified in the normal course of their use (programs
9044 - whose purpose is to change the configuration of the system
9045 - excluded). Those probably belong in `$(localstatedir)'.
9047 -`sharedstatedir'
9048 - The directory for installing architecture-independent data files
9049 - which the programs modify while they run. This should normally be
9050 - `/usr/local/com', but write it as `$(prefix)/com'. (If you are
9051 - using Autoconf, write it as `@sharedstatedir@'.)
9053 -`localstatedir'
9054 - The directory for installing data files which the programs modify
9055 - while they run, and that pertain to one specific machine. Users
9056 - should never need to modify files in this directory to configure
9057 - the package's operation; put such configuration information in
9058 - separate files that go in `$(datadir)' or `$(sysconfdir)'.
9059 - `$(localstatedir)' should normally be `/usr/local/var', but write
9060 - it as `$(prefix)/var'. (If you are using Autoconf, write it as
9061 - `@localstatedir@'.)
9063 - These variables specify the directory for installing certain specific
9064 -types of files, if your program has them. Every GNU package should
9065 -have Info files, so every program needs `infodir', but not all need
9066 -`libdir' or `lispdir'.
9068 -`includedir'
9069 - The directory for installing header files to be included by user
9070 - programs with the C `#include' preprocessor directive. This
9071 - should normally be `/usr/local/include', but write it as
9072 - `$(prefix)/include'. (If you are using Autoconf, write it as
9073 - `@includedir@'.)
9075 - Most compilers other than GCC do not look for header files in
9076 - directory `/usr/local/include'. So installing the header files
9077 - this way is only useful with GCC. Sometimes this is not a problem
9078 - because some libraries are only really intended to work with GCC.
9079 - But some libraries are intended to work with other compilers.
9080 - They should install their header files in two places, one
9081 - specified by `includedir' and one specified by `oldincludedir'.
9083 -`oldincludedir'
9084 - The directory for installing `#include' header files for use with
9085 - compilers other than GCC. This should normally be `/usr/include'.
9086 - (If you are using Autoconf, you can write it as `@oldincludedir@'.)
9088 - The Makefile commands should check whether the value of
9089 - `oldincludedir' is empty. If it is, they should not try to use
9090 - it; they should cancel the second installation of the header files.
9092 - A package should not replace an existing header in this directory
9093 - unless the header came from the same package. Thus, if your Foo
9094 - package provides a header file `foo.h', then it should install the
9095 - header file in the `oldincludedir' directory if either (1) there
9096 - is no `foo.h' there or (2) the `foo.h' that exists came from the
9097 - Foo package.
9099 - To tell whether `foo.h' came from the Foo package, put a magic
9100 - string in the file--part of a comment--and `grep' for that string.
9102 -`docdir'
9103 - The directory for installing documentation files (other than Info)
9104 - for this package. By default, it should be
9105 - `/usr/local/share/doc/YOURPKG', but it should be written as
9106 - `$(datarootdir)/doc/YOURPKG'. (If you are using Autoconf, write
9107 - it as `@docdir@'.) The YOURPKG subdirectory, which may include a
9108 - version number, prevents collisions among files with common names,
9109 - such as `README'.
9111 -`infodir'
9112 - The directory for installing the Info files for this package. By
9113 - default, it should be `/usr/local/share/info', but it should be
9114 - written as `$(datarootdir)/info'. (If you are using Autoconf,
9115 - write it as `@infodir@'.) `infodir' is separate from `docdir' for
9116 - compatibility with existing practice.
9118 -`htmldir'
9119 -`dvidir'
9120 -`pdfdir'
9121 -`psdir'
9122 - Directories for installing documentation files in the particular
9123 - format. (It is not required to support documentation in all these
9124 - formats.) They should all be set to `$(docdir)' by default. (If
9125 - you are using Autoconf, write them as `@htmldir@', `@dvidir@',
9126 - etc.) Packages which supply several translations of their
9127 - documentation should install them in `$(htmldir)/'LL,
9128 - `$(pdfdir)/'LL, etc. where LL is a locale abbreviation such as
9129 - `en' or `pt_BR'.
9131 -`libdir'
9132 - The directory for object files and libraries of object code. Do
9133 - not install executables here, they probably ought to go in
9134 - `$(libexecdir)' instead. The value of `libdir' should normally be
9135 - `/usr/local/lib', but write it as `$(exec_prefix)/lib'. (If you
9136 - are using Autoconf, write it as `@libdir@'.)
9138 -`lispdir'
9139 - The directory for installing any Emacs Lisp files in this package.
9140 - By default, it should be `/usr/local/share/emacs/site-lisp', but
9141 - it should be written as `$(datarootdir)/emacs/site-lisp'.
9143 - If you are using Autoconf, write the default as `@lispdir@'. In
9144 - order to make `@lispdir@' work, you need the following lines in
9145 - your `configure.in' file:
9147 - lispdir='${datarootdir}/emacs/site-lisp'
9148 - AC_SUBST(lispdir)
9150 -`localedir'
9151 - The directory for installing locale-specific message catalogs for
9152 - this package. By default, it should be `/usr/local/share/locale',
9153 - but it should be written as `$(datarootdir)/locale'. (If you are
9154 - using Autoconf, write it as `@localedir@'.) This directory
9155 - usually has a subdirectory per locale.
9157 - Unix-style man pages are installed in one of the following:
9159 -`mandir'
9160 - The top-level directory for installing the man pages (if any) for
9161 - this package. It will normally be `/usr/local/share/man', but you
9162 - should write it as `$(datarootdir)/man'. (If you are using
9163 - Autoconf, write it as `@mandir@'.)
9165 -`man1dir'
9166 - The directory for installing section 1 man pages. Write it as
9167 - `$(mandir)/man1'.
9169 -`man2dir'
9170 - The directory for installing section 2 man pages. Write it as
9171 - `$(mandir)/man2'
9173 -`...'
9174 - *Don't make the primary documentation for any GNU software be a
9175 - man page. Write a manual in Texinfo instead. Man pages are just
9176 - for the sake of people running GNU software on Unix, which is a
9177 - secondary application only.*
9179 -`manext'
9180 - The file name extension for the installed man page. This should
9181 - contain a period followed by the appropriate digit; it should
9182 - normally be `.1'.
9184 -`man1ext'
9185 - The file name extension for installed section 1 man pages.
9187 -`man2ext'
9188 - The file name extension for installed section 2 man pages.
9190 -`...'
9191 - Use these names instead of `manext' if the package needs to
9192 - install man pages in more than one section of the manual.
9194 - And finally, you should set the following variable:
9196 -`srcdir'
9197 - The directory for the sources being compiled. The value of this
9198 - variable is normally inserted by the `configure' shell script.
9199 - (If you are using Autconf, use `srcdir = @srcdir@'.)
9201 - For example:
9203 - # Common prefix for installation directories.
9204 - # NOTE: This directory must exist when you start the install.
9205 - prefix = /usr/local
9206 - datarootdir = $(prefix)/share
9207 - datadir = $(datarootdir)
9208 - exec_prefix = $(prefix)
9209 - # Where to put the executable for the command `gcc'.
9210 - bindir = $(exec_prefix)/bin
9211 - # Where to put the directories used by the compiler.
9212 - libexecdir = $(exec_prefix)/libexec
9213 - # Where to put the Info files.
9214 - infodir = $(datarootdir)/info
9216 - If your program installs a large number of files into one of the
9217 -standard user-specified directories, it might be useful to group them
9218 -into a subdirectory particular to that program. If you do this, you
9219 -should write the `install' rule to create these subdirectories.
9221 - Do not expect the user to include the subdirectory name in the value
9222 -of any of the variables listed above. The idea of having a uniform set
9223 -of variable names for installation directories is to enable the user to
9224 -specify the exact same values for several different GNU packages. In
9225 -order for this to be useful, all the packages must be designed so that
9226 -they will work sensibly when the user does so.
9228 -\x1f
9229 -File: make.info, Node: Standard Targets, Next: Install Command Categories, Prev: Directory Variables, Up: Makefile Conventions
9231 -14.5 Standard Targets for Users
9232 -===============================
9234 -All GNU programs should have the following targets in their Makefiles:
9236 -`all'
9237 - Compile the entire program. This should be the default target.
9238 - This target need not rebuild any documentation files; Info files
9239 - should normally be included in the distribution, and DVI files
9240 - should be made only when explicitly asked for.
9242 - By default, the Make rules should compile and link with `-g', so
9243 - that executable programs have debugging symbols. Users who don't
9244 - mind being helpless can strip the executables later if they wish.
9246 -`install'
9247 - Compile the program and copy the executables, libraries, and so on
9248 - to the file names where they should reside for actual use. If
9249 - there is a simple test to verify that a program is properly
9250 - installed, this target should run that test.
9252 - Do not strip executables when installing them. Devil-may-care
9253 - users can use the `install-strip' target to do that.
9255 - If possible, write the `install' target rule so that it does not
9256 - modify anything in the directory where the program was built,
9257 - provided `make all' has just been done. This is convenient for
9258 - building the program under one user name and installing it under
9259 - another.
9261 - The commands should create all the directories in which files are
9262 - to be installed, if they don't already exist. This includes the
9263 - directories specified as the values of the variables `prefix' and
9264 - `exec_prefix', as well as all subdirectories that are needed. One
9265 - way to do this is by means of an `installdirs' target as described
9266 - below.
9268 - Use `-' before any command for installing a man page, so that
9269 - `make' will ignore any errors. This is in case there are systems
9270 - that don't have the Unix man page documentation system installed.
9272 - The way to install Info files is to copy them into `$(infodir)'
9273 - with `$(INSTALL_DATA)' (*note Command Variables::), and then run
9274 - the `install-info' program if it is present. `install-info' is a
9275 - program that edits the Info `dir' file to add or update the menu
9276 - entry for the given Info file; it is part of the Texinfo package.
9277 - Here is a sample rule to install an Info file:
9279 - $(DESTDIR)$(infodir)/foo.info: foo.info
9280 - $(POST_INSTALL)
9281 - # There may be a newer info file in . than in srcdir.
9282 - -if test -f foo.info; then d=.; \
9283 - else d=$(srcdir); fi; \
9284 - $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@; \
9285 - # Run install-info only if it exists.
9286 - # Use `if' instead of just prepending `-' to the
9287 - # line so we notice real errors from install-info.
9288 - # We use `$(SHELL) -c' because some shells do not
9289 - # fail gracefully when there is an unknown command.
9290 - if $(SHELL) -c 'install-info --version' \
9291 - >/dev/null 2>&1; then \
9292 - install-info --dir-file=$(DESTDIR)$(infodir)/dir \
9293 - $(DESTDIR)$(infodir)/foo.info; \
9294 - else true; fi
9296 - When writing the `install' target, you must classify all the
9297 - commands into three categories: normal ones, "pre-installation"
9298 - commands and "post-installation" commands. *Note Install Command
9299 - Categories::.
9301 -`install-html'
9302 -`install-dvi'
9303 -`install-pdf'
9304 -`install-ps'
9305 - These targets install documentation in formats other than Info;
9306 - they're intended to be called explicitly by the person installing
9307 - the package, if that format is desired. GNU prefers Info files,
9308 - so these must be installed by the `install' target.
9310 - When you have many documentation files to install, we recommend
9311 - that you avoid collisions and clutter by arranging for these
9312 - targets to install in subdirectories of the appropriate
9313 - installation directory, such as `htmldir'. As one example, if
9314 - your package has multiple manuals, and you wish to install HTML
9315 - documentation with many files (such as the "split" mode output by
9316 - `makeinfo --html'), you'll certainly want to use subdirectories,
9317 - or two nodes with the same name in different manuals will
9318 - overwrite each other.
9320 -`uninstall'
9321 - Delete all the installed files--the copies that the `install' and
9322 - `install-*' targets create.
9324 - This rule should not modify the directories where compilation is
9325 - done, only the directories where files are installed.
9327 - The uninstallation commands are divided into three categories,
9328 - just like the installation commands. *Note Install Command
9329 - Categories::.
9331 -`install-strip'
9332 - Like `install', but strip the executable files while installing
9333 - them. In simple cases, this target can use the `install' target in
9334 - a simple way:
9336 - install-strip:
9337 - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
9338 - install
9340 - But if the package installs scripts as well as real executables,
9341 - the `install-strip' target can't just refer to the `install'
9342 - target; it has to strip the executables but not the scripts.
9344 - `install-strip' should not strip the executables in the build
9345 - directory which are being copied for installation. It should only
9346 - strip the copies that are installed.
9348 - Normally we do not recommend stripping an executable unless you
9349 - are sure the program has no bugs. However, it can be reasonable
9350 - to install a stripped executable for actual execution while saving
9351 - the unstripped executable elsewhere in case there is a bug.
9353 -`clean'
9354 - Delete all files in the current directory that are normally
9355 - created by building the program. Also delete files in other
9356 - directories if they are created by this makefile. However, don't
9357 - delete the files that record the configuration. Also preserve
9358 - files that could be made by building, but normally aren't because
9359 - the distribution comes with them. There is no need to delete
9360 - parent directories that were created with `mkdir -p', since they
9361 - could have existed anyway.
9363 - Delete `.dvi' files here if they are not part of the distribution.
9365 -`distclean'
9366 - Delete all files in the current directory (or created by this
9367 - makefile) that are created by configuring or building the program.
9368 - If you have unpacked the source and built the program without
9369 - creating any other files, `make distclean' should leave only the
9370 - files that were in the distribution. However, there is no need to
9371 - delete parent directories that were created with `mkdir -p', since
9372 - they could have existed anyway.
9374 -`mostlyclean'
9375 - Like `clean', but may refrain from deleting a few files that people
9376 - normally don't want to recompile. For example, the `mostlyclean'
9377 - target for GCC does not delete `libgcc.a', because recompiling it
9378 - is rarely necessary and takes a lot of time.
9380 -`maintainer-clean'
9381 - Delete almost everything that can be reconstructed with this
9382 - Makefile. This typically includes everything deleted by
9383 - `distclean', plus more: C source files produced by Bison, tags
9384 - tables, Info files, and so on.
9386 - The reason we say "almost everything" is that running the command
9387 - `make maintainer-clean' should not delete `configure' even if
9388 - `configure' can be remade using a rule in the Makefile. More
9389 - generally, `make maintainer-clean' should not delete anything that
9390 - needs to exist in order to run `configure' and then begin to build
9391 - the program. Also, there is no need to delete parent directories
9392 - that were created with `mkdir -p', since they could have existed
9393 - anyway. These are the only exceptions; `maintainer-clean' should
9394 - delete everything else that can be rebuilt.
9396 - The `maintainer-clean' target is intended to be used by a
9397 - maintainer of the package, not by ordinary users. You may need
9398 - special tools to reconstruct some of the files that `make
9399 - maintainer-clean' deletes. Since these files are normally
9400 - included in the distribution, we don't take care to make them easy
9401 - to reconstruct. If you find you need to unpack the full
9402 - distribution again, don't blame us.
9404 - To help make users aware of this, the commands for the special
9405 - `maintainer-clean' target should start with these two:
9407 - @echo 'This command is intended for maintainers to use; it'
9408 - @echo 'deletes files that may need special tools to rebuild.'
9410 -`TAGS'
9411 - Update a tags table for this program.
9413 -`info'
9414 - Generate any Info files needed. The best way to write the rules
9415 - is as follows:
9417 - info: foo.info
9419 - foo.info: foo.texi chap1.texi chap2.texi
9420 - $(MAKEINFO) $(srcdir)/foo.texi
9422 - You must define the variable `MAKEINFO' in the Makefile. It should
9423 - run the `makeinfo' program, which is part of the Texinfo
9424 - distribution.
9426 - Normally a GNU distribution comes with Info files, and that means
9427 - the Info files are present in the source directory. Therefore,
9428 - the Make rule for an info file should update it in the source
9429 - directory. When users build the package, ordinarily Make will not
9430 - update the Info files because they will already be up to date.
9432 -`dvi'
9433 -`html'
9434 -`pdf'
9435 -`ps'
9436 - Generate documentation files in the given format, if possible.
9437 - Here's an example rule for generating DVI files from Texinfo:
9439 - dvi: foo.dvi
9441 - foo.dvi: foo.texi chap1.texi chap2.texi
9442 - $(TEXI2DVI) $(srcdir)/foo.texi
9444 - You must define the variable `TEXI2DVI' in the Makefile. It should
9445 - run the program `texi2dvi', which is part of the Texinfo
9446 - distribution.(1) Alternatively, write just the dependencies, and
9447 - allow GNU `make' to provide the command.
9449 - Here's another example, this one for generating HTML from Texinfo:
9451 - html: foo.html
9453 - foo.html: foo.texi chap1.texi chap2.texi
9454 - $(TEXI2HTML) $(srcdir)/foo.texi
9456 - Again, you would define the variable `TEXI2HTML' in the Makefile;
9457 - for example, it might run `makeinfo --no-split --html' (`makeinfo'
9458 - is part of the Texinfo distribution).
9460 -`dist'
9461 - Create a distribution tar file for this program. The tar file
9462 - should be set up so that the file names in the tar file start with
9463 - a subdirectory name which is the name of the package it is a
9464 - distribution for. This name can include the version number.
9466 - For example, the distribution tar file of GCC version 1.40 unpacks
9467 - into a subdirectory named `gcc-1.40'.
9469 - The easiest way to do this is to create a subdirectory
9470 - appropriately named, use `ln' or `cp' to install the proper files
9471 - in it, and then `tar' that subdirectory.
9473 - Compress the tar file with `gzip'. For example, the actual
9474 - distribution file for GCC version 1.40 is called `gcc-1.40.tar.gz'.
9476 - The `dist' target should explicitly depend on all non-source files
9477 - that are in the distribution, to make sure they are up to date in
9478 - the distribution. *Note Making Releases: (standards)Releases.
9480 -`check'
9481 - Perform self-tests (if any). The user must build the program
9482 - before running the tests, but need not install the program; you
9483 - should write the self-tests so that they work when the program is
9484 - built but not installed.
9486 - The following targets are suggested as conventional names, for
9487 -programs in which they are useful.
9489 -`installcheck'
9490 - Perform installation tests (if any). The user must build and
9491 - install the program before running the tests. You should not
9492 - assume that `$(bindir)' is in the search path.
9494 -`installdirs'
9495 - It's useful to add a target named `installdirs' to create the
9496 - directories where files are installed, and their parent
9497 - directories. There is a script called `mkinstalldirs' which is
9498 - convenient for this; you can find it in the Texinfo package. You
9499 - can use a rule like this:
9501 - # Make sure all installation directories (e.g. $(bindir))
9502 - # actually exist by making them if necessary.
9503 - installdirs: mkinstalldirs
9504 - $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
9505 - $(libdir) $(infodir) \
9506 - $(mandir)
9508 - or, if you wish to support `DESTDIR',
9510 - # Make sure all installation directories (e.g. $(bindir))
9511 - # actually exist by making them if necessary.
9512 - installdirs: mkinstalldirs
9513 - $(srcdir)/mkinstalldirs \
9514 - $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
9515 - $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
9516 - $(DESTDIR)$(mandir)
9518 - This rule should not modify the directories where compilation is
9519 - done. It should do nothing but create installation directories.
9521 - ---------- Footnotes ----------
9523 - (1) `texi2dvi' uses TeX to do the real work of formatting. TeX is
9524 -not distributed with Texinfo.
9526 -\x1f
9527 -File: make.info, Node: Install Command Categories, Prev: Standard Targets, Up: Makefile Conventions
9529 -14.6 Install Command Categories
9530 -===============================
9532 -When writing the `install' target, you must classify all the commands
9533 -into three categories: normal ones, "pre-installation" commands and
9534 -"post-installation" commands.
9536 - Normal commands move files into their proper places, and set their
9537 -modes. They may not alter any files except the ones that come entirely
9538 -from the package they belong to.
9540 - Pre-installation and post-installation commands may alter other
9541 -files; in particular, they can edit global configuration files or data
9542 -bases.
9544 - Pre-installation commands are typically executed before the normal
9545 -commands, and post-installation commands are typically run after the
9546 -normal commands.
9548 - The most common use for a post-installation command is to run
9549 -`install-info'. This cannot be done with a normal command, since it
9550 -alters a file (the Info directory) which does not come entirely and
9551 -solely from the package being installed. It is a post-installation
9552 -command because it needs to be done after the normal command which
9553 -installs the package's Info files.
9555 - Most programs don't need any pre-installation commands, but we have
9556 -the feature just in case it is needed.
9558 - To classify the commands in the `install' rule into these three
9559 -categories, insert "category lines" among them. A category line
9560 -specifies the category for the commands that follow.
9562 - A category line consists of a tab and a reference to a special Make
9563 -variable, plus an optional comment at the end. There are three
9564 -variables you can use, one for each category; the variable name
9565 -specifies the category. Category lines are no-ops in ordinary execution
9566 -because these three Make variables are normally undefined (and you
9567 -_should not_ define them in the makefile).
9569 - Here are the three possible category lines, each with a comment that
9570 -explains what it means:
9572 - $(PRE_INSTALL) # Pre-install commands follow.
9573 - $(POST_INSTALL) # Post-install commands follow.
9574 - $(NORMAL_INSTALL) # Normal commands follow.
9576 - If you don't use a category line at the beginning of the `install'
9577 -rule, all the commands are classified as normal until the first category
9578 -line. If you don't use any category lines, all the commands are
9579 -classified as normal.
9581 - These are the category lines for `uninstall':
9583 - $(PRE_UNINSTALL) # Pre-uninstall commands follow.
9584 - $(POST_UNINSTALL) # Post-uninstall commands follow.
9585 - $(NORMAL_UNINSTALL) # Normal commands follow.
9587 - Typically, a pre-uninstall command would be used for deleting entries
9588 -from the Info directory.
9590 - If the `install' or `uninstall' target has any dependencies which
9591 -act as subroutines of installation, then you should start _each_
9592 -dependency's commands with a category line, and start the main target's
9593 -commands with a category line also. This way, you can ensure that each
9594 -command is placed in the right category regardless of which of the
9595 -dependencies actually run.
9597 - Pre-installation and post-installation commands should not run any
9598 -programs except for these:
9600 - [ basename bash cat chgrp chmod chown cmp cp dd diff echo
9601 - egrep expand expr false fgrep find getopt grep gunzip gzip
9602 - hostname install install-info kill ldconfig ln ls md5sum
9603 - mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
9604 - test touch true uname xargs yes
9606 - The reason for distinguishing the commands in this way is for the
9607 -sake of making binary packages. Typically a binary package contains
9608 -all the executables and other files that need to be installed, and has
9609 -its own method of installing them--so it does not need to run the normal
9610 -installation commands. But installing the binary package does need to
9611 -execute the pre-installation and post-installation commands.
9613 - Programs to build binary packages work by extracting the
9614 -pre-installation and post-installation commands. Here is one way of
9615 -extracting the pre-installation commands (the `-s' option to `make' is
9616 -needed to silence messages about entering subdirectories):
9618 - make -s -n install -o all \
9619 - PRE_INSTALL=pre-install \
9620 - POST_INSTALL=post-install \
9621 - NORMAL_INSTALL=normal-install \
9622 - | gawk -f pre-install.awk
9624 -where the file `pre-install.awk' could contain this:
9626 - $0 ~ /^(normal-install|post-install)[ \t]*$/ {on = 0}
9627 - on {print $0}
9628 - $0 ~ /^pre-install[ \t]*$/ {on = 1}
9630 -\x1f
9631 -File: make.info, Node: Quick Reference, Next: Error Messages, Prev: Makefile Conventions, Up: Top
9633 -Appendix A Quick Reference
9634 -**************************
9636 -This appendix summarizes the directives, text manipulation functions,
9637 -and special variables which GNU `make' understands. *Note Special
9638 -Targets::, *Note Catalogue of Implicit Rules: Catalogue of Rules, and
9639 -*Note Summary of Options: Options Summary, for other summaries.
9641 - Here is a summary of the directives GNU `make' recognizes:
9643 -`define VARIABLE'
9644 -`endef'
9645 - Define a multi-line, recursively-expanded variable.
9646 - *Note Sequences::.
9648 -`ifdef VARIABLE'
9649 -`ifndef VARIABLE'
9650 -`ifeq (A,B)'
9651 -`ifeq "A" "B"'
9652 -`ifeq 'A' 'B''
9653 -`ifneq (A,B)'
9654 -`ifneq "A" "B"'
9655 -`ifneq 'A' 'B''
9656 -`else'
9657 -`endif'
9658 - Conditionally evaluate part of the makefile.
9659 - *Note Conditionals::.
9661 -`include FILE'
9662 -`-include FILE'
9663 -`sinclude FILE'
9664 - Include another makefile.
9665 - *Note Including Other Makefiles: Include.
9667 -`override VARIABLE = VALUE'
9668 -`override VARIABLE := VALUE'
9669 -`override VARIABLE += VALUE'
9670 -`override VARIABLE ?= VALUE'
9671 -`override define VARIABLE'
9672 -`endef'
9673 - Define a variable, overriding any previous definition, even one
9674 - from the command line.
9675 - *Note The `override' Directive: Override Directive.
9677 -`export'
9678 - Tell `make' to export all variables to child processes by default.
9679 - *Note Communicating Variables to a Sub-`make': Variables/Recursion.
9681 -`export VARIABLE'
9682 -`export VARIABLE = VALUE'
9683 -`export VARIABLE := VALUE'
9684 -`export VARIABLE += VALUE'
9685 -`export VARIABLE ?= VALUE'
9686 -`unexport VARIABLE'
9687 - Tell `make' whether or not to export a particular variable to child
9688 - processes.
9689 - *Note Communicating Variables to a Sub-`make': Variables/Recursion.
9691 -`vpath PATTERN PATH'
9692 - Specify a search path for files matching a `%' pattern.
9693 - *Note The `vpath' Directive: Selective Search.
9695 -`vpath PATTERN'
9696 - Remove all search paths previously specified for PATTERN.
9698 -`vpath'
9699 - Remove all search paths previously specified in any `vpath'
9700 - directive.
9702 - Here is a summary of the built-in functions (*note Functions::):
9704 -`$(subst FROM,TO,TEXT)'
9705 - Replace FROM with TO in TEXT.
9706 - *Note Functions for String Substitution and Analysis: Text
9707 - Functions.
9709 -`$(patsubst PATTERN,REPLACEMENT,TEXT)'
9710 - Replace words matching PATTERN with REPLACEMENT in TEXT.
9711 - *Note Functions for String Substitution and Analysis: Text
9712 - Functions.
9714 -`$(strip STRING)'
9715 - Remove excess whitespace characters from STRING.
9716 - *Note Functions for String Substitution and Analysis: Text
9717 - Functions.
9719 -`$(findstring FIND,TEXT)'
9720 - Locate FIND in TEXT.
9721 - *Note Functions for String Substitution and Analysis: Text
9722 - Functions.
9724 -`$(filter PATTERN...,TEXT)'
9725 - Select words in TEXT that match one of the PATTERN words.
9726 - *Note Functions for String Substitution and Analysis: Text
9727 - Functions.
9729 -`$(filter-out PATTERN...,TEXT)'
9730 - Select words in TEXT that _do not_ match any of the PATTERN words.
9731 - *Note Functions for String Substitution and Analysis: Text
9732 - Functions.
9734 -`$(sort LIST)'
9735 - Sort the words in LIST lexicographically, removing duplicates.
9736 - *Note Functions for String Substitution and Analysis: Text
9737 - Functions.
9739 -`$(word N,TEXT)'
9740 - Extract the Nth word (one-origin) of TEXT.
9741 - *Note Functions for String Substitution and Analysis: Text
9742 - Functions.
9744 -`$(words TEXT)'
9745 - Count the number of words in TEXT.
9746 - *Note Functions for String Substitution and Analysis: Text
9747 - Functions.
9749 -`$(wordlist S,E,TEXT)'
9750 - Returns the list of words in TEXT from S to E.
9751 - *Note Functions for String Substitution and Analysis: Text
9752 - Functions.
9754 -`$(firstword NAMES...)'
9755 - Extract the first word of NAMES.
9756 - *Note Functions for String Substitution and Analysis: Text
9757 - Functions.
9759 -`$(lastword NAMES...)'
9760 - Extract the last word of NAMES.
9761 - *Note Functions for String Substitution and Analysis: Text
9762 - Functions.
9764 -`$(dir NAMES...)'
9765 - Extract the directory part of each file name.
9766 - *Note Functions for File Names: File Name Functions.
9768 -`$(notdir NAMES...)'
9769 - Extract the non-directory part of each file name.
9770 - *Note Functions for File Names: File Name Functions.
9772 -`$(suffix NAMES...)'
9773 - Extract the suffix (the last `.' and following characters) of each
9774 - file name.
9775 - *Note Functions for File Names: File Name Functions.
9777 -`$(basename NAMES...)'
9778 - Extract the base name (name without suffix) of each file name.
9779 - *Note Functions for File Names: File Name Functions.
9781 -`$(addsuffix SUFFIX,NAMES...)'
9782 - Append SUFFIX to each word in NAMES.
9783 - *Note Functions for File Names: File Name Functions.
9785 -`$(addprefix PREFIX,NAMES...)'
9786 - Prepend PREFIX to each word in NAMES.
9787 - *Note Functions for File Names: File Name Functions.
9789 -`$(join LIST1,LIST2)'
9790 - Join two parallel lists of words.
9791 - *Note Functions for File Names: File Name Functions.
9793 -`$(wildcard PATTERN...)'
9794 - Find file names matching a shell file name pattern (_not_ a `%'
9795 - pattern).
9796 - *Note The Function `wildcard': Wildcard Function.
9798 -`$(realpath NAMES...)'
9799 - For each file name in NAMES, expand to an absolute name that does
9800 - not contain any `.', `..', nor symlinks.
9801 - *Note Functions for File Names: File Name Functions.
9803 -`$(abspath NAMES...)'
9804 - For each file name in NAMES, expand to an absolute name that does
9805 - not contain any `.' or `..' components, but preserves symlinks.
9806 - *Note Functions for File Names: File Name Functions.
9808 -`$(error TEXT...)'
9809 - When this function is evaluated, `make' generates a fatal error
9810 - with the message TEXT.
9811 - *Note Functions That Control Make: Make Control Functions.
9813 -`$(warning TEXT...)'
9814 - When this function is evaluated, `make' generates a warning with
9815 - the message TEXT.
9816 - *Note Functions That Control Make: Make Control Functions.
9818 -`$(shell COMMAND)'
9819 - Execute a shell command and return its output.
9820 - *Note The `shell' Function: Shell Function.
9822 -`$(origin VARIABLE)'
9823 - Return a string describing how the `make' variable VARIABLE was
9824 - defined.
9825 - *Note The `origin' Function: Origin Function.
9827 -`$(flavor VARIABLE)'
9828 - Return a string describing the flavor of the `make' variable
9829 - VARIABLE.
9830 - *Note The `flavor' Function: Flavor Function.
9832 -`$(foreach VAR,WORDS,TEXT)'
9833 - Evaluate TEXT with VAR bound to each word in WORDS, and
9834 - concatenate the results.
9835 - *Note The `foreach' Function: Foreach Function.
9837 -`$(call VAR,PARAM,...)'
9838 - Evaluate the variable VAR replacing any references to `$(1)',
9839 - `$(2)' with the first, second, etc. PARAM values.
9840 - *Note The `call' Function: Call Function.
9842 -`$(eval TEXT)'
9843 - Evaluate TEXT then read the results as makefile commands. Expands
9844 - to the empty string.
9845 - *Note The `eval' Function: Eval Function.
9847 -`$(value VAR)'
9848 - Evaluates to the contents of the variable VAR, with no expansion
9849 - performed on it.
9850 - *Note The `value' Function: Value Function.
9852 - Here is a summary of the automatic variables. *Note Automatic
9853 -Variables::, for full information.
9855 -`$@'
9856 - The file name of the target.
9858 -`$%'
9859 - The target member name, when the target is an archive member.
9861 -`$<'
9862 - The name of the first prerequisite.
9864 -`$?'
9865 - The names of all the prerequisites that are newer than the target,
9866 - with spaces between them. For prerequisites which are archive
9867 - members, only the member named is used (*note Archives::).
9869 -`$^'
9870 -`$+'
9871 - The names of all the prerequisites, with spaces between them. For
9872 - prerequisites which are archive members, only the member named is
9873 - used (*note Archives::). The value of `$^' omits duplicate
9874 - prerequisites, while `$+' retains them and preserves their order.
9876 -`$*'
9877 - The stem with which an implicit rule matches (*note How Patterns
9878 - Match: Pattern Match.).
9880 -`$(@D)'
9881 -`$(@F)'
9882 - The directory part and the file-within-directory part of `$@'.
9884 -`$(*D)'
9885 -`$(*F)'
9886 - The directory part and the file-within-directory part of `$*'.
9888 -`$(%D)'
9889 -`$(%F)'
9890 - The directory part and the file-within-directory part of `$%'.
9892 -`$(<D)'
9893 -`$(<F)'
9894 - The directory part and the file-within-directory part of `$<'.
9896 -`$(^D)'
9897 -`$(^F)'
9898 - The directory part and the file-within-directory part of `$^'.
9900 -`$(+D)'
9901 -`$(+F)'
9902 - The directory part and the file-within-directory part of `$+'.
9904 -`$(?D)'
9905 -`$(?F)'
9906 - The directory part and the file-within-directory part of `$?'.
9908 - These variables are used specially by GNU `make':
9910 -`MAKEFILES'
9911 - Makefiles to be read on every invocation of `make'.
9912 - *Note The Variable `MAKEFILES': MAKEFILES Variable.
9914 -`VPATH'
9915 - Directory search path for files not found in the current directory.
9916 - *Note `VPATH' Search Path for All Prerequisites: General Search.
9918 -`SHELL'
9919 - The name of the system default command interpreter, usually
9920 - `/bin/sh'. You can set `SHELL' in the makefile to change the
9921 - shell used to run commands. *Note Command Execution: Execution.
9922 - The `SHELL' variable is handled specially when importing from and
9923 - exporting to the environment. *Note Choosing the Shell::.
9925 -`MAKESHELL'
9926 - On MS-DOS only, the name of the command interpreter that is to be
9927 - used by `make'. This value takes precedence over the value of
9928 - `SHELL'. *Note MAKESHELL variable: Execution.
9930 -`MAKE'
9931 - The name with which `make' was invoked. Using this variable in
9932 - commands has special meaning. *Note How the `MAKE' Variable
9933 - Works: MAKE Variable.
9935 -`MAKELEVEL'
9936 - The number of levels of recursion (sub-`make's).
9937 - *Note Variables/Recursion::.
9939 -`MAKEFLAGS'
9940 - The flags given to `make'. You can set this in the environment or
9941 - a makefile to set flags.
9942 - *Note Communicating Options to a Sub-`make': Options/Recursion.
9944 - It is _never_ appropriate to use `MAKEFLAGS' directly on a command
9945 - line: its contents may not be quoted correctly for use in the
9946 - shell. Always allow recursive `make''s to obtain these values
9947 - through the environment from its parent.
9949 -`MAKECMDGOALS'
9950 - The targets given to `make' on the command line. Setting this
9951 - variable has no effect on the operation of `make'.
9952 - *Note Arguments to Specify the Goals: Goals.
9954 -`CURDIR'
9955 - Set to the pathname of the current working directory (after all
9956 - `-C' options are processed, if any). Setting this variable has no
9957 - effect on the operation of `make'.
9958 - *Note Recursive Use of `make': Recursion.
9960 -`SUFFIXES'
9961 - The default list of suffixes before `make' reads any makefiles.
9963 -`.LIBPATTERNS'
9964 - Defines the naming of the libraries `make' searches for, and their
9965 - order.
9966 - *Note Directory Search for Link Libraries: Libraries/Search.
9968 -\x1f
9969 -File: make.info, Node: Error Messages, Next: Complex Makefile, Prev: Quick Reference, Up: Top
9971 -Appendix B Errors Generated by Make
9972 -***********************************
9974 -Here is a list of the more common errors you might see generated by
9975 -`make', and some information about what they mean and how to fix them.
9977 - Sometimes `make' errors are not fatal, especially in the presence of
9978 -a `-' prefix on a command script line, or the `-k' command line option.
9979 -Errors that are fatal are prefixed with the string `***'.
9981 - Error messages are all either prefixed with the name of the program
9982 -(usually `make'), or, if the error is found in a makefile, the name of
9983 -the file and linenumber containing the problem.
9985 - In the table below, these common prefixes are left off.
9987 -`[FOO] Error NN'
9988 -`[FOO] SIGNAL DESCRIPTION'
9989 - These errors are not really `make' errors at all. They mean that a
9990 - program that `make' invoked as part of a command script returned a
9991 - non-0 error code (`Error NN'), which `make' interprets as failure,
9992 - or it exited in some other abnormal fashion (with a signal of some
9993 - type). *Note Errors in Commands: Errors.
9995 - If no `***' is attached to the message, then the subprocess failed
9996 - but the rule in the makefile was prefixed with the `-' special
9997 - character, so `make' ignored the error.
9999 -`missing separator. Stop.'
10000 -`missing separator (did you mean TAB instead of 8 spaces?). Stop.'
10001 - This means that `make' could not understand much of anything about
10002 - the command line it just read. GNU `make' looks for various kinds
10003 - of separators (`:', `=', TAB characters, etc.) to help it decide
10004 - what kind of commandline it's seeing. This means it couldn't find
10005 - a valid one.
10007 - One of the most common reasons for this message is that you (or
10008 - perhaps your oh-so-helpful editor, as is the case with many
10009 - MS-Windows editors) have attempted to indent your command scripts
10010 - with spaces instead of a TAB character. In this case, `make' will
10011 - use the second form of the error above. Remember that every line
10012 - in the command script must begin with a TAB character. Eight
10013 - spaces do not count. *Note Rule Syntax::.
10015 -`commands commence before first target. Stop.'
10016 -`missing rule before commands. Stop.'
10017 - This means the first thing in the makefile seems to be part of a
10018 - command script: it begins with a TAB character and doesn't appear
10019 - to be a legal `make' command (such as a variable assignment).
10020 - Command scripts must always be associated with a target.
10022 - The second form is generated if the line has a semicolon as the
10023 - first non-whitespace character; `make' interprets this to mean you
10024 - left out the "target: prerequisite" section of a rule. *Note Rule
10025 - Syntax::.
10027 -`No rule to make target `XXX'.'
10028 -`No rule to make target `XXX', needed by `YYY'.'
10029 - This means that `make' decided it needed to build a target, but
10030 - then couldn't find any instructions in the makefile on how to do
10031 - that, either explicit or implicit (including in the default rules
10032 - database).
10034 - If you want that file to be built, you will need to add a rule to
10035 - your makefile describing how that target can be built. Other
10036 - possible sources of this problem are typos in the makefile (if
10037 - that filename is wrong) or a corrupted source tree (if that file
10038 - is not supposed to be built, but rather only a prerequisite).
10040 -`No targets specified and no makefile found. Stop.'
10041 -`No targets. Stop.'
10042 - The former means that you didn't provide any targets to be built
10043 - on the command line, and `make' couldn't find any makefiles to
10044 - read in. The latter means that some makefile was found, but it
10045 - didn't contain any default goal and none was given on the command
10046 - line. GNU `make' has nothing to do in these situations. *Note
10047 - Arguments to Specify the Makefile: Makefile Arguments.
10049 -`Makefile `XXX' was not found.'
10050 -`Included makefile `XXX' was not found.'
10051 - A makefile specified on the command line (first form) or included
10052 - (second form) was not found.
10054 -`warning: overriding commands for target `XXX''
10055 -`warning: ignoring old commands for target `XXX''
10056 - GNU `make' allows commands to be specified only once per target
10057 - (except for double-colon rules). If you give commands for a target
10058 - which already has been defined to have commands, this warning is
10059 - issued and the second set of commands will overwrite the first set.
10060 - *Note Multiple Rules for One Target: Multiple Rules.
10062 -`Circular XXX <- YYY dependency dropped.'
10063 - This means that `make' detected a loop in the dependency graph:
10064 - after tracing the prerequisite YYY of target XXX, and its
10065 - prerequisites, etc., one of them depended on XXX again.
10067 -`Recursive variable `XXX' references itself (eventually). Stop.'
10068 - This means you've defined a normal (recursive) `make' variable XXX
10069 - that, when it's expanded, will refer to itself (XXX). This is not
10070 - allowed; either use simply-expanded variables (`:=') or use the
10071 - append operator (`+='). *Note How to Use Variables: Using
10072 - Variables.
10074 -`Unterminated variable reference. Stop.'
10075 - This means you forgot to provide the proper closing parenthesis or
10076 - brace in your variable or function reference.
10078 -`insufficient arguments to function `XXX'. Stop.'
10079 - This means you haven't provided the requisite number of arguments
10080 - for this function. See the documentation of the function for a
10081 - description of its arguments. *Note Functions for Transforming
10082 - Text: Functions.
10084 -`missing target pattern. Stop.'
10085 -`multiple target patterns. Stop.'
10086 -`target pattern contains no `%'. Stop.'
10087 -`mixed implicit and static pattern rules. Stop.'
10088 - These are generated for malformed static pattern rules. The first
10089 - means there's no pattern in the target section of the rule; the
10090 - second means there are multiple patterns in the target section;
10091 - the third means the target doesn't contain a pattern character
10092 - (`%'); and the fourth means that all three parts of the static
10093 - pattern rule contain pattern characters (`%')-only the first two
10094 - parts should. *Note Syntax of Static Pattern Rules: Static Usage.
10096 -`warning: -jN forced in submake: disabling jobserver mode.'
10097 - This warning and the next are generated if `make' detects error
10098 - conditions related to parallel processing on systems where
10099 - sub-`make's can communicate (*note Communicating Options to a
10100 - Sub-`make': Options/Recursion.). This warning is generated if a
10101 - recursive invocation of a `make' process is forced to have `-jN'
10102 - in its argument list (where N is greater than one). This could
10103 - happen, for example, if you set the `MAKE' environment variable to
10104 - `make -j2'. In this case, the sub-`make' doesn't communicate with
10105 - other `make' processes and will simply pretend it has two jobs of
10106 - its own.
10108 -`warning: jobserver unavailable: using -j1. Add `+' to parent make rule.'
10109 - In order for `make' processes to communicate, the parent will pass
10110 - information to the child. Since this could result in problems if
10111 - the child process isn't actually a `make', the parent will only do
10112 - this if it thinks the child is a `make'. The parent uses the
10113 - normal algorithms to determine this (*note How the `MAKE' Variable
10114 - Works: MAKE Variable.). If the makefile is constructed such that
10115 - the parent doesn't know the child is a `make' process, then the
10116 - child will receive only part of the information necessary. In
10117 - this case, the child will generate this warning message and
10118 - proceed with its build in a sequential manner.
10121 -\x1f
10122 -File: make.info, Node: Complex Makefile, Next: GNU Free Documentation License, Prev: Error Messages, Up: Top
10124 -Appendix C Complex Makefile Example
10125 -***********************************
10127 -Here is the makefile for the GNU `tar' program. This is a moderately
10128 -complex makefile.
10130 - Because it is the first target, the default goal is `all'. An
10131 -interesting feature of this makefile is that `testpad.h' is a source
10132 -file automatically created by the `testpad' program, itself compiled
10133 -from `testpad.c'.
10135 - If you type `make' or `make all', then `make' creates the `tar'
10136 -executable, the `rmt' daemon that provides remote tape access, and the
10137 -`tar.info' Info file.
10139 - If you type `make install', then `make' not only creates `tar',
10140 -`rmt', and `tar.info', but also installs them.
10142 - If you type `make clean', then `make' removes the `.o' files, and
10143 -the `tar', `rmt', `testpad', `testpad.h', and `core' files.
10145 - If you type `make distclean', then `make' not only removes the same
10146 -files as does `make clean' but also the `TAGS', `Makefile', and
10147 -`config.status' files. (Although it is not evident, this makefile (and
10148 -`config.status') is generated by the user with the `configure' program,
10149 -which is provided in the `tar' distribution, but is not shown here.)
10151 - If you type `make realclean', then `make' removes the same files as
10152 -does `make distclean' and also removes the Info files generated from
10153 -`tar.texinfo'.
10155 - In addition, there are targets `shar' and `dist' that create
10156 -distribution kits.
10158 - # Generated automatically from Makefile.in by configure.
10159 - # Un*x Makefile for GNU tar program.
10160 - # Copyright (C) 1991 Free Software Foundation, Inc.
10162 - # This program is free software; you can redistribute
10163 - # it and/or modify it under the terms of the GNU
10164 - # General Public License ...
10165 - ...
10166 - ...
10168 - SHELL = /bin/sh
10170 - #### Start of system configuration section. ####
10172 - srcdir = .
10174 - # If you use gcc, you should either run the
10175 - # fixincludes script that comes with it or else use
10176 - # gcc with the -traditional option. Otherwise ioctl
10177 - # calls will be compiled incorrectly on some systems.
10178 - CC = gcc -O
10179 - YACC = bison -y
10180 - INSTALL = /usr/local/bin/install -c
10181 - INSTALLDATA = /usr/local/bin/install -c -m 644
10183 - # Things you might add to DEFS:
10184 - # -DSTDC_HEADERS If you have ANSI C headers and
10185 - # libraries.
10186 - # -DPOSIX If you have POSIX.1 headers and
10187 - # libraries.
10188 - # -DBSD42 If you have sys/dir.h (unless
10189 - # you use -DPOSIX), sys/file.h,
10190 - # and st_blocks in `struct stat'.
10191 - # -DUSG If you have System V/ANSI C
10192 - # string and memory functions
10193 - # and headers, sys/sysmacros.h,
10194 - # fcntl.h, getcwd, no valloc,
10195 - # and ndir.h (unless
10196 - # you use -DDIRENT).
10197 - # -DNO_MEMORY_H If USG or STDC_HEADERS but do not
10198 - # include memory.h.
10199 - # -DDIRENT If USG and you have dirent.h
10200 - # instead of ndir.h.
10201 - # -DSIGTYPE=int If your signal handlers
10202 - # return int, not void.
10203 - # -DNO_MTIO If you lack sys/mtio.h
10204 - # (magtape ioctls).
10205 - # -DNO_REMOTE If you do not have a remote shell
10206 - # or rexec.
10207 - # -DUSE_REXEC To use rexec for remote tape
10208 - # operations instead of
10209 - # forking rsh or remsh.
10210 - # -DVPRINTF_MISSING If you lack vprintf function
10211 - # (but have _doprnt).
10212 - # -DDOPRNT_MISSING If you lack _doprnt function.
10213 - # Also need to define
10214 - # -DVPRINTF_MISSING.
10215 - # -DFTIME_MISSING If you lack ftime system call.
10216 - # -DSTRSTR_MISSING If you lack strstr function.
10217 - # -DVALLOC_MISSING If you lack valloc function.
10218 - # -DMKDIR_MISSING If you lack mkdir and
10219 - # rmdir system calls.
10220 - # -DRENAME_MISSING If you lack rename system call.
10221 - # -DFTRUNCATE_MISSING If you lack ftruncate
10222 - # system call.
10223 - # -DV7 On Version 7 Unix (not
10224 - # tested in a long time).
10225 - # -DEMUL_OPEN3 If you lack a 3-argument version
10226 - # of open, and want to emulate it
10227 - # with system calls you do have.
10228 - # -DNO_OPEN3 If you lack the 3-argument open
10229 - # and want to disable the tar -k
10230 - # option instead of emulating open.
10231 - # -DXENIX If you have sys/inode.h
10232 - # and need it 94 to be included.
10234 - DEFS = -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
10235 - -DVPRINTF_MISSING -DBSD42
10236 - # Set this to rtapelib.o unless you defined NO_REMOTE,
10237 - # in which case make it empty.
10238 - RTAPELIB = rtapelib.o
10239 - LIBS =
10240 - DEF_AR_FILE = /dev/rmt8
10241 - DEFBLOCKING = 20
10243 - CDEBUG = -g
10244 - CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
10245 - -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \
10246 - -DDEFBLOCKING=$(DEFBLOCKING)
10247 - LDFLAGS = -g
10249 - prefix = /usr/local
10250 - # Prefix for each installed program,
10251 - # normally empty or `g'.
10252 - binprefix =
10254 - # The directory to install tar in.
10255 - bindir = $(prefix)/bin
10257 - # The directory to install the info files in.
10258 - infodir = $(prefix)/info
10260 - #### End of system configuration section. ####
10262 - SRC1 = tar.c create.c extract.c buffer.c \
10263 - getoldopt.c update.c gnu.c mangle.c
10264 - SRC2 = version.c list.c names.c diffarch.c \
10265 - port.c wildmat.c getopt.c
10266 - SRC3 = getopt1.c regex.c getdate.y
10267 - SRCS = $(SRC1) $(SRC2) $(SRC3)
10268 - OBJ1 = tar.o create.o extract.o buffer.o \
10269 - getoldopt.o update.o gnu.o mangle.o
10270 - OBJ2 = version.o list.o names.o diffarch.o \
10271 - port.o wildmat.o getopt.o
10272 - OBJ3 = getopt1.o regex.o getdate.o $(RTAPELIB)
10273 - OBJS = $(OBJ1) $(OBJ2) $(OBJ3)
10274 - AUX = README COPYING ChangeLog Makefile.in \
10275 - makefile.pc configure configure.in \
10276 - tar.texinfo tar.info* texinfo.tex \
10277 - tar.h port.h open3.h getopt.h regex.h \
10278 - rmt.h rmt.c rtapelib.c alloca.c \
10279 - msd_dir.h msd_dir.c tcexparg.c \
10280 - level-0 level-1 backup-specs testpad.c
10282 - .PHONY: all
10283 - all: tar rmt tar.info
10285 - .PHONY: tar
10286 - tar: $(OBJS)
10287 - $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
10289 - rmt: rmt.c
10290 - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rmt.c
10292 - tar.info: tar.texinfo
10293 - makeinfo tar.texinfo
10295 - .PHONY: install
10296 - install: all
10297 - $(INSTALL) tar $(bindir)/$(binprefix)tar
10298 - -test ! -f rmt || $(INSTALL) rmt /etc/rmt
10299 - $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
10301 - $(OBJS): tar.h port.h testpad.h
10302 - regex.o buffer.o tar.o: regex.h
10303 - # getdate.y has 8 shift/reduce conflicts.
10305 - testpad.h: testpad
10306 - ./testpad
10308 - testpad: testpad.o
10309 - $(CC) -o $@ testpad.o
10311 - TAGS: $(SRCS)
10312 - etags $(SRCS)
10314 - .PHONY: clean
10315 - clean:
10316 - rm -f *.o tar rmt testpad testpad.h core
10318 - .PHONY: distclean
10319 - distclean: clean
10320 - rm -f TAGS Makefile config.status
10322 - .PHONY: realclean
10323 - realclean: distclean
10324 - rm -f tar.info*
10326 - .PHONY: shar
10327 - shar: $(SRCS) $(AUX)
10328 - shar $(SRCS) $(AUX) | compress \
10329 - > tar-`sed -e '/version_string/!d' \
10330 - -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
10331 - -e q
10332 - version.c`.shar.Z
10334 - .PHONY: dist
10335 - dist: $(SRCS) $(AUX)
10336 - echo tar-`sed \
10337 - -e '/version_string/!d' \
10338 - -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
10339 - -e q
10340 - version.c` > .fname
10341 - -rm -rf `cat .fname`
10342 - mkdir `cat .fname`
10343 - ln $(SRCS) $(AUX) `cat .fname`
10344 - tar chZf `cat .fname`.tar.Z `cat .fname`
10345 - -rm -rf `cat .fname` .fname
10347 - tar.zoo: $(SRCS) $(AUX)
10348 - -rm -rf tmp.dir
10349 - -mkdir tmp.dir
10350 - -rm tar.zoo
10351 - for X in $(SRCS) $(AUX) ; do \
10352 - echo $$X ; \
10353 - sed 's/$$/^M/' $$X \
10354 - > tmp.dir/$$X ; done
10355 - cd tmp.dir ; zoo aM ../tar.zoo *
10356 - -rm -rf tmp.dir
10358 -\x1f
10359 -File: make.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Complex Makefile, Up: Top
10361 -Appendix D GNU Free Documentation License
10362 -*****************************************
10364 - Version 1.2, November 2002
10366 - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
10367 - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
10369 - Everyone is permitted to copy and distribute verbatim copies
10370 - of this license document, but changing it is not allowed.
10372 - 0. PREAMBLE
10374 - The purpose of this License is to make a manual, textbook, or other
10375 - functional and useful document "free" in the sense of freedom: to
10376 - assure everyone the effective freedom to copy and redistribute it,
10377 - with or without modifying it, either commercially or
10378 - noncommercially. Secondarily, this License preserves for the
10379 - author and publisher a way to get credit for their work, while not
10380 - being considered responsible for modifications made by others.
10382 - This License is a kind of "copyleft", which means that derivative
10383 - works of the document must themselves be free in the same sense.
10384 - It complements the GNU General Public License, which is a copyleft
10385 - license designed for free software.
10387 - We have designed this License in order to use it for manuals for
10388 - free software, because free software needs free documentation: a
10389 - free program should come with manuals providing the same freedoms
10390 - that the software does. But this License is not limited to
10391 - software manuals; it can be used for any textual work, regardless
10392 - of subject matter or whether it is published as a printed book.
10393 - We recommend this License principally for works whose purpose is
10394 - instruction or reference.
10396 - 1. APPLICABILITY AND DEFINITIONS
10398 - This License applies to any manual or other work, in any medium,
10399 - that contains a notice placed by the copyright holder saying it
10400 - can be distributed under the terms of this License. Such a notice
10401 - grants a world-wide, royalty-free license, unlimited in duration,
10402 - to use that work under the conditions stated herein. The
10403 - "Document", below, refers to any such manual or work. Any member
10404 - of the public is a licensee, and is addressed as "you". You
10405 - accept the license if you copy, modify or distribute the work in a
10406 - way requiring permission under copyright law.
10408 - A "Modified Version" of the Document means any work containing the
10409 - Document or a portion of it, either copied verbatim, or with
10410 - modifications and/or translated into another language.
10412 - A "Secondary Section" is a named appendix or a front-matter section
10413 - of the Document that deals exclusively with the relationship of the
10414 - publishers or authors of the Document to the Document's overall
10415 - subject (or to related matters) and contains nothing that could
10416 - fall directly within that overall subject. (Thus, if the Document
10417 - is in part a textbook of mathematics, a Secondary Section may not
10418 - explain any mathematics.) The relationship could be a matter of
10419 - historical connection with the subject or with related matters, or
10420 - of legal, commercial, philosophical, ethical or political position
10421 - regarding them.
10423 - The "Invariant Sections" are certain Secondary Sections whose
10424 - titles are designated, as being those of Invariant Sections, in
10425 - the notice that says that the Document is released under this
10426 - License. If a section does not fit the above definition of
10427 - Secondary then it is not allowed to be designated as Invariant.
10428 - The Document may contain zero Invariant Sections. If the Document
10429 - does not identify any Invariant Sections then there are none.
10431 - The "Cover Texts" are certain short passages of text that are
10432 - listed, as Front-Cover Texts or Back-Cover Texts, in the notice
10433 - that says that the Document is released under this License. A
10434 - Front-Cover Text may be at most 5 words, and a Back-Cover Text may
10435 - be at most 25 words.
10437 - A "Transparent" copy of the Document means a machine-readable copy,
10438 - represented in a format whose specification is available to the
10439 - general public, that is suitable for revising the document
10440 - straightforwardly with generic text editors or (for images
10441 - composed of pixels) generic paint programs or (for drawings) some
10442 - widely available drawing editor, and that is suitable for input to
10443 - text formatters or for automatic translation to a variety of
10444 - formats suitable for input to text formatters. A copy made in an
10445 - otherwise Transparent file format whose markup, or absence of
10446 - markup, has been arranged to thwart or discourage subsequent
10447 - modification by readers is not Transparent. An image format is
10448 - not Transparent if used for any substantial amount of text. A
10449 - copy that is not "Transparent" is called "Opaque".
10451 - Examples of suitable formats for Transparent copies include plain
10452 - ASCII without markup, Texinfo input format, LaTeX input format,
10453 - SGML or XML using a publicly available DTD, and
10454 - standard-conforming simple HTML, PostScript or PDF designed for
10455 - human modification. Examples of transparent image formats include
10456 - PNG, XCF and JPG. Opaque formats include proprietary formats that
10457 - can be read and edited only by proprietary word processors, SGML or
10458 - XML for which the DTD and/or processing tools are not generally
10459 - available, and the machine-generated HTML, PostScript or PDF
10460 - produced by some word processors for output purposes only.
10462 - The "Title Page" means, for a printed book, the title page itself,
10463 - plus such following pages as are needed to hold, legibly, the
10464 - material this License requires to appear in the title page. For
10465 - works in formats which do not have any title page as such, "Title
10466 - Page" means the text near the most prominent appearance of the
10467 - work's title, preceding the beginning of the body of the text.
10469 - A section "Entitled XYZ" means a named subunit of the Document
10470 - whose title either is precisely XYZ or contains XYZ in parentheses
10471 - following text that translates XYZ in another language. (Here XYZ
10472 - stands for a specific section name mentioned below, such as
10473 - "Acknowledgements", "Dedications", "Endorsements", or "History".)
10474 - To "Preserve the Title" of such a section when you modify the
10475 - Document means that it remains a section "Entitled XYZ" according
10476 - to this definition.
10478 - The Document may include Warranty Disclaimers next to the notice
10479 - which states that this License applies to the Document. These
10480 - Warranty Disclaimers are considered to be included by reference in
10481 - this License, but only as regards disclaiming warranties: any other
10482 - implication that these Warranty Disclaimers may have is void and
10483 - has no effect on the meaning of this License.
10485 - 2. VERBATIM COPYING
10487 - You may copy and distribute the Document in any medium, either
10488 - commercially or noncommercially, provided that this License, the
10489 - copyright notices, and the license notice saying this License
10490 - applies to the Document are reproduced in all copies, and that you
10491 - add no other conditions whatsoever to those of this License. You
10492 - may not use technical measures to obstruct or control the reading
10493 - or further copying of the copies you make or distribute. However,
10494 - you may accept compensation in exchange for copies. If you
10495 - distribute a large enough number of copies you must also follow
10496 - the conditions in section 3.
10498 - You may also lend copies, under the same conditions stated above,
10499 - and you may publicly display copies.
10501 - 3. COPYING IN QUANTITY
10503 - If you publish printed copies (or copies in media that commonly
10504 - have printed covers) of the Document, numbering more than 100, and
10505 - the Document's license notice requires Cover Texts, you must
10506 - enclose the copies in covers that carry, clearly and legibly, all
10507 - these Cover Texts: Front-Cover Texts on the front cover, and
10508 - Back-Cover Texts on the back cover. Both covers must also clearly
10509 - and legibly identify you as the publisher of these copies. The
10510 - front cover must present the full title with all words of the
10511 - title equally prominent and visible. You may add other material
10512 - on the covers in addition. Copying with changes limited to the
10513 - covers, as long as they preserve the title of the Document and
10514 - satisfy these conditions, can be treated as verbatim copying in
10515 - other respects.
10517 - If the required texts for either cover are too voluminous to fit
10518 - legibly, you should put the first ones listed (as many as fit
10519 - reasonably) on the actual cover, and continue the rest onto
10520 - adjacent pages.
10522 - If you publish or distribute Opaque copies of the Document
10523 - numbering more than 100, you must either include a
10524 - machine-readable Transparent copy along with each Opaque copy, or
10525 - state in or with each Opaque copy a computer-network location from
10526 - which the general network-using public has access to download
10527 - using public-standard network protocols a complete Transparent
10528 - copy of the Document, free of added material. If you use the
10529 - latter option, you must take reasonably prudent steps, when you
10530 - begin distribution of Opaque copies in quantity, to ensure that
10531 - this Transparent copy will remain thus accessible at the stated
10532 - location until at least one year after the last time you
10533 - distribute an Opaque copy (directly or through your agents or
10534 - retailers) of that edition to the public.
10536 - It is requested, but not required, that you contact the authors of
10537 - the Document well before redistributing any large number of
10538 - copies, to give them a chance to provide you with an updated
10539 - version of the Document.
10541 - 4. MODIFICATIONS
10543 - You may copy and distribute a Modified Version of the Document
10544 - under the conditions of sections 2 and 3 above, provided that you
10545 - release the Modified Version under precisely this License, with
10546 - the Modified Version filling the role of the Document, thus
10547 - licensing distribution and modification of the Modified Version to
10548 - whoever possesses a copy of it. In addition, you must do these
10549 - things in the Modified Version:
10551 - A. Use in the Title Page (and on the covers, if any) a title
10552 - distinct from that of the Document, and from those of
10553 - previous versions (which should, if there were any, be listed
10554 - in the History section of the Document). You may use the
10555 - same title as a previous version if the original publisher of
10556 - that version gives permission.
10558 - B. List on the Title Page, as authors, one or more persons or
10559 - entities responsible for authorship of the modifications in
10560 - the Modified Version, together with at least five of the
10561 - principal authors of the Document (all of its principal
10562 - authors, if it has fewer than five), unless they release you
10563 - from this requirement.
10565 - C. State on the Title page the name of the publisher of the
10566 - Modified Version, as the publisher.
10568 - D. Preserve all the copyright notices of the Document.
10570 - E. Add an appropriate copyright notice for your modifications
10571 - adjacent to the other copyright notices.
10573 - F. Include, immediately after the copyright notices, a license
10574 - notice giving the public permission to use the Modified
10575 - Version under the terms of this License, in the form shown in
10576 - the Addendum below.
10578 - G. Preserve in that license notice the full lists of Invariant
10579 - Sections and required Cover Texts given in the Document's
10580 - license notice.
10582 - H. Include an unaltered copy of this License.
10584 - I. Preserve the section Entitled "History", Preserve its Title,
10585 - and add to it an item stating at least the title, year, new
10586 - authors, and publisher of the Modified Version as given on
10587 - the Title Page. If there is no section Entitled "History" in
10588 - the Document, create one stating the title, year, authors,
10589 - and publisher of the Document as given on its Title Page,
10590 - then add an item describing the Modified Version as stated in
10591 - the previous sentence.
10593 - J. Preserve the network location, if any, given in the Document
10594 - for public access to a Transparent copy of the Document, and
10595 - likewise the network locations given in the Document for
10596 - previous versions it was based on. These may be placed in
10597 - the "History" section. You may omit a network location for a
10598 - work that was published at least four years before the
10599 - Document itself, or if the original publisher of the version
10600 - it refers to gives permission.
10602 - K. For any section Entitled "Acknowledgements" or "Dedications",
10603 - Preserve the Title of the section, and preserve in the
10604 - section all the substance and tone of each of the contributor
10605 - acknowledgements and/or dedications given therein.
10607 - L. Preserve all the Invariant Sections of the Document,
10608 - unaltered in their text and in their titles. Section numbers
10609 - or the equivalent are not considered part of the section
10610 - titles.
10612 - M. Delete any section Entitled "Endorsements". Such a section
10613 - may not be included in the Modified Version.
10615 - N. Do not retitle any existing section to be Entitled
10616 - "Endorsements" or to conflict in title with any Invariant
10617 - Section.
10619 - O. Preserve any Warranty Disclaimers.
10621 - If the Modified Version includes new front-matter sections or
10622 - appendices that qualify as Secondary Sections and contain no
10623 - material copied from the Document, you may at your option
10624 - designate some or all of these sections as invariant. To do this,
10625 - add their titles to the list of Invariant Sections in the Modified
10626 - Version's license notice. These titles must be distinct from any
10627 - other section titles.
10629 - You may add a section Entitled "Endorsements", provided it contains
10630 - nothing but endorsements of your Modified Version by various
10631 - parties--for example, statements of peer review or that the text
10632 - has been approved by an organization as the authoritative
10633 - definition of a standard.
10635 - You may add a passage of up to five words as a Front-Cover Text,
10636 - and a passage of up to 25 words as a Back-Cover Text, to the end
10637 - of the list of Cover Texts in the Modified Version. Only one
10638 - passage of Front-Cover Text and one of Back-Cover Text may be
10639 - added by (or through arrangements made by) any one entity. If the
10640 - Document already includes a cover text for the same cover,
10641 - previously added by you or by arrangement made by the same entity
10642 - you are acting on behalf of, you may not add another; but you may
10643 - replace the old one, on explicit permission from the previous
10644 - publisher that added the old one.
10646 - The author(s) and publisher(s) of the Document do not by this
10647 - License give permission to use their names for publicity for or to
10648 - assert or imply endorsement of any Modified Version.
10650 - 5. COMBINING DOCUMENTS
10652 - You may combine the Document with other documents released under
10653 - this License, under the terms defined in section 4 above for
10654 - modified versions, provided that you include in the combination
10655 - all of the Invariant Sections of all of the original documents,
10656 - unmodified, and list them all as Invariant Sections of your
10657 - combined work in its license notice, and that you preserve all
10658 - their Warranty Disclaimers.
10660 - The combined work need only contain one copy of this License, and
10661 - multiple identical Invariant Sections may be replaced with a single
10662 - copy. If there are multiple Invariant Sections with the same name
10663 - but different contents, make the title of each such section unique
10664 - by adding at the end of it, in parentheses, the name of the
10665 - original author or publisher of that section if known, or else a
10666 - unique number. Make the same adjustment to the section titles in
10667 - the list of Invariant Sections in the license notice of the
10668 - combined work.
10670 - In the combination, you must combine any sections Entitled
10671 - "History" in the various original documents, forming one section
10672 - Entitled "History"; likewise combine any sections Entitled
10673 - "Acknowledgements", and any sections Entitled "Dedications". You
10674 - must delete all sections Entitled "Endorsements."
10676 - 6. COLLECTIONS OF DOCUMENTS
10678 - You may make a collection consisting of the Document and other
10679 - documents released under this License, and replace the individual
10680 - copies of this License in the various documents with a single copy
10681 - that is included in the collection, provided that you follow the
10682 - rules of this License for verbatim copying of each of the
10683 - documents in all other respects.
10685 - You may extract a single document from such a collection, and
10686 - distribute it individually under this License, provided you insert
10687 - a copy of this License into the extracted document, and follow
10688 - this License in all other respects regarding verbatim copying of
10689 - that document.
10691 - 7. AGGREGATION WITH INDEPENDENT WORKS
10693 - A compilation of the Document or its derivatives with other
10694 - separate and independent documents or works, in or on a volume of
10695 - a storage or distribution medium, is called an "aggregate" if the
10696 - copyright resulting from the compilation is not used to limit the
10697 - legal rights of the compilation's users beyond what the individual
10698 - works permit. When the Document is included in an aggregate, this
10699 - License does not apply to the other works in the aggregate which
10700 - are not themselves derivative works of the Document.
10702 - If the Cover Text requirement of section 3 is applicable to these
10703 - copies of the Document, then if the Document is less than one half
10704 - of the entire aggregate, the Document's Cover Texts may be placed
10705 - on covers that bracket the Document within the aggregate, or the
10706 - electronic equivalent of covers if the Document is in electronic
10707 - form. Otherwise they must appear on printed covers that bracket
10708 - the whole aggregate.
10710 - 8. TRANSLATION
10712 - Translation is considered a kind of modification, so you may
10713 - distribute translations of the Document under the terms of section
10714 - 4. Replacing Invariant Sections with translations requires special
10715 - permission from their copyright holders, but you may include
10716 - translations of some or all Invariant Sections in addition to the
10717 - original versions of these Invariant Sections. You may include a
10718 - translation of this License, and all the license notices in the
10719 - Document, and any Warranty Disclaimers, provided that you also
10720 - include the original English version of this License and the
10721 - original versions of those notices and disclaimers. In case of a
10722 - disagreement between the translation and the original version of
10723 - this License or a notice or disclaimer, the original version will
10724 - prevail.
10726 - If a section in the Document is Entitled "Acknowledgements",
10727 - "Dedications", or "History", the requirement (section 4) to
10728 - Preserve its Title (section 1) will typically require changing the
10729 - actual title.
10731 - 9. TERMINATION
10733 - You may not copy, modify, sublicense, or distribute the Document
10734 - except as expressly provided for under this License. Any other
10735 - attempt to copy, modify, sublicense or distribute the Document is
10736 - void, and will automatically terminate your rights under this
10737 - License. However, parties who have received copies, or rights,
10738 - from you under this License will not have their licenses
10739 - terminated so long as such parties remain in full compliance.
10741 - 10. FUTURE REVISIONS OF THIS LICENSE
10743 - The Free Software Foundation may publish new, revised versions of
10744 - the GNU Free Documentation License from time to time. Such new
10745 - versions will be similar in spirit to the present version, but may
10746 - differ in detail to address new problems or concerns. See
10747 - `http://www.gnu.org/copyleft/'.
10749 - Each version of the License is given a distinguishing version
10750 - number. If the Document specifies that a particular numbered
10751 - version of this License "or any later version" applies to it, you
10752 - have the option of following the terms and conditions either of
10753 - that specified version or of any later version that has been
10754 - published (not as a draft) by the Free Software Foundation. If
10755 - the Document does not specify a version number of this License,
10756 - you may choose any version ever published (not as a draft) by the
10757 - Free Software Foundation.
10759 -D.1 ADDENDUM: How to use this License for your documents
10760 -========================================================
10762 -To use this License in a document you have written, include a copy of
10763 -the License in the document and put the following copyright and license
10764 -notices just after the title page:
10766 - Copyright (C) YEAR YOUR NAME.
10767 - Permission is granted to copy, distribute and/or modify this document
10768 - under the terms of the GNU Free Documentation License, Version 1.2
10769 - or any later version published by the Free Software Foundation;
10770 - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
10771 - Texts. A copy of the license is included in the section entitled ``GNU
10772 - Free Documentation License''.
10774 - If you have Invariant Sections, Front-Cover Texts and Back-Cover
10775 -Texts, replace the "with...Texts." line with this:
10777 - with the Invariant Sections being LIST THEIR TITLES, with
10778 - the Front-Cover Texts being LIST, and with the Back-Cover Texts
10779 - being LIST.
10781 - If you have Invariant Sections without Cover Texts, or some other
10782 -combination of the three, merge those two alternatives to suit the
10783 -situation.
10785 - If your document contains nontrivial examples of program code, we
10786 -recommend releasing these examples in parallel under your choice of
10787 -free software license, such as the GNU General Public License, to
10788 -permit their use in free software.
10790 -\x1f
10791 -File: make.info, Node: Concept Index, Next: Name Index, Prev: GNU Free Documentation License, Up: Top
10793 -Index of Concepts
10794 -*****************
10796 -\0\b[index\0\b]
10797 -* Menu:
10799 -* # (comments), in commands: Command Syntax. (line 27)
10800 -* # (comments), in makefile: Makefile Contents. (line 41)
10801 -* #include: Automatic Prerequisites.
10802 - (line 16)
10803 -* $, in function call: Syntax of Functions. (line 6)
10804 -* $, in rules: Rule Syntax. (line 32)
10805 -* $, in variable name: Computed Names. (line 6)
10806 -* $, in variable reference: Reference. (line 6)
10807 -* %, in pattern rules: Pattern Intro. (line 9)
10808 -* %, quoting in patsubst: Text Functions. (line 26)
10809 -* %, quoting in static pattern: Static Usage. (line 37)
10810 -* %, quoting in vpath: Selective Search. (line 38)
10811 -* %, quoting with \ (backslash) <1>: Text Functions. (line 26)
10812 -* %, quoting with \ (backslash) <2>: Static Usage. (line 37)
10813 -* %, quoting with \ (backslash): Selective Search. (line 38)
10814 -* * (wildcard character): Wildcards. (line 6)
10815 -* +, and command execution: Instead of Execution.
10816 - (line 58)
10817 -* +, and commands: MAKE Variable. (line 18)
10818 -* +, and define: Sequences. (line 50)
10819 -* +=: Appending. (line 6)
10820 -* +=, expansion: Reading Makefiles. (line 33)
10821 -* ,v (RCS file extension): Catalogue of Rules. (line 164)
10822 -* - (in commands): Errors. (line 19)
10823 -* -, and define: Sequences. (line 50)
10824 -* --always-make: Options Summary. (line 15)
10825 -* --assume-new <1>: Options Summary. (line 242)
10826 -* --assume-new: Instead of Execution.
10827 - (line 33)
10828 -* --assume-new, and recursion: Options/Recursion. (line 22)
10829 -* --assume-old <1>: Options Summary. (line 147)
10830 -* --assume-old: Avoiding Compilation.
10831 - (line 6)
10832 -* --assume-old, and recursion: Options/Recursion. (line 22)
10833 -* --check-symlink-times: Options Summary. (line 130)
10834 -* --debug: Options Summary. (line 42)
10835 -* --directory <1>: Options Summary. (line 26)
10836 -* --directory: Recursion. (line 20)
10837 -* --directory, and --print-directory: -w Option. (line 20)
10838 -* --directory, and recursion: Options/Recursion. (line 22)
10839 -* --dry-run <1>: Options Summary. (line 140)
10840 -* --dry-run <2>: Instead of Execution.
10841 - (line 14)
10842 -* --dry-run: Echoing. (line 18)
10843 -* --environment-overrides: Options Summary. (line 78)
10844 -* --file <1>: Options Summary. (line 84)
10845 -* --file <2>: Makefile Arguments. (line 6)
10846 -* --file: Makefile Names. (line 23)
10847 -* --file, and recursion: Options/Recursion. (line 22)
10848 -* --help: Options Summary. (line 90)
10849 -* --ignore-errors <1>: Options Summary. (line 94)
10850 -* --ignore-errors: Errors. (line 30)
10851 -* --include-dir <1>: Options Summary. (line 99)
10852 -* --include-dir: Include. (line 52)
10853 -* --jobs <1>: Options Summary. (line 106)
10854 -* --jobs: Parallel. (line 6)
10855 -* --jobs, and recursion: Options/Recursion. (line 25)
10856 -* --just-print <1>: Options Summary. (line 139)
10857 -* --just-print <2>: Instead of Execution.
10858 - (line 14)
10859 -* --just-print: Echoing. (line 18)
10860 -* --keep-going <1>: Options Summary. (line 115)
10861 -* --keep-going <2>: Testing. (line 16)
10862 -* --keep-going: Errors. (line 47)
10863 -* --load-average <1>: Options Summary. (line 122)
10864 -* --load-average: Parallel. (line 57)
10865 -* --makefile <1>: Options Summary. (line 85)
10866 -* --makefile <2>: Makefile Arguments. (line 6)
10867 -* --makefile: Makefile Names. (line 23)
10868 -* --max-load <1>: Options Summary. (line 123)
10869 -* --max-load: Parallel. (line 57)
10870 -* --new-file <1>: Options Summary. (line 241)
10871 -* --new-file: Instead of Execution.
10872 - (line 33)
10873 -* --new-file, and recursion: Options/Recursion. (line 22)
10874 -* --no-builtin-rules: Options Summary. (line 175)
10875 -* --no-builtin-variables: Options Summary. (line 188)
10876 -* --no-keep-going: Options Summary. (line 203)
10877 -* --no-print-directory <1>: Options Summary. (line 233)
10878 -* --no-print-directory: -w Option. (line 20)
10879 -* --old-file <1>: Options Summary. (line 146)
10880 -* --old-file: Avoiding Compilation.
10881 - (line 6)
10882 -* --old-file, and recursion: Options/Recursion. (line 22)
10883 -* --print-data-base: Options Summary. (line 155)
10884 -* --print-directory: Options Summary. (line 225)
10885 -* --print-directory, and --directory: -w Option. (line 20)
10886 -* --print-directory, and recursion: -w Option. (line 20)
10887 -* --print-directory, disabling: -w Option. (line 20)
10888 -* --question <1>: Options Summary. (line 167)
10889 -* --question: Instead of Execution.
10890 - (line 25)
10891 -* --quiet <1>: Options Summary. (line 198)
10892 -* --quiet: Echoing. (line 24)
10893 -* --recon <1>: Options Summary. (line 141)
10894 -* --recon <2>: Instead of Execution.
10895 - (line 14)
10896 -* --recon: Echoing. (line 18)
10897 -* --silent <1>: Options Summary. (line 197)
10898 -* --silent: Echoing. (line 24)
10899 -* --stop: Options Summary. (line 204)
10900 -* --touch <1>: Options Summary. (line 212)
10901 -* --touch: Instead of Execution.
10902 - (line 19)
10903 -* --touch, and recursion: MAKE Variable. (line 34)
10904 -* --version: Options Summary. (line 220)
10905 -* --warn-undefined-variables: Options Summary. (line 251)
10906 -* --what-if <1>: Options Summary. (line 240)
10907 -* --what-if: Instead of Execution.
10908 - (line 33)
10909 -* -B: Options Summary. (line 14)
10910 -* -b: Options Summary. (line 9)
10911 -* -C <1>: Options Summary. (line 25)
10912 -* -C: Recursion. (line 20)
10913 -* -C, and -w: -w Option. (line 20)
10914 -* -C, and recursion: Options/Recursion. (line 22)
10915 -* -d: Options Summary. (line 33)
10916 -* -e: Options Summary. (line 77)
10917 -* -e (shell flag): Automatic Prerequisites.
10918 - (line 66)
10919 -* -f <1>: Options Summary. (line 83)
10920 -* -f <2>: Makefile Arguments. (line 6)
10921 -* -f: Makefile Names. (line 23)
10922 -* -f, and recursion: Options/Recursion. (line 22)
10923 -* -h: Options Summary. (line 89)
10924 -* -I: Options Summary. (line 98)
10925 -* -i <1>: Options Summary. (line 93)
10926 -* -i: Errors. (line 30)
10927 -* -I: Include. (line 52)
10928 -* -j <1>: Options Summary. (line 105)
10929 -* -j: Parallel. (line 6)
10930 -* -j, and archive update: Archive Pitfalls. (line 6)
10931 -* -j, and recursion: Options/Recursion. (line 25)
10932 -* -k <1>: Options Summary. (line 114)
10933 -* -k <2>: Testing. (line 16)
10934 -* -k: Errors. (line 47)
10935 -* -L: Options Summary. (line 129)
10936 -* -l: Options Summary. (line 121)
10937 -* -l (library search): Libraries/Search. (line 6)
10938 -* -l (load average): Parallel. (line 57)
10939 -* -m: Options Summary. (line 10)
10940 -* -M (to compiler): Automatic Prerequisites.
10941 - (line 18)
10942 -* -MM (to GNU compiler): Automatic Prerequisites.
10943 - (line 68)
10944 -* -n <1>: Options Summary. (line 138)
10945 -* -n <2>: Instead of Execution.
10946 - (line 14)
10947 -* -n: Echoing. (line 18)
10948 -* -o <1>: Options Summary. (line 145)
10949 -* -o: Avoiding Compilation.
10950 - (line 6)
10951 -* -o, and recursion: Options/Recursion. (line 22)
10952 -* -p: Options Summary. (line 154)
10953 -* -q <1>: Options Summary. (line 166)
10954 -* -q: Instead of Execution.
10955 - (line 25)
10956 -* -R: Options Summary. (line 187)
10957 -* -r: Options Summary. (line 174)
10958 -* -S: Options Summary. (line 202)
10959 -* -s <1>: Options Summary. (line 196)
10960 -* -s: Echoing. (line 24)
10961 -* -t <1>: Options Summary. (line 211)
10962 -* -t: Instead of Execution.
10963 - (line 19)
10964 -* -t, and recursion: MAKE Variable. (line 34)
10965 -* -v: Options Summary. (line 219)
10966 -* -W: Options Summary. (line 239)
10967 -* -w: Options Summary. (line 224)
10968 -* -W: Instead of Execution.
10969 - (line 33)
10970 -* -w, and -C: -w Option. (line 20)
10971 -* -w, and recursion: -w Option. (line 20)
10972 -* -W, and recursion: Options/Recursion. (line 22)
10973 -* -w, disabling: -w Option. (line 20)
10974 -* .a (archives): Archive Suffix Rules.
10975 - (line 6)
10976 -* .C: Catalogue of Rules. (line 39)
10977 -* .c: Catalogue of Rules. (line 35)
10978 -* .cc: Catalogue of Rules. (line 39)
10979 -* .ch: Catalogue of Rules. (line 151)
10980 -* .cpp: Catalogue of Rules. (line 39)
10981 -* .d: Automatic Prerequisites.
10982 - (line 81)
10983 -* .def: Catalogue of Rules. (line 74)
10984 -* .dvi: Catalogue of Rules. (line 151)
10985 -* .F: Catalogue of Rules. (line 49)
10986 -* .f: Catalogue of Rules. (line 49)
10987 -* .info: Catalogue of Rules. (line 158)
10988 -* .l: Catalogue of Rules. (line 124)
10989 -* .LIBPATTERNS, and link libraries: Libraries/Search. (line 6)
10990 -* .ln: Catalogue of Rules. (line 146)
10991 -* .mod: Catalogue of Rules. (line 74)
10992 -* .o: Catalogue of Rules. (line 35)
10993 -* .p: Catalogue of Rules. (line 45)
10994 -* .PRECIOUS intermediate files: Chained Rules. (line 56)
10995 -* .r: Catalogue of Rules. (line 49)
10996 -* .S: Catalogue of Rules. (line 82)
10997 -* .s: Catalogue of Rules. (line 79)
10998 -* .sh: Catalogue of Rules. (line 180)
10999 -* .sym: Catalogue of Rules. (line 74)
11000 -* .tex: Catalogue of Rules. (line 151)
11001 -* .texi: Catalogue of Rules. (line 158)
11002 -* .texinfo: Catalogue of Rules. (line 158)
11003 -* .txinfo: Catalogue of Rules. (line 158)
11004 -* .w: Catalogue of Rules. (line 151)
11005 -* .web: Catalogue of Rules. (line 151)
11006 -* .y: Catalogue of Rules. (line 120)
11007 -* :: rules (double-colon): Double-Colon. (line 6)
11008 -* := <1>: Setting. (line 6)
11009 -* :=: Flavors. (line 56)
11010 -* = <1>: Setting. (line 6)
11011 -* =: Flavors. (line 10)
11012 -* =, expansion: Reading Makefiles. (line 33)
11013 -* ? (wildcard character): Wildcards. (line 6)
11014 -* ?= <1>: Setting. (line 6)
11015 -* ?=: Flavors. (line 129)
11016 -* ?=, expansion: Reading Makefiles. (line 33)
11017 -* @ (in commands): Echoing. (line 6)
11018 -* @, and define: Sequences. (line 50)
11019 -* [...] (wildcard characters): Wildcards. (line 6)
11020 -* \ (backslash), for continuation lines: Simple Makefile. (line 40)
11021 -* \ (backslash), in commands: Splitting Lines. (line 6)
11022 -* \ (backslash), to quote % <1>: Text Functions. (line 26)
11023 -* \ (backslash), to quote % <2>: Static Usage. (line 37)
11024 -* \ (backslash), to quote %: Selective Search. (line 38)
11025 -* __.SYMDEF: Archive Symbols. (line 6)
11026 -* abspath: File Name Functions. (line 121)
11027 -* algorithm for directory search: Search Algorithm. (line 6)
11028 -* all (standard target): Goals. (line 72)
11029 -* appending to variables: Appending. (line 6)
11030 -* ar: Implicit Variables. (line 41)
11031 -* archive: Archives. (line 6)
11032 -* archive member targets: Archive Members. (line 6)
11033 -* archive symbol directory updating: Archive Symbols. (line 6)
11034 -* archive, and -j: Archive Pitfalls. (line 6)
11035 -* archive, and parallel execution: Archive Pitfalls. (line 6)
11036 -* archive, suffix rule for: Archive Suffix Rules.
11037 - (line 6)
11038 -* Arg list too long: Options/Recursion. (line 57)
11039 -* arguments of functions: Syntax of Functions. (line 6)
11040 -* as <1>: Implicit Variables. (line 44)
11041 -* as: Catalogue of Rules. (line 79)
11042 -* assembly, rule to compile: Catalogue of Rules. (line 79)
11043 -* automatic generation of prerequisites <1>: Automatic Prerequisites.
11044 - (line 6)
11045 -* automatic generation of prerequisites: Include. (line 50)
11046 -* automatic variables: Automatic Variables. (line 6)
11047 -* automatic variables in prerequisites: Automatic Variables. (line 17)
11048 -* backquotes: Shell Function. (line 6)
11049 -* backslash (\), for continuation lines: Simple Makefile. (line 40)
11050 -* backslash (\), in commands: Splitting Lines. (line 6)
11051 -* backslash (\), to quote % <1>: Text Functions. (line 26)
11052 -* backslash (\), to quote % <2>: Static Usage. (line 37)
11053 -* backslash (\), to quote %: Selective Search. (line 38)
11054 -* backslashes in pathnames and wildcard expansion: Wildcard Pitfall.
11055 - (line 31)
11056 -* basename: File Name Functions. (line 57)
11057 -* binary packages: Install Command Categories.
11058 - (line 80)
11059 -* broken pipe: Parallel. (line 30)
11060 -* bugs, reporting: Bugs. (line 6)
11061 -* built-in special targets: Special Targets. (line 6)
11062 -* C++, rule to compile: Catalogue of Rules. (line 39)
11063 -* C, rule to compile: Catalogue of Rules. (line 35)
11064 -* cc <1>: Implicit Variables. (line 47)
11065 -* cc: Catalogue of Rules. (line 35)
11066 -* cd (shell command) <1>: MAKE Variable. (line 16)
11067 -* cd (shell command): Execution. (line 10)
11068 -* chains of rules: Chained Rules. (line 6)
11069 -* check (standard target): Goals. (line 114)
11070 -* clean (standard target): Goals. (line 75)
11071 -* clean target <1>: Cleanup. (line 11)
11072 -* clean target: Simple Makefile. (line 83)
11073 -* cleaning up: Cleanup. (line 6)
11074 -* clobber (standard target): Goals. (line 86)
11075 -* co <1>: Implicit Variables. (line 56)
11076 -* co: Catalogue of Rules. (line 164)
11077 -* combining rules by prerequisite: Combine By Prerequisite.
11078 - (line 6)
11079 -* command line variable definitions, and recursion: Options/Recursion.
11080 - (line 17)
11081 -* command line variables: Overriding. (line 6)
11082 -* command syntax: Command Syntax. (line 6)
11083 -* commands: Rule Syntax. (line 26)
11084 -* commands setting shell variables: Execution. (line 10)
11085 -* commands, backslash (\) in: Splitting Lines. (line 6)
11086 -* commands, comments in: Command Syntax. (line 27)
11087 -* commands, echoing: Echoing. (line 6)
11088 -* commands, empty: Empty Commands. (line 6)
11089 -* commands, errors in: Errors. (line 6)
11090 -* commands, execution: Execution. (line 6)
11091 -* commands, execution in parallel: Parallel. (line 6)
11092 -* commands, expansion: Shell Function. (line 6)
11093 -* commands, how to write: Commands. (line 6)
11094 -* commands, instead of executing: Instead of Execution.
11095 - (line 6)
11096 -* commands, introduction to: Rule Introduction. (line 8)
11097 -* commands, quoting newlines in: Splitting Lines. (line 6)
11098 -* commands, sequences of: Sequences. (line 6)
11099 -* commands, splitting: Splitting Lines. (line 6)
11100 -* commands, using variables in: Variables in Commands.
11101 - (line 6)
11102 -* comments, in commands: Command Syntax. (line 27)
11103 -* comments, in makefile: Makefile Contents. (line 41)
11104 -* compatibility: Features. (line 6)
11105 -* compatibility in exporting: Variables/Recursion. (line 105)
11106 -* compilation, testing: Testing. (line 6)
11107 -* computed variable name: Computed Names. (line 6)
11108 -* conditional expansion: Conditional Functions.
11109 - (line 6)
11110 -* conditional variable assignment: Flavors. (line 129)
11111 -* conditionals: Conditionals. (line 6)
11112 -* continuation lines: Simple Makefile. (line 40)
11113 -* controlling make: Make Control Functions.
11114 - (line 6)
11115 -* conventions for makefiles: Makefile Conventions.
11116 - (line 6)
11117 -* ctangle <1>: Implicit Variables. (line 107)
11118 -* ctangle: Catalogue of Rules. (line 151)
11119 -* cweave <1>: Implicit Variables. (line 101)
11120 -* cweave: Catalogue of Rules. (line 151)
11121 -* data base of make rules: Options Summary. (line 155)
11122 -* deducing commands (implicit rules): make Deduces. (line 6)
11123 -* default directories for included makefiles: Include. (line 52)
11124 -* default goal <1>: Rules. (line 11)
11125 -* default goal: How Make Works. (line 11)
11126 -* default makefile name: Makefile Names. (line 6)
11127 -* default rules, last-resort: Last Resort. (line 6)
11128 -* define, expansion: Reading Makefiles. (line 33)
11129 -* defining variables verbatim: Defining. (line 6)
11130 -* deletion of target files <1>: Interrupts. (line 6)
11131 -* deletion of target files: Errors. (line 64)
11132 -* directive: Makefile Contents. (line 28)
11133 -* directories, printing them: -w Option. (line 6)
11134 -* directories, updating archive symbol: Archive Symbols. (line 6)
11135 -* directory part: File Name Functions. (line 17)
11136 -* directory search (VPATH): Directory Search. (line 6)
11137 -* directory search (VPATH), and implicit rules: Implicit/Search.
11138 - (line 6)
11139 -* directory search (VPATH), and link libraries: Libraries/Search.
11140 - (line 6)
11141 -* directory search (VPATH), and shell commands: Commands/Search.
11142 - (line 6)
11143 -* directory search algorithm: Search Algorithm. (line 6)
11144 -* directory search, traditional (GPATH): Search Algorithm. (line 42)
11145 -* dist (standard target): Goals. (line 106)
11146 -* distclean (standard target): Goals. (line 84)
11147 -* dollar sign ($), in function call: Syntax of Functions. (line 6)
11148 -* dollar sign ($), in rules: Rule Syntax. (line 32)
11149 -* dollar sign ($), in variable name: Computed Names. (line 6)
11150 -* dollar sign ($), in variable reference: Reference. (line 6)
11151 -* DOS, choosing a shell in: Choosing the Shell. (line 36)
11152 -* double-colon rules: Double-Colon. (line 6)
11153 -* duplicate words, removing: Text Functions. (line 155)
11154 -* E2BIG: Options/Recursion. (line 57)
11155 -* echoing of commands: Echoing. (line 6)
11156 -* editor: Introduction. (line 22)
11157 -* Emacs (M-x compile): Errors. (line 62)
11158 -* empty commands: Empty Commands. (line 6)
11159 -* empty targets: Empty Targets. (line 6)
11160 -* environment: Environment. (line 6)
11161 -* environment, and recursion: Variables/Recursion. (line 6)
11162 -* environment, SHELL in: Choosing the Shell. (line 10)
11163 -* error, stopping on: Make Control Functions.
11164 - (line 11)
11165 -* errors (in commands): Errors. (line 6)
11166 -* errors with wildcards: Wildcard Pitfall. (line 6)
11167 -* evaluating makefile syntax: Eval Function. (line 6)
11168 -* execution, in parallel: Parallel. (line 6)
11169 -* execution, instead of: Instead of Execution.
11170 - (line 6)
11171 -* execution, of commands: Execution. (line 6)
11172 -* exit status (errors): Errors. (line 6)
11173 -* exit status of make: Running. (line 18)
11174 -* expansion, secondary: Secondary Expansion. (line 6)
11175 -* explicit rule, definition of: Makefile Contents. (line 10)
11176 -* explicit rule, expansion: Reading Makefiles. (line 62)
11177 -* explicit rules, secondary expansion of: Secondary Expansion.
11178 - (line 106)
11179 -* exporting variables: Variables/Recursion. (line 6)
11180 -* f77 <1>: Implicit Variables. (line 64)
11181 -* f77: Catalogue of Rules. (line 49)
11182 -* FDL, GNU Free Documentation License: GNU Free Documentation License.
11183 - (line 6)
11184 -* features of GNU make: Features. (line 6)
11185 -* features, missing: Missing. (line 6)
11186 -* file name functions: File Name Functions. (line 6)
11187 -* file name of makefile: Makefile Names. (line 6)
11188 -* file name of makefile, how to specify: Makefile Names. (line 30)
11189 -* file name prefix, adding: File Name Functions. (line 79)
11190 -* file name suffix: File Name Functions. (line 43)
11191 -* file name suffix, adding: File Name Functions. (line 68)
11192 -* file name with wildcards: Wildcards. (line 6)
11193 -* file name, abspath of: File Name Functions. (line 121)
11194 -* file name, basename of: File Name Functions. (line 57)
11195 -* file name, directory part: File Name Functions. (line 17)
11196 -* file name, nondirectory part: File Name Functions. (line 27)
11197 -* file name, realpath of: File Name Functions. (line 114)
11198 -* files, assuming new: Instead of Execution.
11199 - (line 33)
11200 -* files, assuming old: Avoiding Compilation.
11201 - (line 6)
11202 -* files, avoiding recompilation of: Avoiding Compilation.
11203 - (line 6)
11204 -* files, intermediate: Chained Rules. (line 16)
11205 -* filtering out words: Text Functions. (line 132)
11206 -* filtering words: Text Functions. (line 114)
11207 -* finding strings: Text Functions. (line 103)
11208 -* flags: Options Summary. (line 6)
11209 -* flags for compilers: Implicit Variables. (line 6)
11210 -* flavor of variable: Flavor Function. (line 6)
11211 -* flavors of variables: Flavors. (line 6)
11212 -* FORCE: Force Targets. (line 6)
11213 -* force targets: Force Targets. (line 6)
11214 -* Fortran, rule to compile: Catalogue of Rules. (line 49)
11215 -* functions: Functions. (line 6)
11216 -* functions, for controlling make: Make Control Functions.
11217 - (line 6)
11218 -* functions, for file names: File Name Functions. (line 6)
11219 -* functions, for text: Text Functions. (line 6)
11220 -* functions, syntax of: Syntax of Functions. (line 6)
11221 -* functions, user defined: Call Function. (line 6)
11222 -* g++ <1>: Implicit Variables. (line 53)
11223 -* g++: Catalogue of Rules. (line 39)
11224 -* gcc: Catalogue of Rules. (line 35)
11225 -* generating prerequisites automatically <1>: Automatic Prerequisites.
11226 - (line 6)
11227 -* generating prerequisites automatically: Include. (line 50)
11228 -* get <1>: Implicit Variables. (line 67)
11229 -* get: Catalogue of Rules. (line 173)
11230 -* globbing (wildcards): Wildcards. (line 6)
11231 -* goal: How Make Works. (line 11)
11232 -* goal, default <1>: Rules. (line 11)
11233 -* goal, default: How Make Works. (line 11)
11234 -* goal, how to specify: Goals. (line 6)
11235 -* home directory: Wildcards. (line 11)
11236 -* IEEE Standard 1003.2: Overview. (line 13)
11237 -* ifdef, expansion: Reading Makefiles. (line 51)
11238 -* ifeq, expansion: Reading Makefiles. (line 51)
11239 -* ifndef, expansion: Reading Makefiles. (line 51)
11240 -* ifneq, expansion: Reading Makefiles. (line 51)
11241 -* implicit rule: Implicit Rules. (line 6)
11242 -* implicit rule, and directory search: Implicit/Search. (line 6)
11243 -* implicit rule, and VPATH: Implicit/Search. (line 6)
11244 -* implicit rule, definition of: Makefile Contents. (line 16)
11245 -* implicit rule, expansion: Reading Makefiles. (line 62)
11246 -* implicit rule, how to use: Using Implicit. (line 6)
11247 -* implicit rule, introduction to: make Deduces. (line 6)
11248 -* implicit rule, predefined: Catalogue of Rules. (line 6)
11249 -* implicit rule, search algorithm: Implicit Rule Search.
11250 - (line 6)
11251 -* implicit rules, secondary expansion of: Secondary Expansion.
11252 - (line 146)
11253 -* included makefiles, default directories: Include. (line 52)
11254 -* including (MAKEFILE_LIST variable): MAKEFILE_LIST Variable.
11255 - (line 6)
11256 -* including (MAKEFILES variable): MAKEFILES Variable. (line 6)
11257 -* including other makefiles: Include. (line 6)
11258 -* incompatibilities: Missing. (line 6)
11259 -* Info, rule to format: Catalogue of Rules. (line 158)
11260 -* install (standard target): Goals. (line 92)
11261 -* intermediate files: Chained Rules. (line 16)
11262 -* intermediate files, preserving: Chained Rules. (line 46)
11263 -* intermediate targets, explicit: Special Targets. (line 44)
11264 -* interrupt: Interrupts. (line 6)
11265 -* job slots: Parallel. (line 6)
11266 -* job slots, and recursion: Options/Recursion. (line 25)
11267 -* jobs, limiting based on load: Parallel. (line 57)
11268 -* joining lists of words: File Name Functions. (line 90)
11269 -* killing (interruption): Interrupts. (line 6)
11270 -* last-resort default rules: Last Resort. (line 6)
11271 -* ld: Catalogue of Rules. (line 86)
11272 -* lex <1>: Implicit Variables. (line 71)
11273 -* lex: Catalogue of Rules. (line 124)
11274 -* Lex, rule to run: Catalogue of Rules. (line 124)
11275 -* libraries for linking, directory search: Libraries/Search. (line 6)
11276 -* library archive, suffix rule for: Archive Suffix Rules.
11277 - (line 6)
11278 -* limiting jobs based on load: Parallel. (line 57)
11279 -* link libraries, and directory search: Libraries/Search. (line 6)
11280 -* link libraries, patterns matching: Libraries/Search. (line 6)
11281 -* linking, predefined rule for: Catalogue of Rules. (line 86)
11282 -* lint <1>: Implicit Variables. (line 78)
11283 -* lint: Catalogue of Rules. (line 146)
11284 -* lint, rule to run: Catalogue of Rules. (line 146)
11285 -* list of all prerequisites: Automatic Variables. (line 61)
11286 -* list of changed prerequisites: Automatic Variables. (line 51)
11287 -* load average: Parallel. (line 57)
11288 -* loops in variable expansion: Flavors. (line 44)
11289 -* lpr (shell command) <1>: Empty Targets. (line 25)
11290 -* lpr (shell command): Wildcard Examples. (line 21)
11291 -* m2c <1>: Implicit Variables. (line 81)
11292 -* m2c: Catalogue of Rules. (line 74)
11293 -* macro: Using Variables. (line 10)
11294 -* make depend: Automatic Prerequisites.
11295 - (line 37)
11296 -* makefile: Introduction. (line 7)
11297 -* makefile name: Makefile Names. (line 6)
11298 -* makefile name, how to specify: Makefile Names. (line 30)
11299 -* makefile rule parts: Rule Introduction. (line 6)
11300 -* makefile syntax, evaluating: Eval Function. (line 6)
11301 -* makefile, and MAKEFILES variable: MAKEFILES Variable. (line 6)
11302 -* makefile, conventions for: Makefile Conventions.
11303 - (line 6)
11304 -* makefile, how make processes: How Make Works. (line 6)
11305 -* makefile, how to write: Makefiles. (line 6)
11306 -* makefile, including: Include. (line 6)
11307 -* makefile, overriding: Overriding Makefiles.
11308 - (line 6)
11309 -* makefile, parsing: Reading Makefiles. (line 6)
11310 -* makefile, remaking of: Remaking Makefiles. (line 6)
11311 -* makefile, simple: Simple Makefile. (line 6)
11312 -* makefiles, and MAKEFILE_LIST variable: MAKEFILE_LIST Variable.
11313 - (line 6)
11314 -* makefiles, and special variables: Special Variables. (line 6)
11315 -* makeinfo <1>: Implicit Variables. (line 88)
11316 -* makeinfo: Catalogue of Rules. (line 158)
11317 -* match-anything rule: Match-Anything Rules.
11318 - (line 6)
11319 -* match-anything rule, used to override: Overriding Makefiles.
11320 - (line 12)
11321 -* missing features: Missing. (line 6)
11322 -* mistakes with wildcards: Wildcard Pitfall. (line 6)
11323 -* modified variable reference: Substitution Refs. (line 6)
11324 -* Modula-2, rule to compile: Catalogue of Rules. (line 74)
11325 -* mostlyclean (standard target): Goals. (line 78)
11326 -* multiple rules for one target: Multiple Rules. (line 6)
11327 -* multiple rules for one target (::): Double-Colon. (line 6)
11328 -* multiple targets: Multiple Targets. (line 6)
11329 -* multiple targets, in pattern rule: Pattern Intro. (line 49)
11330 -* name of makefile: Makefile Names. (line 6)
11331 -* name of makefile, how to specify: Makefile Names. (line 30)
11332 -* nested variable reference: Computed Names. (line 6)
11333 -* newline, quoting, in commands: Splitting Lines. (line 6)
11334 -* newline, quoting, in makefile: Simple Makefile. (line 40)
11335 -* nondirectory part: File Name Functions. (line 27)
11336 -* normal prerequisites: Prerequisite Types. (line 6)
11337 -* OBJ: Variables Simplify. (line 20)
11338 -* obj: Variables Simplify. (line 20)
11339 -* OBJECTS: Variables Simplify. (line 20)
11340 -* objects: Variables Simplify. (line 14)
11341 -* OBJS: Variables Simplify. (line 20)
11342 -* objs: Variables Simplify. (line 20)
11343 -* old-fashioned suffix rules: Suffix Rules. (line 6)
11344 -* options: Options Summary. (line 6)
11345 -* options, and recursion: Options/Recursion. (line 6)
11346 -* options, setting from environment: Options/Recursion. (line 81)
11347 -* options, setting in makefiles: Options/Recursion. (line 81)
11348 -* order of pattern rules: Pattern Intro. (line 57)
11349 -* order-only prerequisites: Prerequisite Types. (line 6)
11350 -* origin of variable: Origin Function. (line 6)
11351 -* overriding makefiles: Overriding Makefiles.
11352 - (line 6)
11353 -* overriding variables with arguments: Overriding. (line 6)
11354 -* overriding with override: Override Directive. (line 6)
11355 -* parallel execution: Parallel. (line 6)
11356 -* parallel execution, and archive update: Archive Pitfalls. (line 6)
11357 -* parallel execution, overriding: Special Targets. (line 135)
11358 -* parts of makefile rule: Rule Introduction. (line 6)
11359 -* Pascal, rule to compile: Catalogue of Rules. (line 45)
11360 -* pattern rule: Pattern Intro. (line 6)
11361 -* pattern rule, expansion: Reading Makefiles. (line 62)
11362 -* pattern rules, order of: Pattern Intro. (line 57)
11363 -* pattern rules, static (not implicit): Static Pattern. (line 6)
11364 -* pattern rules, static, syntax of: Static Usage. (line 6)
11365 -* pattern-specific variables: Pattern-specific. (line 6)
11366 -* pc <1>: Implicit Variables. (line 84)
11367 -* pc: Catalogue of Rules. (line 45)
11368 -* phony targets: Phony Targets. (line 6)
11369 -* pitfalls of wildcards: Wildcard Pitfall. (line 6)
11370 -* portability: Features. (line 6)
11371 -* POSIX: Overview. (line 13)
11372 -* POSIX.2: Options/Recursion. (line 60)
11373 -* post-installation commands: Install Command Categories.
11374 - (line 6)
11375 -* pre-installation commands: Install Command Categories.
11376 - (line 6)
11377 -* precious targets: Special Targets. (line 29)
11378 -* predefined rules and variables, printing: Options Summary. (line 155)
11379 -* prefix, adding: File Name Functions. (line 79)
11380 -* prerequisite: Rules. (line 6)
11381 -* prerequisite pattern, implicit: Pattern Intro. (line 22)
11382 -* prerequisite pattern, static (not implicit): Static Usage. (line 30)
11383 -* prerequisite types: Prerequisite Types. (line 6)
11384 -* prerequisite, expansion: Reading Makefiles. (line 62)
11385 -* prerequisites: Rule Syntax. (line 46)
11386 -* prerequisites, and automatic variables: Automatic Variables.
11387 - (line 17)
11388 -* prerequisites, automatic generation <1>: Automatic Prerequisites.
11389 - (line 6)
11390 -* prerequisites, automatic generation: Include. (line 50)
11391 -* prerequisites, introduction to: Rule Introduction. (line 8)
11392 -* prerequisites, list of all: Automatic Variables. (line 61)
11393 -* prerequisites, list of changed: Automatic Variables. (line 51)
11394 -* prerequisites, normal: Prerequisite Types. (line 6)
11395 -* prerequisites, order-only: Prerequisite Types. (line 6)
11396 -* prerequisites, varying (static pattern): Static Pattern. (line 6)
11397 -* preserving intermediate files: Chained Rules. (line 46)
11398 -* preserving with .PRECIOUS <1>: Chained Rules. (line 56)
11399 -* preserving with .PRECIOUS: Special Targets. (line 29)
11400 -* preserving with .SECONDARY: Special Targets. (line 49)
11401 -* print (standard target): Goals. (line 97)
11402 -* print target <1>: Empty Targets. (line 25)
11403 -* print target: Wildcard Examples. (line 21)
11404 -* printing directories: -w Option. (line 6)
11405 -* printing messages: Make Control Functions.
11406 - (line 43)
11407 -* printing of commands: Echoing. (line 6)
11408 -* printing user warnings: Make Control Functions.
11409 - (line 35)
11410 -* problems and bugs, reporting: Bugs. (line 6)
11411 -* problems with wildcards: Wildcard Pitfall. (line 6)
11412 -* processing a makefile: How Make Works. (line 6)
11413 -* question mode: Instead of Execution.
11414 - (line 25)
11415 -* quoting %, in patsubst: Text Functions. (line 26)
11416 -* quoting %, in static pattern: Static Usage. (line 37)
11417 -* quoting %, in vpath: Selective Search. (line 38)
11418 -* quoting newline, in commands: Splitting Lines. (line 6)
11419 -* quoting newline, in makefile: Simple Makefile. (line 40)
11420 -* Ratfor, rule to compile: Catalogue of Rules. (line 49)
11421 -* RCS, rule to extract from: Catalogue of Rules. (line 164)
11422 -* reading makefiles: Reading Makefiles. (line 6)
11423 -* README: Makefile Names. (line 9)
11424 -* realclean (standard target): Goals. (line 85)
11425 -* realpath: File Name Functions. (line 114)
11426 -* recompilation: Introduction. (line 22)
11427 -* recompilation, avoiding: Avoiding Compilation.
11428 - (line 6)
11429 -* recording events with empty targets: Empty Targets. (line 6)
11430 -* recursion: Recursion. (line 6)
11431 -* recursion, and -C: Options/Recursion. (line 22)
11432 -* recursion, and -f: Options/Recursion. (line 22)
11433 -* recursion, and -j: Options/Recursion. (line 25)
11434 -* recursion, and -o: Options/Recursion. (line 22)
11435 -* recursion, and -t: MAKE Variable. (line 34)
11436 -* recursion, and -w: -w Option. (line 20)
11437 -* recursion, and -W: Options/Recursion. (line 22)
11438 -* recursion, and command line variable definitions: Options/Recursion.
11439 - (line 17)
11440 -* recursion, and environment: Variables/Recursion. (line 6)
11441 -* recursion, and MAKE variable: MAKE Variable. (line 6)
11442 -* recursion, and MAKEFILES variable: MAKEFILES Variable. (line 14)
11443 -* recursion, and options: Options/Recursion. (line 6)
11444 -* recursion, and printing directories: -w Option. (line 6)
11445 -* recursion, and variables: Variables/Recursion. (line 6)
11446 -* recursion, level of: Variables/Recursion. (line 115)
11447 -* recursive variable expansion <1>: Flavors. (line 6)
11448 -* recursive variable expansion: Using Variables. (line 6)
11449 -* recursively expanded variables: Flavors. (line 6)
11450 -* reference to variables <1>: Advanced. (line 6)
11451 -* reference to variables: Reference. (line 6)
11452 -* relinking: How Make Works. (line 46)
11453 -* remaking makefiles: Remaking Makefiles. (line 6)
11454 -* removal of target files <1>: Interrupts. (line 6)
11455 -* removal of target files: Errors. (line 64)
11456 -* removing duplicate words: Text Functions. (line 155)
11457 -* removing targets on failure: Special Targets. (line 68)
11458 -* removing, to clean up: Cleanup. (line 6)
11459 -* reporting bugs: Bugs. (line 6)
11460 -* rm: Implicit Variables. (line 110)
11461 -* rm (shell command) <1>: Errors. (line 27)
11462 -* rm (shell command) <2>: Phony Targets. (line 20)
11463 -* rm (shell command) <3>: Wildcard Examples. (line 12)
11464 -* rm (shell command): Simple Makefile. (line 83)
11465 -* rule commands: Commands. (line 6)
11466 -* rule prerequisites: Rule Syntax. (line 46)
11467 -* rule syntax: Rule Syntax. (line 6)
11468 -* rule targets: Rule Syntax. (line 18)
11469 -* rule, double-colon (::): Double-Colon. (line 6)
11470 -* rule, explicit, definition of: Makefile Contents. (line 10)
11471 -* rule, how to write: Rules. (line 6)
11472 -* rule, implicit: Implicit Rules. (line 6)
11473 -* rule, implicit, and directory search: Implicit/Search. (line 6)
11474 -* rule, implicit, and VPATH: Implicit/Search. (line 6)
11475 -* rule, implicit, chains of: Chained Rules. (line 6)
11476 -* rule, implicit, definition of: Makefile Contents. (line 16)
11477 -* rule, implicit, how to use: Using Implicit. (line 6)
11478 -* rule, implicit, introduction to: make Deduces. (line 6)
11479 -* rule, implicit, predefined: Catalogue of Rules. (line 6)
11480 -* rule, introduction to: Rule Introduction. (line 6)
11481 -* rule, multiple for one target: Multiple Rules. (line 6)
11482 -* rule, no commands or prerequisites: Force Targets. (line 6)
11483 -* rule, pattern: Pattern Intro. (line 6)
11484 -* rule, static pattern: Static Pattern. (line 6)
11485 -* rule, static pattern versus implicit: Static versus Implicit.
11486 - (line 6)
11487 -* rule, with multiple targets: Multiple Targets. (line 6)
11488 -* rules, and $: Rule Syntax. (line 32)
11489 -* s. (SCCS file prefix): Catalogue of Rules. (line 173)
11490 -* SCCS, rule to extract from: Catalogue of Rules. (line 173)
11491 -* search algorithm, implicit rule: Implicit Rule Search.
11492 - (line 6)
11493 -* search path for prerequisites (VPATH): Directory Search. (line 6)
11494 -* search path for prerequisites (VPATH), and implicit rules: Implicit/Search.
11495 - (line 6)
11496 -* search path for prerequisites (VPATH), and link libraries: Libraries/Search.
11497 - (line 6)
11498 -* searching for strings: Text Functions. (line 103)
11499 -* secondary expansion: Secondary Expansion. (line 6)
11500 -* secondary expansion and explicit rules: Secondary Expansion.
11501 - (line 106)
11502 -* secondary expansion and implicit rules: Secondary Expansion.
11503 - (line 146)
11504 -* secondary expansion and static pattern rules: Secondary Expansion.
11505 - (line 138)
11506 -* secondary files: Chained Rules. (line 46)
11507 -* secondary targets: Special Targets. (line 49)
11508 -* sed (shell command): Automatic Prerequisites.
11509 - (line 73)
11510 -* selecting a word: Text Functions. (line 159)
11511 -* selecting word lists: Text Functions. (line 168)
11512 -* sequences of commands: Sequences. (line 6)
11513 -* setting options from environment: Options/Recursion. (line 81)
11514 -* setting options in makefiles: Options/Recursion. (line 81)
11515 -* setting variables: Setting. (line 6)
11516 -* several rules for one target: Multiple Rules. (line 6)
11517 -* several targets in a rule: Multiple Targets. (line 6)
11518 -* shar (standard target): Goals. (line 103)
11519 -* shell command: Simple Makefile. (line 72)
11520 -* shell command, and directory search: Commands/Search. (line 6)
11521 -* shell command, execution: Execution. (line 6)
11522 -* shell command, function for: Shell Function. (line 6)
11523 -* shell file name pattern (in include): Include. (line 13)
11524 -* shell variables, setting in commands: Execution. (line 10)
11525 -* shell wildcards (in include): Include. (line 13)
11526 -* shell, choosing the: Choosing the Shell. (line 6)
11527 -* SHELL, exported value: Variables/Recursion. (line 23)
11528 -* SHELL, import from environment: Environment. (line 37)
11529 -* shell, in DOS and Windows: Choosing the Shell. (line 36)
11530 -* SHELL, MS-DOS specifics: Choosing the Shell. (line 42)
11531 -* SHELL, value of: Choosing the Shell. (line 6)
11532 -* signal: Interrupts. (line 6)
11533 -* silent operation: Echoing. (line 6)
11534 -* simple makefile: Simple Makefile. (line 6)
11535 -* simple variable expansion: Using Variables. (line 6)
11536 -* simplifying with variables: Variables Simplify. (line 6)
11537 -* simply expanded variables: Flavors. (line 56)
11538 -* sorting words: Text Functions. (line 146)
11539 -* spaces, in variable values: Flavors. (line 103)
11540 -* spaces, stripping: Text Functions. (line 80)
11541 -* special targets: Special Targets. (line 6)
11542 -* special variables: Special Variables. (line 6)
11543 -* specifying makefile name: Makefile Names. (line 30)
11544 -* splitting commands: Splitting Lines. (line 6)
11545 -* standard input: Parallel. (line 30)
11546 -* standards conformance: Overview. (line 13)
11547 -* standards for makefiles: Makefile Conventions.
11548 - (line 6)
11549 -* static pattern rule: Static Pattern. (line 6)
11550 -* static pattern rule, syntax of: Static Usage. (line 6)
11551 -* static pattern rule, versus implicit: Static versus Implicit.
11552 - (line 6)
11553 -* static pattern rules, secondary expansion of: Secondary Expansion.
11554 - (line 138)
11555 -* stem <1>: Pattern Match. (line 6)
11556 -* stem: Static Usage. (line 17)
11557 -* stem, variable for: Automatic Variables. (line 77)
11558 -* stopping make: Make Control Functions.
11559 - (line 11)
11560 -* strings, searching for: Text Functions. (line 103)
11561 -* stripping whitespace: Text Functions. (line 80)
11562 -* sub-make: Variables/Recursion. (line 6)
11563 -* subdirectories, recursion for: Recursion. (line 6)
11564 -* substitution variable reference: Substitution Refs. (line 6)
11565 -* suffix rule: Suffix Rules. (line 6)
11566 -* suffix rule, for archive: Archive Suffix Rules.
11567 - (line 6)
11568 -* suffix, adding: File Name Functions. (line 68)
11569 -* suffix, function to find: File Name Functions. (line 43)
11570 -* suffix, substituting in variables: Substitution Refs. (line 6)
11571 -* switches: Options Summary. (line 6)
11572 -* symbol directories, updating archive: Archive Symbols. (line 6)
11573 -* syntax of commands: Command Syntax. (line 6)
11574 -* syntax of rules: Rule Syntax. (line 6)
11575 -* tab character (in commands): Rule Syntax. (line 26)
11576 -* tabs in rules: Rule Introduction. (line 21)
11577 -* TAGS (standard target): Goals. (line 111)
11578 -* tangle <1>: Implicit Variables. (line 104)
11579 -* tangle: Catalogue of Rules. (line 151)
11580 -* tar (standard target): Goals. (line 100)
11581 -* target: Rules. (line 6)
11582 -* target pattern, implicit: Pattern Intro. (line 9)
11583 -* target pattern, static (not implicit): Static Usage. (line 17)
11584 -* target, deleting on error: Errors. (line 64)
11585 -* target, deleting on interrupt: Interrupts. (line 6)
11586 -* target, expansion: Reading Makefiles. (line 62)
11587 -* target, multiple in pattern rule: Pattern Intro. (line 49)
11588 -* target, multiple rules for one: Multiple Rules. (line 6)
11589 -* target, touching: Instead of Execution.
11590 - (line 19)
11591 -* target-specific variables: Target-specific. (line 6)
11592 -* targets: Rule Syntax. (line 18)
11593 -* targets without a file: Phony Targets. (line 6)
11594 -* targets, built-in special: Special Targets. (line 6)
11595 -* targets, empty: Empty Targets. (line 6)
11596 -* targets, force: Force Targets. (line 6)
11597 -* targets, introduction to: Rule Introduction. (line 8)
11598 -* targets, multiple: Multiple Targets. (line 6)
11599 -* targets, phony: Phony Targets. (line 6)
11600 -* terminal rule: Match-Anything Rules.
11601 - (line 6)
11602 -* test (standard target): Goals. (line 115)
11603 -* testing compilation: Testing. (line 6)
11604 -* tex <1>: Implicit Variables. (line 91)
11605 -* tex: Catalogue of Rules. (line 151)
11606 -* TeX, rule to run: Catalogue of Rules. (line 151)
11607 -* texi2dvi <1>: Implicit Variables. (line 95)
11608 -* texi2dvi: Catalogue of Rules. (line 158)
11609 -* Texinfo, rule to format: Catalogue of Rules. (line 158)
11610 -* tilde (~): Wildcards. (line 11)
11611 -* touch (shell command) <1>: Empty Targets. (line 25)
11612 -* touch (shell command): Wildcard Examples. (line 21)
11613 -* touching files: Instead of Execution.
11614 - (line 19)
11615 -* traditional directory search (GPATH): Search Algorithm. (line 42)
11616 -* types of prerequisites: Prerequisite Types. (line 6)
11617 -* undefined variables, warning message: Options Summary. (line 251)
11618 -* updating archive symbol directories: Archive Symbols. (line 6)
11619 -* updating makefiles: Remaking Makefiles. (line 6)
11620 -* user defined functions: Call Function. (line 6)
11621 -* value: Using Variables. (line 6)
11622 -* value, how a variable gets it: Values. (line 6)
11623 -* variable: Using Variables. (line 6)
11624 -* variable definition: Makefile Contents. (line 22)
11625 -* variable references in commands: Variables in Commands.
11626 - (line 6)
11627 -* variables: Variables Simplify. (line 6)
11628 -* variables, $ in name: Computed Names. (line 6)
11629 -* variables, and implicit rule: Automatic Variables. (line 6)
11630 -* variables, appending to: Appending. (line 6)
11631 -* variables, automatic: Automatic Variables. (line 6)
11632 -* variables, command line: Overriding. (line 6)
11633 -* variables, command line, and recursion: Options/Recursion. (line 17)
11634 -* variables, computed names: Computed Names. (line 6)
11635 -* variables, conditional assignment: Flavors. (line 129)
11636 -* variables, defining verbatim: Defining. (line 6)
11637 -* variables, environment <1>: Environment. (line 6)
11638 -* variables, environment: Variables/Recursion. (line 6)
11639 -* variables, exporting: Variables/Recursion. (line 6)
11640 -* variables, flavor of: Flavor Function. (line 6)
11641 -* variables, flavors: Flavors. (line 6)
11642 -* variables, how they get their values: Values. (line 6)
11643 -* variables, how to reference: Reference. (line 6)
11644 -* variables, loops in expansion: Flavors. (line 44)
11645 -* variables, modified reference: Substitution Refs. (line 6)
11646 -* variables, nested references: Computed Names. (line 6)
11647 -* variables, origin of: Origin Function. (line 6)
11648 -* variables, overriding: Override Directive. (line 6)
11649 -* variables, overriding with arguments: Overriding. (line 6)
11650 -* variables, pattern-specific: Pattern-specific. (line 6)
11651 -* variables, recursively expanded: Flavors. (line 6)
11652 -* variables, setting: Setting. (line 6)
11653 -* variables, simply expanded: Flavors. (line 56)
11654 -* variables, spaces in values: Flavors. (line 103)
11655 -* variables, substituting suffix in: Substitution Refs. (line 6)
11656 -* variables, substitution reference: Substitution Refs. (line 6)
11657 -* variables, target-specific: Target-specific. (line 6)
11658 -* variables, unexpanded value: Value Function. (line 6)
11659 -* variables, warning for undefined: Options Summary. (line 251)
11660 -* varying prerequisites: Static Pattern. (line 6)
11661 -* verbatim variable definition: Defining. (line 6)
11662 -* vpath: Directory Search. (line 6)
11663 -* VPATH, and implicit rules: Implicit/Search. (line 6)
11664 -* VPATH, and link libraries: Libraries/Search. (line 6)
11665 -* warnings, printing: Make Control Functions.
11666 - (line 35)
11667 -* weave <1>: Implicit Variables. (line 98)
11668 -* weave: Catalogue of Rules. (line 151)
11669 -* Web, rule to run: Catalogue of Rules. (line 151)
11670 -* what if: Instead of Execution.
11671 - (line 33)
11672 -* whitespace, in variable values: Flavors. (line 103)
11673 -* whitespace, stripping: Text Functions. (line 80)
11674 -* wildcard: Wildcards. (line 6)
11675 -* wildcard pitfalls: Wildcard Pitfall. (line 6)
11676 -* wildcard, function: File Name Functions. (line 107)
11677 -* wildcard, in archive member: Archive Members. (line 36)
11678 -* wildcard, in include: Include. (line 13)
11679 -* wildcards and MS-DOS/MS-Windows backslashes: Wildcard Pitfall.
11680 - (line 31)
11681 -* Windows, choosing a shell in: Choosing the Shell. (line 36)
11682 -* word, selecting a: Text Functions. (line 159)
11683 -* words, extracting first: Text Functions. (line 184)
11684 -* words, extracting last: Text Functions. (line 197)
11685 -* words, filtering: Text Functions. (line 114)
11686 -* words, filtering out: Text Functions. (line 132)
11687 -* words, finding number: Text Functions. (line 180)
11688 -* words, iterating over: Foreach Function. (line 6)
11689 -* words, joining lists: File Name Functions. (line 90)
11690 -* words, removing duplicates: Text Functions. (line 155)
11691 -* words, selecting lists of: Text Functions. (line 168)
11692 -* writing rule commands: Commands. (line 6)
11693 -* writing rules: Rules. (line 6)
11694 -* yacc <1>: Implicit Variables. (line 75)
11695 -* yacc <2>: Catalogue of Rules. (line 120)
11696 -* yacc: Sequences. (line 18)
11697 -* Yacc, rule to run: Catalogue of Rules. (line 120)
11698 -* ~ (tilde): Wildcards. (line 11)
11700 -\x1f
11701 -File: make.info, Node: Name Index, Prev: Concept Index, Up: Top
11703 -Index of Functions, Variables, & Directives
11704 -*******************************************
11706 -\0\b[index\0\b]
11707 -* Menu:
11709 -* $%: Automatic Variables. (line 37)
11710 -* $(%D): Automatic Variables. (line 129)
11711 -* $(%F): Automatic Variables. (line 130)
11712 -* $(*D): Automatic Variables. (line 124)
11713 -* $(*F): Automatic Variables. (line 125)
11714 -* $(+D): Automatic Variables. (line 147)
11715 -* $(+F): Automatic Variables. (line 148)
11716 -* $(<D): Automatic Variables. (line 137)
11717 -* $(<F): Automatic Variables. (line 138)
11718 -* $(?D): Automatic Variables. (line 153)
11719 -* $(?F): Automatic Variables. (line 154)
11720 -* $(@D): Automatic Variables. (line 113)
11721 -* $(@F): Automatic Variables. (line 119)
11722 -* $(^D): Automatic Variables. (line 142)
11723 -* $(^F): Automatic Variables. (line 143)
11724 -* $*: Automatic Variables. (line 73)
11725 -* $*, and static pattern: Static Usage. (line 81)
11726 -* $+: Automatic Variables. (line 63)
11727 -* $<: Automatic Variables. (line 43)
11728 -* $?: Automatic Variables. (line 48)
11729 -* $@: Automatic Variables. (line 30)
11730 -* $^: Automatic Variables. (line 53)
11731 -* $|: Automatic Variables. (line 69)
11732 -* % (automatic variable): Automatic Variables. (line 37)
11733 -* %D (automatic variable): Automatic Variables. (line 129)
11734 -* %F (automatic variable): Automatic Variables. (line 130)
11735 -* * (automatic variable): Automatic Variables. (line 73)
11736 -* * (automatic variable), unsupported bizarre usage: Missing. (line 44)
11737 -* *D (automatic variable): Automatic Variables. (line 124)
11738 -* *F (automatic variable): Automatic Variables. (line 125)
11739 -* + (automatic variable): Automatic Variables. (line 63)
11740 -* +D (automatic variable): Automatic Variables. (line 147)
11741 -* +F (automatic variable): Automatic Variables. (line 148)
11742 -* .DEFAULT <1>: Last Resort. (line 23)
11743 -* .DEFAULT: Special Targets. (line 20)
11744 -* .DEFAULT, and empty commands: Empty Commands. (line 16)
11745 -* .DEFAULT_GOAL (define default goal): Special Variables. (line 10)
11746 -* .DELETE_ON_ERROR <1>: Errors. (line 64)
11747 -* .DELETE_ON_ERROR: Special Targets. (line 67)
11748 -* .EXPORT_ALL_VARIABLES <1>: Variables/Recursion. (line 99)
11749 -* .EXPORT_ALL_VARIABLES: Special Targets. (line 129)
11750 -* .FEATURES (list of supported features): Special Variables. (line 65)
11751 -* .IGNORE <1>: Errors. (line 30)
11752 -* .IGNORE: Special Targets. (line 74)
11753 -* .INCLUDE_DIRS (list of include directories): Special Variables.
11754 - (line 98)
11755 -* .INTERMEDIATE: Special Targets. (line 43)
11756 -* .LIBPATTERNS: Libraries/Search. (line 6)
11757 -* .LOW_RESOLUTION_TIME: Special Targets. (line 86)
11758 -* .NOTPARALLEL: Special Targets. (line 134)
11759 -* .PHONY <1>: Special Targets. (line 8)
11760 -* .PHONY: Phony Targets. (line 22)
11761 -* .POSIX: Options/Recursion. (line 60)
11762 -* .PRECIOUS <1>: Interrupts. (line 22)
11763 -* .PRECIOUS: Special Targets. (line 28)
11764 -* .SECONDARY: Special Targets. (line 48)
11765 -* .SECONDEXPANSION <1>: Special Targets. (line 57)
11766 -* .SECONDEXPANSION: Secondary Expansion. (line 6)
11767 -* .SILENT <1>: Echoing. (line 24)
11768 -* .SILENT: Special Targets. (line 116)
11769 -* .SUFFIXES <1>: Suffix Rules. (line 61)
11770 -* .SUFFIXES: Special Targets. (line 15)
11771 -* .VARIABLES (list of variables): Special Variables. (line 56)
11772 -* /usr/gnu/include: Include. (line 52)
11773 -* /usr/include: Include. (line 52)
11774 -* /usr/local/include: Include. (line 52)
11775 -* < (automatic variable): Automatic Variables. (line 43)
11776 -* <D (automatic variable): Automatic Variables. (line 137)
11777 -* <F (automatic variable): Automatic Variables. (line 138)
11778 -* ? (automatic variable): Automatic Variables. (line 48)
11779 -* ?D (automatic variable): Automatic Variables. (line 153)
11780 -* ?F (automatic variable): Automatic Variables. (line 154)
11781 -* @ (automatic variable): Automatic Variables. (line 30)
11782 -* @D (automatic variable): Automatic Variables. (line 113)
11783 -* @F (automatic variable): Automatic Variables. (line 119)
11784 -* ^ (automatic variable): Automatic Variables. (line 53)
11785 -* ^D (automatic variable): Automatic Variables. (line 142)
11786 -* ^F (automatic variable): Automatic Variables. (line 143)
11787 -* abspath: File Name Functions. (line 121)
11788 -* addprefix: File Name Functions. (line 79)
11789 -* addsuffix: File Name Functions. (line 68)
11790 -* and: Conditional Functions.
11791 - (line 45)
11792 -* AR: Implicit Variables. (line 41)
11793 -* ARFLAGS: Implicit Variables. (line 117)
11794 -* AS: Implicit Variables. (line 44)
11795 -* ASFLAGS: Implicit Variables. (line 120)
11796 -* basename: File Name Functions. (line 57)
11797 -* bindir: Directory Variables. (line 53)
11798 -* call: Call Function. (line 6)
11799 -* CC: Implicit Variables. (line 47)
11800 -* CFLAGS: Implicit Variables. (line 124)
11801 -* CO: Implicit Variables. (line 50)
11802 -* COFLAGS: Implicit Variables. (line 130)
11803 -* COMSPEC: Choosing the Shell. (line 39)
11804 -* CPP: Implicit Variables. (line 59)
11805 -* CPPFLAGS: Implicit Variables. (line 133)
11806 -* CTANGLE: Implicit Variables. (line 107)
11807 -* CURDIR: Recursion. (line 28)
11808 -* CWEAVE: Implicit Variables. (line 101)
11809 -* CXX: Implicit Variables. (line 53)
11810 -* CXXFLAGS: Implicit Variables. (line 127)
11811 -* define: Defining. (line 6)
11812 -* dir: File Name Functions. (line 17)
11813 -* else: Conditional Syntax. (line 6)
11814 -* endef: Defining. (line 6)
11815 -* endif: Conditional Syntax. (line 6)
11816 -* error: Make Control Functions.
11817 - (line 11)
11818 -* eval: Eval Function. (line 6)
11819 -* exec_prefix: Directory Variables. (line 35)
11820 -* export: Variables/Recursion. (line 40)
11821 -* FC: Implicit Variables. (line 63)
11822 -* FFLAGS: Implicit Variables. (line 137)
11823 -* filter: Text Functions. (line 114)
11824 -* filter-out: Text Functions. (line 132)
11825 -* findstring: Text Functions. (line 103)
11826 -* firstword: Text Functions. (line 184)
11827 -* flavor: Flavor Function. (line 6)
11828 -* foreach: Foreach Function. (line 6)
11829 -* GET: Implicit Variables. (line 67)
11830 -* GFLAGS: Implicit Variables. (line 140)
11831 -* GNUmakefile: Makefile Names. (line 7)
11832 -* GPATH: Search Algorithm. (line 48)
11833 -* if: Conditional Functions.
11834 - (line 6)
11835 -* ifdef: Conditional Syntax. (line 6)
11836 -* ifeq: Conditional Syntax. (line 6)
11837 -* ifndef: Conditional Syntax. (line 6)
11838 -* ifneq: Conditional Syntax. (line 6)
11839 -* include: Include. (line 6)
11840 -* info: Make Control Functions.
11841 - (line 43)
11842 -* join: File Name Functions. (line 90)
11843 -* lastword: Text Functions. (line 197)
11844 -* LDFLAGS: Implicit Variables. (line 143)
11845 -* LEX: Implicit Variables. (line 70)
11846 -* LFLAGS: Implicit Variables. (line 147)
11847 -* libexecdir: Directory Variables. (line 66)
11848 -* LINT: Implicit Variables. (line 78)
11849 -* LINTFLAGS: Implicit Variables. (line 159)
11850 -* M2C: Implicit Variables. (line 81)
11851 -* MAKE <1>: Flavors. (line 84)
11852 -* MAKE: MAKE Variable. (line 6)
11853 -* MAKE_RESTARTS (number of times make has restarted): Special Variables.
11854 - (line 49)
11855 -* MAKE_VERSION: Features. (line 197)
11856 -* MAKECMDGOALS: Goals. (line 30)
11857 -* makefile: Makefile Names. (line 7)
11858 -* Makefile: Makefile Names. (line 7)
11859 -* MAKEFILE_LIST: MAKEFILE_LIST Variable.
11860 - (line 6)
11861 -* MAKEFILES <1>: Variables/Recursion. (line 127)
11862 -* MAKEFILES: MAKEFILES Variable. (line 6)
11863 -* MAKEFLAGS: Options/Recursion. (line 6)
11864 -* MAKEINFO: Implicit Variables. (line 87)
11865 -* MAKELEVEL <1>: Flavors. (line 84)
11866 -* MAKELEVEL: Variables/Recursion. (line 115)
11867 -* MAKEOVERRIDES: Options/Recursion. (line 49)
11868 -* MAKESHELL (MS-DOS alternative to SHELL): Choosing the Shell.
11869 - (line 25)
11870 -* MFLAGS: Options/Recursion. (line 65)
11871 -* notdir: File Name Functions. (line 27)
11872 -* or: Conditional Functions.
11873 - (line 37)
11874 -* origin: Origin Function. (line 6)
11875 -* OUTPUT_OPTION: Catalogue of Rules. (line 202)
11876 -* override: Override Directive. (line 6)
11877 -* patsubst <1>: Text Functions. (line 18)
11878 -* patsubst: Substitution Refs. (line 28)
11879 -* PC: Implicit Variables. (line 84)
11880 -* PFLAGS: Implicit Variables. (line 153)
11881 -* prefix: Directory Variables. (line 25)
11882 -* realpath: File Name Functions. (line 114)
11883 -* RFLAGS: Implicit Variables. (line 156)
11884 -* RM: Implicit Variables. (line 110)
11885 -* sbindir: Directory Variables. (line 59)
11886 -* shell: Shell Function. (line 6)
11887 -* SHELL: Choosing the Shell. (line 6)
11888 -* SHELL (command execution): Execution. (line 6)
11889 -* sort: Text Functions. (line 146)
11890 -* strip: Text Functions. (line 80)
11891 -* subst <1>: Text Functions. (line 9)
11892 -* subst: Multiple Targets. (line 28)
11893 -* suffix: File Name Functions. (line 43)
11894 -* SUFFIXES: Suffix Rules. (line 81)
11895 -* TANGLE: Implicit Variables. (line 104)
11896 -* TEX: Implicit Variables. (line 91)
11897 -* TEXI2DVI: Implicit Variables. (line 94)
11898 -* unexport: Variables/Recursion. (line 45)
11899 -* value: Value Function. (line 6)
11900 -* vpath: Selective Search. (line 6)
11901 -* VPATH: General Search. (line 6)
11902 -* vpath: Directory Search. (line 6)
11903 -* VPATH: Directory Search. (line 6)
11904 -* warning: Make Control Functions.
11905 - (line 35)
11906 -* WEAVE: Implicit Variables. (line 98)
11907 -* wildcard <1>: File Name Functions. (line 107)
11908 -* wildcard: Wildcard Function. (line 6)
11909 -* word: Text Functions. (line 159)
11910 -* wordlist: Text Functions. (line 168)
11911 -* words: Text Functions. (line 180)
11912 -* YACC: Implicit Variables. (line 74)
11913 -* YFLAGS: Implicit Variables. (line 150)
11914 -* | (automatic variable): Automatic Variables. (line 69)
11917 diff -rNU3 dist.orig/doc/make.texi dist/doc/make.texi
11918 --- dist.orig/doc/make.texi 2006-04-01 08:36:40.000000000 +0200
11919 +++ dist/doc/make.texi 2014-08-18 08:47:47.000000000 +0200
11920 @@ -4,7 +4,7 @@
11922 @include version.texi
11923 @set EDITION 0.70
11924 -@set RCSID $Id: make.texi,v 1.45 2006/04/01 06:36:40 psmith Exp $
11925 +@set RCSID $Id: make.texi,v 1.1.1.1 2014/08/18 06:47:47 christos Exp $
11927 @settitle GNU @code{make}
11928 @setchapternewpage odd
11929 diff -rNU3 dist.orig/po/Makefile.in.in dist/po/Makefile.in.in
11930 --- dist.orig/po/Makefile.in.in 2006-04-01 08:39:51.000000000 +0200
11931 +++ dist/po/Makefile.in.in 2014-08-18 08:57:25.000000000 +0200
11932 @@ -13,7 +13,7 @@
11933 PACKAGE = @PACKAGE@
11934 VERSION = @VERSION@
11936 -SHELL = /bin/sh
11937 +SHELL = @SHELL@
11938 @SET_MAKE@
11940 srcdir = @srcdir@
11941 diff -rNU3 dist.orig/tests/scripts/functions/foreach dist/tests/scripts/functions/foreach
11942 --- dist.orig/tests/scripts/functions/foreach 2006-03-10 03:20:46.000000000 +0100
11943 +++ dist/tests/scripts/functions/foreach 2014-08-18 08:47:57.000000000 +0200
11944 @@ -1,5 +1,5 @@
11945 # -*-perl-*-
11946 -# $Id: foreach,v 1.5 2006/03/10 02:20:46 psmith Exp $
11947 +# $Id: foreach,v 1.1.1.1 2014/08/18 06:47:57 christos Exp $
11949 $description = "Test the foreach function.";
11951 diff -rNU3 dist.orig/tests/test_driver.pl dist/tests/test_driver.pl
11952 --- dist.orig/tests/test_driver.pl 2006-03-10 03:20:45.000000000 +0100
11953 +++ dist/tests/test_driver.pl 2014-08-18 08:47:57.000000000 +0200
11954 @@ -28,7 +28,7 @@
11955 # this routine controls the whole mess; each test suite sets up a few
11956 # variables and then calls &toplevel, which does all the real work.
11958 -# $Id: test_driver.pl,v 1.19 2006/03/10 02:20:45 psmith Exp $
11959 +# $Id: test_driver.pl,v 1.1.1.1 2014/08/18 06:47:57 christos Exp $
11962 # The number of test categories we've run
11963 diff -rNU3 dist.orig/w32/include/sub_proc.h dist/w32/include/sub_proc.h
11964 --- dist.orig/w32/include/sub_proc.h 2006-02-11 23:16:05.000000000 +0100
11965 +++ dist/w32/include/sub_proc.h 2014-08-18 08:47:56.000000000 +0200
11966 @@ -21,11 +21,11 @@
11968 * Component Name:
11970 - * $Date: 2006/02/11 22:16:05 $
11971 + * $Date: 2014/08/18 06:47:56 $
11973 - * $Source: /sources/make/make/w32/include/sub_proc.h,v $
11974 + * $Source: /cvsroot/src/external/gpl2/gmake/dist/w32/include/sub_proc.h,v $
11976 - * $Id: sub_proc.h,v 1.8 2006/02/11 22:16:05 psmith Exp $
11977 + * $Id: sub_proc.h,v 1.1.1.1 2014/08/18 06:47:56 christos Exp $
11980 #define EXTERN_DECL(entry, args) extern entry args