summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2006-10-01 05:38:38 +0000
committerPaul Smith <psmith@gnu.org>2006-10-01 05:38:38 +0000
commit7595f38f62afa7ac3451018d865fb251e3ce91c3 (patch)
treea282fd77e5ef862b9bbccb983a3c601ba4f834fb
parentc25294ad3ba1252a0d77bf63a27758a0eee4259e (diff)
downloadgunmake-7595f38f62afa7ac3451018d865fb251e3ce91c3.tar.gz
Fixed a number of documentation bugs, plus some build/install issues:
16304, 16468, 16577, 17701, 17880, 16051, 16652, 16698 Plus some from the mailing list. Imported a patch from Eli to allow Cygwin builds to support DOS-style pathnames.
-rw-r--r--ChangeLog66
-rw-r--r--README.OS2.template18
-rw-r--r--README.cvs7
-rw-r--r--config.h.W32.template7
-rw-r--r--config/.cvsignore4
-rw-r--r--config/dospaths.m42
-rw-r--r--configure.in4
-rw-r--r--doc/make.texi84
-rw-r--r--job.c6
-rw-r--r--maintMakefile15
-rw-r--r--make.12
-rw-r--r--make.h18
-rw-r--r--remake.c6
-rw-r--r--tests/ChangeLog11
-rwxr-xr-xtests/run_make_tests.pl5
-rw-r--r--tests/scripts/variables/automatic21
-rw-r--r--tests/test_driver.pl8
-rw-r--r--variable.c2
-rw-r--r--variable.h2
19 files changed, 214 insertions, 74 deletions
diff --git a/ChangeLog b/ChangeLog
index 3986793..1eb3ca3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,69 @@
+2006-09-30 Paul Smith <psmith@paulandlesley.org>
+
+ * doc/make.texi (MAKEFILE_LIST Variable): Modify reference to
+ point to lastword since the example was updated.
+ Fixes Savannah bug #16304.
+ (Secondary Expansion): Correct example description.
+ Fixes Savannah bug #16468.
+ (Makefile Contents): Clarify that comments cannot appear within
+ variable references or function calls.
+ Fixes Savannah bug #16577.
+ (Special Targets): Clarify how .NOTPARALLEL works in recursion.
+ Fixes Savannah bug #17701.
+ Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>:
+ (Prerequisite Types): Added an example of using order-only
+ prerequisites. Fixes Savannah bug #17880.
+ (Rule Syntax): "lise" -> "list"
+ (Multiple Rules): ... -> @dots{}
+ (Splitting Lines): ditto.
+
+ * remake.c (update_file_1): Prereqs that don't exist should be
+ considered changed, for the purposes of $?.
+ Fixes Savannah bug #16051.
+
+ * make.1: Remove extraneous "+".
+ Fixes Savannah bug #16652.
+
+2006-09-06 Paul D. Smith <psmith@gnu.org>
+
+ * configure.in: Include sys/types.h when checking for sys/wait.h.
+
+2006-08-18 Eli Zaretskii <eliz@gnu.org>
+
+ * configure.in (PATH_SEPARATOR_CHAR): Define to the value of
+ $PATH_SEPARATOR.
+
+ * make.h (PATH_SEPARATOR_CHAR): Define only if still undefined.
+ Normally, it is defined in config.h.
+
+ * config/dospaths.m4 <ac_cv_dos_paths>: Define to yes on Cygwin as
+ well.
+
+ * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Define
+ sh_chars_sh for Windows platforms that emulate Unix.
+
+2006-05-07 Paul D. Smith <psmith@gnu.org>
+
+ * README.OS2.template: Updates provided by Andreas Buening
+ <andreas.buening@nexgo.de>.
+
+2006-04-30 Paul D. Smith <psmith@gnu.org>
+
+ * make.h: Include <direct.h> if HAVE_DIRECT_H.
+ * config.h.W32.template (HAVE_DIRECT_H): Set it if it's available.
+
+2006-04-26 Paul D. Smith <psmith@gnu.org>
+
+ * README.cvs: Add a reminder to notify the GNU translation robot.
+
+ * doc/make.texi: Change @direcategory (requested by Karl Berry).
+
+2006-04-20 Paul D. Smith <psmith@gnu.org>
+
+ * maintMakefile (po-check): Use Perl instead of grep -E, for systems
+ that don't have extended grep.
+ (cvsclean): Use $(PERL) instead of perl.
+
2006-04-09 Paul D. Smith <psmith@gnu.org>
* maintMakefile: Add some extra warning options (GCC 4.1 only?)
diff --git a/README.OS2.template b/README.OS2.template
index 77b6bf0..0495b2e 100644
--- a/README.OS2.template
+++ b/README.OS2.template
@@ -13,7 +13,7 @@ GNU make supports both shell types. The following list defines the order
that is used to determine the shell:
1. The shell specified by the environment variable MAKESHELL.
- 2. The shell specified by the SHELL variable within a Makefile. As on
+ 2. The shell specified by the SHELL variable within a Makefile. Like
Unix, SHELL is NOT taken from the environment.
3. The shell specified by the COMSPEC environment variable.
4. The shell specified by the OS2_SHELL environment variable.
@@ -64,7 +64,7 @@ A standard Unix like build environment:
- GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0)
If you want to recreate the configuration files (developers only!)
-you need also: GNU m4 1.4, autoconf 2.59, automake 1.8.2 (or compatible)
+you need also: GNU m4 1.4, autoconf 2.59, automake 1.9.6 (or compatible)
III. ***** COMPILATION AND INSTALLATION *****
@@ -83,7 +83,7 @@ b) Installation into x:/usr
Note: Although it is possible to compile make using "./configure",
"make", "make install" this is not recommended. In particular,
- you must ALWAYS use LDFLAGS="-Zstack 0x8000" because the default
+ you must ALWAYS use LDFLAGS="-Zstack 0x6000" because the default
stack size is far to small and make will not work properly!
Recommended environment variables and installation options:
@@ -91,13 +91,13 @@ Recommended environment variables and installation options:
export ac_executable_extensions=".exe"
export CPPFLAGS="-D__ST_MT_ERRNO__"
export CFLAGS="-O2 -Zomf -Zmt"
- export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
+ export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
export RANLIB="echo"
./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext
make AR=emxomfar
make install
-Note: If you use gcc 2.9.x or higher I recommend to set also LIBS="-lgcc"
+Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc"
Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS.
See section I. for details.
@@ -148,15 +148,15 @@ To run the testsuite do the following:
export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
export CFLAGS="-Zomf -O2 -Zmt"
- export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
+ export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
export RANLIB="echo"
./configure --prefix=x:/usr --disable-nls
make AR=emxomfar
make check
-All tests should work fine with the exception of "default_names" which
-is because OS/2 file systems are not case sensitive ("makefile" and
-"Makefile" specify the same file).
+All tests should work fine with the exception of one of the "INCLUDE_DIRS"
+tests which will fail if your /usr/include directory is on a drive different
+from the make source tree.
-------------------------------------------------------------------------------
diff --git a/README.cvs b/README.cvs
index 9194f00..59a9d95 100644
--- a/README.cvs
+++ b/README.cvs
@@ -169,6 +169,13 @@ what you do:
It will ask for the GPG passphrase _THREE_ times. Sigh.
+For both final releases and pre-releases, send an email with the URL of
+the package to the GNU translation robot to allow the translators to
+work on it:
+
+ <translation@iro.umontreal.ca>
+
+
Where to Announce
-----------------
diff --git a/config.h.W32.template b/config.h.W32.template
index e1d92ca..fc7fccc 100644
--- a/config.h.W32.template
+++ b/config.h.W32.template
@@ -81,6 +81,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
*/
#define HAVE_DIRENT_H 1
+/* Define to 1 if you have the <direct.h> header file, and it defines getcwd()
+ and chdir().
+ */
+#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__INTERIX)
+# define HAVE_DIRECT_H 1
+#endif
+
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
/* #undef HAVE_DOPRNT */
diff --git a/config/.cvsignore b/config/.cvsignore
index 8789912..b95b83b 100644
--- a/config/.cvsignore
+++ b/config/.cvsignore
@@ -3,5 +3,9 @@ config.*
mkinstalldirs
texinfo.tex
mdate-sh
+compile
+depcomp
+install-sh
+missing
Makefile Makefile.in
diff --git a/config/dospaths.m4 b/config/dospaths.m4
index 1f40640..3d55cee 100644
--- a/config/dospaths.m4
+++ b/config/dospaths.m4
@@ -22,7 +22,7 @@ AC_DEFUN([pds_AC_DOS_PATHS],
AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths],
[
AC_COMPILE_IFELSE([
-#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
neither MSDOS nor Windows nor OS2
#endif
],
diff --git a/configure.in b/configure.in
index c842ac5..6bc76f8 100644
--- a/configure.in
+++ b/configure.in
@@ -191,7 +191,7 @@ AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
# Check out the wait reality.
-AC_CHECK_HEADERS(sys/wait.h)
+AC_CHECK_HEADERS(sys/wait.h,,,[[#include <sys/types.h>]])
AC_CHECK_FUNCS(waitpid wait3)
AC_MSG_CHECKING(for union wait)
AC_CACHE_VAL(make_cv_union_wait, [dnl
@@ -381,6 +381,8 @@ case "$host" in
;;
esac
+AC_DEFINE_UNQUOTED(PATH_SEPARATOR_CHAR,'$PATH_SEPARATOR',[Define to the character that separates directories in PATH.])
+
# Include the Maintainer's Makefile section, if it's here.
MAINT_MAKEFILE=/dev/null
diff --git a/doc/make.texi b/doc/make.texi
index 904d1c2..4680dec 100644
--- a/doc/make.texi
+++ b/doc/make.texi
@@ -50,7 +50,7 @@ Software Foundation raise funds for GNU development.''
@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
-@dircategory GNU Packages
+@dircategory Software development
@direntry
* Make: (make). Remake files automatically.
@end direntry
@@ -1009,6 +1009,10 @@ it) is effectively blank, and is ignored. If you want a literal
appear on any line in the makefile, although they are treated
specially in certain situations.
+You cannot use comments within variable references or function calls:
+any instance of @code{#} will be treated literally (rather than as the
+start of a comment) inside a variable reference or function call.
+
Within a command script (if the line begins with a TAB character) the
entire line is passed to the shell, just as with any other line that
begins with a TAB. The shell decides how to interpret the text:
@@ -1251,10 +1255,10 @@ name2 = inc.mk
@end group
@end example
-@xref{Text Functions}, for more information on the @code{word} and
-@code{words} functions used above. @xref{Flavors, The Two Flavors of
-Variables}, for more information on simply-expanded (@code{:=})
-variable definitions.
+@xref{Text Functions}, for more information on the @code{lastword}
+function used above. @xref{Flavors, The Two Flavors of Variables},
+for more information on simply-expanded (@code{:=}) variable
+definitions.
@node Special Variables, Remaking Makefiles, MAKEFILE_LIST Variable, Makefiles
@comment node-name, next, previous, up
@@ -1744,7 +1748,7 @@ In the first prerequisite list, all three variables (@code{$$<},
second, they will have values @code{foo.1}, @code{foo.1 bar.1}, and
@code{foo.1 bar.1} respectively. In the third they will have values
@code{foo.1}, @code{foo.1 bar.1 foo.2 bar.2}, and @code{foo.1 bar.1
-foo.2 bar.2} respectively.
+foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1} respectively.
Rules undergo secondary expansion in makefile order, except that
the rule with the command script is always evaluated last.
@@ -1937,7 +1941,7 @@ references, if you really want a dollar sign in a target or
prerequisite you must write two of them, @samp{$$} (@pxref{Using
Variables, ,How to Use Variables}). If you have enabled secondary
expansion (@pxref{Secondary Expansion}) and you want a literal dollar
-sign in the prerequisites lise, you must actually write @emph{four}
+sign in the prerequisites list, you must actually write @emph{four}
dollar signs (@samp{$$$$}).
You may split a long line by inserting a backslash followed by a
@@ -2000,10 +2004,41 @@ symbol are normal; any prerequisites to the right are order-only:
The normal prerequisites section may of course be empty. Also, you
may still declare multiple lines of prerequisites for the same target:
-they are appended appropriately. Note that if you declare the same
-file to be both a normal and an order-only prerequisite, the normal
-prerequisite takes precedence (since they are a strict superset of the
-behavior of an order-only prerequisite).
+they are appended appropriately (normal prerequisites are appended to
+the list of normal prerequisites; order-only prerequisites are
+appended to the list of order-only prerequisites). Note that if you
+declare the same file to be both a normal and an order-only
+prerequisite, the normal prerequisite takes precedence (since they
+have a strict superset of the behavior of an order-only prerequisite).
+
+Consider an example where your targets are to be placed in a separate
+directory, and that directory might not exist before @code{make} is
+run. In this situation, you want the directory to be created before
+any targets are placed into it but, because the timestamps on
+directories change whenever a file is added, removed, or renamed, we
+certainly don't want to rebuild all the targets whenever the
+directory's timestamp changes. One way to manage this is with
+order-only prerequisites: make the directory an order-only
+prerequisite on all the targets:
+
+@example
+OBJDIR := objdir
+OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)
+
+$(OBJDIR)/%.o : %.c
+ $(COMPILE.c) $(OUTPUT_OPTION) $<
+
+all: $(OBJS)
+
+$(OBJS): | $(OBJDIR)
+
+$(OBJDIR):
+ mkdir $(OBJDIR)
+@end example
+
+Now the rule to create the @file{objdir} directory will be run, if
+needed, before any @samp{.o} is built, but no @samp{.o} will be built
+because the @file{objdir} directory timestamp changed.
@node Wildcards, Directory Search, Prerequisite Types, Rules
@section Using Wildcard Characters in File Names
@@ -2995,11 +3030,11 @@ Sub-@code{make}}.
@item .NOTPARALLEL
@cindex parallel execution, overriding
-If @code{.NOTPARALLEL} is mentioned as a target, then this invocation of
-@code{make} will be run serially, even if the @samp{-j} option is
-given. Any recursively invoked @code{make} command will still be run in
-parallel (unless its makefile contains this target). Any prerequisites
-on this target are ignored.
+If @code{.NOTPARALLEL} is mentioned as a target, then this invocation
+of @code{make} will be run serially, even if the @samp{-j} option is
+given. Any recursively invoked @code{make} command will still run
+commands in parallel (unless its makefile also contains this target).
+Any prerequisites on this target are ignored.
@end table
Any defined implicit rule suffix also counts as a special target if it
@@ -3093,7 +3128,7 @@ more than one rule gives commands for the same file, @code{make} uses
the last set given and prints an error message. (As a special case,
if the file's name begins with a dot, no error message is printed.
This odd behavior is only for compatibility with other implementations
-of @code{make}... you should avoid using it). Occasionally it is
+of @code{make}@dots{} you should avoid using it). Occasionally it is
useful to have the same target invoke multiple commands which are
defined in different parts of your makefile; you can use
@dfn{double-colon rules} (@pxref{Double-Colon}) for this.
@@ -3652,11 +3687,12 @@ hello world
@end example
@noindent
-Notice how the backslash/newline pair was removed inside the string quoted
-with double quotes (@code{"..."}), but not from the string quoted with single
-quotes (@code{'...'}). This is the way the default shell (@file{/bin/sh})
-handles backslash/newline pairs. If you specify a different shell in your
-makefiles it may treat them differently.
+Notice how the backslash/newline pair was removed inside the string
+quoted with double quotes (@code{"@dots{}"}), but not from the string
+quoted with single quotes (@code{'@dots{}'}). This is the way the
+default shell (@file{/bin/sh}) handles backslash/newline pairs. If
+you specify a different shell in your makefiles it may treat them
+differently.
Sometimes you want to split a long line inside of single quotes, but
you don't want the backslash-newline to appear in the quoted content.
@@ -3942,7 +3978,9 @@ GNU @code{make} knows how to execute several commands at once.
Normally, @code{make} will execute only one command at a time, waiting
for it to finish before executing the next. However, the @samp{-j} or
@samp{--jobs} option tells @code{make} to execute many commands
-simultaneously.@refill
+simultaneously. You can inhibit parallelism in a particular makefile
+with the @code{.NOTPARALLEL} pseudo-target (@pxref{Special
+Targets,Special Built-in Target Names}).@refill
On MS-DOS, the @samp{-j} option has no effect, since that system doesn't
support multi-processing.
diff --git a/job.c b/job.c
index 50c6d8f..79bdb0d 100644
--- a/job.c
+++ b/job.c
@@ -2307,6 +2307,12 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
"login", "logout", "read", "readonly", "set",
"shift", "switch", "test", "times", "trap",
"umask", "wait", "while", 0 };
+# ifdef HAVE_DOS_PATHS
+ /* This is required if the MSYS/Cygwin ports (which do not define
+ WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses
+ sh_chars_sh[] directly (see below). */
+ static char *sh_chars_sh = sh_chars;
+# endif /* HAVE_DOS_PATHS */
#endif
int i;
char *p;
diff --git a/maintMakefile b/maintMakefile
index 457a39e..4599e15 100644
--- a/maintMakefile
+++ b/maintMakefile
@@ -91,11 +91,12 @@ CVS-CLEAN-FILES += $(maintFILES) $(TEMPLATES) $(MTEMPLATES) NMakefile \
# This rule tries to clean the tree right down to how it looks when you do a
# virgin CVS checkout.
-# This is potentially dangerous since it removes _ANY FILE_ that is not in
-# CVS. Including files you might mean to add to CVS but haven't yet...
-# I only use this in subdirectories where it's unlikely we have any new
-# files. Stil...
-cvsclean = perl -e '$$k{CVS} = 1; open(E,"< CVS/Entries") || die "CVS/Entries: $$!\n"; while (defined ($$_ = <E>)) { m%^/([^/]*)% or next; $$k{$$1} = 1; } close(E) || die "CVS/Entries: $$!\n"; opendir(D, ".") || die ".: $$!\n"; while (defined ($$_ = readdir(D))) { -f $$_ && ! exists $$k{$$_} && unlink($$_); } closedir(D) || die ".: $$!\n";'
+# This target is potentially dangerous since it removes _ANY FILE_ that
+# is not in CVS. Including files you might mean to add to CVS but
+# haven't yet... I only use this in subdirectories where it's unlikely
+# we have any new files. Still... be careful!!
+
+cvsclean = $(PERL) -e '$$k{CVS} = 1; open(E,"< CVS/Entries") || die "CVS/Entries: $$!\n"; while (defined ($$_ = <E>)) { m%^/([^/]*)% or next; $$k{$$1} = 1; } close(E) || die "CVS/Entries: $$!\n"; opendir(D, ".") || die ".: $$!\n"; while (defined ($$_ = readdir(D))) { -f $$_ && ! exists $$k{$$_} && unlink($$_); } closedir(D) || die ".: $$!\n";'
.PHONY: cvs-clean
cvs-clean: maintainer-clean
@@ -214,8 +215,8 @@ changelog-check:
# Ignore make.h; it defines _().
po-check:
if test -f po/POTFILES.in; then \
- grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \
- grep -E -l '\b_\(' *.c *.h | grep -v make.h | sort > $@-2; \
+ grep '^[^#]' po/POTFILES.in | sort > $@-1; \
+ $(PERL) -wn -e 'if (/\b_\(/) { $$ARGV eq "make.h" || print "$$ARGV\n" and close ARGV }' *.c *.h | sort > $@-2; \
diff -u $@-1 $@-2 || exit 1; \
rm -f $@-1 $@-2; \
fi
diff --git a/make.1 b/make.1
index d11c4e6..5958b2e 100644
--- a/make.1
+++ b/make.1
@@ -164,7 +164,7 @@ for debugging while remaking makefiles.
Give variables taken from the environment precedence
over variables from makefiles.
.TP 0.5i
-+\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
+\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
Use
.I file
as a makefile.
diff --git a/make.h b/make.h
index 949f35a..316d9c7 100644
--- a/make.h
+++ b/make.h
@@ -311,16 +311,18 @@ int strcmpi (const char *,const char *);
#define S_(msg1,msg2,num) ngettext (msg1,msg2,num)
/* Handle other OSs. */
-#if defined(HAVE_DOS_PATHS)
-# define PATH_SEPARATOR_CHAR ';'
-#elif defined(VMS)
-# define PATH_SEPARATOR_CHAR ','
-#else
-# define PATH_SEPARATOR_CHAR ':'
+#ifndef PATH_SEPARATOR_CHAR
+# if defined(HAVE_DOS_PATHS)
+# define PATH_SEPARATOR_CHAR ';'
+# elif defined(VMS)
+# define PATH_SEPARATOR_CHAR ','
+# else
+# define PATH_SEPARATOR_CHAR ':'
+# endif
#endif
-/* This is needed for getcwd() and chdir(). */
-#if defined(_MSC_VER) || defined(__BORLANDC__)
+/* This is needed for getcwd() and chdir(), on some W32 systems. */
+#if defined(HAVE_DIRECT_H)
# include <direct.h>
#endif
diff --git a/remake.c b/remake.c
index 363b929..8d17ce7 100644
--- a/remake.c
+++ b/remake.c
@@ -535,11 +535,9 @@ update_file_1 (struct file *file, unsigned int depth)
if (!running)
/* The prereq is considered changed if the timestamp has changed while
- it was built, OR it doesn't exist.
- This causes the Linux kernel build to break. We'll defer this
- fix until GNU make 3.82 to give them time to update. */
+ it was built, OR it doesn't exist. */
d->changed = ((file_mtime (d->file) != mtime)
- /* || (mtime == NONEXISTENT_MTIME) */);
+ || (mtime == NONEXISTENT_MTIME));
lastd = d;
d = d->next;
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 3e3520f..2fca415 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,14 @@
+2006-10-01 Paul Smith <psmith@paulandlesley.org>
+
+ * run_make_tests.pl (set_more_defaults): Remove setting of LANG in
+ ENV here. This doesn't always work.
+ * test_driver.pl (toplevel): Set LC_ALL to 'C' in the make
+ environment. Fixes Savannah bug #16698.
+
+2006-09-30 Paul Smith <psmith@paulandlesley.org>
+
+ * scripts/variables/automatic: Add back the test for bug #8154.
+
2006-04-01 Paul D. Smith <psmith@gnu.org>
* scripts/functions/realpath: Don't run tests with multiple
diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl
index 689ce2e..0419fef 100755
--- a/tests/run_make_tests.pl
+++ b/tests/run_make_tests.pl
@@ -228,11 +228,6 @@ sub set_more_defaults
local($string);
local($index);
- # Make sure we're in the C locale for those systems that support it,
- # so sorting, etc. is predictable.
- #
- $ENV{LANG} = 'C';
-
# find the type of the port. We do this up front to have a single
# point of change if it needs to be tweaked.
#
diff --git a/tests/scripts/variables/automatic b/tests/scripts/variables/automatic
index 7237fe2..c0fdff8 100644
--- a/tests/scripts/variables/automatic
+++ b/tests/scripts/variables/automatic
@@ -95,17 +95,16 @@ mbr.src: ; @:',
# Make sure that nonexistent prerequisites are listed in $?, since they are
# considered reasons for the target to be rebuilt.
#
-# This was undone due to Savannah bug #16002. We'll re-do it in the next
-# release. See Savannah bug #16051.
+# See also Savannah bugs #16002 and #16051.
-#touch('foo');
-#
-#run_make_test('
-#foo: bar ; @echo "\$$? = $?"
-#bar: ;',
-# '',
-# '$? = bar');
-#
-#unlink('foo');
+touch('foo');
+
+run_make_test('
+foo: bar ; @echo "\$$? = $?"
+bar: ;',
+ '',
+ '$? = bar');
+
+unlink('foo');
1;
diff --git a/tests/test_driver.pl b/tests/test_driver.pl
index c5ee157..dd1b33b 100644
--- a/tests/test_driver.pl
+++ b/tests/test_driver.pl
@@ -78,9 +78,9 @@ sub resetENV
sub toplevel
{
# Pull in benign variables from the user's environment
- #
+
foreach (# UNIX-specific things
- 'TZ', 'LANG', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
+ 'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
# Purify things
'PURIFYOPTIONS',
# Windows NT-specific stuff
@@ -92,6 +92,10 @@ sub toplevel
$makeENV{$_} = $ENV{$_} if $ENV{$_};
}
+ # Make sure our compares are not foiled by locale differences
+
+ $makeENV{LC_ALL} = 'C';
+
# Replace the environment with the new one
#
%origENV = %ENV;
diff --git a/variable.c b/variable.c
index 37d3f72..098a941 100644
--- a/variable.c
+++ b/variable.c
@@ -437,7 +437,7 @@ lookup_variable_in_set (const char *name, unsigned int length,
rule, then we will use the "root" double-colon target's variable set as the
parent of FILE's variable set.
- If we're READing a makefile, don't do the pattern variable search now,
+ If we're READING a makefile, don't do the pattern variable search now,
since the pattern variable might not have been defined yet. */
void
diff --git a/variable.h b/variable.h
index a404abb..783fb62 100644
--- a/variable.h
+++ b/variable.h
@@ -138,7 +138,7 @@ void free_variable_set (struct variable_set_list *);
struct variable_set_list *push_new_variable_scope (void);
void pop_variable_scope (void);
void define_automatic_variables (void);
-void initialize_file_variables (struct file *file, int read);
+void initialize_file_variables (struct file *file, int reading);
void print_file_variables (struct file *file);
void print_variable_set (struct variable_set *set, char *prefix);
void merge_variable_set_lists (struct variable_set_list **to_list,