diff options
Diffstat (limited to 'doc/make.texi')
-rw-r--r-- | doc/make.texi | 59 |
1 files changed, 36 insertions, 23 deletions
diff --git a/doc/make.texi b/doc/make.texi index 6fac114..9a13b78 100644 --- a/doc/make.texi +++ b/doc/make.texi @@ -8410,6 +8410,16 @@ part of the first prerequisite. Lists of the directory parts and the file-within-directory parts of all prerequisites. +@vindex $(+D) +@vindex +D @r{(automatic variable)} +@item $(+D) +@vindex $(+F) +@vindex +F @r{(automatic variable)} +@itemx $(+F) +Lists of the directory parts and the file-within-directory +parts of all prerequisites, including multiple instances of duplicated +prerequisites. + @vindex $(?D) @vindex ?D @r{(automatic variable)} @item $(?D) @@ -8429,6 +8439,32 @@ deep significance; @samp{$<} refers to the variable named @code{<} just as @samp{$(CFLAGS)} refers to the variable named @code{CFLAGS}. You could just as well use @samp{$(<)} in place of @samp{$<}. +@vindex $$@@ +@vindex $$(@@D) +@vindex $$(@@F) +@cindex $$@@, support for +GNU @code{make} provides support for the SysV @code{make} feature that +allows special variable references @code{$$@@}, @code{$$(@@D)}, and +@code{$$(@@F)} (note the required double-''$''!) to appear with the +@emph{prerequisites list} (normal automatic variables are available +only within a command script). When appearing in a prerequisites +list, these variables are expanded to the name of the target, the +directory component of the target, and the file component of the +target, respectively. + +Note that these variables are available only within explicit and +static pattern (@pxref{Static Pattern, ,Static Pattern Rules}) rules; +they have no special significance within implicit (suffix or pattern) +rules. Also note that while SysV @code{make} actually expands its +entire prerequisite list @emph{twice}, GNU @code{make} does not behave +this way: instead it simply expands these special variables without +re-expanding any other part of the prerequisites list. + +This somewhat bizarre feature is included only to provide some +compatibility with SysV makefiles. In a native GNU @code{make} file +there are other ways to accomplish the same results. This feature is +disabled if the special pseudo target @code{.POSIX} is defined. + @node Pattern Match, Match-Anything Rules, Automatic, Pattern Rules @subsection How Patterns Match @@ -9323,29 +9359,6 @@ general feature of rule chaining. @xref{Chained Rules, ,Chains of Implicit Rules}. @item -In System V @code{make}, the string @samp{$$@@} has the strange meaning -that, in the prerequisites of a rule with multiple targets, it stands -for the particular target that is being processed. - -This is not defined in GNU @code{make} because @samp{$$} should always -stand for an ordinary @samp{$}. - -It is possible to get portions of this functionality through the use of -static pattern rules (@pxref{Static Pattern, ,Static Pattern Rules}). -The System V @code{make} rule: - -@example -$(targets): $$@@.o lib.a -@end example - -@noindent -can be replaced with the GNU @code{make} static pattern rule: - -@example -$(targets): %: %.o lib.a -@end example - -@item In System V and 4.3 BSD @code{make}, files found by @code{VPATH} search (@pxref{Directory Search, ,Searching Directories for Prerequisites}) have their names changed inside command strings. We feel it is much cleaner to always use automatic variables |