When you run @code{make} with the @samp{-i} or @samp{--ignore-errors}
flag, errors are ignored in all recipes of all rules. A rule in the
makefile for the special target @code{.IGNORE} has the same effect, if
-there are no prerequisites. These ways of ignoring errors are obsolete
-because @samp{-} is more flexible.
+there are no prerequisites. This is less flexible but sometimes useful.
When errors are to be ignored, because of either a @samp{-} or the
@samp{-i} flag, @code{make} treats an error return just like success,
A dollar sign followed by a character other than a dollar sign,
open-parenthesis or open-brace treats that single character as the
variable name. Thus, you could reference the variable @code{x} with
-@samp{$x}. However, this practice is strongly discouraged, except in
-the case of the automatic variables (@pxref{Automatic Variables}).
+@samp{$x}. However, this practice can lead to confusion (e.g.,
+@samp{$foo} refers to the variable @code{f} followed by the string
+@code{oo}) so we recommend using parentheses or braces around all
+variables, even single-letter variables, unless omitting them gives
+significant readability improvements. One place where readability is
+often improved is automatic variables (@pxref{Automatic Variables}).
@node Flavors, Advanced, Reference, Using Variables
@section The Two Flavors of Variables
@end example
Of the variables listed above, four have values that are single file
-names, and three have values that are lists of file names. These seven
-have variants that get just the file's directory name or just the file
-name within the directory. The variant variables' names are formed by
-appending @samp{D} or @samp{F}, respectively. These variants are
-semi-obsolete in GNU @code{make} since the functions @code{dir} and
-@code{notdir} can be used to get a similar effect (@pxref{File Name
-Functions, , Functions for File Names}). Note, however, that the
-@samp{D} variants all omit the trailing slash which always appears in
-the output of the @code{dir} function. Here is a table of the variants:
+names, and three have values that are lists of file names. These
+seven have variants that get just the file's directory name or just
+the file name within the directory. The variant variables' names are
+formed by appending @samp{D} or @samp{F}, respectively. The functions
+@code{dir} and @code{notdir} can be used to obtain a similar effect
+(@pxref{File Name Functions, , Functions for File Names}). Note,
+however, that the @samp{D} variants all omit the trailing slash which
+always appears in the output of the @code{dir} function. Here is a
+table of the variants:
@table @samp
@vindex $(@@D)
compatibility with old makefiles. They come in two kinds:
@dfn{double-suffix} and @dfn{single-suffix}.@refill
-A double-suffix rule is defined by a pair of suffixes: the target suffix
-and the source suffix. It matches any file whose name ends with the
-target suffix. The corresponding implicit prerequisite is made by
-replacing the target suffix with the source suffix in the file name. A
-two-suffix rule whose target and source suffixes are @samp{.o} and
-@samp{.c} is equivalent to the pattern rule @samp{%.o : %.c}.
+A double-suffix rule is defined by a pair of suffixes: the target
+suffix and the source suffix. It matches any file whose name ends
+with the target suffix. The corresponding implicit prerequisite is
+made by replacing the target suffix with the source suffix in the file
+name. A two-suffix rule @samp{.c.o} (whose target and source suffixes
+are @samp{.o} and @samp{.c}) is equivalent to the pattern rule
+@samp{%.o : %.c}.
A single-suffix rule is defined by a single suffix, which is the source
suffix. It matches any file name, and the corresponding implicit
search (@pxref{Directory Search, ,Searching Directories for
Prerequisites}) have their names changed inside recipes. We feel it
is much cleaner to always use automatic variables and thus make this
-feature obsolete.@refill
+feature unnecessary.@refill
@item
In some Unix @code{make}s, the automatic variable @code{$*} appearing in