mirror of
https://salsa.debian.org/srivasta/make-dfsg.git
synced 2025-02-06 03:33:03 +00:00
Formerly make.texinfo.~36~
This commit is contained in:
parent
c29174d96b
commit
099b302768
1 changed files with 45 additions and 42 deletions
87
make.texinfo
87
make.texinfo
|
@ -6,7 +6,7 @@
|
|||
@smallbook
|
||||
@c %**end of header
|
||||
|
||||
@finalout
|
||||
@c finalout
|
||||
|
||||
@c Combine the variable and function indices:
|
||||
@synindex vr fn
|
||||
|
@ -102,8 +102,8 @@ This manual describes @code{make} and contains the following chapters:@refill
|
|||
|
||||
@c !!! Edit descriptions.
|
||||
@menu
|
||||
* Copying:: GNU GENERAL PUBLIC LICENSE
|
||||
* Overview:: Introducing @code{make}.
|
||||
* Copying:: Your rights and freedoms.
|
||||
* Introduction:: An introduction to makefiles.
|
||||
* Makefiles:: Writing Makefiles
|
||||
* Rules:: Writing Rules
|
||||
|
@ -116,8 +116,7 @@ This manual describes @code{make} and contains the following chapters:@refill
|
|||
* Archives:: Using @code{make} to Update Archive Files
|
||||
* Features:: Features of GNU @code{make}
|
||||
* Missing:: Missing Features of GNU @code{make}
|
||||
* Summary:: Summary of Directives, Special Targets,
|
||||
and Special Variables
|
||||
* Quick Reference:: Quick Reference
|
||||
* Complex Makefile:: Complex Makefile
|
||||
* Concept Index:: Index of Concepts
|
||||
* Name Index:: Index of Functions, Variables, & Directives
|
||||
|
@ -302,6 +301,7 @@ Implicit Rule for Archive Member Targets
|
|||
@include gpl.texinfo
|
||||
|
||||
@node Overview, Introduction, Copying, Top
|
||||
@comment node-name, next, previous, up
|
||||
@chapter Overview of @code{make}
|
||||
|
||||
The @code{make} utility automatically determines which pieces of a
|
||||
|
@ -321,7 +321,7 @@ from others whenever the others change.
|
|||
* Bugs:: Problems and Bugs
|
||||
@end menu
|
||||
|
||||
@node Preparing, Reading, Overview, Overview
|
||||
@node Preparing, Reading, Overview , Overview
|
||||
@ifinfo
|
||||
@heading Preparing and Running Make
|
||||
@end ifinfo
|
||||
|
@ -363,7 +363,7 @@ If you are familiar with other @code{make} programs, @ref{Features}
|
|||
lists the enhancements GNU @code{make} has, and @ref{Missing} explains
|
||||
the few things GNU @code{make} lacks that others have.
|
||||
|
||||
For a quick summary, @pxref{Summary} and @ref{Special Targets}.
|
||||
For a quick summary, @pxref{Options Summary} and @ref{Special Targets}.
|
||||
|
||||
@node Bugs, , Reading, Overview
|
||||
@section Problems and Bugs
|
||||
|
@ -454,7 +454,7 @@ together to produce the new executable editor.
|
|||
@end menu
|
||||
|
||||
|
||||
@node Parts of Makefiles, Simple Makefile, Introduction, Introduction
|
||||
@node Parts of Makefiles, Simple Makefile, , Introduction
|
||||
@comment node-name, next, previous, up
|
||||
@section The Parts of a Makefile
|
||||
|
||||
|
@ -549,14 +549,12 @@ type:
|
|||
make
|
||||
@end example
|
||||
|
||||
@group
|
||||
To use this makefile to delete the executable file and all the object
|
||||
files from the directory, type:
|
||||
|
||||
@example
|
||||
make clean
|
||||
@end example
|
||||
@end group
|
||||
|
||||
In the example makefile, the targets include the executable file
|
||||
@samp{edit}, and the object files @samp{main.o} and @samp{kbd.o}. The
|
||||
|
@ -855,7 +853,7 @@ reading a data base called the @dfn{makefile}.
|
|||
with another makefile.
|
||||
@end menu
|
||||
|
||||
@node Makefile Contents, Makefile Names, Makefiles, Makefiles
|
||||
@node Makefile Contents, Makefile Names, , Makefiles
|
||||
@section What Makefiles Contain
|
||||
|
||||
Makefiles contain four kinds of things: @dfn{rules}, @dfn{variable
|
||||
|
@ -1165,7 +1163,7 @@ the makefile. @xref{Goals, ,Arguments to Specify the Goals}.
|
|||
@end menu
|
||||
|
||||
@ifinfo
|
||||
@node Rule Example, Rule Syntax, Rules, Rules
|
||||
@node Rule Example, Rule Syntax, , Rules
|
||||
@section Rule Example
|
||||
|
||||
Here is an example of a rule:
|
||||
|
@ -1286,7 +1284,7 @@ specific file whose name consists of @samp{foo}, an asterisk, and
|
|||
it does not normally take place.
|
||||
@end menu
|
||||
|
||||
@node Wildcard Examples, Wildcard Pitfall, Wildcards, Wildcards
|
||||
@node Wildcard Examples, Wildcard Pitfall, , Wildcards
|
||||
@subsection Wildcard Examples
|
||||
|
||||
Wildcards can be used in the commands of a rule, where they are expanded
|
||||
|
@ -1434,7 +1432,7 @@ you do not need to change the individual rules, just the search paths.
|
|||
* Libraries/Search:: Directory search for link libraries.
|
||||
@end menu
|
||||
|
||||
@node General Search, Selective Search, Directory Search, Directory Search
|
||||
@node General Search, Selective Search, , Directory Search
|
||||
@subsection @code{VPATH}: Search Path for All Dependencies
|
||||
|
||||
The value of the @code{make} variable @code{VPATH} specifies a list of
|
||||
|
@ -1684,7 +1682,7 @@ whether there is a file named @file{clean}.
|
|||
|
||||
Since @code{make} knows that phony targets do not name actual files
|
||||
that could be remade from other files, @code{make} skips the implicit
|
||||
rule search for phony targets (@pxref{Implicit}). This is why
|
||||
rule search for phony targets (@pxref{Implicit Rules}). This is why
|
||||
declaring a target phony is good for performance, even if you are not
|
||||
worried about the actual file existing.
|
||||
|
||||
|
@ -1851,6 +1849,7 @@ for @code{.SILENT} are not meaningful.
|
|||
use the more selective ways to silence specific commands.
|
||||
@xref{Echoing, ,Command Echoing}.
|
||||
|
||||
@c !!! overful hbox here
|
||||
@item .EXPORT_ALL_VARIABLES
|
||||
Simply by being mentioned as a target, @code{.EXPORT_ALL_VARIABLES}
|
||||
tells @code{make} to export all variables to child processes by default.
|
||||
|
@ -1941,7 +1940,7 @@ be @emph{analogous}, but not necessarily @emph{identical}.
|
|||
* Static vs Implicit:: When are they better than implicit rules?
|
||||
@end menu
|
||||
|
||||
@node Static Usage, Static vs Implicit, Static Pattern, Static Pattern
|
||||
@node Static Usage, Static vs Implicit, , Static Pattern
|
||||
@subsection Syntax of Static Pattern Rules
|
||||
|
||||
Here is the syntax of a static pattern rule:
|
||||
|
@ -2171,7 +2170,7 @@ Text on a line before a @samp{#} is not part of the comment.
|
|||
* Empty Commands:: Defining useful, do-nothing commands.
|
||||
@end menu
|
||||
|
||||
@node Echoing, Execution, Commands, Commands
|
||||
@node Echoing, Execution, , Commands
|
||||
@section Command Echoing
|
||||
|
||||
@cindex echoing (of commands)
|
||||
|
@ -2457,19 +2456,19 @@ how the sub-@code{make} relates to the top-level @code{make}.
|
|||
makefiles with recursive @code{make} commands.
|
||||
@end menu
|
||||
|
||||
@node MAKE Variable, Variables/Recursion, Recursion, Recursion
|
||||
@node MAKE Variable, Variables/Recursion, , Recursion
|
||||
@subsection How the @code{MAKE} Variable Works
|
||||
@vindex MAKE
|
||||
|
||||
Recursive @code{make} commands should always use the variable @code{MAKE},
|
||||
not the explicit command name @samp{make}, as shown here:
|
||||
|
||||
@group
|
||||
@example
|
||||
@group
|
||||
subsystem:
|
||||
cd subdir; $(MAKE)
|
||||
@end example
|
||||
@end group
|
||||
@end example
|
||||
|
||||
The value of this variable is the file name with which @code{make} was
|
||||
invoked. If this file name was @file{/bin/make}, then the command executed
|
||||
|
@ -2807,7 +2806,7 @@ but this would be confusing because such a line looks empty.
|
|||
You may be wondering why you would want to define a command string that
|
||||
does nothing. The only reason this is useful is to prevent a target
|
||||
from getting implicit commands (from implicit rules or the
|
||||
@code{.DEFAULT} special target; @pxref{Implicit Rules} and @ref{Last
|
||||
@code{.DEFAULT} special target; @pxref{Implicit Rules} and @pxref{Last
|
||||
Resort, ,Defining Last-Resort Default Rules}).@refill
|
||||
|
||||
You may be inclined to define empty command strings for targets that are
|
||||
|
@ -2863,7 +2862,7 @@ command options (@pxref{Overriding, ,Overriding Variables}).
|
|||
* Environment:: Variable values can come from the environment.
|
||||
@end menu
|
||||
|
||||
@node Reference, Flavors, Using Variables, Using Variables
|
||||
@node Reference, Flavors, , Using Variables
|
||||
@section Basics of Variable References
|
||||
|
||||
To substitute a variable's value, write a dollar sign followed by the name
|
||||
|
@ -3057,7 +3056,7 @@ variables in more flexible ways.
|
|||
* Computed Names:: Computing the name of the variable to refer to.
|
||||
@end menu
|
||||
|
||||
@node Substitution Refs, Computed Names, Advanced, Advanced
|
||||
@node Substitution Refs, Computed Names, , Advanced
|
||||
@subsection Substitution References
|
||||
@cindex modified variable reference
|
||||
@cindex substitution variable reference
|
||||
|
@ -3095,17 +3094,17 @@ equivalent to @samp{$(patsubst @var{a},@var{b},$(@var{var}))}.
|
|||
@xref{Text Functions, ,Functions for String Substitution and Analysis},
|
||||
for a description of the @code{patsubst} function.@refill
|
||||
|
||||
@group
|
||||
For example:
|
||||
|
||||
@example
|
||||
@group
|
||||
@exdent For example:
|
||||
|
||||
foo := a.o b.o c.o
|
||||
bar := $(foo:%.o=%.c)
|
||||
@end group
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
sets @samp{bar} to @samp{a.c b.c c.c}.
|
||||
@end group
|
||||
|
||||
@node Computed Names, , Substitution Refs, Advanced
|
||||
@subsection Computed Variable Names
|
||||
|
@ -3483,7 +3482,7 @@ commands at the time of execution.@refill
|
|||
* Testing Flags:: Conditionals that test flags.
|
||||
@end menu
|
||||
|
||||
@node Conditional Example, Conditional Syntax, Conditionals, Conditionals
|
||||
@node Conditional Example, Conditional Syntax, , Conditionals
|
||||
@section Example of a Conditional
|
||||
|
||||
The following example of a conditional tells @code{make} to use one set of libraries if the
|
||||
|
@ -3742,7 +3741,7 @@ call, just as a variable might be substituted.
|
|||
* Shell Function:: Substitute the output of a shell command.
|
||||
@end menu
|
||||
|
||||
@node Syntax of Functions, Text Functions, Functions, Functions
|
||||
@node Syntax of Functions, Text Functions, , Functions
|
||||
@section Function Call Syntax
|
||||
@cindex $ (function call)
|
||||
@cindex arguments
|
||||
|
@ -4134,10 +4133,12 @@ $(word 2, foo bar baz)
|
|||
@noindent
|
||||
returns @samp{bar}.
|
||||
|
||||
@c Following item phrased to prevent overful hbox. --RJC 17 Jul 92
|
||||
@item $(words @var{text})
|
||||
@findex words
|
||||
Returns the number of words in @var{text}. Thus, @w{@code{$(word
|
||||
$(words @var{text}),@var{text})}} is the last word of @var{text}.@refill
|
||||
Returns the number of words in @var{text}.
|
||||
Thus, the last word of @var{text} is
|
||||
@w{@code{$(word $(words @var{text}),@var{text})}}.@refill
|
||||
|
||||
@item $(firstword @var{names})
|
||||
@findex firstword
|
||||
|
@ -4340,13 +4341,13 @@ it.
|
|||
If you want to override a previous definition of @code{bletch} if it came
|
||||
from the environment, even under @samp{-e}, you could instead write:
|
||||
|
||||
@group
|
||||
@example
|
||||
@group
|
||||
ifneq "$(findstring environment,$(origin bletch))" ""
|
||||
bletch = barf, gag, etc.
|
||||
endif
|
||||
@end example
|
||||
@end group
|
||||
@end example
|
||||
|
||||
Here the redefinition takes place if @samp{$(origin bletch)} returns either
|
||||
@samp{environment} or @samp{environment override}.
|
||||
|
@ -4424,7 +4425,7 @@ things or many others.
|
|||
* Options Summary:: Summary of Options
|
||||
@end menu
|
||||
|
||||
@node Makefile Arguments, Goals, Running, Running
|
||||
@node Makefile Arguments, Goals, , Running
|
||||
@section Arguments to Specify the Makefile
|
||||
|
||||
The way to specify the name of the makefile is with the @samp{-f} option.
|
||||
|
@ -4951,7 +4952,7 @@ You can define your own implicit rules by writing @dfn{pattern rules}.
|
|||
implicit rules.
|
||||
@end menu
|
||||
|
||||
@node Using Implicit, Catalogue of Rules, Implicit Rules, Implicit Rules
|
||||
@node Using Implicit, Catalogue of Rules, , Implicit Rules
|
||||
@section Using Implicit Rules
|
||||
|
||||
To allow @code{make} to find a customary method for updating a target file,
|
||||
|
@ -5094,6 +5095,7 @@ program. The precise command used is as follows:@refill
|
|||
@samp{$(FC) -F $(FFLAGS) $(RFLAGS)}.
|
||||
@end table
|
||||
|
||||
@c !!! overfull hbox here
|
||||
@item Compiling Modula-2 programs
|
||||
@file{@var{n}.sym} will be made from @file{@var{n}.def} with a command
|
||||
of the form @samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}. @file{@var{n}.o}
|
||||
|
@ -5518,7 +5520,7 @@ Thus, a pattern rule @samp{%.o : %.c} says how to make any file
|
|||
* Canceling Rules:: How to override or cancel built-in rules.
|
||||
@end menu
|
||||
|
||||
@node Pattern Intro, Pattern Examples, Pattern Rules, Pattern Rules
|
||||
@node Pattern Intro, Pattern Examples, , Pattern Rules
|
||||
@subsection Introduction to Pattern Rules
|
||||
@cindex pattern rule
|
||||
|
||||
|
@ -5662,7 +5664,7 @@ empty when the target is not an archive member.
|
|||
@item $<
|
||||
The name of the first dependency. if the target got its commands from
|
||||
an implicit rule, this will be the first dependency added by the
|
||||
implicit rule (@pxref{Implicit}).
|
||||
implicit rule (@pxref{Implicit Rules}).
|
||||
|
||||
@item $?
|
||||
The names of all the dependencies that are newer than the target, with
|
||||
|
@ -5701,12 +5703,13 @@ the dependencies that have changed. For example, suppose that an archive
|
|||
named @file{lib} is supposed to contain copies of several object files.
|
||||
This rule copies just the changed object files into the archive:
|
||||
|
||||
@group
|
||||
@example
|
||||
@group
|
||||
lib: foo.o bar.o lose.o win.o
|
||||
ar r lib $?
|
||||
@end example
|
||||
@end group
|
||||
@end example
|
||||
|
||||
|
||||
Of the variables listed above, four have values that are single file
|
||||
names, and two have values that are lists of file names. These six
|
||||
|
@ -6151,7 +6154,7 @@ main use is as subroutine libraries for linking.
|
|||
* Archive Update:: The implicit rule for archive member targets.
|
||||
@end menu
|
||||
|
||||
@node Archive Members, Archive Update, Archives, Archives
|
||||
@node Archive Members, Archive Update, , Archives
|
||||
@section Archive Members as Targets
|
||||
@cindex archive member targets
|
||||
|
||||
|
@ -6234,7 +6237,7 @@ named @file{foo.o}. In connection with such usage, the automatic variables
|
|||
* Archive Symbols:: How to update archive symbol directories.
|
||||
@end menu
|
||||
|
||||
@node Archive Symbols, , Archive Update, Archive Update
|
||||
@node Archive Symbols, , , Archive Update
|
||||
@subsection Updating Archive Symbol Directories
|
||||
@cindex __.SYMDEF
|
||||
|
||||
|
@ -6459,7 +6462,7 @@ functionality in that it will check out SCCS files for makefiles.
|
|||
Various new built-in implicit rules. @xref{Catalogue of Rules, ,Catalogue of Implicit Rules}.
|
||||
@end itemize
|
||||
|
||||
@node Missing, Summary, Features, Top
|
||||
@node Missing, Quick Reference, Features, Top
|
||||
@chapter Incompatibilities and Missing Features
|
||||
|
||||
The @code{make} programs in various other systems support a few features
|
||||
|
@ -6802,7 +6805,7 @@ The default list of suffixes before @code{make} reads any makefiles.
|
|||
@end table
|
||||
|
||||
@c !!! this is a pretty lame example --roland
|
||||
@node Complex Makefile, Concept Index, Summary, Top
|
||||
@node Complex Makefile, Concept Index, Quick Reference, Top
|
||||
@appendix A Complex Makefile Example
|
||||
|
||||
Here is the makefile for the GNU @code{tar} program. This is a
|
||||
|
|
Loading…
Reference in a new issue