summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2020-12-25 19:00:10 +0100
committerPaul Smith <psmith@gnu.org>2021-03-07 19:06:59 -0500
commite5f6dc54b9d1454cd3d3a2152ff73802c7c4b2b0 (patch)
treef3561b16274eb5bb6eb3aae8ad41b4b796d454c8 /doc
parent88732a29f2c2c24b6682a96556d195302b6cd215 (diff)
downloadmake-git-e5f6dc54b9d1454cd3d3a2152ff73802c7c4b2b0.tar.gz
More correctly describe the scope of variables
* NEWS: Use "local" instead of the incorrect "lexically-scoped". * doc/make.texi: Refer to let/foreach variables as local variables.
Diffstat (limited to 'doc')
-rw-r--r--doc/make.texi21
1 files changed, 15 insertions, 6 deletions
diff --git a/doc/make.texi b/doc/make.texi
index ce2c6e50..60c75d60 100644
--- a/doc/make.texi
+++ b/doc/make.texi
@@ -276,7 +276,7 @@ Functions for Transforming Text
* Text Functions:: General-purpose text manipulation functions.
* File Name Functions:: Functions for manipulating file names.
* Conditional Functions:: Functions that implement conditions.
-* Let Function:: Lexically scoped variables.
+* Let Function:: Local variables.
* Foreach Function:: Repeat some text with controlled variation.
* File Function:: Write text to a file.
* Call Function:: Expand a user-defined function.
@@ -5204,7 +5204,9 @@ variables are called @dfn{macros}.)
Variables and functions in all parts of a makefile are expanded when
read, except for in recipes, the right-hand sides of variable
definitions using @samp{=}, and the bodies of variable definitions
-using the @code{define} directive.@refill
+using the @code{define} directive. The value a variable expands to is
+that of its most recent definition at the time of expansion. In other
+words, variables are dynamically scoped.
Variables can represent lists of file names, options to pass to compilers,
programs to run, directories to look in for source files, directories to
@@ -5793,6 +5795,11 @@ with an assignment (@pxref{Setting, ,Setting Variables}) or with a
verbatim definition (@pxref{Multi-Line, ,Defining Multi-Line Variables}).@refill
@item
+You can specify a short-lived value with the @code{let} function
+(@pxref{Let Function}) or with the @code{foreach} function
+(@pxref{Foreach Function}).
+
+@item
Variables in the environment become @code{make} variables.
@xref{Environment, ,Variables from the Environment}.
@@ -6274,10 +6281,12 @@ the Shell}.@refill
Variable values in @code{make} are usually global; that is, they are the
same regardless of where they are evaluated (unless they're reset, of
-course). One exception to that is automatic variables
+course). Exceptions to that are variables defined with the @code{let}
+function (@pxref{Let Function}) or the @code{foreach} function
+(@pxref{Foreach Function}, and automatic variables
(@pxref{Automatic Variables}).
-The other exception is @dfn{target-specific variable values}. This
+Another exception are @dfn{target-specific variable values}. This
feature allows you to define different values for the same variable,
based on the target that @code{make} is currently building. As with
automatic variables, these values are only available within the context
@@ -7039,7 +7048,7 @@ be substituted.
* Text Functions:: General-purpose text manipulation functions.
* File Name Functions:: Functions for manipulating file names.
* Conditional Functions:: Functions that implement conditions.
-* Let Function:: Lexically scoped variables.
+* Let Function:: Local variables.
* Foreach Function:: Repeat some text with controlled variation.
* File Function:: Write text to a file.
* Call Function:: Expand a user-defined function.
@@ -7697,7 +7706,7 @@ the result of the expansion is the expansion of the last argument.
@node Let Function, Foreach Function, Conditional Functions, Functions
@section The @code{let} Function
@findex let
-@cindex variables, lexically scoped
+@cindex variables, local
The @code{let} function provides a means to limit the scope of a
variable. The assignment of the named variables in a @code{let}