mirror of
https://github.com/mirror/make.git
synced 2025-01-28 05:10:24 +08:00
Formerly make.texinfo.~88~
This commit is contained in:
parent
596d50cb1c
commit
9bd8004ded
286
make.texinfo
286
make.texinfo
@ -3,58 +3,19 @@
|
||||
@setfilename make.info
|
||||
@settitle GNU @code{make}
|
||||
@setchapternewpage odd
|
||||
@smallbook
|
||||
@c %**end of header
|
||||
|
||||
@c For publication, format makebook.texi instead of using this file directly.
|
||||
|
||||
@set EDITION 0.41
|
||||
@set VERSION 3.64 Beta
|
||||
@set UPDATED 11 April 1993
|
||||
@set UPDATED 12 April 1993
|
||||
@set UPDATE-MONTH April 1993
|
||||
|
||||
@c finalout
|
||||
|
||||
@c ISPELL CHECK: done, 14 Jan 1993 --bob
|
||||
|
||||
@comment @ifset seems to be completely broken.
|
||||
@ignore
|
||||
@tex
|
||||
\message{If you do not have the two-level texindex program, you will lose.}
|
||||
% trying for a two-level index
|
||||
% You need the rewritten texindex program for this to work.
|
||||
|
||||
\gdef\singleindexerfoo#1, #2\par{%
|
||||
% Use a box register to test if #2 is empty.
|
||||
\setbox0=\hbox{#2}%
|
||||
\ifvoid0{% % A one-level entry.
|
||||
\doind{\indexname}{#1}}\else{% % A two-level entry.
|
||||
\dosubind{\indexname}{#1}{#2}%
|
||||
}\fi}
|
||||
\gdef\singleindexer#1{\singleindexerfoo#1, \par}
|
||||
|
||||
% This version writes two sort strings.
|
||||
\gdef\dosubind #1#2#3{%
|
||||
{\count10=\lastpenalty%
|
||||
{\indexdummies% Must do this here, since \bf, etc expand at this stage
|
||||
\escapechar=`\\%
|
||||
{\let\folio=0%
|
||||
\def\rawbackslashxx{\indexbackslash}%
|
||||
%
|
||||
% Now process the index-string once, with all font commands turned off,
|
||||
% to get the string to sort the index by.
|
||||
{\indexnofonts%
|
||||
\xdef\tempa{#2}%
|
||||
\xdef\tempb{#3}%
|
||||
}%
|
||||
% Now produce the complete index entry. We process the index-string again,
|
||||
% this time with font commands expanded, to get what to print in the index.
|
||||
\edef\temp{%
|
||||
\write \csname#1indfile\endcsname{%
|
||||
\realbackslash entry {\tempa}{\folio}{#2}{#3}{\tempb}}}%
|
||||
\temp}%
|
||||
}\penalty\count10}}
|
||||
@end tex
|
||||
@end ignore
|
||||
|
||||
@c Combine the variable and function indices:
|
||||
@syncodeindex vr fn
|
||||
@c Combine the program and concept indices:
|
||||
@ -95,11 +56,9 @@ entitled ``GNU General Public License'' must be approved for accuracy
|
||||
by the Foundation.
|
||||
@end ifinfo
|
||||
|
||||
@ignore
|
||||
@ifset shorttitlepage
|
||||
@iftex
|
||||
@shorttitlepage GNU Make
|
||||
@end ifset
|
||||
@end ignore
|
||||
@end iftex
|
||||
@titlepage
|
||||
@title GNU Make
|
||||
@subtitle A Program for Directing Recompilation
|
||||
@ -3069,9 +3028,9 @@ the above example, its value is @samp{CFLAGS=-O}. If you @emph{do not}
|
||||
want these variable definitions done in all recursive @code{make}
|
||||
invocations, you can redefine the @code{MAKEOVERRIDES} variable to
|
||||
remove them. You do this in any of the normal ways for defining
|
||||
variables: in a makefile (@pxref{Setting Variables}); on the command
|
||||
variables: in a makefile (@pxref{Setting, ,Setting Variables}); on the command
|
||||
line with an argument like @samp{MAKEOVERRIDES=}
|
||||
(@pxref{Overriding Variables}); or with an environment variable
|
||||
(@pxref{Overriding, ,Overriding Variables}); or with an environment variable
|
||||
(@pxref{Environment, ,Variables from the Environment}).
|
||||
|
||||
As a special feature, using the variable @code{MAKE} in the commands of
|
||||
@ -3525,6 +3484,8 @@ command options (@pxref{Overriding, ,Overriding Variables}).
|
||||
* Advanced:: Advanced features for referencing a variable.
|
||||
* Values:: All the ways variables get their values.
|
||||
* Setting:: How to set a variable in the makefile.
|
||||
* Appending:: How to append more text to the old value
|
||||
of a variable.
|
||||
* Override Directive:: How to set a variable in the makefile even if
|
||||
the user has set it with a command argument.
|
||||
* Defining:: An alternate way to set a variable
|
||||
@ -3869,8 +3830,10 @@ defines @code{a} as @samp{Hello}: @samp{$($(x))} becomes @samp{$($(y))}
|
||||
which becomes @samp{$(z)} which becomes @samp{Hello}.
|
||||
|
||||
Nested variable references can also contain modified references and
|
||||
function invocations (@pxref{Functions, ,Functions for Transforming Text}), just like any other reference.
|
||||
For example, using the @code{subst} function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
|
||||
function invocations (@pxref{Functions, ,Functions for Transforming Text}),
|
||||
just like any other reference.
|
||||
For example, using the @code{subst} function
|
||||
(@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
|
||||
|
||||
@example
|
||||
@group
|
||||
@ -4026,9 +3989,10 @@ Several variables have constant initial values.
|
||||
@xref{Implicit Variables, ,Variables Used by Implicit Rules}.
|
||||
@end itemize
|
||||
|
||||
@node Setting, Override Directive, Values, Using Variables
|
||||
@node Setting, Appending, Values, Using Variables
|
||||
@section Setting Variables
|
||||
@cindex setting variables
|
||||
@cindex variables, setting
|
||||
@cindex =
|
||||
@cindex :=
|
||||
|
||||
@ -4067,13 +4031,140 @@ Several special variables are set
|
||||
automatically to a new value for each rule; these are called the
|
||||
@dfn{automatic} variables (@pxref{Automatic, ,Automatic Variables}).
|
||||
|
||||
@node Override Directive, Defining, Setting, Using Variables
|
||||
@node Appending, Override Directive, Setting, Using Variables
|
||||
@section Appending More Text to Variables
|
||||
@cindex +=
|
||||
@cindex appending to variables
|
||||
@cindex variables, appending to
|
||||
|
||||
Often it is useful to add more text to the value of a variable already defined.
|
||||
You do this with a line containing @samp{+=}, like this:
|
||||
|
||||
@example
|
||||
objects += another.o
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This takes the value of the variable @code{objects}, and adds the text
|
||||
@samp{another.o} to it (preceded by a single space). Thus:
|
||||
|
||||
@example
|
||||
objects = main.o foo.o bar.o utils.o
|
||||
objects += another.o
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
sets @code{objects} to @samp{main.o foo.o bar.o utils.o another.o}.
|
||||
|
||||
Using @samp{+=} is similar to:
|
||||
|
||||
@example
|
||||
objects = main.o foo.o bar.o utils.o
|
||||
objects := $(objects) another.o
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
but differs in ways that become important when you use more complex values.
|
||||
|
||||
When the variable in question has not been defined before, @samp{+=}
|
||||
acts just like normal @samp{=}: it defines a recursively-expanded
|
||||
variable. However, when there @emph{is} a previous definition, exactly
|
||||
what @samp{+=} does depends on what flavor of variable you defined
|
||||
originally. @xref{Flavors, ,The Two Flavors of Variables}, for an
|
||||
explanation of the two flavors of variables.
|
||||
|
||||
When you add to a variable's value with @samp{+=}, @code{make} acts
|
||||
essentially as if you had included the extra text in the initial
|
||||
definition of the variable. If you defined it first with @samp{:=},
|
||||
making it a simply-expanded variable, @samp{+=} adds to that
|
||||
simply-expanded definition, and expands the new text before appending it
|
||||
to the old value just as @samp{:=} does
|
||||
(@pxref{Setting, ,Setting Variables}, for a full explanation of @samp{:=}).
|
||||
In fact,
|
||||
|
||||
@example
|
||||
variable := value
|
||||
variable += more
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
is exactly equivalent to:
|
||||
|
||||
@noindent
|
||||
@example
|
||||
variable := value
|
||||
variable := $(variable) more
|
||||
@end example
|
||||
|
||||
On the other hand, when you use @samp{+=} with a variable that you defined
|
||||
first to be recursively-expanded using plain @samp{=}, @code{make} does
|
||||
something a bit different. Recall that when you define a
|
||||
recursively-expanded variable, @code{make} does not expand the value you set
|
||||
for variable and function references immediately. Instead it stores the text
|
||||
verbatim, and saves these variable and function references to be expanded
|
||||
later, when you refer to the new variable (@pxref{Flavors, ,The Two Flavors
|
||||
of Variables}). When you use @samp{+=} on a recursively-expanded variable,
|
||||
it is this unexpanded text to which @code{make} appends the new text you
|
||||
specify.
|
||||
|
||||
@example
|
||||
variable = value
|
||||
variable += more
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
is roughly equivalent to:
|
||||
|
||||
@example
|
||||
temp = value
|
||||
variable = $(temp) more
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
except that of course it never defines a variable called @code{temp}.
|
||||
The importance of this comes when the variable's old value contains
|
||||
variable references. Take this common example:
|
||||
|
||||
@example
|
||||
CFLAGS = $(includes) -O
|
||||
@dots{}
|
||||
CFLAGS += -pg # enable profiling
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
The first line defines the @code{CFLAGS} variable with a reference to another
|
||||
variable, @code{includes}. (@code{CFLAGS} is used by the rules for C
|
||||
compilation; @pxref{Catalogue of Rules, ,Catalogue of Implicit Rules}.)
|
||||
Using @samp{=} for the definition makes @code{CFLAGS} a recursively-expanded
|
||||
variable, meaning @w{@samp{$(includes) -O}} is @emph{not} expanded when
|
||||
@code{make} processes the definition of @code{CFLAGS}. Thus, @code{includes}
|
||||
need not be defined yet for its value to take effect. It only has to be
|
||||
defined before any reference to @code{CFLAGS}. If we tried to append to the
|
||||
value of @code{CFLAGS} without using @samp{+=}, we might do it like this:
|
||||
|
||||
@example
|
||||
CFLAGS := $(CFLAGS) -pg # enable profiling
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This is close, but not quite what we want. Using @samp{:=} redefines
|
||||
@code{CFLAGS} as a simply-expanded variable; this means @code{make} expands
|
||||
the text @w{@samp{$(CFLAGS) -pg}} before setting the variable. If
|
||||
@code{includes} is not yet defined, we get @w{@samp{ -O -pg}}, and a later
|
||||
definition of @code{includes} will have no effect. Conversely, by using
|
||||
@samp{+=} we set @code{CFLAGS} to the @emph{unexpanded} value
|
||||
@w{@samp{$(includes) -O -pg}}. Thus we preserve the reference to
|
||||
@code{includes}, so if that variable gets defined at any later point, a
|
||||
reference like @samp{$(CFLAGS)} still uses its value.
|
||||
|
||||
@node Override Directive, Defining, Appending, Using Variables
|
||||
@section The @code{override} Directive
|
||||
@findex override
|
||||
@cindex overriding with @code{override}
|
||||
@cindex variable, overriding
|
||||
@cindex variables, overriding
|
||||
|
||||
If a variable has been set with a command argument (@pxref{Overriding, ,Overriding Variables}),
|
||||
If a variable has been set with a command argument
|
||||
(@pxref{Overriding, ,Overriding Variables}),
|
||||
then ordinary assignments in the makefile are ignored. If you want to set
|
||||
the variable in the makefile even though it was set with a command
|
||||
argument, you can use an @code{override} directive, which is a line that
|
||||
@ -4083,6 +4174,7 @@ looks like this:@refill
|
||||
override @var{variable} = @var{value}
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
or
|
||||
|
||||
@example
|
||||
@ -4125,7 +4217,7 @@ See the next section for information about @code{define}.
|
||||
@findex endef
|
||||
@cindex verbatim variable definition
|
||||
@cindex defining variables verbatim
|
||||
@cindex variable, defining verbatim
|
||||
@cindex variables, defining verbatim
|
||||
|
||||
Another way to set the value of a variable is to use the @code{define}
|
||||
directive. This directive has an unusual syntax which allows newline
|
||||
@ -4182,7 +4274,7 @@ endef
|
||||
@node Environment, , Defining, Using Variables
|
||||
@section Variables from the Environment
|
||||
|
||||
@cindex variable, environment
|
||||
@cindex variables, environment
|
||||
@cindex environment
|
||||
Variables in @code{make} can come from the environment in which
|
||||
@code{make} is run. Every environment variable that @code{make} sees when
|
||||
@ -5136,7 +5228,7 @@ no?), but it is more likely to be a mistake.
|
||||
@node Origin Function, Shell Function, Foreach Function, Functions
|
||||
@section The @code{origin} Function
|
||||
@findex origin
|
||||
@cindex variable, origin of
|
||||
@cindex variables, origin of
|
||||
@cindex origin of variable
|
||||
|
||||
The @code{origin} function is unlike most other functions in that it does
|
||||
@ -5609,9 +5701,9 @@ Touch all the object files with @samp{make -t}.
|
||||
@node Overriding, Testing, Avoiding Compilation, Running
|
||||
@section Overriding Variables
|
||||
@cindex overriding variables with arguments
|
||||
@cindex variable, overriding with arguments
|
||||
@cindex variables, overriding with arguments
|
||||
@cindex command line variables
|
||||
@cindex variable, command line
|
||||
@cindex variables, command line
|
||||
|
||||
An argument that contains @samp{=} specifies the value of a variable:
|
||||
@samp{@var{v}=@var{x}} sets the value of the variable @var{v} to @var{x}.
|
||||
@ -6092,35 +6184,38 @@ available unless the makefile explicitly overrides or cancels them.
|
||||
canceling or overriding an implicit rule. The @samp{-r} or
|
||||
@samp{--no-builtin-rules} option cancels all predefined rules.
|
||||
|
||||
Not all of these rules will always be defined, even when the @samp{-r}
|
||||
option is not given. Many of the predefined implicit rules are
|
||||
implemented in @code{make} as suffix rules, so which ones will be
|
||||
defined depends on the @dfn{suffix list} (the list of dependencies of
|
||||
the special target @code{.SUFFIXES}). The default suffix list is:
|
||||
@code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc},
|
||||
@code{.C}, @code{.p}, @code{.f}, @code{.F}, @code{.r}, @code{.y},
|
||||
@code{.l}, @code{.s}, @code{.S}, @code{.mod}, @code{.sym},
|
||||
@code{.def}, @code{.h}, @code{.info}, @code{.dvi}, @code{.tex},
|
||||
@code{.texinfo}, @code{.texi}, @code{.cweb}, @code{.web}, @code{.sh},
|
||||
@code{.elc}, @code{.el}. All of the implicit rules described below
|
||||
whose dependencies have one of these suffixes are actually suffix
|
||||
rules. If you modify the suffix list, the only predefined suffix
|
||||
rules in effect will be those named by one or two of the suffixes that
|
||||
are on the list you specify; rules whose suffixes fail to be on the
|
||||
list are disabled. @xref{Suffix Rules, ,Old-Fashioned Suffix Rules},
|
||||
for full details on suffix rules.
|
||||
Not all of these rules will always be defined, even when the @samp{-r} option
|
||||
is not given. Many of the predefined implicit rules are implemented in
|
||||
@code{make} as suffix rules, so which ones will be defined depends on the
|
||||
@dfn{suffix list} (the list of dependencies of the special target
|
||||
@code{.SUFFIXES}). The default suffix list is: @code{.out}, @code{.a},
|
||||
@code{.ln}, @code{.o}, @code{.c}, @code{.cc}, @code{.C}, @code{.p},
|
||||
@code{.f}, @code{.F}, @code{.r}, @code{.y}, @code{.l}, @code{.s}, @code{.S},
|
||||
@code{.mod}, @code{.sym}, @code{.def}, @code{.h}, @code{.info}, @code{.dvi},
|
||||
@code{.tex}, @code{.texinfo}, @code{.texi}, @code{.txinfo}, @code{.cweb},
|
||||
@code{.web}, @code{.sh}, @code{.elc}, @code{.el}. All of the implicit rules
|
||||
described below whose dependencies have one of these suffixes are actually
|
||||
suffix rules. If you modify the suffix list, the only predefined suffix
|
||||
rules in effect will be those named by one or two of the suffixes that are on
|
||||
the list you specify; rules whose suffixes fail to be on the list are
|
||||
disabled. @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}, for full details
|
||||
on suffix rules.
|
||||
|
||||
@table @asis
|
||||
@item Compiling C programs
|
||||
@cindex C, rule to compile
|
||||
@pindex cc
|
||||
@pindex gcc
|
||||
@pindex .o
|
||||
@pindex .c
|
||||
@file{@var{n}.o} is made automatically from @file{@var{n}.c} with
|
||||
a command of the form @samp{$(CC) -c $(CPPFLAGS) $(CFLAGS)}.@refill
|
||||
|
||||
@item Compiling C++ programs
|
||||
@cindex C++, rule to compile
|
||||
@pindex g++
|
||||
@pindex .C
|
||||
@pindex .cc
|
||||
@file{@var{n}.o} is made automatically from @file{@var{n}.cc} or
|
||||
@file{@var{n}.C} with a command of the form @samp{$(CXX) -c $(CPPFLAGS)
|
||||
$(CXXFLAGS)}. We encourage you to use the suffix @samp{.cc} for C++
|
||||
@ -6129,6 +6224,7 @@ source files instead of @samp{.C}.@refill
|
||||
@item Compiling Pascal programs
|
||||
@cindex Pascal, rule to compile
|
||||
@pindex pc
|
||||
@pindex .p
|
||||
@file{@var{n}.o} is made automatically from @file{@var{n}.p}
|
||||
with the command @samp{$(PC) -c $(PFLAGS)}.@refill
|
||||
|
||||
@ -6136,6 +6232,9 @@ with the command @samp{$(PC) -c $(PFLAGS)}.@refill
|
||||
@cindex Fortran, rule to compile
|
||||
@cindex Ratfor, rule to compile
|
||||
@pindex f77
|
||||
@pindex .f
|
||||
@pindex .r
|
||||
@pindex .F
|
||||
@file{@var{n}.o} is made automatically from @file{@var{n}.r},
|
||||
@file{@var{n}.F} or @file{@var{n}.f} by running the
|
||||
Fortran compiler. The precise command used is as follows:@refill
|
||||
@ -6165,6 +6264,9 @@ program. The precise command used is as follows:@refill
|
||||
@item Compiling Modula-2 programs
|
||||
@cindex Modula-2, rule to compile
|
||||
@pindex m2c
|
||||
@pindex .sym
|
||||
@pindex .def
|
||||
@pindex .mod
|
||||
@file{@var{n}.sym} is made from @file{@var{n}.def} with a command
|
||||
of the form @samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}. @file{@var{n}.o}
|
||||
is made from @file{@var{n}.mod}; the form is:
|
||||
@ -6174,10 +6276,12 @@ is made from @file{@var{n}.mod}; the form is:
|
||||
@item Assembling and preprocessing assembler programs
|
||||
@cindex assembly, rule to compile
|
||||
@pindex as
|
||||
@pindex .s
|
||||
@file{@var{n}.o} is made automatically from @file{@var{n}.s} by
|
||||
running the assembler, @code{as}. The precise command is
|
||||
@samp{$(AS) $(ASFLAGS)}.@refill
|
||||
|
||||
@pindex .S
|
||||
@file{@var{n}.s} is made automatically from @file{@var{n}.S} by
|
||||
running the C preprocessor, @code{cpp}. The precise command is
|
||||
@w{@samp{$(CPP) $(CPPFLAGS)}}.
|
||||
@ -6228,12 +6332,14 @@ done.@refill
|
||||
@item Yacc for C programs
|
||||
@pindex yacc
|
||||
@cindex Yacc, rule to run
|
||||
@pindex .y
|
||||
@file{@var{n}.c} is made automatically from @file{@var{n}.y} by
|
||||
running Yacc with the command @samp{$(YACC) $(YFLAGS)}.
|
||||
|
||||
@item Lex for C programs
|
||||
@pindex lex
|
||||
@cindex Lex, rule to run
|
||||
@pindex .l
|
||||
@file{@var{n}.c} is made automatically from @file{@var{n}.l} by
|
||||
by running Lex. The actual command is @samp{$(LEX) $(LFLAGS)}.
|
||||
|
||||
@ -6262,6 +6368,7 @@ the list of implicit rule suffixes with:@refill
|
||||
@item Making Lint Libraries from C, Yacc, or Lex programs
|
||||
@pindex lint
|
||||
@cindex @code{lint}, rule to run
|
||||
@pindex .ln
|
||||
@file{@var{n}.ln} is made from @file{@var{n}.c} with a command of
|
||||
the form @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}.
|
||||
The same command is used on the C code produced from
|
||||
@ -6275,6 +6382,10 @@ The same command is used on the C code produced from
|
||||
@pindex weave
|
||||
@pindex tangle
|
||||
@pindex ctangle
|
||||
@pindex .dvi
|
||||
@pindex .tex
|
||||
@pindex .web
|
||||
@pindex .cweb
|
||||
@file{@var{n}.dvi} is made from @file{@var{n}.tex} with the
|
||||
command @samp{$(TEX)}. @file{@var{n}.tex} is made from
|
||||
@file{@var{n}.web} with @samp{$(WEAVE)}, or from @file{@var{n}.cweb}
|
||||
@ -6287,14 +6398,19 @@ made from @file{@var{n}.cweb} with @samp{$(CTANGLE)}.@refill
|
||||
@cindex Info, rule to format
|
||||
@pindex texi2dvi
|
||||
@pindex makeinfo
|
||||
@file{@var{n}.dvi} is made from @file{@var{n}.texinfo} or
|
||||
@file{@var{n}.texi} with the @samp{$(TEXI2DVI)} command.
|
||||
@file{@var{n}.info} is made from @file{@var{n}.texinfo} or
|
||||
@file{@var{n}.texi} with the @samp{$(MAKEINFO)} command .@refill
|
||||
@pindex .texinfo
|
||||
@pindex .info
|
||||
@pindex .texi
|
||||
@pindex .txinfo
|
||||
@file{@var{n}.dvi} is made from @file{@var{n}.texinfo}, @file{@var{n}.texi},
|
||||
or @file{@var{n}.txinfo}, with the @samp{$(TEXI2DVI)} command.
|
||||
@file{@var{n}.info} is made from @file{@var{n}.texinfo}, @file{@var{n}.texi},
|
||||
or @file{@var{n}.txinfo}, with the @samp{$(MAKEINFO)} command.@refill
|
||||
|
||||
@item RCS
|
||||
@cindex RCS, rule to extract from
|
||||
@pindex co
|
||||
@pindex ,v @r{(RCS file extension)}
|
||||
Any file @file{@var{n}} is extracted if necessary from an RCS file
|
||||
named either @file{@var{n},v} or @file{RCS/@var{n},v}. The precise
|
||||
command used is @w{@samp{$(CO) $(COFLAGS)}}. @file{@var{n}} will not be
|
||||
@ -6307,6 +6423,7 @@ actually exist.@refill
|
||||
@item SCCS
|
||||
@cindex SCCS, rule to extract from
|
||||
@pindex get
|
||||
@pindex s. @r{(SCCS file prefix)}
|
||||
Any file @file{@var{n}} is extracted if necessary from an SCCS file
|
||||
named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}. The precise
|
||||
command used is @w{@samp{$(GET) $(GFLAGS)}}. The rules for SCCS are
|
||||
@ -6314,6 +6431,7 @@ terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
|
||||
so SCCS files cannot be generated from another source; they must
|
||||
actually exist.@refill
|
||||
|
||||
@pindex .sh
|
||||
For the benefit of SCCS, a file @file{@var{n}} is copied from
|
||||
@file{@var{n}.sh} and made executable (by everyone). This is for
|
||||
shell scripts that are checked into SCCS. Since RCS preserves the
|
||||
@ -6770,8 +6888,8 @@ dependencies, and it will execute happily ever after.)@refill
|
||||
@node Automatic, Pattern Match, Pattern Examples, Pattern Rules
|
||||
@subsection Automatic Variables
|
||||
@cindex automatic variables
|
||||
@cindex variable, automatic
|
||||
@cindex variable, and implicit rule
|
||||
@cindex variables, automatic
|
||||
@cindex variables, and implicit rule
|
||||
|
||||
Suppose you are writing a pattern rule to compile a @samp{.c} file into a
|
||||
@samp{.o} file: how do you write the @samp{cc} command so that it operates
|
||||
@ -7631,6 +7749,10 @@ inspired whom, since GNU @code{make} had @code{patsubst} before SunOS
|
||||
The special significance of @samp{+} characters preceding command lines
|
||||
(@pxref{Instead of Execution, ,Instead of Executing the Commands}) is
|
||||
mandated by draft 11.2 of IEEE Std 1003.2 (POSIX).@refill
|
||||
|
||||
@item
|
||||
The @samp{+=} syntax to append to the value of a variable comes from SunOS
|
||||
4.0 @code{make}. @xref{Appending, , Appending More Text to Variables}.
|
||||
@end itemize
|
||||
|
||||
The remaining features are inventions new in GNU @code{make}:
|
||||
|
Loading…
Reference in New Issue
Block a user