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.
This commit is contained in:
Paul Smith 2006-10-01 05:38:38 +00:00
parent c25294ad3b
commit 7595f38f62
19 changed files with 214 additions and 74 deletions

View file

@ -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> 2006-04-09 Paul D. Smith <psmith@gnu.org>
* maintMakefile: Add some extra warning options (GCC 4.1 only?) * maintMakefile: Add some extra warning options (GCC 4.1 only?)

View file

@ -13,7 +13,7 @@ GNU make supports both shell types. The following list defines the order
that is used to determine the shell: that is used to determine the shell:
1. The shell specified by the environment variable MAKESHELL. 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. Unix, SHELL is NOT taken from the environment.
3. The shell specified by the COMSPEC environment variable. 3. The shell specified by the COMSPEC environment variable.
4. The shell specified by the OS2_SHELL 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) - GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0)
If you want to recreate the configuration files (developers only!) 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 ***** III. ***** COMPILATION AND INSTALLATION *****
@ -83,7 +83,7 @@ b) Installation into x:/usr
Note: Although it is possible to compile make using "./configure", Note: Although it is possible to compile make using "./configure",
"make", "make install" this is not recommended. In particular, "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! stack size is far to small and make will not work properly!
Recommended environment variables and installation options: Recommended environment variables and installation options:
@ -91,13 +91,13 @@ Recommended environment variables and installation options:
export ac_executable_extensions=".exe" export ac_executable_extensions=".exe"
export CPPFLAGS="-D__ST_MT_ERRNO__" export CPPFLAGS="-D__ST_MT_ERRNO__"
export CFLAGS="-O2 -Zomf -Zmt" 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" export RANLIB="echo"
./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext
make AR=emxomfar make AR=emxomfar
make install 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. Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS.
See section I. for details. 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 CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
export CFLAGS="-Zomf -O2 -Zmt" 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" export RANLIB="echo"
./configure --prefix=x:/usr --disable-nls ./configure --prefix=x:/usr --disable-nls
make AR=emxomfar make AR=emxomfar
make check make check
All tests should work fine with the exception of "default_names" which All tests should work fine with the exception of one of the "INCLUDE_DIRS"
is because OS/2 file systems are not case sensitive ("makefile" and tests which will fail if your /usr/include directory is on a drive different
"Makefile" specify the same file). from the make source tree.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

View file

@ -169,6 +169,13 @@ what you do:
It will ask for the GPG passphrase _THREE_ times. Sigh. 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 Where to Announce
----------------- -----------------

View file

@ -81,6 +81,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
*/ */
#define HAVE_DIRENT_H 1 #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.' */ /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
/* #undef HAVE_DOPRNT */ /* #undef HAVE_DOPRNT */

View file

@ -3,5 +3,9 @@ config.*
mkinstalldirs mkinstalldirs
texinfo.tex texinfo.tex
mdate-sh mdate-sh
compile
depcomp
install-sh
missing
Makefile Makefile.in Makefile Makefile.in

View file

@ -22,7 +22,7 @@ AC_DEFUN([pds_AC_DOS_PATHS],
AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths], AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths],
[ [
AC_COMPILE_IFELSE([ 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 neither MSDOS nor Windows nor OS2
#endif #endif
], ],

View file

@ -191,7 +191,7 @@ AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
# Check out the wait reality. # 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_CHECK_FUNCS(waitpid wait3)
AC_MSG_CHECKING(for union wait) AC_MSG_CHECKING(for union wait)
AC_CACHE_VAL(make_cv_union_wait, [dnl AC_CACHE_VAL(make_cv_union_wait, [dnl
@ -381,6 +381,8 @@ case "$host" in
;; ;;
esac 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. # Include the Maintainer's Makefile section, if it's here.
MAINT_MAKEFILE=/dev/null MAINT_MAKEFILE=/dev/null

View file

@ -50,7 +50,7 @@ Software Foundation raise funds for GNU development.''
@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz @c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
@dircategory GNU Packages @dircategory Software development
@direntry @direntry
* Make: (make). Remake files automatically. * Make: (make). Remake files automatically.
@end direntry @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 appear on any line in the makefile, although they are treated
specially in certain situations. 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 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 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: begins with a TAB. The shell decides how to interpret the text:
@ -1251,10 +1255,10 @@ name2 = inc.mk
@end group @end group
@end example @end example
@xref{Text Functions}, for more information on the @code{word} and @xref{Text Functions}, for more information on the @code{lastword}
@code{words} functions used above. @xref{Flavors, The Two Flavors of function used above. @xref{Flavors, The Two Flavors of Variables},
Variables}, for more information on simply-expanded (@code{:=}) for more information on simply-expanded (@code{:=}) variable
variable definitions. definitions.
@node Special Variables, Remaking Makefiles, MAKEFILE_LIST Variable, Makefiles @node Special Variables, Remaking Makefiles, MAKEFILE_LIST Variable, Makefiles
@comment node-name, next, previous, up @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 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 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 @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 Rules undergo secondary expansion in makefile order, except that
the rule with the command script is always evaluated last. 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 prerequisite you must write two of them, @samp{$$} (@pxref{Using
Variables, ,How to Use Variables}). If you have enabled secondary Variables, ,How to Use Variables}). If you have enabled secondary
expansion (@pxref{Secondary Expansion}) and you want a literal dollar 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{$$$$}). dollar signs (@samp{$$$$}).
You may split a long line by inserting a backslash followed by a 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 The normal prerequisites section may of course be empty. Also, you
may still declare multiple lines of prerequisites for the same target: may still declare multiple lines of prerequisites for the same target:
they are appended appropriately. Note that if you declare the same they are appended appropriately (normal prerequisites are appended to
file to be both a normal and an order-only prerequisite, the normal the list of normal prerequisites; order-only prerequisites are
prerequisite takes precedence (since they are a strict superset of the appended to the list of order-only prerequisites). Note that if you
behavior of an order-only prerequisite). 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 @node Wildcards, Directory Search, Prerequisite Types, Rules
@section Using Wildcard Characters in File Names @section Using Wildcard Characters in File Names
@ -2995,11 +3030,11 @@ Sub-@code{make}}.
@item .NOTPARALLEL @item .NOTPARALLEL
@cindex parallel execution, overriding @cindex parallel execution, overriding
If @code{.NOTPARALLEL} is mentioned as a target, then this invocation of If @code{.NOTPARALLEL} is mentioned as a target, then this invocation
@code{make} will be run serially, even if the @samp{-j} option is 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 given. Any recursively invoked @code{make} command will still run
parallel (unless its makefile contains this target). Any prerequisites commands in parallel (unless its makefile also contains this target).
on this target are ignored. Any prerequisites on this target are ignored.
@end table @end table
Any defined implicit rule suffix also counts as a special target if it 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, 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. if the file's name begins with a dot, no error message is printed.
This odd behavior is only for compatibility with other implementations 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 useful to have the same target invoke multiple commands which are
defined in different parts of your makefile; you can use defined in different parts of your makefile; you can use
@dfn{double-colon rules} (@pxref{Double-Colon}) for this. @dfn{double-colon rules} (@pxref{Double-Colon}) for this.
@ -3652,11 +3687,12 @@ hello world
@end example @end example
@noindent @noindent
Notice how the backslash/newline pair was removed inside the string quoted Notice how the backslash/newline pair was removed inside the string
with double quotes (@code{"..."}), but not from the string quoted with single quoted with double quotes (@code{"@dots{}"}), but not from the string
quotes (@code{'...'}). This is the way the default shell (@file{/bin/sh}) quoted with single quotes (@code{'@dots{}'}). This is the way the
handles backslash/newline pairs. If you specify a different shell in your default shell (@file{/bin/sh}) handles backslash/newline pairs. If
makefiles it may treat them differently. 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 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. 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 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 for it to finish before executing the next. However, the @samp{-j} or
@samp{--jobs} option tells @code{make} to execute many commands @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 On MS-DOS, the @samp{-j} option has no effect, since that system doesn't
support multi-processing. support multi-processing.

6
job.c
View file

@ -2307,6 +2307,12 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
"login", "logout", "read", "readonly", "set", "login", "logout", "read", "readonly", "set",
"shift", "switch", "test", "times", "trap", "shift", "switch", "test", "times", "trap",
"umask", "wait", "while", 0 }; "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 #endif
int i; int i;
char *p; char *p;

View file

@ -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 # This rule tries to clean the tree right down to how it looks when you do a
# virgin CVS checkout. # virgin CVS checkout.
# This is potentially dangerous since it removes _ANY FILE_ that is not in # This target is potentially dangerous since it removes _ANY FILE_ that
# CVS. Including files you might mean to add to CVS but haven't yet... # is not in CVS. Including files you might mean to add to CVS but
# I only use this in subdirectories where it's unlikely we have any new # haven't yet... I only use this in subdirectories where it's unlikely
# files. Stil... # 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";'
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 .PHONY: cvs-clean
cvs-clean: maintainer-clean cvs-clean: maintainer-clean
@ -214,8 +215,8 @@ changelog-check:
# Ignore make.h; it defines _(). # Ignore make.h; it defines _().
po-check: po-check:
if test -f po/POTFILES.in; then \ if test -f po/POTFILES.in; then \
grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \ grep '^[^#]' po/POTFILES.in | sort > $@-1; \
grep -E -l '\b_\(' *.c *.h | grep -v make.h | sort > $@-2; \ $(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; \ diff -u $@-1 $@-2 || exit 1; \
rm -f $@-1 $@-2; \ rm -f $@-1 $@-2; \
fi fi

2
make.1
View file

@ -164,7 +164,7 @@ for debugging while remaking makefiles.
Give variables taken from the environment precedence Give variables taken from the environment precedence
over variables from makefiles. over variables from makefiles.
.TP 0.5i .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 Use
.I file .I file
as a makefile. as a makefile.

18
make.h
View file

@ -311,16 +311,18 @@ int strcmpi (const char *,const char *);
#define S_(msg1,msg2,num) ngettext (msg1,msg2,num) #define S_(msg1,msg2,num) ngettext (msg1,msg2,num)
/* Handle other OSs. */ /* Handle other OSs. */
#if defined(HAVE_DOS_PATHS) #ifndef PATH_SEPARATOR_CHAR
# define PATH_SEPARATOR_CHAR ';' # if defined(HAVE_DOS_PATHS)
#elif defined(VMS) # define PATH_SEPARATOR_CHAR ';'
# define PATH_SEPARATOR_CHAR ',' # elif defined(VMS)
#else # define PATH_SEPARATOR_CHAR ','
# define PATH_SEPARATOR_CHAR ':' # else
# define PATH_SEPARATOR_CHAR ':'
# endif
#endif #endif
/* This is needed for getcwd() and chdir(). */ /* This is needed for getcwd() and chdir(), on some W32 systems. */
#if defined(_MSC_VER) || defined(__BORLANDC__) #if defined(HAVE_DIRECT_H)
# include <direct.h> # include <direct.h>
#endif #endif

View file

@ -535,11 +535,9 @@ update_file_1 (struct file *file, unsigned int depth)
if (!running) if (!running)
/* The prereq is considered changed if the timestamp has changed while /* The prereq is considered changed if the timestamp has changed while
it was built, OR it doesn't exist. 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. */
d->changed = ((file_mtime (d->file) != mtime) d->changed = ((file_mtime (d->file) != mtime)
/* || (mtime == NONEXISTENT_MTIME) */); || (mtime == NONEXISTENT_MTIME));
lastd = d; lastd = d;
d = d->next; d = d->next;

View file

@ -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> 2006-04-01 Paul D. Smith <psmith@gnu.org>
* scripts/functions/realpath: Don't run tests with multiple * scripts/functions/realpath: Don't run tests with multiple

View file

@ -228,11 +228,6 @@ sub set_more_defaults
local($string); local($string);
local($index); 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 # find the type of the port. We do this up front to have a single
# point of change if it needs to be tweaked. # point of change if it needs to be tweaked.
# #

View file

@ -95,17 +95,16 @@ mbr.src: ; @:',
# Make sure that nonexistent prerequisites are listed in $?, since they are # Make sure that nonexistent prerequisites are listed in $?, since they are
# considered reasons for the target to be rebuilt. # considered reasons for the target to be rebuilt.
# #
# This was undone due to Savannah bug #16002. We'll re-do it in the next # See also Savannah bugs #16002 and #16051.
# release. See Savannah bug #16051.
#touch('foo'); touch('foo');
#
#run_make_test(' run_make_test('
#foo: bar ; @echo "\$$? = $?" foo: bar ; @echo "\$$? = $?"
#bar: ;', bar: ;',
# '', '',
# '$? = bar'); '$? = bar');
#
#unlink('foo'); unlink('foo');
1; 1;

View file

@ -78,9 +78,9 @@ sub resetENV
sub toplevel sub toplevel
{ {
# Pull in benign variables from the user's environment # Pull in benign variables from the user's environment
#
foreach (# UNIX-specific things foreach (# UNIX-specific things
'TZ', 'LANG', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH', 'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
# Purify things # Purify things
'PURIFYOPTIONS', 'PURIFYOPTIONS',
# Windows NT-specific stuff # Windows NT-specific stuff
@ -92,6 +92,10 @@ sub toplevel
$makeENV{$_} = $ENV{$_} if $ENV{$_}; $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 # Replace the environment with the new one
# #
%origENV = %ENV; %origENV = %ENV;

View file

@ -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 rule, then we will use the "root" double-colon target's variable set as the
parent of FILE's variable set. 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. */ since the pattern variable might not have been defined yet. */
void void

View file

@ -138,7 +138,7 @@ void free_variable_set (struct variable_set_list *);
struct variable_set_list *push_new_variable_scope (void); struct variable_set_list *push_new_variable_scope (void);
void pop_variable_scope (void); void pop_variable_scope (void);
void define_automatic_variables (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_file_variables (struct file *file);
void print_variable_set (struct variable_set *set, char *prefix); void print_variable_set (struct variable_set *set, char *prefix);
void merge_variable_set_lists (struct variable_set_list **to_list, void merge_variable_set_lists (struct variable_set_list **to_list,