mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-02-05 14:07:46 +00:00
Ensure variables defined in $(call ...) have global scope
Add a note about using #!/usr/bin/make -f to the manual. Clean up the w32 subdirectory in the dist tarball.
This commit is contained in:
parent
9a9f83e8b5
commit
a5c774a51b
6 changed files with 34 additions and 3 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
||||||
|
2011-09-12 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* read.c (eval): Ensure exported variables are defined in the
|
||||||
|
global scope. Fixes Savannah bug #32498.
|
||||||
|
|
||||||
|
2011-09-11 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* Makefile.am (dist-hook): Remove w32/Makefile and .deps/ from the
|
||||||
|
dist file. Fixes Savannah bug #31489.
|
||||||
|
|
||||||
|
* doc/make.texi (Complex Makefile): Add a hint about using
|
||||||
|
#!/usr/bin/make (for Savannah support request #106459)
|
||||||
|
|
||||||
2011-09-02 Paul Smith <psmith@gnu.org>
|
2011-09-02 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* remake.c (touch_file): If we have both -n and -t, -n takes
|
* remake.c (touch_file): If we have both -n and -t, -n takes
|
||||||
|
|
|
@ -129,7 +129,7 @@ install-exec-local:
|
||||||
#
|
#
|
||||||
dist-hook:
|
dist-hook:
|
||||||
(cd $(srcdir); \
|
(cd $(srcdir); \
|
||||||
sub=`find w32 tests -follow \( -name CVS -prune -o -name .cvsignore -o -name work -prune \) -o \( -name \*.orig -o -name \*.rej -o -name \*~ -prune \) -o -type f -print`; \
|
sub=`find w32 tests -follow \( -name CVS -o -name .deps -o -name work -o -name .cvsignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name Makefile \) -prune -o -type f -print`; \
|
||||||
tar chf - $$sub) \
|
tar chf - $$sub) \
|
||||||
| (cd $(distdir); tar xfBp -)
|
| (cd $(distdir); tar xfBp -)
|
||||||
|
|
||||||
|
|
|
@ -11246,7 +11246,8 @@ sequential manner.
|
||||||
@appendix Complex Makefile Example
|
@appendix Complex Makefile Example
|
||||||
|
|
||||||
Here is the makefile for the GNU @code{tar} program. This is a
|
Here is the makefile for the GNU @code{tar} program. This is a
|
||||||
moderately complex makefile.
|
moderately complex makefile. The first line uses a @code{#!} setting
|
||||||
|
to allow the makefile to be executed directly.
|
||||||
|
|
||||||
Because it is the first target, the default goal is @samp{all}. An
|
Because it is the first target, the default goal is @samp{all}. An
|
||||||
interesting feature of this makefile is that @file{testpad.h} is a
|
interesting feature of this makefile is that @file{testpad.h} is a
|
||||||
|
@ -11282,6 +11283,7 @@ distribution kits.
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@group
|
@group
|
||||||
|
#!/usr/bin/make -f
|
||||||
# Generated automatically from Makefile.in by configure.
|
# Generated automatically from Makefile.in by configure.
|
||||||
# Un*x Makefile for GNU tar program.
|
# Un*x Makefile for GNU tar program.
|
||||||
# Copyright (C) 1991 Free Software Foundation, Inc.
|
# Copyright (C) 1991 Free Software Foundation, Inc.
|
||||||
|
|
2
read.c
2
read.c
|
@ -782,7 +782,7 @@ eval (struct ebuffer *ebuf, int set_default)
|
||||||
{
|
{
|
||||||
struct variable *v = lookup_variable (p, l);
|
struct variable *v = lookup_variable (p, l);
|
||||||
if (v == 0)
|
if (v == 0)
|
||||||
v = define_variable_loc (p, l, "", o_file, 0, fstart);
|
v = define_variable_global (p, l, "", o_file, 0, fstart);
|
||||||
v->export = exporting ? v_export : v_noexport;
|
v->export = exporting ? v_export : v_noexport;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-09-12 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* scripts/functions/call: Verify that using export in a $(call ...)
|
||||||
|
context creates a global variable. See Savannah bug #32498.
|
||||||
|
|
||||||
2011-09-02 Paul Smith <psmith@gnu.org>
|
2011-09-02 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* scripts/options/dash-n: Verify that in "-n -t", the -n takes
|
* scripts/options/dash-n: Verify that in "-n -t", the -n takes
|
||||||
|
|
|
@ -96,4 +96,15 @@ close(MAKEFILE);
|
||||||
$answer = "1 2 3 4 5 6 7 8 9\n1 2 3 4 5\n1 2 3\n1 2 3\n";
|
$answer = "1 2 3 4 5 6 7 8 9\n1 2 3 4 5\n1 2 3\n1 2 3\n";
|
||||||
&compare_output($answer,&get_logfile(1));
|
&compare_output($answer,&get_logfile(1));
|
||||||
|
|
||||||
|
# Ensure that variables are defined in global scope even in a $(call ...)
|
||||||
|
|
||||||
|
delete $ENV{X123};
|
||||||
|
|
||||||
|
run_make_test('
|
||||||
|
tst = $(eval export X123)
|
||||||
|
$(call tst)
|
||||||
|
all: ; @echo "$${X123-not set}"
|
||||||
|
',
|
||||||
|
'', "\n");
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
Loading…
Reference in a new issue