summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/make.texi36
1 files changed, 34 insertions, 2 deletions
diff --git a/doc/make.texi b/doc/make.texi
index 9a13b78..291a294 100644
--- a/doc/make.texi
+++ b/doc/make.texi
@@ -149,6 +149,7 @@ Writing Makefiles
* Include:: How one makefile can use another makefile.
* MAKEFILES Variable:: The environment can specify extra makefiles.
* MAKEFILE_LIST Variable:: Discover which makefiles have been read.
+* Special Variables:: Other special variables.
* Remaking Makefiles:: How makefiles get remade.
* Overriding Makefiles:: How to override part of one makefile
with another makefile.
@@ -929,6 +930,7 @@ reading a data base called the @dfn{makefile}.
* Include:: How one makefile can use another makefile.
* MAKEFILES Variable:: The environment can specify extra makefiles.
* MAKEFILE_LIST Variable:: Discover which makefiles have been read.
+* Special Variables:: Other special variables.
* Remaking Makefiles:: How makefiles get remade.
* Overriding Makefiles:: How to override part of one makefile
with another makefile.
@@ -1184,7 +1186,7 @@ This is a very bad idea, because such makefiles will fail to work if run by
anyone else. It is much better to write explicit @code{include} directives
in the makefiles. @xref{Include, , Including Other Makefiles}.
-@node MAKEFILE_LIST Variable, Remaking Makefiles, MAKEFILES Variable, Makefiles
+@node MAKEFILE_LIST Variable, Special Variables, MAKEFILES Variable, Makefiles
@comment node-name, next, previous, up
@section The Variable @code{MAKEFILE_LIST}
@cindex makefiles, and @code{MAKEFILE_LIST} variable
@@ -1232,7 +1234,37 @@ name2 = inc.mk
Variables}, for more information on simply-expanded (@code{:=})
variable definitions.
-@node Remaking Makefiles, Overriding Makefiles, MAKEFILE_LIST Variable, Makefiles
+@node Special Variables, Remaking Makefiles, MAKEFILE_LIST Variable, Makefiles
+@comment node-name, next, previous, up
+@section Other Special Variables
+@cindex makefiles, and special variables
+@cindex special variables
+
+GNU @code{make} also supports two other special variables. Note that
+any value you assign to these variables will be ignored; they will
+always return their special value.
+
+@vindex $(.VARIABLES)
+@vindex .VARIABLES @r{(list of variables)}
+The first special variable is @code{.VARIABLES}. When expanded, the
+value consists of a list of the @emph{names} of all global variables
+defined in all makefiles read up until that point. This includes
+variables which have empty values, as well as built-in variables
+(@pxref{Implicit Variables, , Variables Used by Implicit Rules}), but
+does not include any variables which are only defined in a
+target-specific context.
+
+@vindex $(.TARGETS)
+@vindex .TARGETS @r{(list of targets)}
+The second special variable is @code{.TARGETS}. When expanded, the
+value consists of a list of all targets defined in all makefiles read
+up until that point. Note it's not enough for a file to be simply
+mentioned in the makefile to be listed in this variable, even if it
+would match an implicit rule and become an ``implicit target''. The
+file must appear as a target, on the left-hand side of a ``:'', to be
+considered a target for the purposes of this variable.
+
+@node Remaking Makefiles, Overriding Makefiles, Special Variables, Makefiles
@section How Makefiles Are Remade
@cindex updating makefiles