Index: trunk/src/gmake/.cvsignore
===================================================================
--- trunk/src/gmake/.cvsignore	(revision 466)
+++ 	(revision )
@@ -1,32 +1,0 @@
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* ABOUT-NLS
-make-3* make-test*
-*.info *.info-*
-stamp-*
-makebook*
-
-.*gdbinit
-
-*.dep *.dvi *.toc *.aux *.log
-*.cp *.cps *.fn *.fns *.vr *.vrs *.tp *.tps *.ky *.kys *.pg *.pgs
-
-README README.DOS README.W32 README.OS2
-aclocal.m4 autom4te.cache
-config.h.in config.h config.status config.cache configure
-Makefile.in Makefile
-build.sh.in build.sh
-SMakefile NMakefile Makefile.DOS
-config.ami configh.dos config.h.W32 config.h-vms
-
-loadavg loadavg.c make
-
-.deps .dep_segment
-
-_*
-sun4 i386 i386-netbsd hp300-netbsd hp300 rs6000 sun3 news800 amiga
-hp700 hp834 mips sol2 i486-linux
-
-customs
-
-install-sh mkinstalldirs
Index: trunk/src/gmake/AUTHORS
===================================================================
--- trunk/src/gmake/AUTHORS	(revision 466)
+++ trunk/src/gmake/AUTHORS	(revision 503)
@@ -7,4 +7,5 @@
 Development starting with GNU make 3.76 by:
     Paul D. Smith <psmith@gnu.org>
+
     Additional development starting with GNU make 3.81 by:
         Boris Kolpackov <boris@kolpackov.net>
@@ -63,2 +64,19 @@
 With suggestions/comments/bug reports from a cast of ... well ...
 hundreds, anyway :)
+
+-------------------------------------------------------------------------------
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/ChangeLog
===================================================================
--- trunk/src/gmake/ChangeLog	(revision 466)
+++ trunk/src/gmake/ChangeLog	(revision 503)
@@ -1,2 +1,739 @@
+2006-04-01  Paul D. Smith  <psmith@gnu.org>
+
+	Version 3.81 released.
+
+	* NEWS: Updated for 3.81.
+
+	* README.cvs: Mention that vpath builds are not supported out of
+	CVS.  Fixes Savannah bug #16236.
+	Remove update of make.texi from the list of things to do; we use
+	version.texi now.
+
+2006-03-26  Paul D. Smith  <psmith@gnu.org>
+
+	* doc/make.texi: Clean up licensing.  Use @copying and version.texi
+	support from automake, as described in the Texinfo manual.
+
+2006-03-25  Eli Zaretskii  <eliz@gnu.org>
+
+	* implicit.c (pattern_search) [HAVE_DOS_PATHS]: Don't compare b
+	with lastslash, since the latter points to filename, not to
+	target.
+	* job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]:
+	Declare and define sh_chars_sh[].
+
+2006-03-23  Paul D. Smith  <psmith@gnu.org>
+
+	* configure.in: Look for build.sh.in in $srcdir so it will be
+	built for remote configurations as well.
+
+	* Makefile.am: Make sure to clean up build.sh during distclean.
+	Fixes Savannah bug #16166.
+
+	* misc.c (log_access): Takes a const char *.
+	* function.c (fold_newlines): Takes an unsigned int *.
+	Both fixes for Savannah bug #16170.
+
+2006-03-22  Boris Kolpackov  <boris@kolpackov.net>
+
+	* implicit.c (pattern_search): Call set_file_variables only
+	if we have prerequisites that need second expansion. Fixes
+	Savannah bug #16140.
+
+2006-03-19  Paul D. Smith  <psmith@gnu.org>
+
+	* remake.c (update_file): Add alloca(0) to clean up alloca'd
+	memory on hosts that don't support it directly.
+
+	* README.cvs: Add information on steps for making a release (to
+	make sure I don't forget any).
+
+	* main.c (clean_jobserver): Move jobserver cleanup code into a new
+	function.
+	(die): Cleanup code was removed from here; call the new function.
+	(main): If we are re-execing, clean up the jobserver first so we
+	don't leak file descriptors.
+	Fix bug reported by Craig Fithian <craig.fithian@citigroup.com>.
+
+2006-03-17  Paul D. Smith  <psmith@gnu.org>
+
+	* maintMakefile (do-po-update): Rewrite this rule to clean up and
+	allow multiple concurrent runs.
+	Patch from Joseph Myers <joseph@codesourcery.com>
+
+2006-03-17  Boris Kolpackov  <boris@kolpackov.net>
+
+	* dep.h (struct dep): Add the stem field.
+	* misc.c (alloc_dep, free_dep): New functions.
+	(copy_dep_chain): Copy stem.
+	(free_dep_chain): Use free_dep.
+	* read.c (record_files): Store stem in the dependency line.
+	* file.c (expand_deps): Use stem stored in the dependency line. Use
+	free_dep_chain instead of free_ns_chain.
+	* implicit.c (pattern_search): Use alloc_dep and free_dep.
+	* read.c (read_all_makefiles, eval_makefile, eval): Ditto.
+	* main.c (main, handle_non_switch_argument): Ditto.
+	* remake.c (check_dep): Ditto.
+	* rule.c (convert_suffix_rule, freerule): Ditto.
+
+2006-03-14  Paul D. Smith  <psmith@gnu.org>
+
+	* expand.c (variable_append): Instead of appending everything then
+	expanding the result, we expand (or not, if it's simple) each part
+	as we add it.
+	(allocated_variable_append): Don't expand the final result.
+	Fixes Savannah bug #15913.
+
+2006-03-09  Paul Smith  <psmith@gnu.org>
+
+	* remake.c (update_file_1): Revert the change of 3 Jan 2006 which
+	listed non-existent files as changed.  Turns out there's a bug in
+	the Linux kernel builds which means that this change causes
+	everything to rebuild every time.  We will re-introduce this fix
+	in the next release, to give them time to fix their build system.
+	Fixes Savannah bug #16002.
+	Introduces Savannah bug #16051.
+
+	* implicit.c (pattern_search) [DOS_PATHS]: Look for DOS paths if
+	we *don't* find UNIX "/".
+	Reported by David Ergo <david.ergo@alterface.com>
+
+2006-03-04  Eli Zaretskii  <eliz@gnu.org>
+
+	* variable.c (do_variable_definition) [WINDOWS32]: Call the shell
+	locator function find_and_set_default_shell if SHELL came from the
+	command line.
+
+2006-02-20  Paul D. Smith  <psmith@gnu.org>
+
+	* variable.c (merge_variable_set_lists): It's legal for *setlist0
+	to be null; don't core in that case.
+
+2006-02-19  Paul D. Smith  <psmith@gnu.org>
+
+	* commands.c (set_file_variables): Realloc, not malloc, the static
+	string values to avoid memory leaks.
+
+	* expand.c (recursively_expand_for_file): Only set reading_file to
+	an initialized value.
+
+	* implicit.c (pattern_search): We need to make a copy of the stem
+	if we get it from an intermediate dep, since those get freed.
+
+	* file.c (lookup_file) [VMS]: Don't lowercase special targets that
+	begin with ".".
+	(enter_file) [VMS]: Ditto.
+	Patch provided by Hartmut Becker <Hartmut.Becker@hp.com>.
+
+2006-02-24  Eli Zaretskii  <eliz@gnu.org>
+
+	* job.c (construct_command_argv_internal): Fix last change.
+
+	* w32/subproc/sub_proc.c (process_pipe_io): Make dwStdin,
+        dwStdout, and dwStderr unsigned int: avoids compiler warnings in
+        the calls to _beginthreadex.
+
+	* expand.c (recursively_expand_for_file): Initialize `save' to
+        prevent compiler warnings.
+
+2006-02-18  Eli Zaretskii  <eliz@gnu.org>
+
+        * job.c (construct_command_argv_internal): Don't create a temporary
+	script/batch file if we are under -n.  Call _setmode to switch the
+	script file stream to text mode.
+
+2006-02-17  Paul D. Smith  <psmith@gnu.org>
+
+	* variable.c (merge_variable_set_lists): Don't try to merge the
+	global_setlist.  Not only is this useless, but it can lead to
+	circularities in the linked list, if global_setlist->next in one
+	list gets set to point to another list which also ends in
+	global_setlist.
+	Fixes Savannah bug #15757.
+
+2006-02-15  Paul D. Smith  <psmith@gnu.org>
+
+	Fix for Savannah bug #106.
+
+	* expand.c (expanding_var): Keep track of which variable we're
+	expanding.  If no variable is being expanded, it's the same as
+	reading_file.
+	* make.h (expanding_var): Declare it.
+	* expand.c (recursively_expand_for_file): Set expanding_var to the
+	current variable we're expanding, unless there's no file info in
+	it (could happen if it comes from the command line or a default
+	variable).  Restore it before we exit.
+	* expand.c (variable_expand_string): Use the expanding_var file
+	info instead of the reading_file info.
+	* function.c (check_numeric): Ditto.
+	(func_word): Ditto.
+	(func_wordlist): Ditto.
+	(func_error): Ditto.
+	(expand_builtin_function): Ditto.
+	(handle_function): Ditto.
+
+2006-02-14  Paul D. Smith  <psmith@gnu.org>
+
+	* read.c (eval): Even if the included filenames expands to the
+	empty string we still need to free the allocated buffer.
+
+	* implicit.c (pattern_search): If we allocated a variable set for
+	an impossible file, free it.
+	* variable.c (free_variable_set): New function.
+	* variable.h: Declare it.
+
+	* read.c (read_all_makefiles): Makefile names are kept in the
+	strcache, so there's never any need to alloc/free them.
+	(eval): Ditto.
+
+	* main.c (main): Add "archives" to the .FEATURES variable if
+	archive support is enabled.
+	* doc/make.texi (Special Variables): Document it.
+
+2006-02-13  Paul D. Smith  <psmith@gnu.org>
+
+	* implicit.c (pattern_search): Add checking for DOS pathnames to
+	the pattern rule target LASTSLASH manipulation.
+	Fixes Savannah bug #11183.
+
+2006-02-11  Paul D. Smith  <psmith@gnu.org>
+
+	* (ALL FILES): Updated copyright and license notices.
+
+2006-02-10  Paul D. Smith  <psmith@gnu.org>
+
+	A new internal capability: the string cache is a read-only cache
+	of strings, with a hash table interface for fast lookup.  Nothing
+	in the cache will ever be freed, so there's no need for reference
+	counting, etc.  This is the beginning of a full solution for
+	Savannah bug #15182, but for now we only store makefile names here.
+
+	* strcache.c: New file.  Implement a read-only string cache.
+	* make.h: Add prototypes for new functions.
+	* main.c (initialize_global_hash_tables): Initialize the string cache.
+	(print_data_base): Print string cache stats.
+	* read.c (eval_makefile): Use the string cache to store makefile
+	names.  Rewrite the string allocation to be sure we free everything.
+
+2006-02-10  Eli Zaretskii  <eliz@gnu.org>
+
+	* dir.c (dir_contents_file_exists_p): Don't opendir if the
+	directory time stamp didn't change, except on FAT filesystems.
+	Suggested by J. David Bryan <jdbryan@acm.org>.
+
+2006-02-09  Paul D. Smith  <psmith@gnu.org>
+
+	* function.c (func_or): Implement a short-circuiting OR function.
+	(func_and): Implement a short-circuiting AND function.
+	(function_table_init): Update the table with the new functions.
+	* doc/make.texi (Conditional Functions): Changed the "if" section
+	to one on general conditional functions.  Added documentation for
+	$(and ...) and $(or ...) functions.
+	* NEWS: Note new $(and ...) and $(or ...) functions.
+
+2006-02-08  Boris Kolpackov  <boris@kolpackov.net>
+
+	* job.h (struct child): Add the dontcare bitfield.
+	* job.c (new_job): Cache dontcare flag.
+	* job.c (reap_children): Use cached dontcare flag instead of the
+	one in struct file. Fixes Savannah bug #15641.
+
+2006-02-06  Paul D. Smith  <psmith@gnu.org>
+
+	* vpath.c (selective_vpath_search): If the file we find has a
+	timestamp from -o or -W, use that instead of the real time.
+	* remake.c (f_mtime): If the mtime is a special token from -o or
+	-W, don't overwrite it with the real mtime.
+	Fixes Savannah bug #15341.
+
+	Updates from Markus Mauhart <qwe123@chello.at>:
+
+	* w32/subproc/sub_proc.c (process_begin): Remove no-op tests.
+	(process_signal, process_last_err, process_exit_code): Manage
+	invalid handle values.
+	(process_{outbuf,errbuf,outcnt,errcnt,pipes}): Unused and don't
+	manage invalid handles; remove them.
+	* job.c (start_job_command) [WINDOWS32]: Jump out on error.
+	* config.h.W32.template [WINDOWS32]: Set flags for Windows builds.
+	* README.cvs: Updates for building from CVS.
+
+2006-02-05  Paul D. Smith  <psmith@gnu.org>
+
+	* file.c (enter_file): Keep track of the last double_colon entry,
+	to avoid walking the list every time we want to add a new one.
+	Fixes Savannah bug #15533.
+	* filedef.h (struct file): Add a new LAST pointer.
+
+	* dir.c (directory_contents_hash_cmp): Don't use subtraction to do
+	the comparison.  For 64-bits systems the result of the subtraction
+	might not fit into an int.  Use comparison instead.
+	Fixes Savannah bug #15534.
+
+	* doc/make.texi: Update the chapter on writing commands to reflect
+	the changes made in 3.81 for backslash/newline and SHELL handling.
+
+2006-02-01  Paul D. Smith  <psmith@gnu.org>
+
+	* dir.c (dir_contents_file_exists_p) [WINDOWS32]: Make sure
+	variable st is not used when it's not initialized.
+	Patch from Eli Zaretskii <eliz@gnu.org>.
+
+2006-01-31  Paul D. Smith  <psmith@gnu.org>
+
+	* README.W32.template: Applied patch #4785 from
+	Markus Mauhart <qwe123@chello.at>.
+	* README.cvs: Applied patch #4786 from
+	Markus Mauhart <qwe123@chello.at>.
+	* make_msvc_net2003.vcproj [WINDOWS32]: New version from
+	J. Grant <jg@jguk.org>.
+
+	* main.c: Update the copyright year in the version output.
+	* prepare_w32.bat: Remove this file from the distribution.
+
+2006-01-21  Eli Zaretskii  <eliz@gnu.org>
+
+	* remake.c (update_goal_chain): Set g->changed instead of
+	incrementing it, as it is only 8-bit wide, and could overflow if
+	many commands got started in update_file.
+
+	* w32/include/sub_proc.h: Add a prototype for process_used_slots.
+
+	* w32/subproc/sub_proc.c: Change dimension of proc_array[] to
+	MAXIMUM_WAIT_OBJECTS.
+	(process_wait_for_any_private): Change dimension of handles[]
+	array to MAXIMUM_WAIT_OBJECTS.
+	(process_used_slots): New function.
+	(process_register): Don't register more processes than the
+	available number of slots.
+	(process_easy): Don't start new processes if all slots are used	up.
+
+	* job.c (load_too_high, start_waiting_jobs) [WINDOWS32]: If there
+	are already more children than sub_proc.c can handle, behave as if
+	the load were too high.
+	(start_job_command): Fix a typo in error message when process_easy
+	fails.
+
+2006-01-14  Eli Zaretskii  <eliz@gnu.org>
+
+	* main.c (main) [WINDOWS32]: Don't refuse to run with -jN, even if
+	the shell is not sh.exe.
+
+	* job.c (create_batch_file): Renamed from create_batch_filename;
+	all callers changed.  Don't close the temporary file; return its
+	file descriptor instead.  New arg FD allows to return the file
+	descriptor.
+	(construct_command_argv_internal): Use _fdopen instead of fopen to
+	open the batch file.
+
+2006-01-04  Paul D. Smith  <psmith@gnu.org>
+
+	* readme.vms: Updates for case-insensitive VMS file systems from
+	Hartmut Becker <Hartmut.Becker@hp.com>.
+	* dir.c (vms_hash): Ditto.
+	* vmsify.c (copyto): Ditto.
+	* vmsfunctions.c (readdir): Ditto.
+
+	* make.1: Add a section on the exit codes for make.
+
+	* doc/make.texi: A number of minor updates to the documentation.
+
+2006-01-03  Paul D. Smith  <psmith@gnu.org>
+
+	* remake.c (update_file_1): Mark a prerequisite changed if it
+	doesn't exist.
+
+	* read.c (eval): Be sure to strip off trailing whitespace from the
+	prerequisites list properly.  Also, initialize all fields in
+	struct dep when creating a new one.
+
+2005-12-28  Paul D. Smith  <psmith@gnu.org>
+
+	* config.h.W32.template [WINDOWS32]: Add in some pragmas to
+	disable warnings for MSC.
+	Patch by Rob Tulloh <rtulloh@yahoo.com>.
+
+2005-12-17  Eli Zaretskii  <eliz@gnu.org>
+
+	* doc/make.texi (Execution): Add a footnote about changes in
+	handling of backslash-newline sequences.  Mention the differences
+	on MS-DOS and MS-Windows.
+
+	* NEWS: More details about building the MinGW port and a pointer
+	to README.W32.  Fix the section name that describes the new
+	backward-incompatible processing of backslash-newline sequences.
+	The special processing of SHELL set to "cmd" is only relevant to
+	MS-Windows, not MS-DOS.
+
+2005-12-17  Eli Zaretskii  <eliz@gnu.org>
+
+	* main.c (handle_runtime_exceptions): Cast exrec->ExceptionAddress
+	to DWORD, to avoid compiler warnings.
+	* job.c (exec_command): Cast hWaitPID and hPID to DWORD, and
+	use %ld in format, to avoid compiler warnings.
+
+	* doc/make.texi (Special Targets): Fix a typo.
+	(Appending): Fix cross-reference to Setting.
+	(Special Variables, Secondary Expansion, File Name Functions)
+	(Flavor Function, Pattern Match, Quick Reference): Ensure two
+	periods after a sentence.
+	(Execution): Add @: after "e.g.".
+	(Environment): Fix punctuation.
+	(Target-specific, Call Function, Quick Reference): Add @: after "etc."
+	(Shell Function, Target-specific): Add @: after "vs."
+
+2005-12-14  Boris Kolpackov  <boris@kolpackov.net>
+
+	* read.c (record_target_var): Initialize variable's export field
+	with v_default instead of leaving it "initialized" by whatever
+	garbage happened to be on the heap.
+
+2005-12-12  Paul D. Smith  <psmith@gnu.org>
+
+	* make.1: Fix some display errors and document all existing options.
+	Patch provided by Mike Frysinger <vapier@gentoo.org>.
+
+2005-12-11  Paul D. Smith  <psmith@gnu.org>
+
+	* implicit.c (pattern_search): If 2nd expansion is not set for
+	this implicit rule, replace the pattern with the stem directly,
+	and don't re-expand the variable list.  Along with the other
+	.SECONDEXPANSION changes below, fixes bug #13781.
+
+2005-12-09  Boris Kolpackov  <boris@kolpackov.net>
+
+	* implicit.c (pattern_search): Mark other files that this rule
+	builds as targets so that they are not treated as intermediates
+	by the pattern rule search algorithm. Fixes bug #13022.
+
+2005-12-07  Boris Kolpackov  <boris@kolpackov.net>
+
+	* remake.c (notice_finished_file): Propagate the change of
+	modification time to all the double-colon entries only if
+	it is the last one to be updated. Fixes bug #14334.
+
+2005-11-17  Boris Kolpackov  <boris@kolpackov.net>
+
+	* function.c (func_flavor): Implement the flavor function which
+	returns the flavor of a variable.
+	* doc/make.texi (Functions for Transforming Text): Document it.
+	* NEWS: Add it to the list of new functions.
+
+2005-11-14  Boris Kolpackov  <boris@kolpackov.net>
+
+	* read.c (construct_include_path): Set the .INCLUDE_DIRS special
+	variable.
+	* doc/make.texi (Special Variables): Document .INCLUDE_DIRS.
+	* NEWS: Add .INCLUDE_DIRS to the list of new special variables.
+
+2005-10-26  Paul Smith  <psmith@gnu.org>
+
+	* read.c (record_files): Don't set deps flags if there are no deps.
+	* maintMakefile: We only need to build the templates when we are
+	creating a distribution, so don't do it for "all".
+
+2005-10-24  Paul D. Smith  <psmith@gnu.org>
+
+	Make secondary expansion optional: its enabled by declaring the
+	special target .SECONDEXPANSION.
+
+	* NEWS: Update information on second expansion capabilities.
+	* doc/make.texi (Secondary Expansion): Document the
+	.SECONDEXPANSION special target and its behavior.
+	* dep.h (struct dep): Add a flag STATICPATTERN, set to true if the
+	prerequisite list was found in a static pattern rule.
+	(free_dep_chain): Declare a prototype.
+	* file.c (parse_prereqs): New function: break out some complexity
+	from expand_deps().
+	(expand_deps): If we aren't doing second expansion, replace % with
+	the stem for static pattern rules.  Call the new function.
+	* filedef.h (parse_prereqs): Declare a prototype.
+	* implicit.c (pattern_search): Initialize the new staticpattern
+	field.
+	* main.c (second_expansion): Declare a global variable to remember
+	if the special target has been seen.  Initialize the new
+	staticpattern field for prerequisites.
+	* make.h: Extern for second_expansion.
+	* misc.c (free_dep_chain): New function: frees a struct dep list.
+	* read.c (read_all_makefiles): Initialize the staticpattern field.
+	(eval_makefile): Ditto.
+	(record_files): Check for the .SECONDEXPANSION target and set
+	second_expansion global if it's found.
+	Use the new free_dep_chain() instead of doing it by hand.
+	Set the staticpattern field for prereqs of static pattern targets.
+
+2005-10-16  Paul D. Smith  <psmith@gnu.org>
+
+	* main.c (main): Set CURDIR to be a file variable instead of a
+	default, so that values of CURDIR inherited from the environment
+	won't override the make value.
+
+2005-09-26  Paul D. Smith  <psmith@gnu.org>
+
+	* job.c (construct_command_argv_internal): If the line is empty
+	remember to free the temporary argv strings.
+	Fixes bug # 14527.
+
+2005-09-16  Paul D. Smith  <psmith@gnu.org>
+
+	* job.c (start_job_command): The noerror flag is a boolean (single
+	bit); set it appropriately.
+	Reported by Mark Eichin <eichin@metacarta.com>
+
+2005-08-29  Paul D. Smith  <psmith@gnu.org>
+
+	* function.c (func_error): On Windows, output from $(info ...)
+	seems to come in the wrong order.  Try to force it with fflush().
+
+2005-08-10  Boris Kolpackov  <boris@kolpackov.net>
+
+	* read.c (record_files): Move code that sets stem for static
+	pattern rules out of the if (!two_colon) condition so it is
+	also executed for two-colon rules. Fixes Savannah bug #13881.
+
+2005-08-08  Paul D. Smith  <psmith@gnu.org>
+
+	* make.h: Don't test that __STDC__ is non-0.  Some compilers
+	(Windows for example) set it to 0 to denote "ISO C + extensions".
+	Fixes bug # 13594.
+
+2005-08-07  Paul D. Smith  <psmith@gnu.org>
+
+	* w32/pathstuff.c (getcwd_fs): Fix warning about assignment in a
+	conditional (slightly different version of a fix from Eli).
+
+	Fix a bug reported by Michael Matz <matz@suse.de>: patch included.
+	If make is running in parallel without -k and two jobs die in a
+	row, but not too close to each other, then make will quit without
+	waiting for the rest of the jobs to die.
+
+	* main.c (die): Don't reset err before calling reap_children() the
+	second time: we still want it to be in the error condition.
+	* job.c (reap_children): Use a static variable, rather than err,
+	to control whether or not the error message should be printed.
+
+2005-08-06  Eli Zaretskii  <eliz@gnu.org>
+
+	* w32/subproc/sub_proc.c: Include signal.h.
+	(process_pipe_io, process_file_io): Pass a pointer to a local
+	DWORD variable to GetExitCodeProcess.  If the exit code is
+	CONTROL_C_EXIT, put SIGINT into pproc->signal.
+
+	* job.c [WINDOWS32]: Include windows.h.
+	(main_thread) [WINDOWS32]: New global variable.
+	(reap_children) [WINDOWS32]: Get the handle for the main thread
+	and store it in main_thread.
+
+	* commands.c [WINDOWS32]: Include windows.h and w32err.h.
+	(fatal_error_signal) [WINDOWS32]: Suspend the main thread before
+	doing anything else.  When we are done, close the main thread
+	handle and exit with status 130.
+
+2005-07-30  Eli Zaretskii  <eliz@gnu.org>
+
+	* w32/subproc/sub_proc.c (process_begin): Don't pass a NULL
+	pointer to fprintf.
+
+	* main.c (find_and_set_default_shell): If found a DOSish shell,
+	set sh_found and the value of default_shell, and report the
+	findings in debug mode.
+
+	* job.c (construct_command_argv_internal): Check unixy_shell, not
+	no_default_sh_exe, to decide whether to use Unixy or DOSish
+	builtin commands.
+
+	* README.W32: Update with info about the MinGW build.
+
+	* build_w32.bat: Support MinGW.
+
+	* w32/subproc/build.bat: Likewise.
+
+	* w32/subproc/sub_proc.c (process_easy): Fix format strings for
+	printing DWORD args.
+
+	* function.c (windows32_openpipe): Fix format strings for printing
+	DWORD args.
+
+	* job.c (reap_children) [WINDOWS32]: Don't declare 'status' and
+	'reap_mode'.
+	(start_job_command): Fix format string for printing the result of
+	process_easy.
+	(start_job_command) [WINDOWS32]: Do not define.
+	(exec_command): Fix format string for printing HANDLE args.
+
+	* main.c (handle_runtime_exceptions): Fix sprintf format strings
+	to avoid compiler warnings.
+	(open_tmpfile): Declare fd only if HAVE_FDOPEN is defined.
+	(Note: some of these fixes were submitted independently by J. Grant)
+
+2005-07-30  J. Grant <jg@jguk.org>
+
+	* prepare_w32.bat: Copy config.h.w32 to config.h if not exist.
+	* make_msvc_net2003.vcproj, make_msvc_net2003.sln: MSVC Project files.
+	* Makefile.am (EXTRA_DIST): Add MSVC Project files.
+
+2005-07-15  Paul Smith  <psmith@gnu.org>
+
+	* job.c (construct_command_argv_internal) [DOS,WINDOWS32,OS/2]: If
+	we don't have a POSIX shell, then revert to the old
+	backslash-newline behavior (where they are stripped).
+	Fixes bug #13665.
+
+2005-07-08  Paul D. Smith  <psmith@gnu.org>
+
+	* config.h.W32.template: Reorder to match the standard config.h,
+	for easier comparisons.
+	From J. Grant <jg@jguk.org>
+
+	* maintMakefile: Remove .dep_segment before overwriting it, in
+	case it's not writable or noclobber is set.
+	* expand.c (variable_expand_string): Cast result of pointer
+	arithmetic to avoid a warning.
+	* main.c (switches): Add full-fledged final initializer.
+
+2005-07-06  Paul D. Smith  <psmith@gnu.org>
+
+	* configure.in: IRIX has _sys_siglist.  Tru64 UNIX has __sys_siglist.
+	* signame.c (strsignal): If we found _sys_siglist[] or
+	__sys_siglist[] use those instead of sys_siglist[].
+	From Albert Chin <china@thewrittenword.com>
+
+2005-07-04  Paul D. Smith  <psmith@gnu.org>
+
+	* config.h-vms.template [VMS]: Latest VMS has its own glob() and
+	globfree(); set up to use the GNU versions.
+	From Martin Zinser <zinser@zinser.no-ip.info>
+
+2005-07-03  Paul D. Smith  <psmith@gnu.org>
+
+	From J. Grant <jg@jguk.org>:
+
+	* README.W32.template: Update the Windows and tested MSVC versions.
+	* NMakefile.template (CFLAGS_any): Change warning level from W3 to W4.
+	* w32/subproc/NMakefile (CFLAGS_any): Ditto.
+	* build_w32.bat: Ditto.
+	* w32/subproc/build.bat: Ditto.
+
+2005-06-28  Paul D. Smith  <psmith@gnu.org>
+
+	* signame.c: HAVE_DECL_* macros are set to 0, not undef, if the
+	declaration was checked but not present.
+
+2005-06-27  Paul D. Smith  <psmith@gnu.org>
+
+	* dir.c (find_directory): Change type of fs_serno/fs_flags/fs_len
+	to unsigned long.  Fixes Savannah bug #13550.
+
+	* w32/subproc/sub_proc.c: Remove (HANDLE) casts on lvalues.
+	(process_pipe_io): Initialize tStdin/tStdout/tStderr variables.
+	Fixes Savannah bug #13551.
+
+2005-06-26  Paul D. Smith  <psmith@gnu.org>
+
+	* make.h: Fix bug in ANSI_STRING/strerror() handling; only define
+	it if ANSI_STRING is not set.
+
+2005-06-25  Paul D. Smith  <psmith@gnu.org>
+
+	* read.c (eval): If no filenames are passed to any of the
+	"include" variants, don't print an error.
+	* doc/make.texi (Include): Document this.
+	Fixes Savannah bug #1761.
+
+	* job.c (construct_command_argv_internal): Sanitize handling of
+	backslash/newline pairs according to POSIX: that is, keep the
+	backslash-newline in the command script, but remove a following
+	TAB character, if present.  In the fast path, make sure that the
+	behavior matches what the shell would do both inside and outside
+	of quotes.  In the slow path, quote the backslash and put a
+	literal newline in the string.
+	Fixes Savannah bug #1332.
+	* doc/make.texi (Execution): Document the new behavior and give
+	some examples.
+	* NEWS: Make a note of the new behavior.
+
+	* make.h [WINDOWS32]: #include <direct.h>.
+	Fixes Savannah bug #13478.
+
+	* remake.c (name_mtime): If the stat() of a file fails and the -L
+	option was given and the file is a symlink, take the best mtime of
+	the symlink we can get as the mtime of the file and don't fail.
+	Fixes Savannah bug #13280.
+
+	* read.c (find_char_unquote): Accept a new argument IGNOREVARS.
+	If it's set, then don't	stop on STOPCHARs or BLANKs if they're
+	inside a variable reference.  Make this function static as it's
+	only used here.
+	(eval): Call find_char_unquote() with IGNOREVARS set when we're
+	parsing an unexpanded line looking for semicolons.
+	Fixes Savannah bug #1454.
+	* misc.c (remove_comments): Move this to read.c and make it static
+	as it's only used there.  Call find_char_unquote() with new arg.
+	* make.h: Remove prototypes for find_char_unquote() and
+	remove_comments() since they're static now.
+
+	* main.c (main): If we see MAKE_RESTARTS in the environment, unset
+	its export flag and obtain its value.  When we need to re-exec,
+	increment the value and add it into the environment.
+	* doc/make.texi (Special Variables): Document MAKE_RESTARTS.
+	* NEWS: Mention MAKE_RESTARTS.
+	* main.c (always_make_set): New variable.  Change the -B option to
+	set this one instead.
+	(main): When checking makefiles, only set always_make_flag if
+	always_make_set is set AND the restarts flag is 0.  When building
+	normal targets, set it IFF always_make_set is set.
+	(main): Avoid infinite recursion with -W, too: only set what-if
+	files to NEW before we check makefiles if we've never restarted
+	before.  If we have restarted, set what-if files to NEW _after_ we
+	check makefiles.
+	Fixes Savannah bug #7566:
+
+2005-06-17  Paul D. Smith  <psmith@gnu.org>
+
+	* default.c: Change VMS implicit rules to use $$$$ instead of $$
+	in the prerequisites list.
+
+2005-06-12  Paul D. Smith  <psmith@gnu.org>
+
+	Fix Savannah bug # 1328.
+
+	* configure.in: Check for atexit().
+	* misc.c (close_stdout): Test stdout to see if writes to it have
+	failed.  If so, be sure to exit with a non-0 error code.  Based on
+	code found in gnulib.
+	* make.h: Prototype.
+	* main.c (main): Install close_stdout() with atexit().
+
+2005-06-10  Paul D. Smith  <psmith@gnu.org>
+
+	VMS build updates from Hartmut Becker <Hartmut.Becker@hp.com>:
+
+	* vmsjobs.c [VMS]: Updates to compile on VMS: add some missing
+	headers; make vmsWaitForChildren() static; extern vmsify().
+	* job.c [VMS]: Move vmsWaitForChildren() prototype to be global.
+	Don't create child_execute_job() here (it's in vmsjobs.c).
+	* makefile.vms (job.obj) [VMS]: Add vmsjobs.c as a prerequisite.
+
+2005-06-09  Paul D. Smith  <psmith@gnu.org>
+
+	* variable.c (push_new_variable_scope): File variables point
+	directly to the global_setlist variable.  So, inserting a new
+	scope in front of that has no effect on those variables: they
+	don't go through current_variable_set_list.  If we're pushing a
+	scope and the current scope is global, push it "the other way" so
+	that the new setlist is in the global_setlist variable, and
+	next points to a new setlist with the global variable set.
+	(pop_variable_scope): Properly undo a push with the new
+	semantics.
+	Fixes Savannah bug #11913.
+
+2005-05-31  Boris Kolpackov  <boris@kolpackov.net>
+
+	* job.c (reap_children): Don't die of the command failed but
+	the dontcare flag is set. Fixes Savannah bug #13216.
+
+	* implicit.c (pattern_search): When creating a target from
+	an implicit rule match, lookup pattern target and set precious
+	flag in a newly created target. Fixes Savannah bug #13218.
+
 2005-05-13  Paul D. Smith  <psmith@gnu.org>
 
@@ -347,20 +1084,20 @@
 
 	* configure.in: Add MinGW configuration options, and extra w32 code
-        directory.
+	directory.
 	* Makefile.am: Add MinGW configuration options, and extra w32 code
-        directory.
+	directory.
 	* main.c: Determine correct program string (after last \ without .exe).
 	* subproc/sub_proc.c: `GetExitCodeProcess' from incompatible pointer
-        type fix x2
+	type fix x2
 	* w32/Makefile.am: Import to build win32 lib of sub_proc etc.
 	* subproc/w32err.c: MSVC thread directive not applied to MinGW builds.
 	* tests/run_make_tests.pl, tests/test_driver.pl: MSYS testing
-        environment support.
+	environment support.
 
 2004-04-16  Dmitry V. Levin  <ldv@altlinux.org>
 
-        * function.c (func_shell): When initializing error_prefix, check
-        that reading file name is not null.  This fixes long-standing
-        segfault in cases like "make 'a1=$(shell :)' 'a2:=$(a1)'".
+	* function.c (func_shell): When initializing error_prefix, check
+	that reading file name is not null.  This fixes long-standing
+	segfault in cases like "make 'a1=$(shell :)' 'a2:=$(a1)'".
 
 2005-02-09  Paul D. Smith  <psmith@gnu.org>
@@ -1523,11 +2260,11 @@
 	* read.c (read_all_makefiles, read_makefile, multi_glob): Likewise.
 	(read_makefile): Parse '|' in prerequisite list.
-        (uniquize_deps): Consider ignore_mtime when comparing deps.
+	(uniquize_deps): Consider ignore_mtime when comparing deps.
 	* remake.c (update_file_1, check_dep): Don't force remake for
 	dependencies that have d->ignore_mtime.
 	* commands.c (FILE_LIST_SEPARATOR): New constant.
-        (set_file_variables): Don't include a
+	(set_file_variables): Don't include a
 	prerequisite in $+, $^ or $? if d->ignore_mtime.
-        Define $|.
+	Define $|.
 
 2002-06-18  Paul D. Smith  <psmith@gnu.org>
@@ -1563,8 +2300,8 @@
 2002-05-18  Eli Zaretskii  <eliz@is.elta.co.il>
 
-        * Makefile.DOS.template: Tweak according to changes in the
-        distribution.  Add back the dependencies of *.o files.
-
-        * configh.dos.template: Synchronize with config.h.in.
+	* Makefile.DOS.template: Tweak according to changes in the
+	distribution.  Add back the dependencies of *.o files.
+
+	* configh.dos.template: Synchronize with config.h.in.
 
 2002-05-09  Paul D. Smith  <psmith@gnu.org>
@@ -2000,2 +2737,19 @@
 
 for earlier changes.
+
+
+Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/Makefile.DOS
===================================================================
--- trunk/src/gmake/Makefile.DOS	(revision 466)
+++ trunk/src/gmake/Makefile.DOS	(revision 503)
@@ -1,9 +1,20 @@
 # -*-Makefile-*- template for DJGPP
 # Makefile.in generated automatically by automake 1.2 from Makefile.am
-
-# Copyright (C) 1994, 1995-1998, 1999, 2002 Free Software Foundation, Inc.
-# This Makefile.DOS is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
+#
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 SHELL = /bin/sh
@@ -61,5 +72,5 @@
 RANLIB = ranlib
 REMOTE = stub
-VERSION = 3.81beta1
+VERSION = 3.81
 
 AUTOMAKE_OPTIONS = 1.2
@@ -67,5 +78,5 @@
 bin_PROGRAMS =	make$(EXEEXT)
 
-make_SOURCES =	ar.c arscan.c commands.c default.c dir.c expand.c file.c function.c getopt.c getopt1.c implicit.c job.c main.c misc.c read.c remake.c rule.c signame.c variable.c version.c vpath.c hash.c remote-$(REMOTE).c
+make_SOURCES =	ar.c arscan.c commands.c default.c dir.c expand.c file.c function.c getopt.c getopt1.c implicit.c job.c main.c misc.c read.c remake.c rule.c signame.c strcache.c variable.c version.c vpath.c hash.c remote-$(REMOTE).c
 # This should include the glob/ prefix
 libglob_a_SOURCES =	glob/fnmatch.c glob/glob.c glob/fnmatch.h glob/glob.h
@@ -94,5 +105,5 @@
 LDFLAGS =
 LIBS =
-make_OBJECTS =  ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o variable.o version.o vpath.o hash.o remote-$(REMOTE).o
+make_OBJECTS =  ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o strcache.o variable.o version.o vpath.o hash.o remote-$(REMOTE).o
 make_DEPENDENCIES =    glob/libglob.a
 make_LDFLAGS =
@@ -535,134 +546,156 @@
 # --------------- DEPENDENCIES
 #
+
+# .deps/alloca.Po
 # dummy
+
+# .deps/ar.Po
+ar.o ar.o: ar.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h dep.h \
+
+# .deps/arscan.Po
+arscan.o arscan.o: arscan.c make.h config.h \
+  getopt.h \
+  gettext.h \
+
+# .deps/commands.Po
+commands.o commands.o: commands.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h variable.h \
+  job.h commands.h
+
+# .deps/default.Po
+default.o default.o: default.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h rule.h \
+  dep.h job.h commands.h
+
+# .deps/dir.Po
+dir.o dir.o: dir.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h \
+
+# .deps/expand.Po
+expand.o expand.o: expand.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h \
+  job.h commands.h \
+  variable.h rule.h
+
+# .deps/file.Po
+file.o file.o: file.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h \
+  hash.h job.h commands.h \
+  variable.h debug.h
+
+# .deps/function.Po
+function.o function.o: function.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h dep.h \
+  job.h commands.h debug.h
+
+# .deps/getloadavg.Po
 # dummy
-ar.o : \
- ar.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h dep.h
-arscan.o : \
- arscan.c make.h config.h \
- getopt.h \
- gettext.h \
-
-commands.o : \
- commands.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h variable.h job.h \
- commands.h
-default.o : \
- default.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h rule.h dep.h job.h \
- commands.h
-dir.o : \
- dir.c make.h config.h \
- getopt.h \
- gettext.h hash.h \
-
-expand.o : \
- expand.c make.h config.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-file.o : \
- file.c make.h config.h \
- getopt.h \
- gettext.h \
- dep.h filedef.h hash.h job.h \
- commands.h variable.h \
- debug.h
-function.o : \
- function.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h dep.h job.h \
- commands.h debug.h
-getopt.o : \
- getopt.c config.h \
-
-getopt1.o : \
- getopt1.c config.h getopt.h \
-
-hash.o : \
- hash.c make.h config.h \
- getopt.h \
- gettext.h hash.h
-implicit.o : \
- implicit.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h rule.h dep.h debug.h
-job.o : \
- job.c make.h config.h \
- getopt.h \
- gettext.h \
- job.h \
- debug.h filedef.h hash.h commands.h \
- variable.h \
-
-loadavg-getloadavg.o : \
- getloadavg.c config.h \
- make.h \
- getopt.h \
- gettext.h \
-
-main.o : \
- main.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h variable.h job.h \
- commands.h rule.h debug.h \
-
-misc.o : \
- misc.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- debug.h
-read.o : \
- read.c make.h config.h \
- getopt.h \
- gettext.h \
- dep.h filedef.h hash.h \
- job.h commands.h \
- variable.h rule.h debug.h
-remake.o : \
- remake.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h job.h \
- commands.h dep.h variable.h debug.h
+
+# .deps/getopt.Po
+getopt.o getopt.o: getopt.c config.h \
+
+# .deps/getopt1.Po
+getopt1.o getopt1.o: getopt1.c config.h getopt.h \
+
+# .deps/hash.Po
+hash.o hash.o: hash.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h
+
+# .deps/implicit.Po
+implicit.o implicit.o: implicit.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h rule.h dep.h debug.h \
+  variable.h job.h \
+  commands.h
+
+# .deps/job.Po
+job.o job.o: job.c make.h config.h \
+  getopt.h \
+  gettext.h job.h \
+  debug.h filedef.h hash.h \
+  commands.h variable.h \
+
+# .deps/loadavg-getloadavg.Po
+loadavg-getloadavg.o loadavg-getloadavg.o: getloadavg.c config.h \
+  make.h \
+  getopt.h \
+  gettext.h \
+
+# .deps/main.Po
+main.o main.o: main.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h variable.h \
+  job.h commands.h rule.h \
+  debug.h getopt.h \
+
+# .deps/misc.Po
+misc.o misc.o: misc.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h debug.h
+
+# .deps/read.Po
+read.o read.o: read.c make.h config.h \
+  getopt.h \
+  gettext.h \
+  dep.h filedef.h hash.h job.h \
+  commands.h variable.h rule.h debug.h \
+
+# .deps/remake.Po
+remake.o remake.o: remake.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h job.h \
+  commands.h dep.h \
+  variable.h debug.h
+
+# .deps/remote-cstms.Po
 # dummy
-remote-stub.o : \
- remote-stub.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h job.h \
- commands.h
-rule.o : \
- rule.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-signame.o : \
- signame.c make.h config.h \
- getopt.h \
- gettext.h
-variable.o : \
- variable.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-version.o : \
- version.c config.h
-vpath.o : \
- vpath.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h
+
+# .deps/remote-stub.Po
+remote-stub.o remote-stub.o: remote-stub.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h job.h \
+  commands.h
+
+# .deps/rule.Po
+rule.o rule.o: rule.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h job.h \
+  commands.h variable.h \
+  rule.h
+
+# .deps/signame.Po
+signame.o signame.o: signame.c make.h config.h \
+  getopt.h \
+  gettext.h
+
+# .deps/strcache.Po
+strcache.o strcache.o: strcache.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h
+
+# .deps/variable.Po
+variable.o variable.o: variable.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h \
+  hash.h job.h commands.h \
+  variable.h rule.h
+
+# .deps/version.Po
+version.o version.o: version.c config.h
+
+# .deps/vmsjobs.Po
+# dummy
+
+# .deps/vpath.Po
+vpath.o vpath.o: vpath.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h
Index: trunk/src/gmake/Makefile.am
===================================================================
--- trunk/src/gmake/Makefile.am	(revision 466)
+++ trunk/src/gmake/Makefile.am	(revision 503)
@@ -1,6 +1,24 @@
 # This is a -*-Makefile-*-, or close enough
+#
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news ansi2knr
 ACLOCAL_AMFLAGS	=  -I config
+
+MAKE_HOST =	@MAKE_HOST@
 
 # Only process if target is MS-Windows
@@ -25,5 +43,5 @@
 		function.c getopt.c getopt1.c implicit.c job.c main.c \
 		misc.c read.c remake.c $(remote) rule.c signame.c \
-		variable.c version.c vpath.c hash.c
+		strcache.c variable.c version.c vpath.c hash.c
 
 EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cstms.c
@@ -50,7 +68,4 @@
 
 # Extra stuff to include in the distribution.
-# Note we need all the glob stuff here, rather than in glob/Makefile.am,
-# because often that directory isn't built on the systems used by the
-# maintainers.
 
 EXTRA_DIST =	README build.sh.in $(man_MANS) \
@@ -60,9 +75,11 @@
 		README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\
 		README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \
+		make_msvc_net2003.sln make_msvc_net2003.vcproj \
 		readme.vms makefile.vms makefile.com config.h-vms \
 		vmsdir.h vmsfunctions.c vmsify.c
 
-MAKE_HOST =	@MAKE_HOST@
+# This is built during configure, but behind configure's back
 
+DISTCLEANFILES = build.sh
 
 # Forward targets
@@ -137,5 +154,5 @@
 
 # The loadavg function is invoked during "make check" to test getloadavg.
-noinst_PROGRAMS = loadavg
+check_PROGRAMS = loadavg
 nodist_loadavg_SOURCES = getloadavg.c
 loadavg_CPPFLAGS = -DTEST
Index: trunk/src/gmake/Makefile.ami
===================================================================
--- trunk/src/gmake/Makefile.ami	(revision 466)
+++ trunk/src/gmake/Makefile.ami	(revision 503)
@@ -1,22 +1,22 @@
+# -*-Makefile-*- for GNU make on Amiga
+#
 # NOTE: If you have no `make' program at all to process this makefile, run
 # `build.sh' instead.
 #
-# Copyright (C) 1988, 89, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
 # This file is part of GNU Make.
 #
-# GNU Make is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU Make is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Make; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 #
@@ -120,5 +120,5 @@
 objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o	\
        rule.o implicit.o default.o variable.o expand.o function.o	\
-       vpath.o version.o ar.o arscan.o signame.o hash.o                 \
+       vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o      \
        remote-$(REMOTE).o $(GETOPT) $(ALLOCA) $(extras)
 srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c             \
@@ -129,5 +129,5 @@
        $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c           \
        $(srcdir)remote-$(REMOTE).c                                     \
-       $(srcdir)ar.c $(srcdir)arscan.c                                \
+       $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c              \
        $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC)            \
        $(srcdir)commands.h $(srcdir)dep.h $(srcdir)filedep.h            \
@@ -295,4 +295,5 @@
  commands.h amiga.h
 vpath.o: vpath.c make.h filedef.h variable.h
+strcache.o: strcache.c make.h hash.h
 version.o: version.c
 ar.o: ar.c make.h filedef.h dep.h
Index: trunk/src/gmake/Makefile.in
===================================================================
--- trunk/src/gmake/Makefile.in	(revision 466)
+++ trunk/src/gmake/Makefile.in	(revision 503)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,21 @@
 
 # This is a -*-Makefile-*-, or close enough
-
-
-SOURCES = $(nodist_loadavg_SOURCES) $(make_SOURCES) $(EXTRA_make_SOURCES)
+#
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 
 srcdir = @srcdir@
@@ -40,17 +54,27 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 ANSI2KNR = @ANSI2KNR@
 bin_PROGRAMS = make$(EXEEXT)
-noinst_PROGRAMS = loadavg$(EXEEXT)
+# Only process if target is MS-Windows
+@WINDOWSENV_TRUE@am__append_1 = $(W32LIB)
+# Only process if target is MS-Windows
+@WINDOWSENV_TRUE@am__append_2 = $(W32INC)
+check_PROGRAMS = loadavg$(EXEEXT)
 subdir = .
 DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/build.sh.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure ABOUT-NLS AUTHORS COPYING ChangeLog \
-	INSTALL NEWS alloca.c ansi2knr.1 ansi2knr.c getloadavg.c
+	$(srcdir)/config.h.in $(top_srcdir)/configure ABOUT-NLS \
+	AUTHORS COPYING ChangeLog INSTALL NEWS alloca.c ansi2knr.1 \
+	ansi2knr.c getloadavg.c
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
+	$(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
+	$(top_srcdir)/config/lib-ld.m4 \
+	$(top_srcdir)/config/lib-link.m4 \
+	$(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
+	$(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -59,8 +83,8 @@
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = build.sh
+CONFIG_CLEAN_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+PROGRAMS = $(bin_PROGRAMS)
 nodist_loadavg_OBJECTS = loadavg-getloadavg$U.$(OBJEXT)
 loadavg_OBJECTS = $(nodist_loadavg_OBJECTS)
@@ -69,5 +93,6 @@
 	expand.c file.c function.c getopt.c getopt1.c implicit.c job.c \
 	main.c misc.c read.c remake.c remote-stub.c remote-cstms.c \
-	rule.c signame.c variable.c version.c vpath.c hash.c
+	rule.c signame.c strcache.c variable.c version.c vpath.c \
+	hash.c
 @USE_CUSTOMS_FALSE@am__objects_1 = remote-stub$U.$(OBJEXT)
 @USE_CUSTOMS_TRUE@am__objects_1 = remote-cstms$U.$(OBJEXT)
@@ -78,27 +103,15 @@
 	job$U.$(OBJEXT) main$U.$(OBJEXT) misc$U.$(OBJEXT) \
 	read$U.$(OBJEXT) remake$U.$(OBJEXT) $(am__objects_1) \
-	rule$U.$(OBJEXT) signame$U.$(OBJEXT) variable$U.$(OBJEXT) \
-	version$U.$(OBJEXT) vpath$U.$(OBJEXT) hash$U.$(OBJEXT)
+	rule$U.$(OBJEXT) signame$U.$(OBJEXT) strcache$U.$(OBJEXT) \
+	variable$U.$(OBJEXT) version$U.$(OBJEXT) vpath$U.$(OBJEXT) \
+	hash$U.$(OBJEXT)
 make_OBJECTS = $(am_make_OBJECTS)
 am__DEPENDENCIES_1 =
-make_DEPENDENCIES = @LIBOBJS@ @ALLOCA@ $(am__DEPENDENCIES_1)
+@WINDOWSENV_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+make_DEPENDENCIES = @LIBOBJS@ @ALLOCA@ $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/getloadavg.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/ar$U.Po ./$(DEPDIR)/arscan$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/commands$U.Po ./$(DEPDIR)/default$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/dir$U.Po ./$(DEPDIR)/expand$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/file$U.Po ./$(DEPDIR)/function$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/getopt$U.Po ./$(DEPDIR)/getopt1$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/hash$U.Po ./$(DEPDIR)/implicit$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/job$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/loadavg-getloadavg$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/main$U.Po ./$(DEPDIR)/misc$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/read$U.Po ./$(DEPDIR)/remake$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/remote-cstms$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/remote-stub$U.Po ./$(DEPDIR)/rule$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/signame$U.Po ./$(DEPDIR)/variable$U.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/version$U.Po ./$(DEPDIR)/vpath$U.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -120,5 +133,5 @@
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
+DIST_SUBDIRS = glob config po doc w32
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
@@ -201,4 +214,6 @@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+WINDOWSENV_FALSE = @WINDOWSENV_FALSE@
+WINDOWSENV_TRUE = @WINDOWSENV_TRUE@
 XGETTEXT = @XGETTEXT@
 ac_ct_CC = @ac_ct_CC@
@@ -210,4 +225,6 @@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
@@ -240,5 +257,10 @@
 AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news ansi2knr
 ACLOCAL_AMFLAGS = -I config
-SUBDIRS = glob config po doc
+
+# Only process if target is MS-Windows
+@WINDOWSENV_TRUE@MAYBE_W32 = w32
+@WINDOWSENV_TRUE@W32INC = -I $(top_srcdir)/w32/include
+@WINDOWSENV_TRUE@W32LIB = -Lw32 -lw32
+SUBDIRS = glob config po doc $(MAYBE_W32)
 @USE_CUSTOMS_FALSE@remote = remote-stub.c
 @USE_CUSTOMS_TRUE@remote = remote-cstms.c
@@ -246,18 +268,16 @@
 		function.c getopt.c getopt1.c implicit.c job.c main.c \
 		misc.c read.c remake.c $(remote) rule.c signame.c \
-		variable.c version.c vpath.c hash.c
-
-EXTRA_make_SOURCES = remote-stub.c remote-cstms.c
+		strcache.c variable.c version.c vpath.c hash.c
+
+EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cstms.c
 noinst_HEADERS = commands.h dep.h filedef.h job.h make.h rule.h variable.h \
 		debug.h getopt.h gettext.h hash.h
 
-make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@
+make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@ \
+	$(am__append_1)
 man_MANS = make.1
-AM_CPPFLAGS = $(GLOBINC)
+AM_CPPFLAGS = $(GLOBINC) $(am__append_2)
 
 # Extra stuff to include in the distribution.
-# Note we need all the glob stuff here, rather than in glob/Makefile.am,
-# because often that directory isn't built on the systems used by the
-# maintainers.
 EXTRA_DIST = README build.sh.in $(man_MANS) \
 		README.customs README.OS2 \
@@ -266,7 +286,11 @@
 		README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\
 		README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \
+		make_msvc_net2003.sln make_msvc_net2003.vcproj \
 		readme.vms makefile.vms makefile.com config.h-vms \
 		vmsdir.h vmsfunctions.c vmsify.c
 
+
+# This is built during configure, but behind configure's back
+DISTCLEANFILES = build.sh
 
 # --------------- Internationalization Section
@@ -354,6 +378,4 @@
 distclean-hdr:
 	-rm -f config.h stamp-h1
-build.sh: $(top_builddir)/config.status $(srcdir)/build.sh.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
@@ -380,6 +402,6 @@
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
 
-clean-noinstPROGRAMS:
-	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+clean-checkPROGRAMS:
+	-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
 loadavg$(EXEEXT): $(loadavg_OBJECTS) $(loadavg_DEPENDENCIES) 
 	@rm -f loadavg$(EXEEXT)
@@ -428,6 +450,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rule$U.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signame$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcache$U.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/variable$U.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vmsjobs$U.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpath$U.Po@am__quote@
 
@@ -436,6 +460,5 @@
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
@@ -444,6 +467,5 @@
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
@@ -452,6 +474,5 @@
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/loadavg-getloadavg$U.Tpo" "$(DEPDIR)/loadavg-getloadavg$U.Po"; else rm -f "$(DEPDIR)/loadavg-getloadavg$U.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='getloadavg$U.c' object='loadavg-getloadavg$U.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/loadavg-getloadavg$U.Po' tmpdepfile='$(DEPDIR)/loadavg-getloadavg$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o loadavg-getloadavg$U.o `test -f 'getloadavg$U.c' || echo '$(srcdir)/'`getloadavg$U.c
 
@@ -460,6 +481,5 @@
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/loadavg-getloadavg$U.Tpo" "$(DEPDIR)/loadavg-getloadavg$U.Po"; else rm -f "$(DEPDIR)/loadavg-getloadavg$U.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='getloadavg$U.c' object='loadavg-getloadavg$U.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/loadavg-getloadavg$U.Po' tmpdepfile='$(DEPDIR)/loadavg-getloadavg$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o loadavg-getloadavg$U.obj `if test -f 'getloadavg$U.c'; then $(CYGPATH_W) 'getloadavg$U.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg$U.c'; fi`
 alloca_.c: alloca.c $(ANSI2KNR)
@@ -509,8 +529,12 @@
 signame_.c: signame.c $(ANSI2KNR)
 	$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/signame.c; then echo $(srcdir)/signame.c; else echo signame.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+strcache_.c: strcache.c $(ANSI2KNR)
+	$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strcache.c; then echo $(srcdir)/strcache.c; else echo strcache.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
 variable_.c: variable.c $(ANSI2KNR)
 	$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/variable.c; then echo $(srcdir)/variable.c; else echo variable.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
 version_.c: version.c $(ANSI2KNR)
 	$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/version.c; then echo $(srcdir)/version.c; else echo version.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+vmsjobs_.c: vmsjobs.c $(ANSI2KNR)
+	$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vmsjobs.c; then echo $(srcdir)/vmsjobs.c; else echo vmsjobs.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
 vpath_.c: vpath.c $(ANSI2KNR)
 	$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vpath.c; then echo $(srcdir)/vpath.c; else echo vpath.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
@@ -521,6 +545,6 @@
 main_.$(OBJEXT) misc_.$(OBJEXT) read_.$(OBJEXT) remake_.$(OBJEXT) \
 remote-cstms_.$(OBJEXT) remote-stub_.$(OBJEXT) rule_.$(OBJEXT) \
-signame_.$(OBJEXT) variable_.$(OBJEXT) version_.$(OBJEXT) \
-vpath_.$(OBJEXT) : $(ANSI2KNR)
+signame_.$(OBJEXT) strcache_.$(OBJEXT) variable_.$(OBJEXT) \
+version_.$(OBJEXT) vmsjobs_.$(OBJEXT) vpath_.$(OBJEXT) : $(ANSI2KNR)
 uninstall-info-am:
 install-man1: $(man1_MANS) $(man_MANS)
@@ -577,5 +601,11 @@
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@set fnord $$MAKEFLAGS; amf=$$2; \
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
@@ -589,5 +619,5 @@
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -597,5 +627,11 @@
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-	@set fnord $$MAKEFLAGS; amf=$$2; \
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
 	dot_seen=no; \
 	case "$@" in \
@@ -618,5 +654,5 @@
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
@@ -643,12 +679,14 @@
 	tags=; \
 	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
+	  empty_fix=.; \
 	else \
 	  include_option=--include; \
+	  empty_fix=; \
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
@@ -660,7 +698,9 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
@@ -695,5 +735,5 @@
 	$(am__remove_distdir)
 	mkdir $(distdir)
-	$(mkdir_p) $(distdir)/. $(distdir)/po
+	$(mkdir_p) $(distdir)/config $(distdir)/po
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -722,13 +762,15 @@
 	  fi; \
 	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
@@ -744,12 +786,12 @@
 	|| chmod -R a+r $(distdir)
 dist-gzip: distdir
-	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
 dist-bzip2: distdir
-	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
 	$(am__remove_distdir)
 
 dist-tarZ: distdir
-	$(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__remove_distdir)
 
@@ -764,6 +806,6 @@
 
 dist dist-all: distdir
-	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
 	$(am__remove_distdir)
 
@@ -774,11 +816,11 @@
 	case '$(DIST_ARCHIVES)' in \
 	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
 	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | unshar ;;\
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
@@ -836,4 +878,5 @@
 	       exit 1; } >&2
 check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
 	$(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-recursive
@@ -863,5 +906,6 @@
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -870,6 +914,6 @@
 clean: clean-recursive
 
-clean-am: clean-binPROGRAMS clean-generic clean-krextra \
-	clean-noinstPROGRAMS mostlyclean-am
+clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+	clean-krextra mostlyclean-am
 
 distclean: distclean-recursive
@@ -924,21 +968,21 @@
 
 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
-	check-am check-local clean clean-binPROGRAMS clean-generic \
-	clean-krextra clean-noinstPROGRAMS clean-recursive ctags \
-	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
-	dist-tarZ dist-zip distcheck distclean distclean-compile \
-	distclean-generic distclean-hdr distclean-recursive \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-exec \
-	install-exec-am install-exec-local install-info \
-	install-info-am install-man install-man1 install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-kr mostlyclean-recursive pdf \
-	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
-	uninstall-binPROGRAMS uninstall-info-am uninstall-man \
-	uninstall-man1
+	check-am check-local clean clean-binPROGRAMS \
+	clean-checkPROGRAMS clean-generic clean-krextra \
+	clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
+	dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \
+	distclean distclean-compile distclean-generic distclean-hdr \
+	distclean-recursive distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-exec install-exec-am \
+	install-exec-local install-info install-info-am install-man \
+	install-man1 install-strip installcheck installcheck-am \
+	installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic maintainer-clean-recursive \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-kr mostlyclean-recursive pdf pdf-am ps ps-am tags \
+	tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-info-am uninstall-man uninstall-man1
 
 
@@ -986,9 +1030,9 @@
 .PHONY: check-loadavg check-regression
 
-check-loadavg: loadavg
+check-loadavg: loadavg$(EXEEXT)
 	@echo The system uptime program believes the load average to be:
 	-uptime
 	@echo The GNU load average checking code thinks:
-	-./loadavg
+	-./loadavg$(EXEEXT)
 
 check-regression:
@@ -1014,4 +1058,10 @@
 # --------------- Maintainer's Section
 
+# Tell automake that I haven't forgotten about this file and it will be
+# created before we build a distribution (see maintMakefile in the CVS
+# distribution).
+
+README:
+
 @MAINT_MAKEFILE@
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Index: trunk/src/gmake/Makefile.kmk
===================================================================
--- trunk/src/gmake/Makefile.kmk	(revision 466)
+++ trunk/src/gmake/Makefile.kmk	(revision 503)
@@ -29,4 +29,5 @@
 	read.c \
 	hash.c \
+        strcache.c \
 	variable.c \
 	ar.c \
Index: trunk/src/gmake/NEWS
===================================================================
--- trunk/src/gmake/NEWS	(revision 466)
+++ trunk/src/gmake/NEWS	(revision 503)
@@ -1,8 +1,7 @@
 GNU make NEWS                                               -*-indented-text-*-
   History of user-visible changes.
-  13 May 2005
-
-Copyright (C) 2002,2003,2004,2005  Free Software Foundation, Inc.
-See the end for copying conditions.
+  1 April 2006
+
+See the end of this file for copyrights and conditions.
 
 All changes mentioned here are more fully described in the GNU make
@@ -12,21 +11,53 @@
 
 
-Version 3.81beta3
+Version 3.81
 
 * GNU make is ported to OS/2.
 
-* GNU make is ported to MinGW.
+* GNU make is ported to MinGW.  The MinGW build is only supported by
+  the build_w32.bat batch file; see the file README.W32 for more
+  details.
+
+* WARNING: Future backward-incompatibility!
+  Up to and including this release, the '$?' variable does not contain
+  any prerequisite that does not exist, even though that prerequisite
+  might have caused the target to rebuild.  Starting with the _next_
+  release of GNU make, '$?' will contain all prerequisites that caused
+  the target to be considered out of date.  See this Savannah bug:
+  http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=16051
 
 * WARNING: Backward-incompatibility!
   GNU make now implements a generic "second expansion" feature on the
-  prerequisites of both explicit and implicit (pattern) rules.  After
-  all rules have been parsed the prerequisites are expanded again, this
-  time with all the automatic variables in scope.  This means that in
-  addition to using standard SysV $$@ in prerequisites lists, you can
-  also use complex functions such as $$(notdir $$@) etc.  This behavior
-  applies to implicit rules, as well, where the second expansion occurs
-  after the rule is matched.  However, this means that you need to
+  prerequisites of both explicit and implicit (pattern) rules.  In order
+  to enable this feature, the special target '.SECONDEXPANSION' must be
+  defined before the first target which takes advantage of it.  If this
+  feature is enabled then after all rules have been parsed the
+  prerequisites are expanded again, this time with all the automatic
+  variables in scope.  This means that in addition to using standard
+  SysV $$@ in prerequisites lists, you can also use complex functions
+  such as $$(notdir $$@) etc.  This behavior applies to implicit rules,
+  as well, where the second expansion occurs when the rule is matched.
+  However, this means that when '.SECONDEXPANSION' is enabled you must
   double-quote any "$" in your filenames; instead of "foo: boo$$bar" you
-  must write "foo: foo$$$$bar"
+  now must write "foo: foo$$$$bar".  Note that the SysV $$@ etc. feature,
+  which used to be available by default, is now ONLY available when the
+  .SECONDEXPANSION target is defined.  If your makefiles take advantage
+  of this SysV feature you will need to update them.
+
+* WARNING: Backward-incompatibility!
+  In order to comply with POSIX, the way in which GNU make processes
+  backslash-newline sequences in command strings has changed.  If your
+  makefiles use backslash-newline sequences inside of single-quoted
+  strings in command scripts you will be impacted by this change.  See
+  the GNU make manual subsection "Splitting Command Lines" (node
+  "Splitting Lines"), in section "Command Syntax", chapter "Writing the
+  Commands in Rules", for details.
+
+* WARNING: Backward-incompatibility!
+  Some previous versions of GNU make had a bug where "#" in a function
+  invocation such as $(shell ...) was treated as a make comment.  A
+  workaround was to escape these with backslashes.  This bug has been
+  fixed: if your makefile uses "\#" in a function invocation the
+  backslash is now preserved, so you'll need to remove it.
 
 * New command-line option: -L (--check-symlink-times).  On systems that
@@ -36,7 +67,8 @@
   always has: use the modification time of the actual target file only.
 
-* The "else" conditional line can now be followed by any other legal
+* The "else" conditional line can now be followed by any other valid
   conditional on the same line: this does not increase the depth of the
-  conditional nesting.
+  conditional nesting, so only one "endif" is required to close the
+  conditional.
 
 * All pattern-specific variables that match a given target are now used
@@ -56,8 +88,13 @@
 
 * New special variables available in this release:
+   - .INCLUDE_DIRS: Expands to a list of directories that make searches
+     for included makefiles.
    - .FEATURES: Contains a list of special features available in this
      version of GNU make.
    - .DEFAULT_GOAL: Set the name of the default goal make will
      use if no goals are provided on the command line.
+   - MAKE_RESTARTS: If set, then this is the number of times this
+     instance of make has been restarted (see "How Makefiles Are Remade"
+     in the manual).
    - New automatic variable: $| (added in 3.80, actually): contains all
      the order-only prerequisites defined for the target.
@@ -72,6 +109,15 @@
      provided.  The canonical pathname is the absolute pathname, with
      all symbolic links resolved as well.
-   - $(info ...) prints informative messages to stdout.  No makefile
-     name or line number info, etc. is printed, just the message.
+   - $(info ...) prints its arguments to stdout.  No makefile name or
+     line number info, etc. is printed.
+   - $(flavor ...) returns the flavor of a variable.
+   - $(or ...) provides a short-circuiting OR conditional: each argument
+     is expanded.  The first true (non-empty) argument is returned; no
+     further arguments are expanded.  Expands to empty if there are no
+     true arguments.
+   - $(and ...) provides a short-circuiting AND conditional: each
+     argument is expanded.  The first false (empty) argument is
+     returned; no further arguments are expanded.  Expands to the last
+     argument if all arguments are true.
 
 * Changes made for POSIX compatibility:
@@ -82,10 +128,17 @@
      it will be set in the environment, just as before.
 
-* On DOS and MS Windows systems, explicitly setting SHELL to a pathname
-  ending in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to
-  use the DOS command interpreter in batch mode even if a UNIX-like
-  shell could be found on the system.
-
-* Updated to autoconf 2.59, automake 1.8.2, and gettext 0.14.1.  Users
+* On MS Windows systems, explicitly setting SHELL to a pathname ending
+  in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use
+  the DOS command interpreter in batch mode even if a UNIX-like shell
+  could be found on the system.
+
+* On VMS there is now support for case-sensitive filesystems such as ODS5.
+  See the readme.vms file for information.
+
+* Parallel builds (-jN) no longer require a working Bourne shell on
+  Windows platforms.  They work even with the stock Windows shells, such
+  as cmd.exe and command.com.
+
+* Updated to autoconf 2.59, automake 1.9.5, and gettext 0.14.1.  Users
   should not be impacted.
 
@@ -93,4 +146,8 @@
   Belarusian, Finnish, Kinyarwandan, and Irish.  Many updated
   translations.
+
+A complete list of bugs fixed in this version is available here:
+
+  http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
 
 
@@ -172,4 +229,9 @@
 
 * Updated to autoconf 2.54 and automake 1.7.  Users should not be impacted.
+
+A complete list of bugs fixed in this version is available here:
+
+  http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
+
 
 
@@ -980,13 +1042,19 @@
 
 
-----------------------------------------------------------------------
-Copyright information:
-
-   Permission is granted to anyone to make or distribute verbatim copies
-   of this document as received, in any medium, provided that the
-   copyright notice and this permission notice are preserved, thus
-   giving the recipient permission to redistribute in turn.
-
-   Permission is granted to distribute modified versions of this
-   document, or of portions of it, under the above conditions, provided
-   also that they carry prominent notices stating who last changed them.
+-------------------------------------------------------------------------------
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/NMakefile
===================================================================
--- trunk/src/gmake/NMakefile	(revision 466)
+++ trunk/src/gmake/NMakefile	(revision 503)
@@ -1,29 +1,26 @@
-# NOTE: If you have no `make' program at all to process this makefile, run
-# `build_w32.bat' instead.
-#
-# Copyright (C) 1988,89,91,92,93,94,95,96,97 Free Software Foundation, Inc.
+# -*-Makefile-*- to build GNU make with nmake
+#
+# NOTE: If you have no 'make' program at all to process this makefile,
+# run 'build_w32.bat' instead.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+# 2006 Free Software Foundation, Inc.
 # This file is part of GNU Make.
 #
-# GNU Make is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU Make is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Make; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-#
-#       NMakefile for GNU Make
-#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 LINK = link
 CC = cl
+MAKE = nmake
 
 OUTDIR=.
@@ -31,5 +28,5 @@
 SUBPROC_MAKEFILE=NMakefile
 
-CFLAGS_any = /nologo /MT /W3 /GX /Zi /YX /I . /I glob /I w32/include /D WIN32 /D WINDOWS32 /D _CONSOLE /D HAVE_CONFIG_H
+CFLAGS_any = /nologo /MT /W4 /GX /Zi /YX /I . /I glob /I w32/include /D WIN32 /D WINDOWS32 /D _CONSOLE /D HAVE_CONFIG_H
 CFLAGS_debug = $(CFLAGS_any) /Od /D DEBUG /D _DEBUG /FR.\WinDebug/ /Fp.\WinDebug/make.pch /Fo.\WinDebug/ /Fd.\WinDebug/make.pdb
 CFLAGS_release = $(CFLAGS_any) /O2 /D NDEBUG /FR.\WinRel/ /Fp.\WinRel/make.pch /Fo.\WinRel/
@@ -99,4 +96,5 @@
 	$(OUTDIR)/rule.obj \
 	$(OUTDIR)/signame.obj \
+	$(OUTDIR)/strcache.obj \
 	$(OUTDIR)/variable.obj \
 	$(OUTDIR)/version.obj \
@@ -126,134 +124,156 @@
 # --------------- DEPENDENCIES
 #
-# dummy
-# dummy
-ar.o : \
- ar.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h dep.h
-arscan.o : \
- arscan.c make.h config.h \
- getopt.h \
- gettext.h \
-
-commands.o : \
- commands.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h variable.h job.h \
- commands.h
-default.o : \
- default.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h rule.h dep.h job.h \
- commands.h
-dir.o : \
- dir.c make.h config.h \
- getopt.h \
- gettext.h hash.h \
-
-expand.o : \
- expand.c make.h config.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-file.o : \
- file.c make.h config.h \
- getopt.h \
- gettext.h \
- dep.h filedef.h hash.h job.h \
- commands.h variable.h \
- debug.h
-function.o : \
- function.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h dep.h job.h \
- commands.h debug.h
-getopt.o : \
- getopt.c config.h \
-
-getopt1.o : \
- getopt1.c config.h getopt.h \
-
-hash.o : \
- hash.c make.h config.h \
- getopt.h \
- gettext.h hash.h
-implicit.o : \
- implicit.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h rule.h dep.h debug.h
-job.o : \
- job.c make.h config.h \
- getopt.h \
- gettext.h \
- job.h \
- debug.h filedef.h hash.h commands.h \
- variable.h \
-
-loadavg-getloadavg.o : \
- getloadavg.c config.h \
- make.h \
- getopt.h \
- gettext.h \
-
-main.o : \
- main.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h variable.h job.h \
- commands.h rule.h debug.h \
-
-misc.o : \
- misc.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- debug.h
-read.o : \
- read.c make.h config.h \
- getopt.h \
- gettext.h \
- dep.h filedef.h hash.h \
- job.h commands.h \
- variable.h rule.h debug.h
-remake.o : \
- remake.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h job.h \
- commands.h dep.h variable.h debug.h
-# dummy
-remote-stub.o : \
- remote-stub.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h job.h \
- commands.h
-rule.o : \
- rule.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-signame.o : \
- signame.c make.h config.h \
- getopt.h \
- gettext.h
-variable.o : \
- variable.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-version.o : \
- version.c config.h
-vpath.o : \
- vpath.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h
+
+# .deps/alloca.Po
+# dummy
+
+# .deps/ar.Po
+ar.o ar.o: ar.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h dep.h \
+
+# .deps/arscan.Po
+arscan.o arscan.o: arscan.c make.h config.h \
+  getopt.h \
+  gettext.h \
+
+# .deps/commands.Po
+commands.o commands.o: commands.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h variable.h \
+  job.h commands.h
+
+# .deps/default.Po
+default.o default.o: default.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h rule.h \
+  dep.h job.h commands.h
+
+# .deps/dir.Po
+dir.o dir.o: dir.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h \
+
+# .deps/expand.Po
+expand.o expand.o: expand.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h \
+  job.h commands.h \
+  variable.h rule.h
+
+# .deps/file.Po
+file.o file.o: file.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h \
+  hash.h job.h commands.h \
+  variable.h debug.h
+
+# .deps/function.Po
+function.o function.o: function.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h dep.h \
+  job.h commands.h debug.h
+
+# .deps/getloadavg.Po
+# dummy
+
+# .deps/getopt.Po
+getopt.o getopt.o: getopt.c config.h \
+
+# .deps/getopt1.Po
+getopt1.o getopt1.o: getopt1.c config.h getopt.h \
+
+# .deps/hash.Po
+hash.o hash.o: hash.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h
+
+# .deps/implicit.Po
+implicit.o implicit.o: implicit.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h rule.h dep.h debug.h \
+  variable.h job.h \
+  commands.h
+
+# .deps/job.Po
+job.o job.o: job.c make.h config.h \
+  getopt.h \
+  gettext.h job.h \
+  debug.h filedef.h hash.h \
+  commands.h variable.h \
+
+# .deps/loadavg-getloadavg.Po
+loadavg-getloadavg.o loadavg-getloadavg.o: getloadavg.c config.h \
+  make.h \
+  getopt.h \
+  gettext.h \
+
+# .deps/main.Po
+main.o main.o: main.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h variable.h \
+  job.h commands.h rule.h \
+  debug.h getopt.h \
+
+# .deps/misc.Po
+misc.o misc.o: misc.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h debug.h
+
+# .deps/read.Po
+read.o read.o: read.c make.h config.h \
+  getopt.h \
+  gettext.h \
+  dep.h filedef.h hash.h job.h \
+  commands.h variable.h rule.h debug.h \
+
+# .deps/remake.Po
+remake.o remake.o: remake.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h job.h \
+  commands.h dep.h \
+  variable.h debug.h
+
+# .deps/remote-cstms.Po
+# dummy
+
+# .deps/remote-stub.Po
+remote-stub.o remote-stub.o: remote-stub.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h job.h \
+  commands.h
+
+# .deps/rule.Po
+rule.o rule.o: rule.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h job.h \
+  commands.h variable.h \
+  rule.h
+
+# .deps/signame.Po
+signame.o signame.o: signame.c make.h config.h \
+  getopt.h \
+  gettext.h
+
+# .deps/strcache.Po
+strcache.o strcache.o: strcache.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h
+
+# .deps/variable.Po
+variable.o variable.o: variable.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h \
+  hash.h job.h commands.h \
+  variable.h rule.h
+
+# .deps/version.Po
+version.o version.o: version.c config.h
+
+# .deps/vmsjobs.Po
+# dummy
+
+# .deps/vpath.Po
+vpath.o vpath.o: vpath.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h
Index: trunk/src/gmake/README
===================================================================
--- trunk/src/gmake/README	(revision 466)
+++ trunk/src/gmake/README	(revision 503)
@@ -1,3 +1,3 @@
-This directory contains the 3.81beta1 release of GNU Make.
+This directory contains the 3.81 release of GNU Make.
 
 See the file NEWS for the user-visible changes from previous releases.
@@ -169,2 +169,22 @@
 and a DOS-based tool built with DJGPP.  Please be sure you are looking
 at the right README!
+
+
+
+-------------------------------------------------------------------------------
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/README.Amiga
===================================================================
--- trunk/src/gmake/README.Amiga	(revision 466)
+++ trunk/src/gmake/README.Amiga	(revision 503)
@@ -60,2 +60,20 @@
     Resident make Add
 
+
+
+-------------------------------------------------------------------------------
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/README.DOS
===================================================================
--- trunk/src/gmake/README.DOS	(revision 466)
+++ trunk/src/gmake/README.DOS	(revision 503)
@@ -63,5 +63,5 @@
       directory as an argument to the batch file, like this:
 
-	c:\djgpp\gnu\make-3.81beta1\configure.bat c:/djgpp/gnu/make-3.81beta1
+	c:\djgpp\gnu\make-3.81\configure.bat c:/djgpp/gnu/make-3.81
 
       Note the forward slashes in the source path argument: you MUST
@@ -85,5 +85,5 @@
       need to tell Make where the sources are, like this:
 
-	        make srcdir=c:/djgpp/gnu/make-3.81beta1
+	        make srcdir=c:/djgpp/gnu/make-3.81
 
       (configure.bat will tell you this when it finishes).  You MUST
@@ -322,2 +322,21 @@
    Enjoy,
 			Eli Zaretskii <eliz@is.elta.co.il>
+
+
+
+-------------------------------------------------------------------------------
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/README.OS2
===================================================================
--- trunk/src/gmake/README.OS2	(revision 466)
+++ trunk/src/gmake/README.OS2	(revision 503)
@@ -47,5 +47,5 @@
 
  - sh compatible shell (ksh, bash, ash, but tested only with pdksh 5.2.14
-   (release 2)
+   release 2)
    If you use pdksh it is recommended to update to 5.2.14 release 2. Older
    versions may not work! You can get this version at
@@ -60,10 +60,10 @@
  - grep
  - sed
- - GNU make 3.79.1 (special OS/2 patched version)
+ - GNU make 3.79.1 (special OS/2 patched version) or higher
  - perl 5.005 or higher
  - 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.57, automake 1.7.2 (or compatible)
+you need also: GNU m4 1.4, autoconf 2.59, automake 1.8.2 (or compatible)
 
 
@@ -148,12 +148,30 @@
 
   export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
-  export CFLAGS="-Zomf -O2 -s -Zmt"
-  export LDFLAGS="-Zcrtdll -Zmt -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
+  export CFLAGS="-Zomf -O2 -Zmt"
+  export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
   export RANLIB="echo"
   ./configure --prefix=x:/usr --disable-nls
   make AR=emxomfar
-  make checks
+  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).
+
+
+
+-------------------------------------------------------------------------------
+Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/README.W32
===================================================================
--- trunk/src/gmake/README.W32	(revision 466)
+++ trunk/src/gmake/README.W32	(revision 503)
@@ -1,44 +1,68 @@
-Port of GNU make to Windows NT and Windows 95
-Builds natively with MSVC 2.x or MSVC 4.x compilers.
-Should also build fine with MSVC 5.x and 6.x (though not confirmed).
-
-This Windows 32-bit port of GNU make is maintained primarily by Rob
-Tulloh, who is also the author of this README.
-
-To build with nmake on Windows NT, Windows 95, or Windows 98:
-
-	1. Make sure cl.exe is in your %Path%. Example:
-
-		set Path=%Path%;c:/msdev/bin
-
-	2. Make sure %include% is set to msvc include directory. Example:
-
-		set include=c:/msdev/include
-
-	3. Make sure %lib% is set to msvc lib directory. Example:
-
-		set lib=c:/msdev/lib
-
-	4. nmake /f NMakefile
-
-
-    A short cut to steps 1, 2, and 3 is to run VCVARS32.bat before
-    invoking namke. For example:
-
-        c:
-        cd \msdev\bin
-        VCVARS32.bat
-	cd \path\to\make-3.81beta1
+This version of GNU make has been tested on Microsoft Windows 2000/XP/2003.
+It has also been used on Windows 95/98/NT, and on OS/2.
+
+It builds natively with MSVC 2.x, 4.x, 5.x, 6.x, and 2003 as well as
+.NET 7.x and .NET 2003.
+
+It builds with the MinGW port of GCC 3.x (tested with GCC 3.4.2).
+
+The Windows 32-bit port of GNU make is maintained jointly by various
+people.  It was originally made by Rob Tulloh.
+
+
+Do this first, regardless of the build method you choose:
+---------------------------------------------------------
+
+ 1. At the Windows command prompt run:
+
+      if not exist NMakefile copy NMakefile.template NMakefile
+      if not exist config.h copy config.h.W32 config.h
+
+    Then edit config.h to your liking (especially the few shell-related
+    defines near the end, or HAVE_CASE_INSENSITIVE_FS which corresponds
+    to './configure --enable-case-insensitive-file-system').
+
+
+Using make_msvc_net2003.vcproj
+------------------------------
+
+ 2. Open make_msvc_net2003.vcproj in MSVS71 or MSVC71 or any compatible IDE,
+    then build this project as usual.
+
+
+Building with (MinGW-)GCC using build_w32.bat
+---------------------------------------------
+
+ 2. Open a W32 command prompt for your installed (MinGW-)GCC, setup a
+    correct PATH and other environment variables for it, then execute ...
+
+	build_w32.bat gcc
+
+    This produces gnumake.exe in the current directory.
+
+
+Building with (MSVC++-)cl using build_w32.bat or NMakefile
+----------------------------------------------------------
+
+ 2. Open a W32 command prompt for your installed (MSVC++-)cl, setup a
+    correct PATH and other environment variables for it (usually via
+    executing vcvars32.bat or vsvars32.bat from the cl-installation,
+    e.g. "%VS71COMNTOOLS%vsvars32.bat"; or using a corresponding start
+    menue entry from the cl-installation), then execute EITHER ...
+
+	build_w32.bat
+
+    (this produces WinDebug/gnumake.exe and WinRel/gnumake.exe)
+
+    ... OR ...
+
 	nmake /f NMakefile
 
-There is a bat file (build_w32.bat) for folks who have fear of nmake.
-
-Outputs:
-
-	WinDebug/make.exe
-	WinRel/make.exe
-
-
+    (this produces WinDebug/make.exe and WinRel/make.exe).
+
+
+-------------------
 -- Notes/Caveats --
+-------------------
 
 GNU make on Windows 32-bit platforms:
@@ -64,8 +88,8 @@
 	There are very few true ports of Bourne shell for NT right now.
 	There is a version of GNU bash available from Cygnus "Cygwin"
-	porting effort (http://sourceware.cygnus.com/cygwin).
+	porting effort (http://www.cygwin.com/).
 	Other possibilities are the MKS version of sh.exe, or building
         your own with a package like NutCracker (DataFocus) or Portage
-        (Consensys).
+        (Consensys).  Also MinGW includes sh (http://mingw.org/).
 
 GNU make and brain-dead shells (BATCH_MODE_ONLY_SHELL):
@@ -132,5 +156,6 @@
 	specification of paths.	 Make is able to figure out the intended
 	result and convert the paths internally to the format needed
-	when interacting with the operating system.
+	when interacting with the operating system, providing the path
+	is not within quotes, e.g. "x:/test/test.c".
 
 	You are encouraged to use colon as the separator character.
@@ -143,5 +168,5 @@
 
 	I verified all functionality with a slightly modified version
-	of make-test-3.81beta1 (modifications to get test suite to run
+	of make-test-3.81 (modifications to get test suite to run
 	on Windows NT). All tests pass in an environment that includes
 	sh.exe.  Tests were performed on both Windows NT and Windows 95.
@@ -168,13 +193,15 @@
 
 	Unlike Unix, Windows 95/NT systems encourage pathnames which
-	contain white space (e.g. C:\Program Files\). These sorts of pathnames
-	are legal under Unix too, but are never encouraged. There is
-	at least one place in make (VPATH/vpath handling) where paths
-	containing white space will simply not work. There may be others
-	too. I chose to not try and port make in such a way so that
-	these sorts of paths could be handled. I offer these suggestions
-	as workarounds:
-
-		1. Use 8.3 notation
+	contain white space (e.g. C:\Program Files\). These sorts of
+	pathnames are legal under Unix too, but are never encouraged.
+	There is at least one place in make (VPATH/vpath handling) where
+	paths containing white space will simply not work. There may be
+	others too. I chose to not try and port make in such a way so
+	that these sorts of paths could be handled. I offer these
+	suggestions as workarounds:
+
+		1. Use 8.3 notation. i.e. "x:/long~1/", which is actually
+		   "x:\longpathtest".  Type "dir /x" to view these filenames
+		   within the cmd.exe shell.
 		2. Rename the directory so it does not contain white space.
 
@@ -221,8 +248,8 @@
 	related to the way VC++ 4.0 changes the case name of the pdb
 	filename it is passed on the command line. It seems to change
-	the name always to to lower case. I contend that
-	the VC++ compiler should not change the casename of files that
-	are passed as arguments on the command line. I don't think this
-	was a problem in MSVC 2.x, but I know it is a problem in MSVC 4.x.
+	the name always to to lower case. I contend that the VC++
+	compiler should not change the casename of files that are passed
+	as arguments on the command line. I don't think this was a
+	problem in MSVC 2.x, but I know it is a problem in MSVC 4.x.
 
 	The package builds fine on VFAT and NTFS filesystems.
@@ -230,12 +257,12 @@
 	Most all of the development I have done to date has been using
 	NTFS and long file names. I have not done any considerable work
-	under VFAT. VFAT users may wish to be aware that this port
-	of make does respect case sensitivity.
+	under VFAT. VFAT users may wish to be aware that this port of
+	make does respect case sensitivity.
 
 FAT:
 
-	Version 3.76 added support for FAT filesystems. Make
-	works around some difficulties with stat'ing of
-	files and caching of filenames and directories internally.
+	Version 3.76 added support for FAT filesystems. Make works
+	around some difficulties with stat'ing of files and caching of
+	filenames and directories internally.
 
 Bug reports:
@@ -243,2 +270,20 @@
 	Please submit bugs via the normal bug reporting mechanism which
 	is described in the GNU make manual and the base README.
+
+
+-------------------------------------------------------------------------------
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/README.customs
===================================================================
--- trunk/src/gmake/README.customs	(revision 466)
+++ trunk/src/gmake/README.customs	(revision 503)
@@ -94,2 +94,21 @@
 
   YMMV.
+
+
+
+-------------------------------------------------------------------------------
+Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/SMakefile
===================================================================
--- trunk/src/gmake/SMakefile	(revision 466)
+++ trunk/src/gmake/SMakefile	(revision 503)
@@ -1,22 +1,22 @@
-# NOTE: If you have no `make' program at all to process this makefile, run
-# `build.sh' instead.
-#
-# Copyright (C) 1988, 89, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
+# -*-Makefile-*- for building GNU make with smake
+#
+# NOTE: If you have no 'make' program at all to process this makefile,
+# run 'build.sh' instead.
+#
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
 # This file is part of GNU Make.
 #
-# GNU Make is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU Make is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Make; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 #
@@ -25,7 +25,7 @@
 
 # Ultrix 2.2 make doesn't expand the value of VPATH.
-VPATH = /make-3.81beta1/
+VPATH = /make-3.81/
 # This must repeat the value, because configure will remove `VPATH = .'.
-srcdir = /make-3.81beta1/
+srcdir = /make-3.81/
 
 CC = sc
@@ -126,5 +126,5 @@
 objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o	\
        rule.o implicit.o default.o variable.o expand.o function.o	\
-       vpath.o version.o ar.o arscan.o signame.o hash.o                 \
+       vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o      \
        remote-$(REMOTE).o $(GLOB) $(GETOPT) $(ALLOCA) $(extras)
 srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c             \
@@ -135,5 +135,5 @@
        $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c           \
        $(srcdir)remote-$(REMOTE).c                                     \
-       $(srcdir)ar.c $(srcdir)arscan.c                                \
+       $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c              \
        $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC)            \
        $(srcdir)commands.h $(srcdir)dep.h $(srcdir)file.h            \
@@ -215,134 +215,156 @@
 # --------------- DEPENDENCIES
 #
+
+# .deps/alloca.Po
 # dummy
+
+# .deps/ar.Po
+ar.o ar.o: ar.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h dep.h \
+
+# .deps/arscan.Po
+arscan.o arscan.o: arscan.c make.h config.h \
+  getopt.h \
+  gettext.h \
+
+# .deps/commands.Po
+commands.o commands.o: commands.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h variable.h \
+  job.h commands.h
+
+# .deps/default.Po
+default.o default.o: default.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h rule.h \
+  dep.h job.h commands.h
+
+# .deps/dir.Po
+dir.o dir.o: dir.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h \
+
+# .deps/expand.Po
+expand.o expand.o: expand.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h \
+  job.h commands.h \
+  variable.h rule.h
+
+# .deps/file.Po
+file.o file.o: file.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h \
+  hash.h job.h commands.h \
+  variable.h debug.h
+
+# .deps/function.Po
+function.o function.o: function.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h dep.h \
+  job.h commands.h debug.h
+
+# .deps/getloadavg.Po
 # dummy
-ar.o : \
- ar.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h dep.h
-arscan.o : \
- arscan.c make.h config.h \
- getopt.h \
- gettext.h \
-
-commands.o : \
- commands.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h variable.h job.h \
- commands.h
-default.o : \
- default.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h rule.h dep.h job.h \
- commands.h
-dir.o : \
- dir.c make.h config.h \
- getopt.h \
- gettext.h hash.h \
-
-expand.o : \
- expand.c make.h config.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-file.o : \
- file.c make.h config.h \
- getopt.h \
- gettext.h \
- dep.h filedef.h hash.h job.h \
- commands.h variable.h \
- debug.h
-function.o : \
- function.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h dep.h job.h \
- commands.h debug.h
-getopt.o : \
- getopt.c config.h \
-
-getopt1.o : \
- getopt1.c config.h getopt.h \
-
-hash.o : \
- hash.c make.h config.h \
- getopt.h \
- gettext.h hash.h
-implicit.o : \
- implicit.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h rule.h dep.h debug.h
-job.o : \
- job.c make.h config.h \
- getopt.h \
- gettext.h \
- job.h \
- debug.h filedef.h hash.h commands.h \
- variable.h \
-
-loadavg-getloadavg.o : \
- getloadavg.c config.h \
- make.h \
- getopt.h \
- gettext.h \
-
-main.o : \
- main.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h variable.h job.h \
- commands.h rule.h debug.h \
-
-misc.o : \
- misc.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- debug.h
-read.o : \
- read.c make.h config.h \
- getopt.h \
- gettext.h \
- dep.h filedef.h hash.h \
- job.h commands.h \
- variable.h rule.h debug.h
-remake.o : \
- remake.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h job.h \
- commands.h dep.h variable.h debug.h
+
+# .deps/getopt.Po
+getopt.o getopt.o: getopt.c config.h \
+
+# .deps/getopt1.Po
+getopt1.o getopt1.o: getopt1.c config.h getopt.h \
+
+# .deps/hash.Po
+hash.o hash.o: hash.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h
+
+# .deps/implicit.Po
+implicit.o implicit.o: implicit.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h rule.h dep.h debug.h \
+  variable.h job.h \
+  commands.h
+
+# .deps/job.Po
+job.o job.o: job.c make.h config.h \
+  getopt.h \
+  gettext.h job.h \
+  debug.h filedef.h hash.h \
+  commands.h variable.h \
+
+# .deps/loadavg-getloadavg.Po
+loadavg-getloadavg.o loadavg-getloadavg.o: getloadavg.c config.h \
+  make.h \
+  getopt.h \
+  gettext.h \
+
+# .deps/main.Po
+main.o main.o: main.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h variable.h \
+  job.h commands.h rule.h \
+  debug.h getopt.h \
+
+# .deps/misc.Po
+misc.o misc.o: misc.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h debug.h
+
+# .deps/read.Po
+read.o read.o: read.c make.h config.h \
+  getopt.h \
+  gettext.h \
+  dep.h filedef.h hash.h job.h \
+  commands.h variable.h rule.h debug.h \
+
+# .deps/remake.Po
+remake.o remake.o: remake.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h job.h \
+  commands.h dep.h \
+  variable.h debug.h
+
+# .deps/remote-cstms.Po
 # dummy
-remote-stub.o : \
- remote-stub.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h job.h \
- commands.h
-rule.o : \
- rule.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-signame.o : \
- signame.c make.h config.h \
- getopt.h \
- gettext.h
-variable.o : \
- variable.c make.h config.h \
- getopt.h \
- gettext.h dep.h \
- filedef.h hash.h job.h \
- commands.h variable.h rule.h
-version.o : \
- version.c config.h
-vpath.o : \
- vpath.c make.h config.h \
- getopt.h \
- gettext.h filedef.h \
- hash.h variable.h
+
+# .deps/remote-stub.Po
+remote-stub.o remote-stub.o: remote-stub.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h job.h \
+  commands.h
+
+# .deps/rule.Po
+rule.o rule.o: rule.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h hash.h job.h \
+  commands.h variable.h \
+  rule.h
+
+# .deps/signame.Po
+signame.o signame.o: signame.c make.h config.h \
+  getopt.h \
+  gettext.h
+
+# .deps/strcache.Po
+strcache.o strcache.o: strcache.c make.h config.h \
+  getopt.h \
+  gettext.h hash.h
+
+# .deps/variable.Po
+variable.o variable.o: variable.c make.h config.h \
+  getopt.h \
+  gettext.h dep.h filedef.h \
+  hash.h job.h commands.h \
+  variable.h rule.h
+
+# .deps/version.Po
+version.o version.o: version.c config.h
+
+# .deps/vmsjobs.Po
+# dummy
+
+# .deps/vpath.Po
+vpath.o vpath.o: vpath.c make.h config.h \
+  getopt.h \
+  gettext.h filedef.h hash.h variable.h
Index: trunk/src/gmake/acinclude.m4
===================================================================
--- trunk/src/gmake/acinclude.m4	(revision 466)
+++ trunk/src/gmake/acinclude.m4	(revision 503)
@@ -2,4 +2,23 @@
 dnl
 dnl Automake will incorporate this into its generated aclocal.m4.
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+dnl Free Software Foundation, Inc.
+dnl This file is part of GNU Make.
+dnl
+dnl GNU Make is free software; you can redistribute it and/or modify it
+dnl under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2, or (at your option)
+dnl any later version.
+dnl
+dnl GNU Make is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with GNU Make; see the file COPYING.  If not, write to the
+dnl Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+dnl MA 02110-1301 USA.
+
 
 dnl ---------------------------------------------------------------------------
Index: trunk/src/gmake/aclocal.m4
===================================================================
--- trunk/src/gmake/aclocal.m4	(revision 466)
+++ trunk/src/gmake/aclocal.m4	(revision 503)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.8.3 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005  Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,1700 +12,9 @@
 # PARTICULAR PURPOSE.
 
-# gettext.m4 serial 20 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-dnl Macro to add for using GNU gettext.
-
-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl    default (if it is not specified or empty) is 'no-libtool'.
-dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
-dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
-dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
-dnl    depending on --{enable,disable}-{shared,static} and on the presence of
-dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl    $(top_builddir)/intl/libintl.a will be created.
-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
-dnl    implementations (in libc or libintl) without the ngettext() function
-dnl    will be ignored.  If NEEDSYMBOL is specified and is
-dnl    'need-formatstring-macros', then GNU gettext implementations that don't
-dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
-dnl INTLDIR is used to find the intl libraries.  If empty,
-dnl    the value `$(top_builddir)/intl/' is used.
-dnl
-dnl The result of the configuration is one of three cases:
-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
-dnl    and used.
-dnl    Catalog format: GNU --> install in $(datadir)
-dnl    Catalog extension: .mo after installation, .gmo in source tree
-dnl 2) GNU gettext has been found in the system's C library.
-dnl    Catalog format: GNU --> install in $(datadir)
-dnl    Catalog extension: .mo after installation, .gmo in source tree
-dnl 3) No internationalization, always use English msgid.
-dnl    Catalog format: none
-dnl    Catalog extension: none
-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
-dnl The use of .gmo is historical (it was needed to avoid overwriting the
-dnl GNU format catalogs when building on a platform with an X/Open gettext),
-dnl but we keep it in order not to force irrelevant filename changes on the
-dnl maintainers.
-dnl
-AC_DEFUN([AM_GNU_GETTEXT],
-[
-  dnl Argument checking.
-  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
-    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
-  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
-    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-])])])])
-  define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
-  define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
-
-  AC_REQUIRE([AM_PO_SUBDIRS])dnl
-  ifelse(gt_included_intl, yes, [
-    AC_REQUIRE([AM_INTL_SUBDIR])dnl
-  ])
-
-  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-
-  dnl Sometimes libintl requires libiconv, so first search for libiconv.
-  dnl Ideally we would do this search only after the
-  dnl      if test "$USE_NLS" = "yes"; then
-  dnl        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
-  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
-  dnl the configure script would need to contain the same shell code
-  dnl again, outside any 'if'. There are two solutions:
-  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
-  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
-  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
-  dnl documented, we avoid it.
-  ifelse(gt_included_intl, yes, , [
-    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-  ])
-
-  dnl Set USE_NLS.
-  AM_NLS
-
-  ifelse(gt_included_intl, yes, [
-    BUILD_INCLUDED_LIBINTL=no
-    USE_INCLUDED_LIBINTL=no
-  ])
-  LIBINTL=
-  LTLIBINTL=
-  POSUB=
-
-  dnl If we use NLS figure out what method
-  if test "$USE_NLS" = "yes"; then
-    gt_use_preinstalled_gnugettext=no
-    ifelse(gt_included_intl, yes, [
-      AC_MSG_CHECKING([whether included gettext is requested])
-      AC_ARG_WITH(included-gettext,
-        [  --with-included-gettext use the GNU gettext library included here],
-        nls_cv_force_use_gnu_gettext=$withval,
-        nls_cv_force_use_gnu_gettext=no)
-      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
-      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
-      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-    ])
-        dnl User does not insist on using GNU NLS library.  Figure out what
-        dnl to use.  If GNU gettext is available we use this.  Else we have
-        dnl to fall back to GNU NLS library.
-
-        dnl Add a version number to the cache macros.
-        define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
-        define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
-        define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
-
-        AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
-         [AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
-            [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
-            gt_cv_func_gnugettext_libc=yes,
-            gt_cv_func_gnugettext_libc=no)])
-
-        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
-          dnl Sometimes libintl requires libiconv, so first search for libiconv.
-          ifelse(gt_included_intl, yes, , [
-            AM_ICONV_LINK
-          ])
-          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
-          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
-          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
-          dnl even if libiconv doesn't exist.
-          AC_LIB_LINKFLAGS_BODY([intl])
-          AC_CACHE_CHECK([for GNU gettext in libintl],
-            gt_cv_func_gnugettext_libintl,
-           [gt_save_CPPFLAGS="$CPPFLAGS"
-            CPPFLAGS="$CPPFLAGS $INCINTL"
-            gt_save_LIBS="$LIBS"
-            LIBS="$LIBS $LIBINTL"
-            dnl Now see whether libintl exists and does not depend on libiconv.
-            AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias ();],
-              [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
-              gt_cv_func_gnugettext_libintl=yes,
-              gt_cv_func_gnugettext_libintl=no)
-            dnl Now see whether libintl exists and depends on libiconv.
-            if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
-              LIBS="$LIBS $LIBICONV"
-              AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias ();],
-                [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
-               [LIBINTL="$LIBINTL $LIBICONV"
-                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                gt_cv_func_gnugettext_libintl=yes
-               ])
-            fi
-            CPPFLAGS="$gt_save_CPPFLAGS"
-            LIBS="$gt_save_LIBS"])
-        fi
-
-        dnl If an already present or preinstalled GNU gettext() is found,
-        dnl use it.  But if this macro is used in GNU gettext, and GNU
-        dnl gettext is already preinstalled in libintl, we update this
-        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
-        if test "$gt_cv_func_gnugettext_libc" = "yes" \
-           || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
-                && test "$PACKAGE" != gettext-runtime \
-                && test "$PACKAGE" != gettext-tools; }; then
-          gt_use_preinstalled_gnugettext=yes
-        else
-          dnl Reset the values set by searching for libintl.
-          LIBINTL=
-          LTLIBINTL=
-          INCINTL=
-        fi
-
-    ifelse(gt_included_intl, yes, [
-        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
-          dnl GNU gettext is not found in the C library.
-          dnl Fall back on included GNU gettext library.
-          nls_cv_use_gnu_gettext=yes
-        fi
-      fi
-
-      if test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Mark actions used to generate GNU NLS library.
-        BUILD_INCLUDED_LIBINTL=yes
-        USE_INCLUDED_LIBINTL=yes
-        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
-        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
-        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
-      fi
-
-      if test "$gt_use_preinstalled_gnugettext" = "yes" \
-         || test "$nls_cv_use_gnu_gettext" = "yes"; then
-        dnl Mark actions to use GNU gettext tools.
-        CATOBJEXT=.gmo
-      fi
-    ])
-
-    if test "$gt_use_preinstalled_gnugettext" = "yes" \
-       || test "$nls_cv_use_gnu_gettext" = "yes"; then
-      AC_DEFINE(ENABLE_NLS, 1,
-        [Define to 1 if translation of program messages to the user's native language
-   is requested.])
-    else
-      USE_NLS=no
-    fi
-  fi
-
-  AC_MSG_CHECKING([whether to use NLS])
-  AC_MSG_RESULT([$USE_NLS])
-  if test "$USE_NLS" = "yes"; then
-    AC_MSG_CHECKING([where the gettext function comes from])
-    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
-        gt_source="external libintl"
-      else
-        gt_source="libc"
-      fi
-    else
-      gt_source="included intl directory"
-    fi
-    AC_MSG_RESULT([$gt_source])
-  fi
-
-  if test "$USE_NLS" = "yes"; then
-
-    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
-        AC_MSG_CHECKING([how to link with libintl])
-        AC_MSG_RESULT([$LIBINTL])
-        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
-      fi
-
-      dnl For backward compatibility. Some packages may be using this.
-      AC_DEFINE(HAVE_GETTEXT, 1,
-       [Define if the GNU gettext() function is already present or preinstalled.])
-      AC_DEFINE(HAVE_DCGETTEXT, 1,
-       [Define if the GNU dcgettext() function is already present or preinstalled.])
-    fi
-
-    dnl We need to process the po/ directory.
-    POSUB=po
-  fi
-
-  ifelse(gt_included_intl, yes, [
-    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
-    dnl to 'yes' because some of the testsuite requires it.
-    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
-      BUILD_INCLUDED_LIBINTL=yes
-    fi
-
-    dnl Make all variables we use known to autoconf.
-    AC_SUBST(BUILD_INCLUDED_LIBINTL)
-    AC_SUBST(USE_INCLUDED_LIBINTL)
-    AC_SUBST(CATOBJEXT)
-
-    dnl For backward compatibility. Some configure.ins may be using this.
-    nls_cv_header_intl=
-    nls_cv_header_libgt=
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    DATADIRNAME=share
-    AC_SUBST(DATADIRNAME)
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    INSTOBJEXT=.mo
-    AC_SUBST(INSTOBJEXT)
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    GENCAT=gencat
-    AC_SUBST(GENCAT)
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    if test "$USE_INCLUDED_LIBINTL" = yes; then
-      INTLOBJS="\$(GETTOBJS)"
-    fi
-    AC_SUBST(INTLOBJS)
-
-    dnl Enable libtool support if the surrounding package wishes it.
-    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
-    AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
-  ])
-
-  dnl For backward compatibility. Some Makefiles may be using this.
-  INTLLIBS="$LIBINTL"
-  AC_SUBST(INTLLIBS)
-
-  dnl Make all documented variables known to autoconf.
-  AC_SUBST(LIBINTL)
-  AC_SUBST(LTLIBINTL)
-  AC_SUBST(POSUB)
-])
-
-
-dnl Checks for all prerequisites of the intl subdirectory,
-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-dnl            USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-AC_DEFUN([AM_INTL_SUBDIR],
-[
-  AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_MKINSTALLDIRS])dnl
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-  AC_REQUIRE([AC_PROG_RANLIB])dnl
-  AC_REQUIRE([AC_ISC_POSIX])dnl
-  AC_REQUIRE([AC_HEADER_STDC])dnl
-  AC_REQUIRE([AC_C_CONST])dnl
-  AC_REQUIRE([AC_C_INLINE])dnl
-  AC_REQUIRE([AC_TYPE_OFF_T])dnl
-  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
-  AC_REQUIRE([AC_FUNC_MMAP])dnl
-  AC_REQUIRE([jm_GLIBC21])dnl
-  AC_REQUIRE([gt_INTDIV0])dnl
-  AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
-  AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
-  AC_REQUIRE([gt_INTTYPES_PRI])dnl
-
-  AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-stdlib.h string.h unistd.h sys/param.h])
-  AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
-geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
-strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \
-__fsetlocking])
-
-  AM_ICONV
-  AM_LANGINFO_CODESET
-  if test $ac_cv_header_locale_h = yes; then
-    AM_LC_MESSAGES
-  fi
-
-  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
-  dnl because plural.y uses bison specific features. It requires at least
-  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
-  dnl compile.
-  dnl bison is only needed for the maintainer (who touches plural.y). But in
-  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
-  dnl the rule in general Makefile. Now, some people carelessly touch the
-  dnl files or have a broken "make" program, hence the plural.c rule will
-  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
-  dnl present or too old.
-  AC_CHECK_PROGS([INTLBISON], [bison])
-  if test -z "$INTLBISON"; then
-    ac_verc_fail=yes
-  else
-    dnl Found it, now check the version.
-    AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
-    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-    case $ac_prog_version in
-      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
-         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-    esac
-    AC_MSG_RESULT([$ac_prog_version])
-  fi
-  if test $ac_verc_fail = yes; then
-    INTLBISON=:
-  fi
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
-AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
-
-# iconv.m4 serial AM4 (gettext-0.11.3)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-[
-  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-
-  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-  dnl accordingly.
-  AC_LIB_LINKFLAGS_BODY([iconv])
-])
-
-AC_DEFUN([AM_ICONV_LINK],
-[
-  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
-  dnl those with the standalone portable GNU libiconv installed).
-
-  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
-  dnl accordingly.
-  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
-  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
-  dnl because if the user has installed libiconv and not disabled its use
-  dnl via --without-libiconv-prefix, he wants to use it. The first
-  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
-  am_save_CPPFLAGS="$CPPFLAGS"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
-  AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
-    am_cv_func_iconv="no, consider installing GNU libiconv"
-    am_cv_lib_iconv=no
-    AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-      [iconv_t cd = iconv_open("","");
-       iconv(cd,NULL,NULL,NULL,NULL);
-       iconv_close(cd);],
-      am_cv_func_iconv=yes)
-    if test "$am_cv_func_iconv" != yes; then
-      am_save_LIBS="$LIBS"
-      LIBS="$LIBS $LIBICONV"
-      AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-        [iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);],
-        am_cv_lib_iconv=yes
-        am_cv_func_iconv=yes)
-      LIBS="$am_save_LIBS"
-    fi
-  ])
-  if test "$am_cv_func_iconv" = yes; then
-    AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
-  fi
-  if test "$am_cv_lib_iconv" = yes; then
-    AC_MSG_CHECKING([how to link with libiconv])
-    AC_MSG_RESULT([$LIBICONV])
-  else
-    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
-    dnl either.
-    CPPFLAGS="$am_save_CPPFLAGS"
-    LIBICONV=
-    LTLIBICONV=
-  fi
-  AC_SUBST(LIBICONV)
-  AC_SUBST(LTLIBICONV)
-])
-
-AC_DEFUN([AM_ICONV],
-[
-  AM_ICONV_LINK
-  if test "$am_cv_func_iconv" = yes; then
-    AC_MSG_CHECKING([for iconv declaration])
-    AC_CACHE_VAL(am_cv_proto_iconv, [
-      AC_TRY_COMPILE([
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
-      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
-    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
-    AC_MSG_RESULT([$]{ac_t:-
-         }[$]am_cv_proto_iconv)
-    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
-      [Define as const if the declaration of iconv() needs const.])
-  fi
-])
-
-# lib-ld.m4 serial 2 (gettext-0.12)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl Subroutines of libtool.m4,
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-dnl with libtool.m4.
-
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-  acl_cv_prog_gnu_ld=yes
-else
-  acl_cv_prog_gnu_ld=no
-fi])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-
-dnl From libtool-1.4. Sets the variable LD.
-AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH(gnu-ld,
-[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by GCC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]* | [A-Za-z]:[\\/]*)]
-      [re_direlt='/[^/][^/]*/\.\./']
-      # Canonicalize the path of ld
-      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(acl_cv_path_LD,
-[if test -z "$LD"; then
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      acl_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-	test "$with_gnu_ld" != no && break
-      else
-	test "$with_gnu_ld" != yes && break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-else
-  acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
-
-# lib-link.m4 serial 4 (gettext-0.12)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-dnl augments the CPPFLAGS variable.
-AC_DEFUN([AC_LIB_LINKFLAGS],
-[
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-  define([Name],[translit([$1],[./-], [___])])
-  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
-    AC_LIB_LINKFLAGS_BODY([$1], [$2])
-    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
-    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
-    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
-  ])
-  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
-  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
-  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-  AC_SUBST([LIB]NAME)
-  AC_SUBST([LTLIB]NAME)
-  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
-  dnl results of this search when this library appears as a dependency.
-  HAVE_LIB[]NAME=yes
-  undefine([Name])
-  undefine([NAME])
-])
-
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-dnl searches for libname and the libraries corresponding to explicit and
-dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. If found, it
-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-[
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  AC_REQUIRE([AC_LIB_RPATH])
-  define([Name],[translit([$1],[./-], [___])])
-  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-
-  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
-  dnl accordingly.
-  AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
-  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
-  dnl because if the user has installed lib[]Name and not disabled its use
-  dnl via --without-lib[]Name-prefix, he wants to use it.
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
-  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIB[]NAME"
-    AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
-    LIBS="$ac_save_LIBS"
-  ])
-  if test "$ac_cv_lib[]Name" = yes; then
-    HAVE_LIB[]NAME=yes
-    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
-    AC_MSG_CHECKING([how to link with lib[]$1])
-    AC_MSG_RESULT([$LIB[]NAME])
-  else
-    HAVE_LIB[]NAME=no
-    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
-    dnl $INC[]NAME either.
-    CPPFLAGS="$ac_save_CPPFLAGS"
-    LIB[]NAME=
-    LTLIB[]NAME=
-  fi
-  AC_SUBST([HAVE_LIB]NAME)
-  AC_SUBST([LIB]NAME)
-  AC_SUBST([LTLIB]NAME)
-  undefine([Name])
-  undefine([NAME])
-])
-
-dnl Determine the platform dependent parameters needed to use rpath:
-dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-dnl hardcode_direct, hardcode_minus_L.
-AC_DEFUN([AC_LIB_RPATH],
-[
-  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
-  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
-  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
-  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-  AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
-    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
-    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
-    . ./conftest.sh
-    rm -f ./conftest.sh
-    acl_cv_rpath=done
-  ])
-  wl="$acl_cv_wl"
-  libext="$acl_cv_libext"
-  shlibext="$acl_cv_shlibext"
-  hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-  hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-  hardcode_direct="$acl_cv_hardcode_direct"
-  hardcode_minus_L="$acl_cv_hardcode_minus_L"
-  dnl Determine whether the user wants rpath handling at all.
-  AC_ARG_ENABLE(rpath,
-    [  --disable-rpath         do not hardcode runtime library paths],
-    :, enable_rpath=yes)
-])
-
-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-[
-  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-  dnl By default, look in $includedir and $libdir.
-  use_additional=yes
-  AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-  AC_LIB_ARG_WITH([lib$1-prefix],
-[  --with-lib$1-prefix[=DIR]  search for lib$1 in DIR/include and DIR/lib
-  --without-lib$1-prefix     don't search for lib$1 in includedir and libdir],
-[
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
-        AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-      else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
-      fi
-    fi
-])
-  dnl Search the library and its dependencies in $additional_libdir and
-  dnl $LDFLAGS. Using breadth-first-seach.
-  LIB[]NAME=
-  LTLIB[]NAME=
-  INC[]NAME=
-  rpathdirs=
-  ltrpathdirs=
-  names_already_handled=
-  names_next_round='$1 $2'
-  while test -n "$names_next_round"; do
-    names_this_round="$names_next_round"
-    names_next_round=
-    for name in $names_this_round; do
-      already_handled=
-      for n in $names_already_handled; do
-        if test "$n" = "$name"; then
-          already_handled=yes
-          break
-        fi
-      done
-      if test -z "$already_handled"; then
-        names_already_handled="$names_already_handled $name"
-        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
-        dnl or AC_LIB_HAVE_LINKFLAGS call.
-        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
-        eval value=\"\$HAVE_LIB$uppername\"
-        if test -n "$value"; then
-          if test "$value" = yes; then
-            eval value=\"\$LIB$uppername\"
-            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
-            eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
-          else
-            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
-            dnl that this library doesn't exist. So just drop it.
-            :
-          fi
-        else
-          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
-          dnl and the already constructed $LIBNAME/$LTLIBNAME.
-          found_dir=
-          found_la=
-          found_so=
-          found_a=
-          if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-              found_dir="$additional_libdir"
-              found_so="$additional_libdir/lib$name.$shlibext"
-              if test -f "$additional_libdir/lib$name.la"; then
-                found_la="$additional_libdir/lib$name.la"
-              fi
-            else
-              if test -f "$additional_libdir/lib$name.$libext"; then
-                found_dir="$additional_libdir"
-                found_a="$additional_libdir/lib$name.$libext"
-                if test -f "$additional_libdir/lib$name.la"; then
-                  found_la="$additional_libdir/lib$name.la"
-                fi
-              fi
-            fi
-          fi
-          if test "X$found_dir" = "X"; then
-            for x in $LDFLAGS $LTLIB[]NAME; do
-              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-              case "$x" in
-                -L*)
-                  dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-                    found_dir="$dir"
-                    found_so="$dir/lib$name.$shlibext"
-                    if test -f "$dir/lib$name.la"; then
-                      found_la="$dir/lib$name.la"
-                    fi
-                  else
-                    if test -f "$dir/lib$name.$libext"; then
-                      found_dir="$dir"
-                      found_a="$dir/lib$name.$libext"
-                      if test -f "$dir/lib$name.la"; then
-                        found_la="$dir/lib$name.la"
-                      fi
-                    fi
-                  fi
-                  ;;
-              esac
-              if test "X$found_dir" != "X"; then
-                break
-              fi
-            done
-          fi
-          if test "X$found_dir" != "X"; then
-            dnl Found the library.
-            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
-            if test "X$found_so" != "X"; then
-              dnl Linking with a shared library. We attempt to hardcode its
-              dnl directory into the executable's runpath, unless it's the
-              dnl standard /usr/lib.
-              if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
-                dnl No hardcoding is needed.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-              else
-                dnl Use an explicit option to hardcode DIR into the resulting
-                dnl binary.
-                dnl Potentially add DIR to ltrpathdirs.
-                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-                haveit=
-                for x in $ltrpathdirs; do
-                  if test "X$x" = "X$found_dir"; then
-                    haveit=yes
-                    break
-                  fi
-                done
-                if test -z "$haveit"; then
-                  ltrpathdirs="$ltrpathdirs $found_dir"
-                fi
-                dnl The hardcoding into $LIBNAME is system dependent.
-                if test "$hardcode_direct" = yes; then
-                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
-                  dnl resulting binary.
-                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-                    dnl Use an explicit option to hardcode DIR into the resulting
-                    dnl binary.
-                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                    dnl Potentially add DIR to rpathdirs.
-                    dnl The rpathdirs will be appended to $LIBNAME at the end.
-                    haveit=
-                    for x in $rpathdirs; do
-                      if test "X$x" = "X$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      rpathdirs="$rpathdirs $found_dir"
-                    fi
-                  else
-                    dnl Rely on "-L$found_dir".
-                    dnl But don't add it if it's already contained in the LDFLAGS
-                    dnl or the already constructed $LIBNAME
-                    haveit=
-                    for x in $LDFLAGS $LIB[]NAME; do
-                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                      if test "X$x" = "X-L$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
-                    fi
-                    if test "$hardcode_minus_L" != no; then
-                      dnl FIXME: Not sure whether we should use
-                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-                      dnl here.
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-                    else
-                      dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
-                      dnl here, because this doesn't fit in flags passed to the
-                      dnl compiler. So give up. No hardcoding. This affects only
-                      dnl very old systems.
-                      dnl FIXME: Not sure whether we should use
-                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-                      dnl here.
-                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-                    fi
-                  fi
-                fi
-              fi
-            else
-              if test "X$found_a" != "X"; then
-                dnl Linking with a static library.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
-              else
-                dnl We shouldn't come here, but anyway it's good to have a
-                dnl fallback.
-                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
-              fi
-            fi
-            dnl Assume the include files are nearby.
-            additional_includedir=
-            case "$found_dir" in
-              */lib | */lib/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
-                additional_includedir="$basedir/include"
-                ;;
-            esac
-            if test "X$additional_includedir" != "X"; then
-              dnl Potentially add $additional_includedir to $INCNAME.
-              dnl But don't add it
-              dnl   1. if it's the standard /usr/include,
-              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
-              dnl   3. if it's already present in $CPPFLAGS or the already
-              dnl      constructed $INCNAME,
-              dnl   4. if it doesn't exist as a directory.
-              if test "X$additional_includedir" != "X/usr/include"; then
-                haveit=
-                if test "X$additional_includedir" = "X/usr/local/include"; then
-                  if test -n "$GCC"; then
-                    case $host_os in
-                      linux*) haveit=yes;;
-                    esac
-                  fi
-                fi
-                if test -z "$haveit"; then
-                  for x in $CPPFLAGS $INC[]NAME; do
-                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                    if test "X$x" = "X-I$additional_includedir"; then
-                      haveit=yes
-                      break
-                    fi
-                  done
-                  if test -z "$haveit"; then
-                    if test -d "$additional_includedir"; then
-                      dnl Really add $additional_includedir to $INCNAME.
-                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
-                    fi
-                  fi
-                fi
-              fi
-            fi
-            dnl Look for dependencies.
-            if test -n "$found_la"; then
-              dnl Read the .la file. It defines the variables
-              dnl dlname, library_names, old_library, dependency_libs, current,
-              dnl age, revision, installed, dlopen, dlpreopen, libdir.
-              save_libdir="$libdir"
-              case "$found_la" in
-                */* | *\\*) . "$found_la" ;;
-                *) . "./$found_la" ;;
-              esac
-              libdir="$save_libdir"
-              dnl We use only dependency_libs.
-              for dep in $dependency_libs; do
-                case "$dep" in
-                  -L*)
-                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
-                    dnl But don't add it
-                    dnl   1. if it's the standard /usr/lib,
-                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
-                    dnl   3. if it's already present in $LDFLAGS or the already
-                    dnl      constructed $LIBNAME,
-                    dnl   4. if it doesn't exist as a directory.
-                    if test "X$additional_libdir" != "X/usr/lib"; then
-                      haveit=
-                      if test "X$additional_libdir" = "X/usr/local/lib"; then
-                        if test -n "$GCC"; then
-                          case $host_os in
-                            linux*) haveit=yes;;
-                          esac
-                        fi
-                      fi
-                      if test -z "$haveit"; then
-                        haveit=
-                        for x in $LDFLAGS $LIB[]NAME; do
-                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                            dnl Really add $additional_libdir to $LIBNAME.
-                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
-                          fi
-                        fi
-                        haveit=
-                        for x in $LDFLAGS $LTLIB[]NAME; do
-                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                            dnl Really add $additional_libdir to $LTLIBNAME.
-                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
-                          fi
-                        fi
-                      fi
-                    fi
-                    ;;
-                  -R*)
-                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
-                    if test "$enable_rpath" != no; then
-                      dnl Potentially add DIR to rpathdirs.
-                      dnl The rpathdirs will be appended to $LIBNAME at the end.
-                      haveit=
-                      for x in $rpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        rpathdirs="$rpathdirs $dir"
-                      fi
-                      dnl Potentially add DIR to ltrpathdirs.
-                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-                      haveit=
-                      for x in $ltrpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        ltrpathdirs="$ltrpathdirs $dir"
-                      fi
-                    fi
-                    ;;
-                  -l*)
-                    dnl Handle this in the next round.
-                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
-                    ;;
-                  *.la)
-                    dnl Handle this in the next round. Throw away the .la's
-                    dnl directory; it is already contained in a preceding -L
-                    dnl option.
-                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-                    ;;
-                  *)
-                    dnl Most likely an immediate library name.
-                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
-                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
-                    ;;
-                esac
-              done
-            fi
-          else
-            dnl Didn't find the library; assume it is in the system directories
-            dnl known to the linker and runtime loader. (All the system
-            dnl directories known to the linker should also be known to the
-            dnl runtime loader, otherwise the system is severely misconfigured.)
-            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
-          fi
-        fi
-      fi
-    done
-  done
-  if test "X$rpathdirs" != "X"; then
-    if test -n "$hardcode_libdir_separator"; then
-      dnl Weird platform: only the last -rpath option counts, the user must
-      dnl pass all path elements in one option. We can arrange that for a
-      dnl single library, but not when more than one $LIBNAMEs are used.
-      alldirs=
-      for found_dir in $rpathdirs; do
-        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
-      done
-      dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
-      acl_save_libdir="$libdir"
-      libdir="$alldirs"
-      eval flag=\"$hardcode_libdir_flag_spec\"
-      libdir="$acl_save_libdir"
-      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-    else
-      dnl The -rpath options are cumulative.
-      for found_dir in $rpathdirs; do
-        acl_save_libdir="$libdir"
-        libdir="$found_dir"
-        eval flag=\"$hardcode_libdir_flag_spec\"
-        libdir="$acl_save_libdir"
-        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-      done
-    fi
-  fi
-  if test "X$ltrpathdirs" != "X"; then
-    dnl When using libtool, the option that works for both libraries and
-    dnl executables is -R. The -R options are cumulative.
-    for found_dir in $ltrpathdirs; do
-      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
-    done
-  fi
-])
-
-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-dnl unless already present in VAR.
-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-dnl contains two or three consecutive elements that belong together.
-AC_DEFUN([AC_LIB_APPENDTOVAR],
-[
-  for element in [$2]; do
-    haveit=
-    for x in $[$1]; do
-      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-      if test "X$x" = "X$element"; then
-        haveit=yes
-        break
-      fi
-    done
-    if test -z "$haveit"; then
-      [$1]="${[$1]}${[$1]:+ }$element"
-    fi
-  done
-])
-
-# lib-prefix.m4 serial 2 (gettext-0.12)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-dnl to access previously installed libraries. The basic assumption is that
-dnl a user will want packages to use other packages he previously installed
-dnl with the same --prefix option.
-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-dnl libraries, but is otherwise very convenient.
-AC_DEFUN([AC_LIB_PREFIX],
-[
-  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-  dnl By default, look in $includedir and $libdir.
-  use_additional=yes
-  AC_LIB_WITH_FINAL_PREFIX([
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-  ])
-  AC_LIB_ARG_WITH([lib-prefix],
-[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
-  --without-lib-prefix    don't search for libraries in includedir and libdir],
-[
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
-        AC_LIB_WITH_FINAL_PREFIX([
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-        ])
-      else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
-      fi
-    fi
-])
-  if test $use_additional = yes; then
-    dnl Potentially add $additional_includedir to $CPPFLAGS.
-    dnl But don't add it
-    dnl   1. if it's the standard /usr/include,
-    dnl   2. if it's already present in $CPPFLAGS,
-    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
-    dnl   4. if it doesn't exist as a directory.
-    if test "X$additional_includedir" != "X/usr/include"; then
-      haveit=
-      for x in $CPPFLAGS; do
-        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-        if test "X$x" = "X-I$additional_includedir"; then
-          haveit=yes
-          break
-        fi
-      done
-      if test -z "$haveit"; then
-        if test "X$additional_includedir" = "X/usr/local/include"; then
-          if test -n "$GCC"; then
-            case $host_os in
-              linux*) haveit=yes;;
-            esac
-          fi
-        fi
-        if test -z "$haveit"; then
-          if test -d "$additional_includedir"; then
-            dnl Really add $additional_includedir to $CPPFLAGS.
-            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
-          fi
-        fi
-      fi
-    fi
-    dnl Potentially add $additional_libdir to $LDFLAGS.
-    dnl But don't add it
-    dnl   1. if it's the standard /usr/lib,
-    dnl   2. if it's already present in $LDFLAGS,
-    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
-    dnl   4. if it doesn't exist as a directory.
-    if test "X$additional_libdir" != "X/usr/lib"; then
-      haveit=
-      for x in $LDFLAGS; do
-        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-        if test "X$x" = "X-L$additional_libdir"; then
-          haveit=yes
-          break
-        fi
-      done
-      if test -z "$haveit"; then
-        if test "X$additional_libdir" = "X/usr/local/lib"; then
-          if test -n "$GCC"; then
-            case $host_os in
-              linux*) haveit=yes;;
-            esac
-          fi
-        fi
-        if test -z "$haveit"; then
-          if test -d "$additional_libdir"; then
-            dnl Really add $additional_libdir to $LDFLAGS.
-            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
-          fi
-        fi
-      fi
-    fi
-  fi
-])
-
-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-dnl acl_final_exec_prefix, containing the values to which $prefix and
-dnl $exec_prefix will expand at the end of the configure script.
-AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-[
-  dnl Unfortunately, prefix and exec_prefix get only finally determined
-  dnl at the end of configure.
-  if test "X$prefix" = "XNONE"; then
-    acl_final_prefix="$ac_default_prefix"
-  else
-    acl_final_prefix="$prefix"
-  fi
-  if test "X$exec_prefix" = "XNONE"; then
-    acl_final_exec_prefix='${prefix}'
-  else
-    acl_final_exec_prefix="$exec_prefix"
-  fi
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
-  prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-dnl variables prefix and exec_prefix bound to the values they will have
-dnl at the end of the configure script.
-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-[
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  $1
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-])
-
-# nls.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_DEFUN([AM_NLS],
-[
-  AC_MSG_CHECKING([whether NLS is requested])
-  dnl Default is enabled NLS
-  AC_ARG_ENABLE(nls,
-    [  --disable-nls           do not use Native Language Support],
-    USE_NLS=$enableval, USE_NLS=yes)
-  AC_MSG_RESULT($USE_NLS)
-  AC_SUBST(USE_NLS)
-])
-
-AC_DEFUN([AM_MKINSTALLDIRS],
-[
-  dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
-  dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
-  dnl Try to locate it.
-  MKINSTALLDIRS=
-  if test -n "$ac_aux_dir"; then
-    case "$ac_aux_dir" in
-      /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
-      *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
-    esac
-  fi
-  if test -z "$MKINSTALLDIRS"; then
-    MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-  fi
-  AC_SUBST(MKINSTALLDIRS)
-])
-
-# po.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-dnl Checks for all prerequisites of the po subdirectory.
-AC_DEFUN([AM_PO_SUBDIRS],
-[
-  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-  AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_MKINSTALLDIRS])dnl
-  AC_REQUIRE([AM_NLS])dnl
-
-  dnl Perform the following tests also if --disable-nls has been given,
-  dnl because they are needed for "make dist" to work.
-
-  dnl Search for GNU msgfmt in the PATH.
-  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
-  dnl The second test excludes FreeBSD msgfmt.
-  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-    [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
-     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
-    :)
-  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
-
-  dnl Search for GNU xgettext 0.12 or newer in the PATH.
-  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
-  dnl The second test excludes FreeBSD xgettext.
-  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
-     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
-    :)
-  dnl Remove leftover from FreeBSD xgettext call.
-  rm -f messages.po
-
-  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
-  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
-    [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
-
-  dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
-  dnl Test whether we really found GNU msgfmt.
-  if test "$GMSGFMT" != ":"; then
-    dnl If it is no GNU msgfmt we define it as : so that the
-    dnl Makefiles still can work.
-    if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
-       (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-      : ;
-    else
-      GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
-      AC_MSG_RESULT(
-        [found $GMSGFMT program is not GNU msgfmt; ignore it])
-      GMSGFMT=":"
-    fi
-  fi
-
-  dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
-  dnl Test whether we really found GNU xgettext.
-  if test "$XGETTEXT" != ":"; then
-    dnl If it is no GNU xgettext we define it as : so that the
-    dnl Makefiles still can work.
-    if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
-       (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-      : ;
-    else
-      AC_MSG_RESULT(
-        [found xgettext program is not GNU xgettext; ignore it])
-      XGETTEXT=":"
-    fi
-    dnl Remove leftover from FreeBSD xgettext call.
-    rm -f messages.po
-  fi
-
-  AC_OUTPUT_COMMANDS([
-    for ac_file in $CONFIG_FILES; do
-      # Support "outfile[:infile[:infile...]]"
-      case "$ac_file" in
-        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-      esac
-      # PO directories have a Makefile.in generated from Makefile.in.in.
-      case "$ac_file" in */Makefile.in)
-        # Adjust a relative srcdir.
-        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
-        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
-        # In autoconf-2.13 it is called $ac_given_srcdir.
-        # In autoconf-2.50 it is called $srcdir.
-        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
-        case "$ac_given_srcdir" in
-          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
-          /*) top_srcdir="$ac_given_srcdir" ;;
-          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
-        esac
-        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
-          rm -f "$ac_dir/POTFILES"
-          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
-          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ 	]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
-          POMAKEFILEDEPS="POTFILES.in"
-          # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
-          # on $ac_dir but don't depend on user-specified configuration
-          # parameters.
-          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
-            # The LINGUAS file contains the set of available languages.
-            if test -n "$OBSOLETE_ALL_LINGUAS"; then
-              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
-            fi
-            ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
-            # Hide the ALL_LINGUAS assigment from automake.
-            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
-            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
-          else
-            # The set of available languages was given in configure.in.
-            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
-          fi
-          case "$ac_given_srcdir" in
-            .) srcdirpre= ;;
-            *) srcdirpre='$(srcdir)/' ;;
-          esac
-          POFILES=
-          GMOFILES=
-          UPDATEPOFILES=
-          DUMMYPOFILES=
-          for lang in $ALL_LINGUAS; do
-            POFILES="$POFILES $srcdirpre$lang.po"
-            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
-            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
-            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
-          done
-          # CATALOGS depends on both $ac_dir and the user's LINGUAS
-          # environment variable.
-          INST_LINGUAS=
-          if test -n "$ALL_LINGUAS"; then
-            for presentlang in $ALL_LINGUAS; do
-              useit=no
-              if test "%UNSET%" != "$LINGUAS"; then
-                desiredlanguages="$LINGUAS"
-              else
-                desiredlanguages="$ALL_LINGUAS"
-              fi
-              for desiredlang in $desiredlanguages; do
-                # Use the presentlang catalog if desiredlang is
-                #   a. equal to presentlang, or
-                #   b. a variant of presentlang (because in this case,
-                #      presentlang can be used as a fallback for messages
-                #      which are not translated in the desiredlang catalog).
-                case "$desiredlang" in
-                  "$presentlang"*) useit=yes;;
-                esac
-              done
-              if test $useit = yes; then
-                INST_LINGUAS="$INST_LINGUAS $presentlang"
-              fi
-            done
-          fi
-          CATALOGS=
-          if test -n "$INST_LINGUAS"; then
-            for lang in $INST_LINGUAS; do
-              CATALOGS="$CATALOGS $lang.gmo"
-            done
-          fi
-          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
-          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
-          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
-            if test -f "$f"; then
-              case "$f" in
-                *.orig | *.bak | *~) ;;
-                *) cat "$f" >> "$ac_dir/Makefile" ;;
-              esac
-            fi
-          done
-        fi
-        ;;
-      esac
-    done],
-   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
-    # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
-    # from automake.
-    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
-    # Capture the value of LINGUAS because we need it to compute CATALOGS.
-    LINGUAS="${LINGUAS-%UNSET%}"
-   ])
-])
-
-# progtest.m4 serial 3 (gettext-0.12)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-# Search path for a program which passes the given test.
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-[
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
-  ac_executable_p="test -x"
-else
-  ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
-  [[\\/]]* | ?:[[\\/]]*)
-    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
-    ;;
-  *)
-    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in ifelse([$5], , $PATH, [$5]); do
-      IFS="$ac_save_IFS"
-      test -z "$ac_dir" && ac_dir=.
-      for ac_exec_ext in '' $ac_executable_extensions; do
-        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
-          if [$3]; then
-            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
-            break 2
-          fi
-        fi
-      done
-    done
-    IFS="$ac_save_IFS"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
-    ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
-  AC_MSG_RESULT([$]$1)
-else
-  AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-
-#                                                        -*- Autoconf -*-
-# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
-# Generated from amversion.in; do not edit by hand.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 # AM_AUTOMAKE_VERSION(VERSION)
@@ -1713,5 +22,5 @@
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"])
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
 
 # AM_SET_CURRENT_AUTOMAKE_VERSION
@@ -1720,24 +29,13 @@
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.8.3])])
-
-# AM_AUX_DIR_EXPAND
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+	 [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
@@ -1786,24 +84,14 @@
 ])
 
-# AM_CONDITIONAL                                              -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 6
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
@@ -1825,28 +113,17 @@
 AC_CONFIG_COMMANDS_PRE(
 [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.])
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# serial 7						-*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
 # Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
 
 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
@@ -1855,5 +132,4 @@
 # C support machinery.  Also note that it means that autoscan, seeing
 # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
 
 
@@ -1946,7 +222,12 @@
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
         am_cv_$1_dependencies_compiler_type=$depmode
         break
@@ -1992,24 +273,14 @@
 ])
 
-# Generate code to set up dependency tracking.   -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-#serial 2
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
@@ -2030,25 +301,19 @@
     continue
   fi
-  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
   DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
   test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
   # When using ansi2knr, U may be empty or an underscore; expand it
   U=`sed -n 's/^U = //p' < "$mf"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # We invoke sed twice because it is the simplest approach to
-  # changing $(DEPDIR) to its actual value in the expansion.
-  for file in `sed -n '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
     # Make sure the directory exists.
@@ -2077,23 +342,12 @@
 
 
-# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005
 # Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 2
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
 
 AC_DEFUN([AM_WITH_DMALLOC],
@@ -2115,28 +369,17 @@
 AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC])
 
-# Do all the work for Automake.                            -*- Autoconf -*-
-
-# This macro actually does too much some checks are only needed if
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 11
 
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
@@ -2196,5 +439,4 @@
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
 AM_PROG_INSTALL_SH
 AM_PROG_INSTALL_STRIP
@@ -2205,5 +447,7 @@
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+	      		     [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
@@ -2239,25 +483,13 @@
 echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
 
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
@@ -2265,23 +497,11 @@
 AC_SUBST(install_sh)])
 
-#                                                          -*- Autoconf -*-
-# Copyright (C) 2003  Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 1
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
 
 # Check whether the underlying file-system supports filenames
@@ -2298,24 +518,13 @@
 AC_SUBST([am__leading_dot])])
 
-# Check to see how 'make' treats includes.	-*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 2
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
 
 # AM_MAKE_INCLUDE()
@@ -2361,27 +570,15 @@
 ])
 
-# serial 2
+# Copyright (C) 1999, 2000, 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
 
 # AM_PROG_CC_C_O
 # --------------
 # Like AC_PROG_CC_C_O, but changed for automake.
-
-# Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
 AC_DEFUN([AM_PROG_CC_C_O],
 [AC_REQUIRE([AC_PROG_CC_C_O])dnl
@@ -2401,25 +598,14 @@
 ])
 
-#  -*- Autoconf -*-
-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 3
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
 
 # AM_MISSING_PROG(NAME, PROGRAM)
@@ -2447,25 +633,14 @@
 ])
 
+# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
 # AM_PROG_MKDIR_P
 # ---------------
 # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
+#
 # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
 # created by `make install' are always world readable, even if the
@@ -2488,11 +663,19 @@
 AC_DEFUN([AM_PROG_MKDIR_P],
 [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
@@ -2513,24 +696,13 @@
 AC_SUBST([mkdir_p])])
 
-# Helper functions for option handling.                    -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 2
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
 
 # _AM_MANGLE_OPTION(NAME)
@@ -2557,24 +729,12 @@
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-
-# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005
 # Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 3
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
 
 AC_DEFUN([AM_C_PROTOTYPES],
@@ -2594,26 +754,14 @@
 AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
 
-#
-# Check to make sure that the build environment is sane.
-#
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 3
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
 
 # AM_SANITY_CHECK
@@ -2658,23 +806,12 @@
 AC_MSG_RESULT(yes)])
 
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
 # AM_PROG_INSTALL_STRIP
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
+# ---------------------
 # One issue with vendor `install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
@@ -2697,3 +834,108 @@
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([config/dospaths.m4])
+m4_include([config/gettext.m4])
+m4_include([config/iconv.m4])
+m4_include([config/lib-ld.m4])
+m4_include([config/lib-link.m4])
+m4_include([config/lib-prefix.m4])
+m4_include([config/nls.m4])
+m4_include([config/po.m4])
+m4_include([config/progtest.m4])
 m4_include([acinclude.m4])
Index: trunk/src/gmake/amiga.c
===================================================================
--- trunk/src/gmake/amiga.c	(revision 466)
+++ trunk/src/gmake/amiga.c	(revision 503)
@@ -1,20 +1,18 @@
 /* Running commands on Amiga
-Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+2005, 2006 Free Software Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
Index: trunk/src/gmake/amiga.h
===================================================================
--- trunk/src/gmake/amiga.h	(revision 466)
+++ trunk/src/gmake/amiga.h	(revision 503)
@@ -1,20 +1,18 @@
 /* Definitions for amiga specific things
-Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+2005, 2006 Free Software Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 extern int MyExecute PARAMS ((char ** argv));
Index: trunk/src/gmake/ar.c
===================================================================
--- trunk/src/gmake/ar.c	(revision 466)
+++ trunk/src/gmake/ar.c	(revision 503)
@@ -1,21 +1,19 @@
 /* Interface to `ar' archives for GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1997,
-2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
Index: trunk/src/gmake/arscan.c
===================================================================
--- trunk/src/gmake/arscan.c	(revision 466)
+++ trunk/src/gmake/arscan.c	(revision 503)
@@ -1,19 +1,19 @@
 /* Library function for scanning an archive file.
-Copyright (C) 1987,89,91,92,93,94,95,97 Free Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-USA.  */
+Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
Index: trunk/src/gmake/build.sh.in
===================================================================
--- trunk/src/gmake/build.sh.in	(revision 466)
+++ trunk/src/gmake/build.sh.in	(revision 503)
@@ -1,23 +1,18 @@
-#!/bin/sh
-# Shell script to build GNU Make in the absence of any `make' program.
-# @configure_input@
 
-# Copyright (C) 1993, 1994, 1997, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 # This file is part of GNU Make.
 #
-# GNU Make is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
 #
-# GNU Make is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License
-# along with GNU Make; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 # See Makefile.in for comments describing these variables.
@@ -29,5 +24,5 @@
 LDFLAGS='@LDFLAGS@'
 ALLOCA='@ALLOCA@'
-LOADLIBES='@LIBS@'
+LOADLIBES='@LIBS@ @LIBINTL@'
 eval extras=\'@LIBOBJS@\'
 REMOTE='@REMOTE@'
@@ -55,8 +50,8 @@
 
 # These are all the objects we need to link together.
-objs="ar.${OBJEXT} arscan.${OBJEXT} commands.${OBJEXT} default.${OBJEXT} dir.${OBJEXT} expand.${OBJEXT} file.${OBJEXT} function.${OBJEXT} getopt.${OBJEXT} getopt1.${OBJEXT} implicit.${OBJEXT} job.${OBJEXT} main.${OBJEXT} misc.${OBJEXT} read.${OBJEXT} remake.${OBJEXT} rule.${OBJEXT} signame.${OBJEXT} variable.${OBJEXT} version.${OBJEXT} vpath.${OBJEXT} hash.${OBJEXT} remote-${REMOTE}.${OBJEXT} ${extras} ${ALLOCA}"
+objs="ar.${OBJEXT} arscan.${OBJEXT} commands.${OBJEXT} default.${OBJEXT} dir.${OBJEXT} expand.${OBJEXT} file.${OBJEXT} function.${OBJEXT} getopt.${OBJEXT} getopt1.${OBJEXT} implicit.${OBJEXT} job.${OBJEXT} main.${OBJEXT} misc.${OBJEXT} read.${OBJEXT} remake.${OBJEXT} rule.${OBJEXT} signame.${OBJEXT} strcache.${OBJEXT} variable.${OBJEXT} version.${OBJEXT} vpath.${OBJEXT} hash.${OBJEXT} remote-${REMOTE}.${OBJEXT} ${extras} ${ALLOCA}"
 
 if [ x"$GLOBLIB" != x ]; then
-  objs="$objs glob/fnmatch.${OBJEXT} glob/glob.${OBJEXT})"
+  objs="$objs glob/fnmatch.${OBJEXT} glob/glob.${OBJEXT}"
   globinc=-I${srcdir}/glob
 fi
@@ -79,5 +74,5 @@
 # Link all the objects together.
 echo linking make...
-$CC $LDFLAGS $objs $LOADLIBES -o makenew${EXEEXT}
+$CC $CFLAGS $LDFLAGS $objs $LOADLIBES -o makenew${EXEEXT}
 echo done
 mv -f makenew${EXEEXT} make${EXEEXT}
Index: trunk/src/gmake/build_w32.bat
===================================================================
--- trunk/src/gmake/build_w32.bat	(revision 466)
+++ trunk/src/gmake/build_w32.bat	(revision 503)
@@ -1,74 +1,93 @@
-set make=gnumake
+@echo off
+rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+rem 2006 Free Software Foundation, Inc.
+rem This file is part of GNU Make.
+
+rem GNU Make is free software; you can redistribute it and/or modify it under the
+rem terms of the GNU General Public License as published by the Free Software
+rem Foundation; either version 2, or (at your option) any later version.
+
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+rem WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+rem A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+rem You should have received a copy of the GNU General Public License along with
+rem GNU Make; see the file COPYING.  If not, write to the Free Software
+rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 if not exist config.h copy config.h.W32 config.h
 cd w32\subproc
 echo "Creating the subproc library"
-%ComSpec% /c build.bat
+%ComSpec% /c build.bat %1
 cd ..\..
-del link.dbg link.rel
-del config.h
-copy config.h.W32 config.h
-echo off
-echo "Creating GNU make for Windows 95/NT"
+
+if exist link.dbg del link.dbg
+if exist link.rel del link.rel
+echo "Creating GNU Make for Windows 9X/NT/2K/XP"
+if "%1" == "gcc" GoTo GCCBuild
+set make=gnumake
 echo on
 if not exist .\WinDebug\nul mkdir .\WinDebug
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D TIVOLI /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c variable.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D TIVOLI /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c variable.c
 echo WinDebug\variable.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c rule.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c rule.c
 echo WinDebug\rule.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remote-stub.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remote-stub.c
 echo WinDebug\remote-stub.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c commands.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c commands.c
 echo WinDebug\commands.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c file.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c file.c
 echo WinDebug\file.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getloadavg.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getloadavg.c
 echo WinDebug\getloadavg.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c default.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c default.c
 echo WinDebug\default.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c signame.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c signame.c
 echo WinDebug\signame.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c expand.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c expand.c
 echo WinDebug\expand.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c dir.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c dir.c
 echo WinDebug\dir.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c main.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c main.c
 echo WinDebug\main.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt1.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt1.c
 echo WinDebug\getopt1.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c job.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c job.c
 echo WinDebug\job.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c read.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c read.c
 echo WinDebug\read.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c version.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c version.c
 echo WinDebug\version.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt.c
 echo WinDebug\getopt.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c arscan.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c arscan.c
 echo WinDebug\arscan.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c hash.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c hash.c
 echo WinDebug\hash.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remake.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c strcache.c
+echo WinDebug\strcache.obj >>link.dbg
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remake.c
 echo WinDebug\remake.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c misc.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c misc.c
 echo WinDebug\misc.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c ar.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c ar.c
 echo WinDebug\ar.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c function.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c function.c
 echo WinDebug\function.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c vpath.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c vpath.c
 echo WinDebug\vpath.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c implicit.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c implicit.c
 echo WinDebug\implicit.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\w32\compat\dirent.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\w32\compat\dirent.c
 echo WinDebug\dirent.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\glob\glob.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\glob\glob.c
 echo WinDebug\glob.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\glob\fnmatch.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\glob\fnmatch.c
 echo WinDebug\fnmatch.obj >>link.dbg
-cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\w32\pathstuff.c
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\w32\pathstuff.c
 echo WinDebug\pathstuff.obj >>link.dbg
 echo off
 echo "Linking WinDebug/%make%.exe"
-rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /MACHINE:I386 /OUT:.\WinDebug/%make%.exe .\WinDebug/variable.obj  .\WinDebug/rule.obj  .\WinDebug/remote-stub.obj  .\WinDebug/commands.obj  .\WinDebug/file.obj  .\WinDebug/getloadavg.obj  .\WinDebug/default.obj  .\WinDebug/signame.obj  .\WinDebug/expand.obj  .\WinDebug/dir.obj  .\WinDebug/main.obj  .\WinDebug/getopt1.obj  .\WinDebug/job.obj  .\WinDebug/read.obj  .\WinDebug/version.obj  .\WinDebug/getopt.obj  .\WinDebug/arscan.obj  .\WinDebug/remake.obj  .\WinDebug/hash.obj  .\WinDebug/misc.obj  .\WinDebug/ar.obj  .\WinDebug/function.obj  .\WinDebug/vpath.obj  .\WinDebug/implicit.obj  .\WinDebug/dirent.obj  .\WinDebug/glob.obj  .\WinDebug/fnmatch.obj  .\WinDebug/pathstuff.obj
+rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /MACHINE:I386 /OUT:.\WinDebug/%make%.exe .\WinDebug/variable.obj  .\WinDebug/rule.obj  .\WinDebug/remote-stub.obj  .\WinDebug/commands.obj  .\WinDebug/file.obj  .\WinDebug/getloadavg.obj  .\WinDebug/default.obj  .\WinDebug/signame.obj  .\WinDebug/expand.obj  .\WinDebug/dir.obj  .\WinDebug/main.obj  .\WinDebug/getopt1.obj  .\WinDebug/job.obj  .\WinDebug/read.obj  .\WinDebug/version.obj  .\WinDebug/getopt.obj  .\WinDebug/arscan.obj  .\WinDebug/remake.obj  .\WinDebug/hash.obj  .\WinDebug/strcache.obj  .\WinDebug/misc.obj  .\WinDebug/ar.obj  .\WinDebug/function.obj  .\WinDebug/vpath.obj  .\WinDebug/implicit.obj  .\WinDebug/dirent.obj  .\WinDebug/glob.obj  .\WinDebug/fnmatch.obj  .\WinDebug/pathstuff.obj
 echo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib >>link.dbg
 link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /MACHINE:I386 /OUT:.\WinDebug/%make%.exe @link.dbg
@@ -77,66 +96,102 @@
 if not exist .\WinRel\nul mkdir .\WinRel
 echo on
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /D TIVOLI /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c variable.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /D TIVOLI /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c variable.c
 echo WinRel\variable.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c rule.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c rule.c
 echo WinRel\rule.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remote-stub.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remote-stub.c
 echo WinRel\remote-stub.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c commands.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c commands.c
 echo WinRel\commands.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c file.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c file.c
 echo WinRel\file.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getloadavg.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getloadavg.c
 echo WinRel\getloadavg.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c default.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c default.c
 echo WinRel\default.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c signame.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c signame.c
 echo WinRel\signame.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c expand.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c expand.c
 echo WinRel\expand.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c dir.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c dir.c
 echo WinRel\dir.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c main.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c main.c
 echo WinRel\main.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt1.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt1.c
 echo WinRel\getopt1.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c job.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c job.c
 echo WinRel\job.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c read.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c read.c
 echo WinRel\read.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c version.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c version.c
 echo WinRel\version.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt.c
 echo WinRel\getopt.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c arscan.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c arscan.c
 echo WinRel\arscan.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remake.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remake.c
 echo WinRel\remake.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c hash.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c hash.c
 echo WinRel\hash.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c misc.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c strcache.c
+echo WinRel\strcache.obj >>link.rel
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c misc.c
 echo WinRel\misc.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c ar.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c ar.c
 echo WinRel\ar.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c function.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c function.c
 echo WinRel\function.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c vpath.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c vpath.c
 echo WinRel\vpath.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c implicit.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c implicit.c
 echo WinRel\implicit.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\w32\compat\dirent.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\w32\compat\dirent.c
 echo WinRel\dirent.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\glob\glob.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\glob\glob.c
 echo WinRel\glob.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\glob\fnmatch.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\glob\fnmatch.c
 echo WinRel\fnmatch.obj >>link.rel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\w32\pathstuff.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\w32\pathstuff.c
 echo WinRel\pathstuff.obj >>link.rel
 echo off
 echo "Linking WinRel/%make%.exe"
-rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /MACHINE:I386 /OUT:.\WinRel/%make%.exe .\WinRel/variable.obj  .\WinRel/rule.obj  .\WinRel/remote-stub.obj  .\WinRel/commands.obj  .\WinRel/file.obj  .\WinRel/getloadavg.obj  .\WinRel/default.obj  .\WinRel/signame.obj  .\WinRel/expand.obj  .\WinRel/dir.obj  .\WinRel/main.obj  .\WinRel/getopt1.obj  .\WinRel/job.obj  .\WinRel/read.obj  .\WinRel/version.obj  .\WinRel/getopt.obj  .\WinRel/arscan.obj  .\WinRel/remake.obj  .\WinRel/misc.obj  .\WinRel/hash.obj  .\WinRel/ar.obj  .\WinRel/function.obj  .\WinRel/vpath.obj  .\WinRel/implicit.obj  .\WinRel/dirent.obj  .\WinRel/glob.obj  .\WinRel/fnmatch.obj  .\WinRel/pathstuff.obj
+rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /MACHINE:I386 /OUT:.\WinRel/%make%.exe .\WinRel/variable.obj  .\WinRel/rule.obj  .\WinRel/remote-stub.obj  .\WinRel/commands.obj  .\WinRel/file.obj  .\WinRel/getloadavg.obj  .\WinRel/default.obj  .\WinRel/signame.obj  .\WinRel/expand.obj  .\WinRel/dir.obj  .\WinRel/main.obj  .\WinRel/getopt1.obj  .\WinRel/job.obj  .\WinRel/read.obj  .\WinRel/version.obj  .\WinRel/getopt.obj  .\WinRel/arscan.obj  .\WinRel/remake.obj  .\WinRel/misc.obj  .\WinRel/hash.obj  .\WinRel/strcache.obj  .\WinRel/ar.obj  .\WinRel/function.obj  .\WinRel/vpath.obj  .\WinRel/implicit.obj  .\WinRel/dirent.obj  .\WinRel/glob.obj  .\WinRel/fnmatch.obj  .\WinRel/pathstuff.obj
 echo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib >>link.rel
 link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /MACHINE:I386 /OUT:.\WinRel/%make%.exe @link.rel
 if not exist .\WinRel/%make%.exe echo "WinRel build failed"
 if exist .\WinRel/%make%.exe echo "WinRel build succeeded!"
+set make=
+GoTo BuildEnd
+:GCCBuild
 echo on
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c variable.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c rule.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remote-stub.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c commands.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c file.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getloadavg.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c default.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c signame.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c expand.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c dir.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c main.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt1.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c job.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c read.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c version.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c arscan.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remake.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c hash.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c strcache.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c misc.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ar.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c function.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c vpath.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c implicit.c
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/glob.c -o glob.o
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/fnmatch.c -o fnmatch.o
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/pathstuff.c -o pathstuff.o
+gcc -mthreads -gstabs+ -ggdb3 -o gnumake.exe variable.o rule.o remote-stub.o commands.o file.o getloadavg.o default.o signame.o expand.o dir.o main.o getopt1.o job.o read.o version.o getopt.o arscan.o remake.o misc.o hash.o strcache.o ar.o function.o vpath.o implicit.o glob.o fnmatch.o pathstuff.o w32_misc.o sub_proc.o w32err.o -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32
+:BuildEnd
+echo on
Index: trunk/src/gmake/commands.c
===================================================================
--- trunk/src/gmake/commands.c	(revision 466)
+++ trunk/src/gmake/commands.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Command processing for GNU Make.
-Copyright (C) 1988,89,91,92,93,94,95,96,97 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -24,4 +23,8 @@
 #include "job.h"
 #include "commands.h"
+#ifdef WINDOWS32
+#include <windows.h>
+#include "w32err.h"
+#endif
 
 #if VMS
@@ -156,5 +159,5 @@
 
     if (plus_len > plus_max)
-      plus_value = (char *) xmalloc (plus_max = plus_len);
+      plus_value = xrealloc (plus_value, plus_max = plus_len);
     cp = plus_value;
 
@@ -205,9 +208,9 @@
 
     if (qmark_len > qmark_max)
-      qmark_value = (char *) xmalloc (qmark_max = qmark_len);
+      qmark_value = xrealloc (qmark_value, qmark_max = qmark_len);
     qp = qmark_value;
 
     if (bar_len > bar_max)
-      bar_value = (char *) xmalloc (bar_max = bar_len);
+      bar_value = xrealloc (bar_value, bar_max = bar_len);
     bp = bar_value;
 
@@ -432,4 +435,25 @@
   exit (10);
 #else /* not Amiga */
+#ifdef WINDOWS32
+  extern HANDLE main_thread;
+
+  /* Windows creates a sperate thread for handling Ctrl+C, so we need
+     to suspend the main thread, or else we will have race conditions
+     when both threads call reap_children.  */
+  if (main_thread)
+    {
+      DWORD susp_count = SuspendThread (main_thread);
+
+      if (susp_count != 0)
+	fprintf (stderr, "SuspendThread: suspend count = %ld\n", susp_count);
+      else if (susp_count == (DWORD)-1)
+	{
+	  DWORD ierr = GetLastError ();
+
+	  fprintf (stderr, "SuspendThread: error %ld: %s\n",
+		   ierr, map_windows32_error_to_string (ierr));
+	}
+    }
+#endif
   handling_fatal_signal = 1;
 
@@ -494,6 +518,9 @@
 
 #ifdef WINDOWS32
-  /* Cannot call W32_kill with a pid (it needs a handle) */
-  exit (EXIT_FAILURE);
+  if (main_thread)
+    CloseHandle (main_thread);
+  /* Cannot call W32_kill with a pid (it needs a handle).  The exit
+     status of 130 emulates what happens in Bash.  */
+  exit (130);
 #else
   /* Signal the same code; this time it will really be fatal.  The signal
Index: trunk/src/gmake/commands.h
===================================================================
--- trunk/src/gmake/commands.h	(revision 466)
+++ trunk/src/gmake/commands.h	(revision 503)
@@ -1,20 +1,19 @@
 /* Definition of data structures describing shell commands for GNU Make.
-Copyright (C) 1988, 1989, 1991, 1993 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* Structure that gives the commands to make a file
Index: trunk/src/gmake/config.ami
===================================================================
--- trunk/src/gmake/config.ami	(revision 466)
+++ trunk/src/gmake/config.ami	(revision 503)
@@ -1,3 +1,18 @@
-/* config.h.in.  Generated automatically from configure.in by autoheader.  */
+/* config.h -- hand-massaged for Amiga                                  -*-C-*-
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* Define if on AIX 3.
@@ -176,5 +191,5 @@
 
 /* Version of this package (needed by automake) */
-#define VERSION "3.81beta1"
+#define VERSION "3.81"
 
 /* Define to the name of the SCCS `get' command.  */
Index: trunk/src/gmake/config.h-vms
===================================================================
--- trunk/src/gmake/config.h-vms	(revision 466)
+++ trunk/src/gmake/config.h-vms	(revision 503)
@@ -1,3 +1,20 @@
-/* config.h-vms. Generated by hand by Klaus Kämpf <kkaempf@rmi.de> */
+/* config.h-vms. Generated by hand by Klaus Kämpf <kkaempf@rmi.de>      -*-C-*-
+
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 /* config.h.  Generated automatically by configure.  */
 /* config.h.in.  Generated automatically from configure.in by autoheader.  */
@@ -197,5 +214,5 @@
 
 /* Version of this package (needed by automake) */
-#define VERSION "3.81beta1"
+#define VERSION "3.81"
 
 /* Define to the name of the SCCS `get' command.  */
@@ -351,5 +368,5 @@
 #define HAVE_CASE_INSENSITIVE_FS 1
 
-/* VMS specific, define it if you want to use case sensitve targets */
+/* VMS specific, define it if you want to use case sensitive targets */
 /* #undef WANT_CASE_SENSITIVE_TARGETS */
 
@@ -384,9 +401,11 @@
 #include <stdio.h>
 #include <unistd.h>
-#define getopt gnu_getopt
-#define optarg gnu_optarg
-#define optopt gnu_optopt
-#define optind gnu_optind
-#define opterr gnu_opterr
+#define getopt   gnu_getopt
+#define optarg   gnu_optarg
+#define optopt   gnu_optopt
+#define optind   gnu_optind
+#define opterr   gnu_opterr
+#define globfree gnu_globfree
+#define glob     gnu_glob
 #endif
 
Index: trunk/src/gmake/config.h.W32
===================================================================
--- trunk/src/gmake/config.h.W32	(revision 503)
+++ trunk/src/gmake/config.h.W32	(revision 503)
@@ -0,0 +1,489 @@
+/* config.h.W32 -- hand-massaged config.h file for Windows builds       -*-C-*-
+
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
+/* Suppress some Visual C++ warnings.
+   Maybe after the code cleanup for ISO C we can remove some/all of these.  */
+#if _MSC_VER > 1000
+# pragma warning(disable:4100) /* unreferenced formal parameter */
+# pragma warning(disable:4102) /* unreferenced label */
+# pragma warning(disable:4127) /* conditional expression is constant */
+# pragma warning(disable:4131) /* uses old-style declarator */
+# pragma warning(disable:4702) /* unreachable code */
+#endif
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+/* #undef CLOSEDIR_VOID */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+/* #undef CRAY_STACKSEG_END */
+
+/* Define to 1 if using `alloca.c'. */
+/* #undef C_ALLOCA */
+
+/* Define to 1 if using `getloadavg.c'. */
+/*#define C_GETLOADAVG 1*/
+
+/* Define to 1 for DGUX with <sys/dg_sys_info.h>. */
+/* #undef DGUX */
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+/* #undef ENABLE_NLS */
+
+/* Use high resolution file timestamps if nonzero. */
+#define FILE_TIMESTAMP_HI_RES 0
+
+/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid.
+   */
+/* #undef GETLOADAVG_PRIVILEGED */
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+/* #undef HAVE_ALLOCA_H */
+
+/* Define if your compiler conforms to the ANSI C standard. */
+#define HAVE_ANSI_COMPILER 1
+
+/* Define to 1 if you have the `bsd_signal' function. */
+/* #undef HAVE_BSD_SIGNAL */
+
+/* Use case insensitive file names */
+/* #undef HAVE_CASE_INSENSITIVE_FS */
+
+/* Define if you have the clock_gettime function. */
+/* #undef HAVE_CLOCK_GETTIME */
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+/* #undef HAVE_DCGETTEXT */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+/* #undef HAVE_DOPRNT */
+
+/* Use platform specific coding */
+#define HAVE_DOS_PATHS 1
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `fdopen' function. */
+/*#define HAVE_FDOPEN 1*/
+
+/* Define to 1 if you have the `fork' function. */
+/* #undef HAVE_FORK */
+
+/* Define to 1 if you have the `getcwd' function.  */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getgroups' function. */
+/* #undef HAVE_GETGROUPS */
+
+/* Define to 1 if you have the `gethostbyname' function. */
+/* #undef HAVE_GETHOSTBYNAME */
+
+/* Define to 1 if you have the `gethostname' function. */
+/* #undef HAVE_GETHOSTNAME */
+
+/* Define to 1 if you have the `getloadavg' function. */
+/* #undef HAVE_GETLOADAVG */
+
+/* Define to 1 if you have the `getrlimit' function. */
+/* #undef HAVE_GETRLIMIT */
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+/* #undef HAVE_GETTEXT */
+
+/* Define if you have a standard gettimeofday function */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define if you have the iconv() function. */
+/* #undef HAVE_ICONV */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/*#define HAVE_INTTYPES_H 1*/
+
+/* Define to 1 if you have the `dgc' library (-ldgc). */
+/* #undef HAVE_LIBDGC */
+
+/* Define to 1 if you have the `kstat' library (-lkstat). */
+/* #undef HAVE_LIBKSTAT */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+/*#define HAVE_LOCALE_H 1*/
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+/* #undef HAVE_MACH_MACH_H */
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mkstemp' function. */
+/* #undef HAVE_MKSTEMP */
+
+/* Define to 1 if you have the `mktemp' function. */
+#define HAVE_MKTEMP 1
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the <nlist.h> header file. */
+/* #undef HAVE_NLIST_H */
+
+/* Define to 1 if you have the `pipe' function. */
+/* #undef HAVE_PIPE */
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* #undef HAVE_PSTAT_GETDYNAMIC */
+
+/* Define to 1 if you have the `realpath' function. */
+/* #undef HAVE_REALPATH */
+
+/* Define if <signal.h> defines the SA_RESTART constant. */
+/* #undef HAVE_SA_RESTART */
+
+/* Define to 1 if you have the `setegid' function. */
+/* #undef HAVE_SETEGID */
+
+/* Define to 1 if you have the `seteuid' function. */
+/* #undef HAVE_SETEUID */
+
+/* Define to 1 if you have the `setlinebuf' function. */
+/* #undef HAVE_SETLINEBUF */
+
+/* Define to 1 if you have the `setlocale' function. */
+/*#define HAVE_SETLOCALE 1*/
+
+/* Define to 1 if you have the `setregid' function. */
+/* #undef HAVE_SETREGID */
+
+/* Define to 1 if you have the `setreuid' function. */
+/* #undef HAVE_SETREUID */
+
+/* Define to 1 if you have the `setrlimit' function. */
+/* #undef HAVE_SETRLIMIT */
+
+/* Define to 1 if you have the `setvbuf' function. */
+/*#define HAVE_SETVBUF 1 */
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if you have the `sigsetmask' function. */
+/* #undef HAVE_SIGSETMASK */
+
+/* Define to 1 if you have the `socket' function. */
+/* #undef HAVE_SOCKET */
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/*#define HAVE_STDINT_H 1*/
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+/* #undef HAVE_STRCASECMP */
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strcoll' function and it is properly defined.
+   */
+#define HAVE_STRCOLL 1
+
+/* Define to 1 if you have the `strdup' function. */
+/* #define HAVE_STRDUP 1*/
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #define HAVE_STRINGS_H 1 */
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strsignal' function. */
+/* #undef HAVE_STRSIGNAL */
+
+/* Define to 1 if `n_un.n_name' is member of `struct nlist'. */
+/* #undef HAVE_STRUCT_NLIST_N_UN_N_NAME */
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+/* #define HAVE_SYS_PARAM_H 1 */
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+/* #undef HAVE_SYS_RESOURCE_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+/* #define HAVE_SYS_STAT_H 1 */
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+/*#define HAVE_SYS_TIMEB_H 1*/
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+/*#define HAVE_SYS_TIME_H 1*/
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+/*#define HAVE_SYS_TYPES_H 1*/
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+/* #undef HAVE_SYS_WAIT_H */
+
+/* Define this if you have the \`union wait' type in <sys/wait.h>. */
+/* #undef HAVE_UNION_WAIT */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #define HAVE_UNISTD_H 1*/
+
+/* Define to 1 if you have the <varargs.h> header file. */
+/* #undef HAVE_VARARGS_H */
+
+/* Define to 1 if you have the `vfork' function. */
+/* #undef HAVE_VFORK */
+
+/* Define to 1 if you have the <vfork.h> header file. */
+/* #undef HAVE_VFORK_H */
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+
+/* Define to 1 if you have the `wait3' function. */
+/* #undef HAVE_WAIT3 */
+
+/* Define to 1 if you have the `waitpid' function. */
+/* #undef HAVE_WAITPID */
+
+/* Define to 1 if `fork' works. */
+/* #undef HAVE_WORKING_FORK */
+
+/* Define to 1 if `vfork' works. */
+/* #undef HAVE_WORKING_VFORK */
+
+/* Build host information. */
+#define MAKE_HOST "Windows32"
+
+/* Define this to enable job server support in GNU make. */
+/* #undef MAKE_JOBSERVER */
+
+/* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend
+   on `HAVE_STRUCT_NLIST_N_UN_N_NAME */
+/* #undef NLIST_NAME_UNION */
+
+/* Define if struct nlist.n_name is a pointer rather than an array. */
+/* #undef NLIST_STRUCT */
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O */
+
+/* Name of this package (needed by automake) */
+#define PACKAGE "make"
+
+/* Define to 1 if the C compiler supports function prototypes. */
+#define PROTOTYPES 1
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to the name of the SCCS 'get' command. */
+#define SCCS_GET "echo no sccs get"
+
+/* Define this if the SCCS 'get' command understands the '-G<file>' option. */
+/* #undef SCCS_GET_MINUS_G */
+
+/* Define to 1 if the `setvbuf' function takes the buffering type as its
+   second argument and the buffer pointer as the third, as on System V before
+   release 3. */
+/* #undef SETVBUF_REVERSED */
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at run-time.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+/* #undef STACK_DIRECTION */
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if struct stat contains a nanoseconds field */
+/* #undef ST_MTIM_NSEC */
+
+/* Define to 1 on System V Release 4. */
+/* #undef SVR4 */
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+/* #define TIME_WITH_SYS_TIME 1 */
+
+/* Define to 1 for Encore UMAX. */
+/* #undef UMAX */
+
+/* Define to 1 for Encore UMAX 4.3 that has <inq_status/cpustats.h> instead of
+   <sys/cpustats.h>. */
+/* #undef UMAX4_3 */
+
+/* Version number of package */
+#define VERSION "3.81"
+
+/* Define if using the dmalloc debugging malloc package */
+/* #undef WITH_DMALLOC */
+
+/* Define to 1 if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+/* # undef _ALL_SOURCE */
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#define _POSIX_SOURCE 1
+
+/* Define like PROTOTYPES; this can be used by system headers. */
+/*#define __PROTOTYPES 1*/
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#define gid_t int
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define pid_t int
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#define uid_t int
+
+/* Define uintmax_t if not defined in <stdint.h> or <inttypes.h>. */
+#define uintmax_t unsigned long
+
+/* Define as `fork' if `vfork' does not work. */
+/*#define vfork fork*/
+
+/* Define to `unsigned long' or `unsigned long long'
+   if <inttypes.h> doesn't define.  */
+#define uintmax_t unsigned long
+
+/* Define if you support file names longer than 14 characters.  */
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Define if your struct stat has st_rdev.  */
+#undef HAVE_ST_RDEV
+#define HAVE_ST_RDEV 1
+
+/* Define if you have the strftime function.  */
+#undef HAVE_STRFTIME
+#define HAVE_STRFTIME 1
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
+/* #undef HAVE_SYS_WAIT_H */
+
+/* Define if your struct tm has tm_zone.  */
+/* #undef HAVE_TM_ZONE */
+
+/* Define if you don't have tm_zone but do have the external array
+   tzname.  */
+#undef HAVE_TZNAME
+#define HAVE_TZNAME 1
+
+/* Define if utime(file, NULL) sets file's timestamp to the present.  */
+#undef HAVE_UTIME_NULL
+#define HAVE_UTIME_NULL 1
+
+/* Define to the installation directory for locales.  */
+#define LOCALEDIR ""
+
+/*
+ * Refer to README.W32 for info on the following settings
+ */
+
+
+/*
+ * If you have a shell that does not grok 'sh -c quoted-command-line'
+ * correctly, you need this setting. Please see below for specific
+ * shell support.
+ */
+/*#define BATCH_MODE_ONLY_SHELL 1 */
+
+/*
+ * Define if you have the Cygnus "Cygwin" GNU Windows32 tool set.
+ * Do NOT define BATCH_MODE_ONLY_SHELL if you define HAVE_CYGWIN_SHELL
+ */
+/*#define HAVE_CYGWIN_SHELL 1 */
+
+/*
+ * Define if you have the MKS tool set or shell. Do NOT define
+ * BATCH_MODE_ONLY_SHELL if you define HAVE_MKS_SHELL
+ */
+/*#define HAVE_MKS_SHELL 1 */
+
+/*
+ * Enforce the mutual exclusivity restriction.
+ */
+#ifdef HAVE_MKS_SHELL
+#undef BATCH_MODE_ONLY_SHELL
+#endif
+
+#ifdef HAVE_CYGWIN_SHELL
+#undef BATCH_MODE_ONLY_SHELL
+#endif
Index: trunk/src/gmake/config.h.in
===================================================================
--- trunk/src/gmake/config.h.in	(revision 466)
+++ trunk/src/gmake/config.h.in	(revision 503)
@@ -39,6 +39,12 @@
 #undef HAVE_ANSI_COMPILER
 
+/* Define to 1 if you have the `atexit' function. */
+#undef HAVE_ATEXIT
+
 /* Define to 1 if you have the `bsd_signal' function. */
 #undef HAVE_BSD_SIGNAL
+
+/* Use case insensitive file names */
+#undef HAVE_CASE_INSENSITIVE_FS
 
 /* Define if you have the clock_gettime function. */
@@ -53,4 +59,12 @@
 #undef HAVE_DECL_SYS_SIGLIST
 
+/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you
+   don't. */
+#undef HAVE_DECL__SYS_SIGLIST
+
+/* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you
+   don't. */
+#undef HAVE_DECL___SYS_SIGLIST
+
 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
    */
@@ -60,6 +74,5 @@
 #undef HAVE_DOPRNT
 
-/* Define this if your system requires backslashes or drive specs in
-   pathnames. */
+/* Use platform specific coding */
 #undef HAVE_DOS_PATHS
 
@@ -91,4 +104,7 @@
 #undef HAVE_GETLOADAVG
 
+/* Define to 1 if you have the `getrlimit' function. */
+#undef HAVE_GETRLIMIT
+
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
@@ -115,4 +131,7 @@
 #undef HAVE_LOCALE_H
 
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
 /* Define to 1 if you have the <mach/mach.h> header file. */
 #undef HAVE_MACH_MACH_H
@@ -145,4 +164,10 @@
 #undef HAVE_PSTAT_GETDYNAMIC
 
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if you have the `realpath' function. */
+#undef HAVE_REALPATH
+
 /* Define if <signal.h> defines the SA_RESTART constant. */
 #undef HAVE_SA_RESTART
@@ -166,4 +191,7 @@
 #undef HAVE_SETREUID
 
+/* Define to 1 if you have the `setrlimit' function. */
+#undef HAVE_SETRLIMIT
+
 /* Define to 1 if you have the `setvbuf' function. */
 #undef HAVE_SETVBUF
@@ -226,4 +254,7 @@
 #undef HAVE_SYS_PARAM_H
 
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
@@ -276,4 +307,7 @@
 /* Define this to enable job server support in GNU make. */
 #undef MAKE_JOBSERVER
+
+/* Define this to enable symbolic link timestamp checking. */
+#undef MAKE_SYMLINKS
 
 /* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend
@@ -355,4 +389,7 @@
 #undef VERSION
 
+/* Use platform specific coding */
+#undef WINDOWS32
+
 /* Define if using the dmalloc debugging malloc package */
 #undef WITH_DMALLOC
Index: trunk/src/gmake/config/.cvsignore
===================================================================
--- trunk/src/gmake/config/.cvsignore	(revision 466)
+++ 	(revision )
@@ -1,6 +1,0 @@
-*.m4
-config.*
-mkinstalldirs
-texinfo.tex
-
-Makefile Makefile.in
Index: trunk/src/gmake/config/ChangeLog
===================================================================
--- trunk/src/gmake/config/ChangeLog	(revision 466)
+++ trunk/src/gmake/config/ChangeLog	(revision 503)
@@ -1,2 +1,12 @@
+2006-03-09  Paul Smith  <psmith@gnu.org>
+
+	* dospaths.m4: Add MSYS to the list of targets allowing DOS-style
+	pathnames.  Reported by David Ergo <david.ergo@alterface.com>.
+
+2005-07-01  Paul D. Smith  <psmith@gnu.org>
+
+	* Makefile.am (EXTRA_DIST): Added more M4 files to EXTRA_DIST, so
+	users can re-run aclocal.
+
 2003-04-30  Paul D. Smith  <psmith@gnu.org>
 
@@ -18,2 +28,18 @@
 	* Makefile.am: New file.
 
+
+
+Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/config/Makefile.am
===================================================================
--- trunk/src/gmake/config/Makefile.am	(revision 466)
+++ trunk/src/gmake/config/Makefile.am	(revision 503)
@@ -1,7 +1,22 @@
 # -*-Makefile-*-, or close enough
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 EXTRA_DIST =	codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 nls.m4 \
 		intdiv0.m4 inttypes-pri.m4 inttypes.m4 inttypes_h.m4 \
 		isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 \
-		progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 \
-		dospaths.m4 po.m4
+		progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 longlong.m4 \
+		dospaths.m4 po.m4 signed.m4 longdouble.m4 wchar_t.m4 \
+		wint_t.m4 intmax.m4 printf-posix.m4 xsize.m4 size_max.m4
Index: trunk/src/gmake/config/Makefile.in
===================================================================
--- trunk/src/gmake/config/Makefile.in	(revision 466)
+++ trunk/src/gmake/config/Makefile.in	(revision 503)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,4 +16,18 @@
 
 # -*-Makefile-*-, or close enough
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -36,12 +50,18 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = config
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \
 	compile config.guess config.rpath config.sub depcomp \
-	install-sh missing mkinstalldirs texinfo.tex
+	install-sh mdate-sh missing mkinstalldirs texinfo.tex
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
+	$(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
+	$(top_srcdir)/config/lib-ld.m4 \
+	$(top_srcdir)/config/lib-link.m4 \
+	$(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
+	$(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -121,4 +141,6 @@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+WINDOWSENV_FALSE = @WINDOWSENV_FALSE@
+WINDOWSENV_TRUE = @WINDOWSENV_TRUE@
 XGETTEXT = @XGETTEXT@
 ac_ct_CC = @ac_ct_CC@
@@ -130,4 +152,6 @@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
@@ -161,6 +185,7 @@
 		intdiv0.m4 inttypes-pri.m4 inttypes.m4 inttypes_h.m4 \
 		isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 \
-		progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 \
-		dospaths.m4 po.m4
+		progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 longlong.m4 \
+		dospaths.m4 po.m4 signed.m4 longdouble.m4 wchar_t.m4 \
+		wint_t.m4 intmax.m4 printf-posix.m4 xsize.m4 size_max.m4
 
 all: all-am
@@ -254,5 +279,5 @@
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
Index: trunk/src/gmake/config/compile
===================================================================
--- trunk/src/gmake/config/compile	(revision 466)
+++ trunk/src/gmake/config/compile	(revision 503)
@@ -2,7 +2,7 @@
 # Wrapper for compilers which do not understand `-c -o'.
 
-scriptversion=2003-11-09.00
+scriptversion=2005-05-14.22
 
-# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
@@ -19,5 +19,5 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 # As a special exception to the GNU General Public License, if you
@@ -48,43 +48,47 @@
 Report bugs to <bug-automake@gnu.org>.
 EOF
-    exit 0
+    exit $?
     ;;
   -v | --v*)
     echo "compile $scriptversion"
-    exit 0
+    exit $?
     ;;
 esac
 
-
-prog=$1
-shift
-
 ofile=
 cfile=
-args=
-while test $# -gt 0; do
-  case "$1" in
-    -o)
-      # configure might choose to run compile as `compile cc -o foo foo.c'.
-      # So we do something ugly here.
-      ofile=$2
-      shift
-      case "$ofile" in
-	*.o | *.obj)
-	  ;;
-	*)
-	  args="$args -o $ofile"
-	  ofile=
-	  ;;
-      esac
-       ;;
-    *.c)
-      cfile=$1
-      args="$args $1"
-      ;;
-    *)
-      args="$args $1"
-      ;;
-  esac
+eat=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as `compile cc -o foo foo.c'.
+	# So we strip `-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
   shift
 done
@@ -96,9 +100,9 @@
   # `.c' file was seen then we are probably linking.  That is also
   # ok.
-  exec "$prog" $args
+  exec "$@"
 fi
 
 # Name of file we expect compiler to create.
-cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
 
 # Create the lock directory.
@@ -106,7 +110,7 @@
 # that we are using for the .o file.  Also, base the name on the expected
 # object file name, since that is what matters with a parallel build.
-lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
 while true; do
-  if mkdir $lockdir > /dev/null 2>&1; then
+  if mkdir "$lockdir" >/dev/null 2>&1; then
     break
   fi
@@ -114,16 +118,18 @@
 done
 # FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir $lockdir; exit 1" 1 2 15
+trap "rmdir '$lockdir'; exit 1" 1 2 15
 
 # Run the compile.
-"$prog" $args
-status=$?
+"$@"
+ret=$?
 
 if test -f "$cofile"; then
   mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  mv "${cofile}bj" "$ofile"
 fi
 
-rmdir $lockdir
-exit $status
+rmdir "$lockdir"
+exit $ret
 
 # Local Variables:
Index: trunk/src/gmake/config/config.guess
===================================================================
--- trunk/src/gmake/config/config.guess	(revision 466)
+++ trunk/src/gmake/config/config.guess	(revision 503)
@@ -1,8 +1,4 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
-timestamp='2004-03-03'
+
+timestamp='2006-03-13'
 
 # This file is free software; you can redistribute it and/or modify it
@@ -18,5 +14,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
 #
 # As a special exception to the GNU General Public License, if you
@@ -24,4 +21,5 @@
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
+
 
 # Originally written by Per Bothner <per@bothner.com>.
@@ -54,5 +52,5 @@
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 Free Software Foundation, Inc.
 
@@ -67,9 +65,9 @@
   case $1 in
     --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit 0 ;;
+       echo "$timestamp" ; exit ;;
     --version | -v )
-       echo "$version" ; exit 0 ;;
+       echo "$version" ; exit ;;
     --help | --h* | -h )
-       echo "$usage"; exit 0 ;;
+       echo "$usage"; exit ;;
     -- )     # Stop option processing
        shift; break ;;
@@ -105,5 +103,5 @@
 trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
 : ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
  { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
@@ -124,5 +122,5 @@
  ,,*)   CC_FOR_BUILD=$CC ;;
  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+esac ; set_cc_for_build= ;'
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
@@ -197,62 +195,21 @@
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
 	echo "${machine}-${os}${release}"
-	exit 0 ;;
-    amd64:OpenBSD:*:*)
-	echo x86_64-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    amiga:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    arc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    cats:OpenBSD:*:*)
-	echo arm-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    hp300:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mac68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    macppc:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvme68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvme88k:OpenBSD:*:*)
-	echo m88k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    mvmeppc:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    pegasos:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    pmax:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    sgi:OpenBSD:*:*)
-	echo mipseb-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    sun3:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    wgrisc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:OpenBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
     *:ekkoBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
     macppc:MirBSD:*:*)
 	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:MirBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
@@ -307,8 +264,5 @@
 	# 1.2 uses "1.2" for uname -r.
 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit 0 ;;
-    Alpha*:OpenVMS:*:*)
-	echo alpha-hp-vms
-	exit 0 ;;
+	exit ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
@@ -316,29 +270,35 @@
 	# of the specific Alpha model?
 	echo alpha-pc-interix
-	exit 0 ;;
+	exit ;;
     21064:Windows_NT:50:3)
 	echo alpha-dec-winnt3.5
-	exit 0 ;;
+	exit ;;
     Amiga*:UNIX_System_V:4.0:*)
 	echo m68k-unknown-sysv4
-	exit 0;;
+	exit ;;
     *:[Aa]miga[Oo][Ss]:*:*)
 	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit 0 ;;
+	exit ;;
     *:[Mm]orph[Oo][Ss]:*:*)
 	echo ${UNAME_MACHINE}-unknown-morphos
-	exit 0 ;;
+	exit ;;
     *:OS/390:*:*)
 	echo i370-ibm-openedition
-	exit 0 ;;
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
     *:OS400:*:*)
         echo powerpc-ibm-os400
-	exit 0 ;;
+	exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit 0;;
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
 	echo hppa1.1-hitachi-hiuxmpp
-	exit 0;;
+	exit ;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
 	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
@@ -348,24 +308,24 @@
 		echo pyramid-pyramid-bsd
 	fi
-	exit 0 ;;
+	exit ;;
     NILE*:*:*:dcosx)
 	echo pyramid-pyramid-svr4
-	exit 0 ;;
+	exit ;;
     DRS?6000:unix:4.0:6*)
 	echo sparc-icl-nx6
-	exit 0 ;;
-    DRS?6000:UNIX_SV:4.2*:7*)
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
 	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7 && exit 0 ;;
+	    sparc) echo sparc-icl-nx7; exit ;;
 	esac ;;
     sun4H:SunOS:5.*:*)
 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
+	exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
+	exit ;;
     i86pc:SunOS:5.*:*)
 	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
+	exit ;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
@@ -373,5 +333,5 @@
 	# it's likely to be more like Solaris than SunOS4.
 	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
+	exit ;;
     sun4*:SunOS:*:*)
 	case "`/usr/bin/arch -k`" in
@@ -382,8 +342,8 @@
 	# Japanese Language versions have a version number like `4.1.3-JL'.
 	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit 0 ;;
+	exit ;;
     sun3*:SunOS:*:*)
 	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     sun*:*:4.2BSD:*)
 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
@@ -397,8 +357,8 @@
 		;;
 	esac
-	exit 0 ;;
+	exit ;;
     aushp:SunOS:*:*)
 	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
@@ -411,38 +371,38 @@
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
         echo m68k-atari-mint${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
 	echo m68k-atari-mint${UNAME_RELEASE}
-        exit 0 ;;
+        exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
         echo m68k-atari-mint${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
         echo m68k-milan-mint${UNAME_RELEASE}
-        exit 0 ;;
+        exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
         echo m68k-hades-mint${UNAME_RELEASE}
-        exit 0 ;;
+        exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
         echo m68k-unknown-mint${UNAME_RELEASE}
-        exit 0 ;;
+        exit ;;
     m68k:machten:*:*)
 	echo m68k-apple-machten${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     powerpc:machten:*:*)
 	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     RISC*:Mach:*:*)
 	echo mips-dec-mach_bsd4.3
-	exit 0 ;;
+	exit ;;
     RISC*:ULTRIX:*:*)
 	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     VAX*:ULTRIX*:*:*)
 	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
 	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
 	eval $set_cc_for_build
@@ -468,30 +428,31 @@
 	}
 EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c \
-	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-	  && exit 0
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
 	echo mips-mips-riscos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     Motorola:PowerMAX_OS:*:*)
 	echo powerpc-motorola-powermax
-	exit 0 ;;
+	exit ;;
     Motorola:*:4.3:PL8-*)
 	echo powerpc-harris-powermax
-	exit 0 ;;
+	exit ;;
     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
 	echo powerpc-harris-powermax
-	exit 0 ;;
+	exit ;;
     Night_Hawk:Power_UNIX:*:*)
 	echo powerpc-harris-powerunix
-	exit 0 ;;
+	exit ;;
     m88k:CX/UX:7*:*)
 	echo m88k-harris-cxux7
-	exit 0 ;;
+	exit ;;
     m88k:*:4*:R4*)
 	echo m88k-motorola-sysv4
-	exit 0 ;;
+	exit ;;
     m88k:*:3*:R3*)
 	echo m88k-motorola-sysv3
-	exit 0 ;;
+	exit ;;
     AViiON:dgux:*:*)
         # DG/UX returns AViiON for all architectures
@@ -509,27 +470,27 @@
 	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
- 	exit 0 ;;
+ 	exit ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
-	exit 0 ;;
+	exit ;;
     M88*:*:R3*:*)
 	# Delta 88k system running SVR3
 	echo m88k-motorola-sysv3
-	exit 0 ;;
+	exit ;;
     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
 	echo m88k-tektronix-sysv3
-	exit 0 ;;
+	exit ;;
     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
 	echo m68k-tektronix-bsd
-	exit 0 ;;
+	exit ;;
     *:IRIX*:*:*)
 	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit 0 ;;
+	exit ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
-	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
     i*86:AIX:*:*)
 	echo i386-ibm-aix
-	exit 0 ;;
+	exit ;;
     ia64:AIX:*:*)
 	if [ -x /usr/bin/oslevel ] ; then
@@ -539,5 +500,5 @@
 	fi
 	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit 0 ;;
+	exit ;;
     *:AIX:2:3)
 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
@@ -554,6 +515,10 @@
 			}
 EOF
-		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
-		echo rs6000-ibm-aix3.2.5
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
 		echo rs6000-ibm-aix3.2.4
@@ -561,5 +526,5 @@
 		echo rs6000-ibm-aix3.2
 	fi
-	exit 0 ;;
+	exit ;;
     *:AIX:*:[45])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
@@ -575,26 +540,26 @@
 	fi
 	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit 0 ;;
+	exit ;;
     *:AIX:*:*)
 	echo rs6000-ibm-aix
-	exit 0 ;;
+	exit ;;
     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
 	echo romp-ibm-bsd4.4
-	exit 0 ;;
+	exit ;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
 	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit 0 ;;                           # report: romp-ibm BSD 4.3
+	exit ;;                             # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
 	echo rs6000-bull-bosx
-	exit 0 ;;
+	exit ;;
     DPX/2?00:B.O.S.:*:*)
 	echo m68k-bull-sysv3
-	exit 0 ;;
+	exit ;;
     9000/[34]??:4.3bsd:1.*:*)
 	echo m68k-hp-bsd
-	exit 0 ;;
+	exit ;;
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
 	echo m68k-hp-bsd4.4
-	exit 0 ;;
+	exit ;;
     9000/[34678]??:HP-UX:*:*)
 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
@@ -658,7 +623,17 @@
 	if [ ${HP_ARCH} = "hppa2.0w" ]
 	then
-	    # avoid double evaluation of $set_cc_for_build
-	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep __LP64__ >/dev/null
 	    then
 		HP_ARCH="hppa2.0w"
@@ -668,9 +643,9 @@
 	fi
 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit 0 ;;
+	exit ;;
     ia64:HP-UX:*:*)
 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
 	echo ia64-hp-hpux${HPUX_REV}
-	exit 0 ;;
+	exit ;;
     3050*:HI-UX:*:*)
 	eval $set_cc_for_build
@@ -700,22 +675,23 @@
 	}
 EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
 	echo unknown-hitachi-hiuxwe2
-	exit 0 ;;
+	exit ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
 	echo hppa1.1-hp-bsd
-	exit 0 ;;
+	exit ;;
     9000/8??:4.3bsd:*:*)
 	echo hppa1.0-hp-bsd
-	exit 0 ;;
+	exit ;;
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
 	echo hppa1.0-hp-mpeix
-	exit 0 ;;
+	exit ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
 	echo hppa1.1-hp-osf
-	exit 0 ;;
+	exit ;;
     hp8??:OSF1:*:*)
 	echo hppa1.0-hp-osf
-	exit 0 ;;
+	exit ;;
     i*86:OSF1:*:*)
 	if [ -x /usr/sbin/sysversion ] ; then
@@ -724,11 +700,11 @@
 	    echo ${UNAME_MACHINE}-unknown-osf1
 	fi
-	exit 0 ;;
+	exit ;;
     parisc*:Lites*:*:*)
 	echo hppa1.1-hp-lites
-	exit 0 ;;
+	exit ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
-        exit 0 ;;
+        exit ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
@@ -736,17 +712,17 @@
 	else echo c2-convex-bsd
 	fi
-        exit 0 ;;
+        exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
 	echo c34-convex-bsd
-        exit 0 ;;
+        exit ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
 	echo c38-convex-bsd
-        exit 0 ;;
+        exit ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
 	echo c4-convex-bsd
-        exit 0 ;;
+        exit ;;
     CRAY*Y-MP:*:*:*)
 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
+	exit ;;
     CRAY*[A-Z]90:*:*:*)
 	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
@@ -754,17 +730,17 @@
 	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
 	      -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
+	exit ;;
     CRAY*TS:*:*:*)
 	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
+	exit ;;
     CRAY*T3E:*:*:*)
 	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
+	exit ;;
     CRAY*SV1:*:*:*)
 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
+	exit ;;
     *:UNICOS/mp:*:*)
-	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit 0 ;;
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
@@ -772,51 +748,49 @@
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
         echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit 0 ;;
+        exit ;;
     5000:UNIX_System_V:4.*:*)
         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
         echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit 0 ;;
+	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     sparc*:BSD/OS:*:*)
 	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:BSD/OS:*:*)
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:FreeBSD:*:*)
-	# Determine whether the default compiler uses glibc.
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#if __GLIBC__ >= 2
-	LIBC=gnu
-	#else
-	LIBC=
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-	# GNU/KFreeBSD systems have a "k" prefix to indicate we are using
-	# FreeBSD's kernel, but not the complete OS.
-	case ${LIBC} in gnu) kernel_only='k' ;; esac
-	echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
-	exit 0 ;;
+	case ${UNAME_MACHINE} in
+	    pc98)
+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
-	exit 0 ;;
+	exit ;;
     i*:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
-	exit 0 ;;
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
-	exit 0 ;;
-    x86:Interix*:[34]*)
-	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
-	exit 0 ;;
+	exit ;;
+    x86:Interix*:[345]*)
+	echo i586-pc-interix${UNAME_RELEASE}
+	exit ;;
+    EM64T:Interix*:[345]*)
+	echo x86_64-unknown-interix${UNAME_RELEASE}
+	exit ;;
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
 	echo i${UNAME_MACHINE}-pc-mks
-	exit 0 ;;
+	exit ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
@@ -824,37 +798,49 @@
 	# UNAME_MACHINE based on the output of uname instead of i386?
 	echo i586-pc-interix
-	exit 0 ;;
+	exit ;;
     i*:UWIN*:*)
 	echo ${UNAME_MACHINE}-pc-uwin
-	exit 0 ;;
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
     p*:CYGWIN*:*)
 	echo powerpcle-unknown-cygwin
-	exit 0 ;;
+	exit ;;
     prep*:SunOS:5.*:*)
 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit 0 ;;
+	exit ;;
     *:GNU:*:*)
 	# the GNU system
 	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit 0 ;;
+	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
 	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit 0 ;;
+	exit ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
-	exit 0 ;;
+	exit ;;
     arm*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     cris:Linux:*:*)
 	echo cris-axis-linux-gnu
-	exit 0 ;;
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
     ia64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
     m68*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     mips:Linux:*:*)
 	eval $set_cc_for_build
@@ -873,6 +859,10 @@
 	#endif
 EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
     mips64:Linux:*:*)
@@ -892,13 +882,20 @@
 	#endif
 EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
     ppc:Linux:*:*)
 	echo powerpc-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     ppc64:Linux:*:*)
 	echo powerpc64-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -914,5 +911,5 @@
 	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
 	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit 0 ;;
+	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
@@ -922,23 +919,26 @@
 	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
-	exit 0 ;;
+	exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
 	echo hppa64-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux
-	exit 0 ;;
+	exit ;;
     sh64*:Linux:*:*)
     	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     sh*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
     x86_64:Linux:*:*)
 	echo x86_64-unknown-linux-gnu
-	exit 0 ;;
+	exit ;;
     i*86:Linux:*:*)
 	# The BFD linker knows what the default object file format is, so
@@ -958,13 +958,13 @@
 	  a.out-i386-linux)
 		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit 0 ;;
+		exit ;;
 	  coff-i386)
 		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit 0 ;;
+		exit ;;
 	  "")
 		# Either a pre-BFD a.out linker (linux-gnuoldld) or
 		# one that does not give us useful --help.
 		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit 0 ;;
+		exit ;;
 	esac
 	# Determine whether the default compiler is a.out or elf
@@ -983,5 +983,5 @@
 	# endif
 	#else
-	#ifdef __INTEL_COMPILER
+	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun)
 	LIBC=gnu
 	#else
@@ -993,7 +993,14 @@
 	#endif
 EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
-	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^LIBC/{
+		s: ::g
+		p
+	    }'`"
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
 	;;
     i*86:DYNIX/ptx:4*:*)
@@ -1002,5 +1009,5 @@
 	# sysname and nodename.
 	echo i386-sequent-sysv4
-	exit 0 ;;
+	exit ;;
     i*86:UNIX_SV:4.2MP:2.*)
         # Unixware is an offshoot of SVR4, but it has its own version
@@ -1010,25 +1017,25 @@
         # Use sysv4.2uw... so that sysv4* matches it.
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit 0 ;;
+	exit ;;
     i*86:OS/2:*:*)
 	# If we were able to find `uname', then EMX Unix compatibility
 	# is probably installed.
 	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit 0 ;;
+	exit ;;
     i*86:XTS-300:*:STOP)
 	echo ${UNAME_MACHINE}-unknown-stop
-	exit 0 ;;
+	exit ;;
     i*86:atheos:*:*)
 	echo ${UNAME_MACHINE}-unknown-atheos
-	exit 0 ;;
-	i*86:syllable:*:*)
+	exit ;;
+    i*86:syllable:*:*)
 	echo ${UNAME_MACHINE}-pc-syllable
-	exit 0 ;;
+	exit ;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
 	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     i*86:*DOS:*:*)
 	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit 0 ;;
+	exit ;;
     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
 	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
@@ -1038,6 +1045,7 @@
 		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
 	fi
-	exit 0 ;;
-    i*86:*:5:[78]*)
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
 	case `/bin/uname -X | grep "^Machine"` in
 	    *486*)	     UNAME_MACHINE=i486 ;;
@@ -1046,5 +1054,5 @@
 	esac
 	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit 0 ;;
+	exit ;;
     i*86:*:3.2:*)
 	if test -f /usr/options/cb.name; then
@@ -1064,5 +1072,5 @@
 		echo ${UNAME_MACHINE}-pc-sysv32
 	fi
-	exit 0 ;;
+	exit ;;
     pc:*:*:*)
 	# Left here for compatibility:
@@ -1070,11 +1078,11 @@
         # the processor, so we play safe by assuming i386.
 	echo i386-pc-msdosdjgpp
-        exit 0 ;;
+        exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
-	exit 0 ;;
+	exit ;;
     paragon:*:*:*)
 	echo i860-intel-osf1
-	exit 0 ;;
+	exit ;;
     i860:*:4.*:*) # i860-SVR4
 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
@@ -1083,52 +1091,52 @@
 	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
 	fi
-	exit 0 ;;
+	exit ;;
     mini*:CTIX:SYS*5:*)
 	# "miniframe"
 	echo m68010-convergent-sysv
-	exit 0 ;;
+	exit ;;
     mc68k:UNIX:SYSTEM5:3.51m)
 	echo m68k-convergent-sysv
-	exit 0 ;;
+	exit ;;
     M680?0:D-NIX:5.3:*)
 	echo m68k-diab-dnix
-	exit 0 ;;
-    M68*:*:R3V[567]*:*)
-	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
 	OS_REL=''
 	test -r /etc/.relid \
 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && echo i486-ncr-sysv4 && exit 0 ;;
+          && { echo i486-ncr-sysv4; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
 	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     mc68030:UNIX_System_V:4.*:*)
 	echo m68k-atari-sysv4
-	exit 0 ;;
+	exit ;;
     TSUNAMI:LynxOS:2.*:*)
 	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     rs6000:LynxOS:2.*:*)
 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     SM[BE]S:UNIX_SV:*:*)
 	echo mips-dde-sysv${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     RM*:ReliantUNIX-*:*:*)
 	echo mips-sni-sysv4
-	exit 0 ;;
+	exit ;;
     RM*:SINIX-*:*:*)
 	echo mips-sni-sysv4
-	exit 0 ;;
+	exit ;;
     *:SINIX-*:*:*)
 	if uname -p 2>/dev/null >/dev/null ; then
@@ -1138,28 +1146,32 @@
 		echo ns32k-sni-sysv
 	fi
-	exit 0 ;;
+	exit ;;
     PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
                       # says <Richard.M.Bartel@ccMail.Census.GOV>
         echo i586-unisys-sysv4
-        exit 0 ;;
+        exit ;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes@openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
 	echo hppa1.1-stratus-sysv4
-	exit 0 ;;
+	exit ;;
     *:*:*:FTX*)
 	# From seanf@swdc.stratus.com.
 	echo i860-stratus-sysv4
-	exit 0 ;;
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
     *:VOS:*:*)
 	# From Paul.Green@stratus.com.
 	echo hppa1.1-stratus-vos
-	exit 0 ;;
+	exit ;;
     mc68*:A/UX:*:*)
 	echo m68k-apple-aux${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     news*:NEWS-OS:6*:*)
 	echo mips-sony-newsos6
-	exit 0 ;;
+	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
@@ -1168,36 +1180,36 @@
 	        echo mips-unknown-sysv${UNAME_RELEASE}
 	fi
-        exit 0 ;;
+        exit ;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
 	echo powerpc-be-beos
-	exit 0 ;;
+	exit ;;
     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
 	echo powerpc-apple-beos
-	exit 0 ;;
+	exit ;;
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
 	echo i586-pc-beos
-	exit 0 ;;
+	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     SX-5:SUPER-UX:*:*)
 	echo sx5-nec-superux${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     SX-6:SUPER-UX:*:*)
 	echo sx6-nec-superux${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     Power*:Rhapsody:*:*)
 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:Rhapsody:*:*)
 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:Darwin:*:*)
-	case `uname -p` in
-	    *86) UNAME_PROCESSOR=i686 ;;
-	    powerpc) UNAME_PROCESSOR=powerpc ;;
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
 	UNAME_PROCESSOR=`uname -p`
@@ -1207,20 +1219,23 @@
 	fi
 	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:QNX:*:4*)
 	echo i386-pc-qnx
-	exit 0 ;;
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
     NSR-?:NONSTOP_KERNEL:*:*)
 	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:NonStop-UX:*:*)
 	echo mips-compaq-nonstopux
-	exit 0 ;;
+	exit ;;
     BS2000:POSIX*:*:*)
 	echo bs2000-siemens-sysv
-	exit 0 ;;
+	exit ;;
     DS/*:UNIX_System_V:*:*)
 	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:Plan9:*:*)
 	# "uname -m" is not consistent, so use $cputype instead. 386
@@ -1233,29 +1248,45 @@
 	fi
 	echo ${UNAME_MACHINE}-unknown-plan9
-	exit 0 ;;
+	exit ;;
     *:TOPS-10:*:*)
 	echo pdp10-unknown-tops10
-	exit 0 ;;
+	exit ;;
     *:TENEX:*:*)
 	echo pdp10-unknown-tenex
-	exit 0 ;;
+	exit ;;
     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
 	echo pdp10-dec-tops20
-	exit 0 ;;
+	exit ;;
     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
 	echo pdp10-xkl-tops20
-	exit 0 ;;
+	exit ;;
     *:TOPS-20:*:*)
 	echo pdp10-unknown-tops20
-	exit 0 ;;
+	exit ;;
     *:ITS:*:*)
 	echo pdp10-unknown-its
-	exit 0 ;;
+	exit ;;
     SEI:*:*:SEIUX)
         echo mips-sei-seiux${UNAME_RELEASE}
-	exit 0 ;;
+	exit ;;
     *:DragonFly:*:*)
 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit 0 ;;
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
 esac
 
@@ -1289,5 +1320,5 @@
 
 #if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix"); exit (0);
+  printf ("arm-acorn-riscix\n"); exit (0);
 #endif
 
@@ -1378,9 +1409,10 @@
 EOF
 
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
 
 # Apollos put the system type in the environment.
 
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
 
 # Convex versions that predate uname can use getsysinfo(1)
@@ -1391,5 +1423,5 @@
     c1*)
 	echo c1-convex-bsd
-	exit 0 ;;
+	exit ;;
     c2*)
 	if getsysinfo -f scalar_acc
@@ -1397,14 +1429,14 @@
 	else echo c2-convex-bsd
 	fi
-	exit 0 ;;
+	exit ;;
     c34*)
 	echo c34-convex-bsd
-	exit 0 ;;
+	exit ;;
     c38*)
 	echo c38-convex-bsd
-	exit 0 ;;
+	exit ;;
     c4*)
 	echo c4-convex-bsd
-	exit 0 ;;
+	exit ;;
     esac
 fi
@@ -1417,5 +1449,7 @@
 download the most up to date version of the config scripts from
 
-    ftp://ftp.gnu.org/pub/gnu/config/
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
 
 If the version you run ($0) is already up to date, please
Index: trunk/src/gmake/config/config.sub
===================================================================
--- trunk/src/gmake/config/config.sub	(revision 466)
+++ trunk/src/gmake/config/config.sub	(revision 503)
@@ -1,8 +1,4 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
-timestamp='2004-02-23'
+
+timestamp='2006-03-07'
 
 # This file is (in principle) common to ALL GNU software.
@@ -22,11 +18,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
+
 
 # Please send patches to <config-patches@gnu.org>.  Submit a context
@@ -71,5 +68,5 @@
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 Free Software Foundation, Inc.
 
@@ -84,9 +81,9 @@
   case $1 in
     --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit 0 ;;
+       echo "$timestamp" ; exit ;;
     --version | -v )
-       echo "$version" ; exit 0 ;;
+       echo "$version" ; exit ;;
     --help | --h* | -h )
-       echo "$usage"; exit 0 ;;
+       echo "$usage"; exit ;;
     -- )     # Stop option processing
        shift; break ;;
@@ -100,5 +97,5 @@
        # First pass through any local machine types.
        echo $1
-       exit 0;;
+       exit ;;
 
     * )
@@ -119,6 +116,7 @@
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
-  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -146,5 +144,5 @@
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis)
+	-apple | -axis | -knuth | -cray)
 		os=
 		basic_machine=$1
@@ -171,4 +169,8 @@
 		os=-hiuxwe2
 		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
 	-sco5)
 		os=-sco3.2v5
@@ -184,4 +186,8 @@
 		;;
 	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
 		# Don't forget version if it is 3.2v4 or newer.
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -232,4 +238,5 @@
 	| am33_2.0 \
 	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| bfin \
 	| c4x | clipper \
 	| d10v | d30v | dlx | dsp16xx \
@@ -238,5 +245,5 @@
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
-	| m32r | m68000 | m68k | m88k | mcore \
+	| m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
@@ -247,4 +254,5 @@
 	| mips64vr4300 | mips64vr4300el \
 	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
 	| mipsisa32 | mipsisa32el \
 	| mipsisa32r2 | mipsisa32r2el \
@@ -255,19 +263,25 @@
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
+	| mt \
 	| msp430 \
+	| nios | nios2 \
 	| ns16k | ns32k \
-	| openrisc | or32 \
+	| or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
-	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
-	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
 	| strongarm \
 	| tahoe | thumb | tic4x | tic80 | tron \
 	| v850 | v850e \
 	| we32k \
-	| x86 | xscale | xstormy16 | xtensa \
+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
 	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m32c)
 		basic_machine=$basic_machine-unknown
 		;;
@@ -278,4 +292,7 @@
 		;;
 	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
 		;;
 
@@ -299,7 +316,7 @@
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* \
-	| bs2000-* \
+	| bfin-* | bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | cydra-* \
+	| clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
@@ -309,7 +326,7 @@
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
-	| m32r-* \
+	| m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | mcore-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
@@ -320,4 +337,5 @@
 	| mips64vr4300-* | mips64vr4300el-* \
 	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
 	| mipsisa32-* | mipsisa32el-* \
 	| mipsisa32r2-* | mipsisa32r2el-* \
@@ -327,6 +345,9 @@
 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
 	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
 	| msp430-* \
-	| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
@@ -334,8 +355,9 @@
 	| pyramid-* \
 	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
-	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
 	| tahoe-* | thumb-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
@@ -343,8 +365,10 @@
 	| v850-* | v850e-* | vax-* \
 	| we32k-* \
-	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
-	| xtensa-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
 	| ymp-* \
 	| z8k-*)
+		;;
+	m32c-*)
 		;;
 	# Recognize the various machine names and aliases which stand
@@ -446,4 +470,8 @@
 		os=-unicos
 		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
 	cr16c)
 		basic_machine=cr16c-unknown
@@ -453,4 +481,7 @@
 		basic_machine=m68k-crds
 		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
 	cris | cris-* | etrax*)
 		basic_machine=cris-axis
@@ -481,4 +512,8 @@
 		basic_machine=m88k-motorola
 		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
 		;;
 	dpx20 | dpx20-*)
@@ -660,8 +695,4 @@
 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
 		;;
-	mmix*)
-		basic_machine=mmix-knuth
-		os=-mmixware
-		;;
 	monitor)
 		basic_machine=m68k-rom68k
@@ -675,4 +706,7 @@
 		basic_machine=i386-pc
 		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
 	mvs)
@@ -744,8 +778,4 @@
 		basic_machine=np1-gould
 		;;
-	nv1)
-		basic_machine=nv1-cray
-		os=-unicosmp
-		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
@@ -755,7 +785,6 @@
 		os=-proelf
 		;;
-	or32 | or32-*)
+	openrisc | openrisc-*)
 		basic_machine=or32-unknown
-		os=-coff
 		;;
 	os400)
@@ -788,4 +817,10 @@
 		basic_machine=ns32k-pc532
 		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	pentium | p5 | k5 | k6 | nexgen | viac3)
 		basic_machine=i586-pc
@@ -844,4 +879,8 @@
 		os=-pw32
 		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
 	rom68k)
 		basic_machine=m68k-rom68k
@@ -1029,4 +1068,8 @@
 		basic_machine=hppa1.1-winbond
 		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
 		;;
 	xps | xps100)
@@ -1060,4 +1103,7 @@
 		basic_machine=romp-ibm
 		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
 	rs6000)
 		basic_machine=rs6000-ibm
@@ -1076,11 +1122,8 @@
 		basic_machine=we32k-att
 		;;
-	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparc | sparcv9 | sparcv9b)
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
 		basic_machine=sparc-sun
 		;;
@@ -1155,5 +1198,6 @@
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
@@ -1162,5 +1206,6 @@
 	      | -chorusos* | -chorusrdb* \
 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1168,5 +1213,6 @@
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
@@ -1186,5 +1232,5 @@
 		;;
 	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
 	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
 		;;
@@ -1294,4 +1340,7 @@
 	-kaos*)
 		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
 		;;
 	-none)
@@ -1372,6 +1421,12 @@
 		os=-beos
 		;;
+	*-haiku)
+		os=-haiku
+		;;
 	*-ibm)
 		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
 		;;
 	*-wec)
@@ -1540,5 +1595,5 @@
 
 echo $basic_machine$os
-exit 0
+exit
 
 # Local variables:
Index: trunk/src/gmake/config/depcomp
===================================================================
--- trunk/src/gmake/config/depcomp	(revision 466)
+++ trunk/src/gmake/config/depcomp	(revision 503)
@@ -2,7 +2,7 @@
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2003-11-08.23
-
-# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+scriptversion=2005-07-09.11
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -18,6 +18,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
 
 # As a special exception to the GNU General Public License, if you
@@ -44,4 +44,5 @@
   source      Source file read by `PROGRAMS ARGS'.
   object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
   tmpdepfile  Temporary file to use when outputing dependencies.
@@ -50,9 +51,9 @@
 Report bugs to <bug-automake@gnu.org>.
 EOF
-    exit 0
+    exit $?
     ;;
   -v | --v*)
     echo "depcomp $scriptversion"
-    exit 0
+    exit $?
     ;;
 esac
@@ -62,16 +63,8 @@
   exit 1
 fi
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
-   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
-   dir=`echo "$object" | sed 's,/.*$,/,'`
-   if test "$dir" = "$object"; then
-      dir=
-   fi
-   # FIXME: should be _deps on DOS.
-   depfile="$dir.deps/$base"
-fi
-
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
@@ -295,10 +288,27 @@
 
    if test "$libtool" = yes; then
-      tmpdepfile1="$dir.libs/$base.lo.d"
-      tmpdepfile2="$dir.libs/$base.d"
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mecanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
       "$@" -Wc,-MD
    else
-      tmpdepfile1="$dir$base.o.d"
-      tmpdepfile2="$dir$base.d"
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
       "$@" -MD
    fi
@@ -307,13 +317,12 @@
    if test $stat -eq 0; then :
    else
-      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
       exit $stat
    fi
 
-   if test -f "$tmpdepfile1"; then
-      tmpdepfile="$tmpdepfile1"
-   else
-      tmpdepfile="$tmpdepfile2"
-   fi
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
    if test -f "$tmpdepfile"; then
       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
@@ -459,5 +468,6 @@
 
   "$@" -E |
-    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
     sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
Index: trunk/src/gmake/config/dospaths.m4
===================================================================
--- trunk/src/gmake/config/dospaths.m4	(revision 466)
+++ trunk/src/gmake/config/dospaths.m4	(revision 503)
@@ -1,4 +1,20 @@
 # Test if the system uses DOS-style pathnames (drive specs and backslashes)
 # By Paul Smith <psmith@gnu.org>.  Based on dos.m4 by Jim Meyering.
+
+# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 AC_DEFUN([pds_AC_DOS_PATHS],
@@ -7,5 +23,5 @@
       [
         AC_COMPILE_IFELSE([
-#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__
 neither MSDOS nor Windows nor OS2
 #endif
Index: trunk/src/gmake/config/install-sh
===================================================================
--- trunk/src/gmake/config/install-sh	(revision 466)
+++ trunk/src/gmake/config/install-sh	(revision 503)
@@ -2,5 +2,5 @@
 # install - install a program, script, or datafile
 
-scriptversion=2004-01-12.10
+scriptversion=2005-05-14.22
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
@@ -59,7 +59,4 @@
 mkdirprog="${MKDIRPROG-mkdir}"
 
-transformbasename=
-transform_arg=
-instcmd="$mvprog"
 chmodcmd="$chmodprog 0755"
 chowncmd=
@@ -71,21 +68,25 @@
 dst=
 dir_arg=
-
-usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
    or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 -d DIRECTORIES...
-
-In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
-In the second, create the directory path DIR.
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
 
 Options:
--b=TRANSFORMBASENAME
--c         copy source (using $cpprog) instead of moving (using $mvprog).
+-c         (ignored)
 -d         create directories instead of installing files.
--g GROUP   $chgrp installed files to GROUP.
--m MODE    $chmod installed files to MODE.
--o USER    $chown installed files to USER.
--s         strip installed files (using $stripprog).
--t=TRANSFORM
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
 --help     display this help and exit.
 --version  display version info and exit.
@@ -97,10 +98,5 @@
 while test -n "$1"; do
   case $1 in
-    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-        shift
-        continue;;
-
-    -c) instcmd=$cpprog
-        shift
+    -c) shift
         continue;;
 
@@ -114,5 +110,5 @@
         continue;;
 
-    --help) echo "$usage"; exit 0;;
+    --help) echo "$usage"; exit $?;;
 
     -m) chmodcmd="$chmodprog $2"
@@ -130,12 +126,18 @@
         continue;;
 
-    -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-        shift
-        continue;;
-
-    --version) echo "$0 $scriptversion"; exit 0;;
+    -t) dstarg=$2
+	shift
+	shift
+	continue;;
+
+    -T) no_target_directory=true
+	shift
+	continue;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
 
     *)  # When -d is used, all remaining arguments are directories to create.
-	test -n "$dir_arg" && break
+	# When -t is used, the destination is already specified.
+	test -n "$dir_arg$dstarg" && break
         # Otherwise, the last argument is the destination.  Remove it from $@.
 	for arg
@@ -175,11 +177,11 @@
 
     if test -d "$dst"; then
-      instcmd=:
+      mkdircmd=:
       chmodcmd=
     else
-      instcmd=$mkdirprog
+      mkdircmd=$mkdirprog
     fi
   else
-    # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
     # might cause directories to be created, which would be especially bad
     # if $src (and thus $dsttmp) contains '*'.
@@ -203,4 +205,8 @@
     # if double slashes aren't ignored.
     if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dstarg: Is a directory" >&2
+	exit 1
+      fi
       dst=$dst/`basename "$src"`
     fi
@@ -208,5 +214,5 @@
 
   # This sed command emulates the dirname command.
-  dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
 
   # Make sure that the destination directory exists.
@@ -215,5 +221,5 @@
   if test ! -d "$dstdir"; then
     defaultIFS='
-  	'
+	 '
     IFS="${IFS-$defaultIFS}"
 
@@ -221,5 +227,6 @@
     # Some sh's can't handle IFS=/ for some reason.
     IFS='%'
-    set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    shift
     IFS=$oIFS
 
@@ -229,5 +236,11 @@
       pathcomp=$pathcomp$1
       shift
-      test -d "$pathcomp" || $mkdirprog "$pathcomp"
+      if test ! -d "$pathcomp"; then
+        $mkdirprog "$pathcomp"
+	# mkdir can fail with a `File exist' error in case several
+	# install-sh are creating the directory concurrently.  This
+	# is OK.
+	test -d "$pathcomp" || exit
+      fi
       pathcomp=$pathcomp/
     done
@@ -235,5 +248,5 @@
 
   if test -n "$dir_arg"; then
-    $doit $instcmd "$dst" \
+    $doit $mkdircmd "$dst" \
       && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
       && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
@@ -242,14 +255,5 @@
 
   else
-    # If we're going to rename the final executable, determine the name now.
-    if test -z "$transformarg"; then
-      dstfile=`basename "$dst"`
-    else
-      dstfile=`basename "$dst" $transformbasename \
-               | sed $transformarg`$transformbasename
-    fi
-
-    # don't allow the sed command to completely eliminate the filename.
-    test -z "$dstfile" && dstfile=`basename "$dst"`
+    dstfile=`basename "$dst"`
 
     # Make a couple of temp file names in the proper directory.
@@ -258,9 +262,9 @@
 
     # Trap to clean up those temp files at exit.
-    trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
     trap '(exit $?); exit' 1 2 13 15
 
-    # Move or copy the file name to the temp name
-    $doit $instcmd "$src" "$dsttmp" &&
+    # Copy the file name to the temp name.
+    $doit $cpprog "$src" "$dsttmp" &&
 
     # and set any options; do chmod last to preserve setuid bits.
@@ -268,5 +272,5 @@
     # If any of these fail, we abort the whole thing.  If we want to
     # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $instcmd $src $dsttmp" command.
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
     #
     { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
@@ -275,30 +279,39 @@
       && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
 
-    # Now remove or move aside any old file at destination location.  We
-    # try this two ways since rm can't unlink itself on some systems and
-    # the destination file might be busy for other reasons.  In this case,
-    # the final cleanup might fail but the new file should still install
-    # successfully.
-    {
-      if test -f "$dstdir/$dstfile"; then
-        $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
-        || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
-        || {
-  	  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
-  	  (exit 1); exit
-        }
-      else
-        :
-      fi
-    } &&
-
     # Now rename the file to the real destination.
-    $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
-  fi || { (exit 1); exit; }
+    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+      || {
+	   # The rename failed, perhaps because mv can't rename something else
+	   # to itself, or perhaps because mv is so ancient that it does not
+	   # support -f.
+
+	   # Now remove or move aside any old file at destination location.
+	   # We try this two ways since rm can't unlink itself on some
+	   # systems and the destination file might be busy for other
+	   # reasons.  In this case, the final cleanup might fail but the new
+	   # file should still install successfully.
+	   {
+	     if test -f "$dstdir/$dstfile"; then
+	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+	       || {
+		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		 (exit 1); exit 1
+	       }
+	     else
+	       :
+	     fi
+	   } &&
+
+	   # Now rename the file to the real destination.
+	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+	 }
+    }
+  fi || { (exit 1); exit 1; }
 done
 
 # The final little trick to "correctly" pass the exit status to the exit trap.
 {
-  (exit 0); exit
+  (exit 0); exit 0
 }
 
Index: trunk/src/gmake/config/intmax.m4
===================================================================
--- trunk/src/gmake/config/intmax.m4	(revision 503)
+++ trunk/src/gmake/config/intmax.m4	(revision 503)
@@ -0,0 +1,32 @@
+# intmax.m4 serial 1 (gettext-0.12)
+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+dnl Test whether the system has the 'intmax_t' type, but don't attempt to
+dnl find a replacement if it is lacking.
+
+AC_DEFUN([gt_TYPE_INTMAX_T],
+[
+  AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
+  AC_REQUIRE([jm_AC_HEADER_STDINT_H])
+  AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
+    [AC_TRY_COMPILE([
+#include <stddef.h> 
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
+  if test $gt_cv_c_intmax_t = yes; then
+    AC_DEFINE(HAVE_INTMAX_T, 1,
+      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+  fi
+])
Index: trunk/src/gmake/config/longdouble.m4
===================================================================
--- trunk/src/gmake/config/longdouble.m4	(revision 503)
+++ trunk/src/gmake/config/longdouble.m4	(revision 503)
@@ -0,0 +1,30 @@
+# longdouble.m4 serial 1 (gettext-0.12)
+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+dnl Test whether the compiler supports the 'long double' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_LONGDOUBLE],
+[
+  AC_CACHE_CHECK([for long double], gt_cv_c_long_double,
+    [if test "$GCC" = yes; then
+       gt_cv_c_long_double=yes
+     else
+       AC_TRY_COMPILE([
+         /* The Stardent Vistra knows sizeof(long double), but does not support it.  */
+         long double foo = 0.0;
+         /* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
+         int array [2*(sizeof(long double) >= sizeof(double)) - 1];
+         ], ,
+         gt_cv_c_long_double=yes, gt_cv_c_long_double=no)
+     fi])
+  if test $gt_cv_c_long_double = yes; then
+    AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.])
+  fi
+])
Index: trunk/src/gmake/config/longlong.m4
===================================================================
--- trunk/src/gmake/config/longlong.m4	(revision 503)
+++ trunk/src/gmake/config/longlong.m4	(revision 503)
@@ -0,0 +1,25 @@
+# longlong.m4 serial 4
+dnl Copyright (C) 1999-2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Paul Eggert.
+
+# Define HAVE_LONG_LONG if 'long long' works.
+
+AC_DEFUN([jm_AC_TYPE_LONG_LONG],
+[
+  AC_CACHE_CHECK([for long long], ac_cv_type_long_long,
+  [AC_TRY_LINK([long long ll = 1LL; int i = 63;],
+    [long long llmax = (long long) -1;
+     return ll << i | ll >> i | llmax / ll | llmax % ll;],
+    ac_cv_type_long_long=yes,
+    ac_cv_type_long_long=no)])
+  if test $ac_cv_type_long_long = yes; then
+    AC_DEFINE(HAVE_LONG_LONG, 1,
+      [Define if you have the 'long long' type.])
+  fi
+])
Index: trunk/src/gmake/config/mdate-sh
===================================================================
--- trunk/src/gmake/config/mdate-sh	(revision 503)
+++ trunk/src/gmake/config/mdate-sh	(revision 503)
@@ -0,0 +1,201 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2005-06-29.22
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
+# Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification time of FILE.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume `unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+
+# A `ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`ls -l -d /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+	 Jan) nummonthtod=1;;
+	 Feb) nummonthtod=2;;
+	 Mar) nummonthtod=3;;
+	 Apr) nummonthtod=4;;
+	 May) nummonthtod=5;;
+	 Jun) nummonthtod=6;;
+	 Jul) nummonthtod=7;;
+	 Aug) nummonthtod=8;;
+	 Sep) nummonthtod=9;;
+	 Oct) nummonthtod=10;;
+	 Nov) nummonthtod=11;;
+	 Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+	 year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
Index: trunk/src/gmake/config/missing
===================================================================
--- trunk/src/gmake/config/missing	(revision 466)
+++ trunk/src/gmake/config/missing	(revision 503)
@@ -2,7 +2,7 @@
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2003-09-02.23
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 
+scriptversion=2005-06-08.21
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
 #   Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
@@ -20,6 +20,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
 
 # As a special exception to the GNU General Public License, if you
@@ -61,9 +61,4 @@
   fi
   ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
 
   -h|--h|--he|--hel|--help)
@@ -93,8 +88,10 @@
 
 Send bug reports to <bug-automake@gnu.org>."
+    exit $?
     ;;
 
   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
     echo "missing $scriptversion (GNU Automake)"
+    exit $?
     ;;
 
@@ -105,10 +102,40 @@
     ;;
 
-  aclocal*)
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
        exit 1
-    fi
-
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+  aclocal*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -120,9 +147,4 @@
 
   autoconf)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -134,9 +156,4 @@
 
   autoheader)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -158,9 +175,4 @@
 
   automake*)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -174,9 +186,4 @@
 
   autom4te)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is needed, but is $msg.
@@ -255,9 +262,4 @@
 
   help2man)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -280,9 +282,4 @@
 
   makeinfo)
-    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
-       # We have makeinfo, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -292,9 +289,16 @@
          DU, IRIX).  You might want to install the \`Texinfo' package or
          the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
     if test -z "$file"; then
-      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
-    fi
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
     touch $file
     ;;
@@ -302,8 +306,4 @@
   tar)
     shift
-    if test -n "$run"; then
-      echo 1>&2 "ERROR: \`tar' requires --run"
-      exit 1
-    fi
 
     # We have already tried tar in the generic part.
Index: trunk/src/gmake/config/printf-posix.m4
===================================================================
--- trunk/src/gmake/config/printf-posix.m4	(revision 503)
+++ trunk/src/gmake/config/printf-posix.m4	(revision 503)
@@ -0,0 +1,46 @@
+# printf-posix.m4 serial 2 (gettext-0.13.1)
+dnl Copyright (C) 2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+dnl Test whether the printf() function supports POSIX/XSI format strings with
+dnl positions.
+
+AC_DEFUN([gt_PRINTF_POSIX],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
+    gt_cv_func_printf_posix,
+    [
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+   dollar expansion (possibly an autoconf bug).  */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+  sprintf (buf, format, 33, 55);
+  return (strcmp (buf, "55 33") != 0);
+}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
+      [
+        AC_EGREP_CPP(notposix, [
+#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
+  notposix
+#endif
+        ], gt_cv_func_printf_posix="guessing no",
+           gt_cv_func_printf_posix="guessing yes")
+      ])
+    ])
+  case $gt_cv_func_printf_posix in
+    *yes)
+      AC_DEFINE(HAVE_POSIX_PRINTF, 1,
+        [Define if your printf() function supports format strings with positions.])
+      ;;
+  esac
+])
Index: trunk/src/gmake/config/signed.m4
===================================================================
--- trunk/src/gmake/config/signed.m4	(revision 503)
+++ trunk/src/gmake/config/signed.m4	(revision 503)
@@ -0,0 +1,19 @@
+# signed.m4 serial 1 (gettext-0.10.40)
+dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([bh_C_SIGNED],
+[
+  AC_CACHE_CHECK([for signed], bh_cv_c_signed,
+   [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)])
+  if test $bh_cv_c_signed = no; then
+    AC_DEFINE(signed, ,
+              [Define to empty if the C compiler doesn't support this keyword.])
+  fi
+])
Index: trunk/src/gmake/config/size_max.m4
===================================================================
--- trunk/src/gmake/config/size_max.m4	(revision 503)
+++ trunk/src/gmake/config/size_max.m4	(revision 503)
@@ -0,0 +1,61 @@
+# size_max.m4 serial 2
+dnl Copyright (C) 2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_SIZE_MAX],
+[
+  AC_CHECK_HEADERS(stdint.h)
+  dnl First test whether the system already has SIZE_MAX.
+  AC_MSG_CHECKING([for SIZE_MAX])
+  result=
+  AC_EGREP_CPP([Found it], [
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+], result=yes)
+  if test -z "$result"; then
+    dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
+    dnl than the type 'unsigned long'.
+    dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr',
+    dnl which is guaranteed to work from LONG_MIN to LONG_MAX.
+    _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi,
+      [#include <stddef.h>], result=?)
+    _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo,
+      [#include <stddef.h>], result=?)
+    _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint,
+      [#include <stddef.h>], result=?)
+    if test "$fits_in_uint" = 1; then
+      dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
+      dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
+      AC_TRY_COMPILE([#include <stddef.h>
+        extern size_t foo;
+        extern unsigned long foo;
+        ], [], fits_in_uint=0)
+    fi
+    if test -z "$result"; then
+      if test "$fits_in_uint" = 1; then
+        result="$res_hi$res_lo"U
+      else
+        result="$res_hi$res_lo"UL
+      fi
+    else
+      dnl Shouldn't happen, but who knows...
+      result='~(size_t)0'
+    fi
+  fi
+  AC_MSG_RESULT([$result])
+  if test "$result" != yes; then
+    AC_DEFINE_UNQUOTED([SIZE_MAX], [$result],
+      [Define as the maximum value of type 'size_t', if the system doesn't define it.])
+  fi
+])
Index: trunk/src/gmake/config/texinfo.tex
===================================================================
--- trunk/src/gmake/config/texinfo.tex	(revision 466)
+++ trunk/src/gmake/config/texinfo.tex	(revision 503)
@@ -4,9 +4,9 @@
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2004-02-25.17}
+\def\texinfoversion{2006-03-21.13}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
-% Foundation, Inc.
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
+% Software Foundation, Inc.
 %
 % This texinfo.tex file is free software; you can redistribute it and/or
@@ -22,11 +22,11 @@
 % You should have received a copy of the GNU General Public License
 % along with this texinfo.tex file; see the file COPYING.  If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
+% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
 %
 % As a special exception, when this file is read by TeX when processing
 % a Texinfo source document, you may use the result without
 % restriction.  (This has been our intent since Texinfo was invented.)
-% 
+%
 % Please try the latest version of texinfo.tex before submitting bug
 % reports; you can get the latest version from:
@@ -56,5 +56,5 @@
 % extent.  You can get the existing language-specific files from the
 % full Texinfo distribution.
-% 
+%
 % The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
 
@@ -90,8 +90,9 @@
 \let\ptexi=\i
 \let\ptexindent=\indent
-\let\ptexnoindent=\noindent
 \let\ptexinsert=\insert
 \let\ptexlbrace=\{
 \let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
 \let\ptexplus=+
 \let\ptexrbrace=\}
@@ -153,17 +154,7 @@
 \ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
 
-% In some macros, we cannot use the `\? notation---the left quote is
-% in some cases the escape char.
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dotChar   = `\.
-\chardef\exclamChar= `\!
-\chardef\questChar = `\?
-\chardef\semiChar  = `\;
-\chardef\underChar = `\_
-
-\chardef\spaceChar = `\ %
+% Since the category of space is not known, we have to be careful.
 \chardef\spacecat = 10
-\def\spaceisspace{\catcode\spaceChar=\spacecat}
+\def\spaceisspace{\catcode`\ =\spacecat}
 
 % Ignore a token.
@@ -176,8 +167,10 @@
 % Hyphenation fixes.
 \hyphenation{
-  Flor-i-da Ghost-script Ghost-view Mac-OS ap-pen-dix bit-map bit-maps
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
   data-base data-bases eshell fall-ing half-way long-est man-u-script
   man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
-  par-a-digms rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
   stand-alone strong-est time-stamp time-stamps which-ever white-space
   wide-spread wrap-around
@@ -300,8 +293,12 @@
     % before the \shipout runs.
     %
-    \escapechar = `\\     % use backslash in output files.
     \indexdummies         % don't expand commands in the output.
     \normalturnoffactive  % \ in index entries must not stay \, e.g., if
-                   % the page break happens to be in the middle of an example.
+               % the page break happens to be in the middle of an example.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be 
+               % {\code {{\tt \backslashcurfont }acronym}
     \shipout\vbox{%
       % Do this early so pdf references go to the beginning of the page.
@@ -354,5 +351,5 @@
       \fi
     }% end of \shipout\vbox
-  }% end of group with \normalturnoffactive
+  }% end of group with \indexdummies
   \advancepageno
   \ifnum\outputpenalty>-20000 \else\dosupereject\fi
@@ -389,5 +386,5 @@
 \def\parsearg{\parseargusing{}}
 \def\parseargusing#1#2{%
-  \def\next{#2}%
+  \def\argtorun{#2}%
   \begingroup
     \obeylines
@@ -420,6 +417,5 @@
   \def\temp{#3}%
   \ifx\temp\empty
-    % We cannot use \next here, as it holds the macro to run;
-    % thus we reuse \temp.
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
     \let\temp\finishparsearg
   \else
@@ -433,5 +429,5 @@
 % to get _exactly_ the rest of the line, we had to prevent such situation.
 % We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \next.
+% just before passing the control to \argtorun.
 % (Similarily, we have to think about #3 of \argcheckspacesY above: it is
 % either the null string, or it ends with \^^M---thus there is no danger
@@ -440,5 +436,5 @@
 % But first, we have to remove the trailing space token.
 %
-\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
 
 % \parseargdef\foo{...}
@@ -480,8 +476,8 @@
 
 % Define the framework for environments in texinfo.tex.  It's used like this:
-% 
+%
 %   \envdef\foo{...}
 %   \def\Efoo{...}
-%   
+%
 % It's the responsibility of \envdef to insert \begingroup before the
 % actual body; @end closes the group after calling \Efoo.  \envdef also
@@ -489,5 +485,5 @@
 % whether the environment name matches.  The \checkenv macro can also be
 % used to check whether the current environment is the one expected.
-% 
+%
 % Non-false conditionals (@iftex, @ifset) don't fit into this, so they
 % are not treated as enviroments; they don't open a group.  (The
@@ -564,5 +560,5 @@
 \begingroup
   % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux file.
+  % and @{ and @} for the aux/toc files.
   \catcode`\{ = \other \catcode`\} = \other
   \catcode`\[ = 1 \catcode`\] = 2
@@ -606,6 +602,6 @@
 % The \TeX{} logo, as in plain, but resetting the spacing so that a
 % period following counts as ending a sentence.  (Idea found in latex.)
-% 
-\edef\TeX{\TeX \spacefactor=3000 }
+%
+\edef\TeX{\TeX \spacefactor=1000 }
 
 % @LaTeX{} logo.  Not quite the same results as the definition in
@@ -614,5 +610,5 @@
 % the \scriptstyle font (since we don't reset \scriptstyle and
 % \scriptscriptstyle).
-% 
+%
 \def\LaTeX{%
   L\kern-.36em
@@ -645,11 +641,26 @@
 
 % @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
 
 % @! is an end-of-sentence bang.
-\def\!{!\spacefactor=3000 }
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
 
 % @? is an end-of-sentence query.
-\def\?{?\spacefactor=3000 }
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+% 
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+  \fi\fi
+}
 
 % @w prevents a word break.  Without the \leavevmode, @w at the
@@ -1029,7 +1040,7 @@
 % which is what @var uses.
 {
-  \catcode\underChar = \active
+  \catcode`\_ = \active
   \gdef\mathunderscore{%
-    \catcode\underChar=\active
+    \catcode`\_=\active
     \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
   }
@@ -1090,10 +1101,10 @@
 \def\enddots{%
   \dots
-  \spacefactor=3000
+  \spacefactor=\endofsentencespacefactor
 }
 
 % @comma{} is so commas can be inserted into text without messing up
 % Texinfo's parsing.
-% 
+%
 \let\comma = ,
 
@@ -1161,14 +1172,68 @@
 \newif\ifpdfmakepagedest
 
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
 \ifx\pdfoutput\undefined
-  \pdffalse
-  \let\pdfmkdest = \gobble
-  \let\pdfurl = \gobble
-  \let\endlink = \relax
-  \let\linkcolor = \relax
-  \let\pdfmakeoutlines = \relax
 \else
-  \pdftrue
-  \pdfoutput = 1
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+% 
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+   @catcode`@\=@active
+   @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters.  hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens.  I've
+% tinkered with it a little for texinfo, but it's definitely from there.
+% 
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+% 
+\def\HyPsdSubst#1#2#3{%
+  \def\HyPsdReplace##1#1##2\END{%
+    ##1%
+    \ifx\\##2\\%
+    \else
+      #2%
+      \HyReturnAfterFi{%
+        \HyPsdReplace##2\END
+      }%
+    \fi
+  }%
+  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+  \xdef#1{#1}% redefine it as its expansion; the definition is simply
+             % \lastnode when called from \setref -> \pdfmkdest.
+  \HyPsdSubst{(}{\realbackslash(}{#1}%
+  \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\ifpdf
   \input pdfcolor
   \pdfcatalog{/PageMode /UseOutlines}%
@@ -1194,11 +1259,16 @@
     \fi}
   \def\pdfmkdest#1{{%
-    % We have to set dummies so commands such as @code in a section title
-    % aren't expanded.
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
     \atdummies
-    \normalturnoffactive
-    \pdfdest name{#1} xyz%
-  }}
-  \def\pdfmkpgn#1{#1}
+    \activebackslashdouble
+    \def\pdfdestname{#1}%
+    \backslashparens\pdfdestname
+    \pdfdest name{\pdfdestname} xyz%
+  }}%
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}%
+  %
   \let\linkcolor = \Blue  % was Cyan, but that seems light?
   \def\endlink{\Black\pdfendlink}
@@ -1211,18 +1281,29 @@
     \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
   %
-  % #1 is the section text.  #2 is the pdf expression for the number
-  % of subentries (or empty, for subsubsections).  #3 is the node
-  % text, which might be empty if this toc entry had no
-  % corresponding node.  #4 is the page number.
-  % 
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
   \def\dopdfoutline#1#2#3#4{%
     % Generate a link to the node text if that exists; else, use the
     % page number.  We could generate a destination for the section
     % text in the case where a section has no node, but it doesn't
-    % seem worthwhile, since most documents are normally structured.
+    % seem worth the trouble, since most documents are normally structured.
     \def\pdfoutlinedest{#3}%
-    \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      % Doubled backslashes in the name.
+      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+       \backslashparens\pdfoutlinedest}%
+    \fi
     %
-    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
+    % Also double the backslashes in the display string.
+    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+     \backslashparens\pdfoutlinetext}%
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
   }
   %
@@ -1236,11 +1317,11 @@
       \def\numchapentry##1##2##3##4{%
 	\def\thischapnum{##2}%
-	\let\thissecnum\empty
-	\let\thissubsecnum\empty
+	\def\thissecnum{0}%
+	\def\thissubsecnum{0}%
       }%
       \def\numsecentry##1##2##3##4{%
 	\advancenumber{chap\thischapnum}%
 	\def\thissecnum{##2}%
-	\let\thissubsecnum\empty
+	\def\thissubsecnum{0}%
       }%
       \def\numsubsecentry##1##2##3##4{%
@@ -1251,7 +1332,7 @@
 	\advancenumber{subsec\thissubsecnum}%
       }%
-      \let\thischapnum\empty
-      \let\thissecnum\empty
-      \let\thissubsecnum\empty
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
       %
       % use \def rather than \let here because we redefine \chapentry et
@@ -1265,10 +1346,10 @@
       \def\unnsubsecentry{\numsubsecentry}%
       \def\unnsubsubsecentry{\numsubsubsecentry}%
-      \input \jobname.toc
+      \readdatafile{toc}%
       %
       % Read toc second time, this time actually producing the outlines.
       % The `-' means take the \expnumber as the absolute number of
       % subentries, which we calculated on our first read of the .toc above.
-      % 
+      %
       % We use the node names as the destinations.
       \def\numchapentry##1##2##3##4{%
@@ -1286,44 +1367,15 @@
       % Latin 2 (0xea) gets translated to a | character.  Info from
       % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
-      % 
+      %
       % xx to do this right, we have to translate 8-bit characters to
       % their "best" equivalent, based on the @documentencoding.  Right
       % now, I guess we'll just let the pdf reader have its way.
       \indexnofonts
-      \turnoffactive
+      \setupdatafile
+      \catcode`\\=\active \otherbackslash
       \input \jobname.toc
     \endgroup
   }
   %
-  \def\makelinks #1,{%
-    \def\params{#1}\def\E{END}%
-    \ifx\params\E
-      \let\nextmakelinks=\relax
-    \else
-      \let\nextmakelinks=\makelinks
-      \ifnum\lnkcount>0,\fi
-      \picknum{#1}%
-      \startlink attr{/Border [0 0 0]}
-        goto name{\pdfmkpgn{\the\pgn}}%
-      \linkcolor #1%
-      \advance\lnkcount by 1%
-      \endlink
-    \fi
-    \nextmakelinks
-  }
-  \def\picknum#1{\expandafter\pn#1}
-  \def\pn#1{%
-    \def\p{#1}%
-    \ifx\p\lbrace
-      \let\nextpn=\ppn
-    \else
-      \let\nextpn=\ppnn
-      \def\first{#1}
-    \fi
-    \nextpn
-  }
-  \def\ppn#1{\pgn=#1\gobble}
-  \def\ppnn{\pgn=\first}
-  \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
   \def\skipspaces#1{\def\PP{#1}\def\D{|}%
     \ifx\PP\D\let\nextsp\relax
@@ -1340,7 +1392,15 @@
     \let \startlink \pdfstartlink
   \fi
+  % make a live url in pdf output.
   \def\pdfurl#1{%
     \begingroup
-      \normalturnoffactive\def\@{@}%
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      % 
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
       \makevalueexpandable
       \leavevmode\Red
@@ -1373,5 +1433,11 @@
     \linkcolor #1\endlink}
   \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % \ifx\pdfoutput
+\else
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\linkcolor = \relax
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
 
 
@@ -1381,5 +1447,5 @@
 % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
 % italics, not bold italics.
-% 
+%
 \def\setfontstyle#1{%
   \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
@@ -1388,5 +1454,5 @@
 
 % Select #1 fonts with the current style.
-% 
+%
 \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
 
@@ -1394,5 +1460,5 @@
 \def\it{\fam=\itfam \setfontstyle{it}}
 \def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
 \def\tt{\fam=\ttfam \setfontstyle{tt}}
 
@@ -1456,15 +1522,8 @@
 
 % Text fonts (11.2pt, magstep1).
-\newcount\mainmagstep
-\ifx\bigger\relax
-  % not really supported.
-  \mainmagstep=\magstep1
-  \setfont\textrm\rmshape{12}{1000}
-  \setfont\texttt\ttshape{12}{1000}
-\else
-  \mainmagstep=\magstephalf
-  \setfont\textrm\rmshape{10}{\mainmagstep}
-  \setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
 \setfont\textbf\bfshape{10}{\mainmagstep}
 \setfont\textit\itshape{10}{\mainmagstep}
@@ -1483,4 +1542,5 @@
 
 % Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
 \setfont\smallrm\rmshape{9}{1000}
 \setfont\smalltt\ttshape{9}{1000}
@@ -1495,4 +1555,5 @@
 
 % Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
 \setfont\smallerrm\rmshape{8}{1000}
 \setfont\smallertt\ttshape{8}{1000}
@@ -1507,4 +1568,5 @@
 
 % Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
 \setfont\titlerm\rmbshape{12}{\magstep3}
 \setfont\titleit\itbshape{10}{\magstep4}
@@ -1521,4 +1583,5 @@
 
 % Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
 \setfont\chaprm\rmbshape{12}{\magstep2}
 \setfont\chapit\itbshape{10}{\magstep3}
@@ -1533,4 +1596,5 @@
 
 % Section fonts (14.4pt).
+\def\secnominalsize{14pt}
 \setfont\secrm\rmbshape{12}{\magstep1}
 \setfont\secit\itbshape{10}{\magstep2}
@@ -1545,4 +1609,5 @@
 
 % Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
 \setfont\ssecrm\rmbshape{12}{\magstephalf}
 \setfont\ssecit\itbshape{10}{1315}
@@ -1557,4 +1622,5 @@
 
 % Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
 \setfont\reducedrm\rmshape{10}{1000}
 \setfont\reducedtt\ttshape{10}{1000}
@@ -1584,11 +1650,11 @@
 % current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
 % \tenSTYLE to set the current font.
-% 
+%
 % Each font-changing command also sets the names \lsize (one size lower)
 % and \lllsize (three sizes lower).  These relative commands are used in
 % the LaTeX logo and acronyms.
-% 
+%
 % This all needs generalizing, badly.
-% 
+%
 \def\textfonts{%
   \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
@@ -1596,4 +1662,5 @@
   \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
   \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
   \def\lsize{reduced}\def\lllsize{smaller}%
   \resetmathfonts \setleading{\textleading}}
@@ -1603,4 +1670,5 @@
   \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
   \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
   \def\lsize{chap}\def\lllsize{subsec}%
   \resetmathfonts \setleading{25pt}}
@@ -1609,5 +1677,7 @@
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
   \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
-  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
   \def\lsize{sec}\def\lllsize{text}%
   \resetmathfonts \setleading{19pt}}
@@ -1617,4 +1687,5 @@
   \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
   \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
   \def\lsize{subsec}\def\lllsize{reduced}%
   \resetmathfonts \setleading{16pt}}
@@ -1624,4 +1695,5 @@
   \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
   \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
   \def\lsize{text}\def\lllsize{small}%
   \resetmathfonts \setleading{15pt}}
@@ -1632,4 +1704,5 @@
   \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
   \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
   \def\lsize{small}\def\lllsize{smaller}%
   \resetmathfonts \setleading{10.5pt}}
@@ -1639,4 +1712,5 @@
   \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
   \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
   \def\lsize{smaller}\def\lllsize{smaller}%
   \resetmathfonts \setleading{10.5pt}}
@@ -1646,4 +1720,5 @@
   \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
   \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
   \def\lsize{smaller}\def\lllsize{smaller}%
   \resetmathfonts \setleading{9.5pt}}
@@ -1703,10 +1778,15 @@
 
 \let\i=\smartitalic
+\let\slanted=\smartslanted
 \let\var=\smartslanted
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
+% @b, explicit bold.
 \def\b#1{{\bf #1}}
 \let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
 
 % We can't just use \exhyphenpenalty, because that only has effect at
@@ -1721,13 +1801,27 @@
 % sometimes \x has an active definition that messes things up.
 %
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\questChar = `\?
+\chardef\semiChar  = `\;
+%
 \catcode`@=11
-  \def\frenchspacing{%
+  \def\plainfrenchspacing{%
     \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
     \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
   }
 \catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
 
 \def\t#1{%
-  {\tt \rawbackslash \frenchspacing #1}%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
   \null
 }
@@ -1766,5 +1860,5 @@
     %
     \rawbackslash
-    \frenchspacing
+    \plainfrenchspacing
     #1%
   }%
@@ -1786,6 +1880,12 @@
   %
   \global\def\code{\begingroup
-    \catcode`\-=\active \let-\codedash
-    \catcode`\_=\active \let_\codeunder
+    \catcode`\-=\active  \catcode`\_=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
     \codex
   }
@@ -1807,4 +1907,26 @@
 \def\codex #1{\tclose{#1}\endgroup}
 
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+% 
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+  \fi\fi
+}
+
 % @kbd is like @code, except that if the argument is just one @key command,
 % then @kbd has no effect.
@@ -1814,14 +1936,14 @@
 %   or `code' (@kbd uses normal tty font always).
 \parseargdef\kbdinputstyle{%
-  \def\arg{#1}%
-  \ifx\arg\worddistinct
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
     \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\arg\wordexample
+  \else\ifx\txiarg\wordexample
     \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\arg\wordcode
+  \else\ifx\txiarg\wordcode
     \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
   \else
     \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle option `\arg'}%
+    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
   \fi\fi\fi
 }
@@ -1839,6 +1961,6 @@
 \else{\tclose{\kbdfont\look}}\fi}
 
-% For @url, @env, @command quotes seem unnecessary, so use \code.
-\let\url=\code
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
 \let\env=\code
 \let\command=\code
@@ -1872,4 +1994,8 @@
 \endgroup}
 
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
 % rms does not like angle brackets --karl, 17may97.
 % So now @email is just like @uref, unless we are pdf.
@@ -1913,4 +2039,8 @@
 \def\ii#1{{\it #1}}             % italic font
 
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+% 
 \def\acronym#1{\doacronym #1,,\finish}
 \def\doacronym#1,#2,#3\finish{%
@@ -1922,7 +2052,67 @@
 }
 
-% @pounds{} is a sterling sign, which is in the CM italic font.
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
 % 
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
 \def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+% 
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+% 
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+% 
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+% 
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+% 
+% 
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  % 
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  % 
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  % 
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename 
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else 
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
 
 % @registeredsymbol - R in a circle.  The font for the R should really
@@ -1935,4 +2125,12 @@
     }$%
 }
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+% 
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
 
 
@@ -2038,5 +2236,5 @@
 % @author should come last, but may come many times.
 % It can also be used inside @quotation.
-% 
+%
 \parseargdef\author{%
   \def\temp{\quotation}%
@@ -2241,15 +2439,11 @@
     \nobreak \vskip-\parskip
     %
-    % Stop a page break at the \parskip glue coming up.  (Unfortunately
-    % we can't prevent a possible page break at the following
-    % \baselineskip glue.)  However, if what follows is an environment
-    % such as @example, there will be no \parskip glue; then
-    % the negative vskip we just would cause the example and the item to
-    % crash together.  So we use this bizarre value of 10001 as a signal
-    % to \aboveenvbreak to insert \parskip glue after all.
-    % (Possibly there are other commands that could be followed by
-    % @example which need the same treatment, but not section titles; or
-    % maybe section titles are the only special case and they should be
-    % penalty 10001...)
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    % 
     \penalty 10001
     \endgroup
@@ -2277,13 +2471,24 @@
 \envdef\table{%
   \let\itemindex\gobble
-  \tablex
+  \tablecheck{table}%
 }
 \envdef\ftable{%
   \def\itemindex ##1{\doind {fn}{\code{##1}}}%
-  \tablex
+  \tablecheck{ftable}%
 }
 \envdef\vtable{%
   \def\itemindex ##1{\doind {vr}{\code{##1}}}%
-  \tablex
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
 }
 \def\tablex#1{%
@@ -2538,5 +2743,5 @@
 % #1 is the @columnfraction, usually a decimal number like .5, but might
 % be just 1.  We just use it, whatever it is.
-% 
+%
 \def\pickupwholefraction#1 {%
   \global\advance\colcount by 1
@@ -2596,5 +2801,8 @@
   %
   % @item within a multitable starts a normal row.
-  \let\item\crcr
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
   %
   \tolerance=9500
@@ -2681,17 +2889,15 @@
 }
 
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
 \ifdim\multitablelinespace=0pt
 \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
 \global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
+\fi
 %% Test to see if parskip is larger than space between lines of
 %% table. If not, do nothing.
@@ -2751,4 +2957,5 @@
 \def\doignore#1{\begingroup
   % Scan in ``verbatim'' mode:
+  \obeylines
   \catcode`\@ = \other
   \catcode`\{ = \other
@@ -2762,5 +2969,5 @@
   %
   % Swallow text until we reach the matching `@end #1'.
-  \dodoignore {#1}%
+  \dodoignore{#1}%
 }
 
@@ -2769,9 +2976,10 @@
   %
   \gdef\dodoignore#1{%
-    % #1 contains the string `ifinfo'.
+    % #1 contains the command name as a string, e.g., `ifinfo'.
     %
-    % Define a command to find the next `@end #1', which must be on a line
-    % by itself.
-    \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
+    % Define a command to find the next `@end #1'.
+    \long\def\doignoretext##1^^M@end #1{%
+      \doignoretextyyy##1^^M@#1\_STOP_}%
+    %
     % And this command to find another #1 command, at the beginning of a
     % line.  (Otherwise, we would consider a line `@c @ifset', for
@@ -2780,5 +2988,4 @@
     %
     % And now expand that command.
-    \obeylines %
     \doignoretext ^^M%
   }%
@@ -2798,5 +3005,5 @@
 
 % We have to swallow the remaining "\_STOP_".
-% 
+%
 \def\doignoretextzzz#1{%
   \ifnum\doignorecount = 0	% We have just found the outermost @end.
@@ -2810,5 +3017,10 @@
 
 % Finish off ignored text.
-\def\enddoignore{\endgroup\ignorespaces}
+{ \obeylines%
+  % Ignore anything after the last `@end #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
 
 
@@ -2923,7 +3135,6 @@
 
 % Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
 
 % \newindex {foo} defines an index named foo.
@@ -3011,4 +3222,5 @@
 %
 \def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
   \def\@{@}% change to @@ when we switch to @ as escape char in index files.
   \def\ {\realbackslash\space }%
@@ -3019,31 +3231,12 @@
   \let\} = \myrbrace
   %
-  % \definedummyword defines \#1 as \realbackslash #1\space, thus
-  % effectively preventing its expansion.  This is used only for control
-  % words, not control letters, because the \space would be incorrect
-  % for control characters, but is needed to separate the control word
-  % from whatever follows.
-  %
-  % For control letters, we have \definedummyletter, which omits the
-  % space.
-  %
-  % These can be used both for control words that take an argument and
-  % those that do not.  If it is followed by {arg} in the input, then
-  % that will dutifully get written to the index (or wherever).
-  %
-  \def\definedummyword##1{%
-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
-  }%
-  \def\definedummyletter##1{%
-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
-  }%
-  %
   % Do the redefinitions.
   \commondummies
 }
 
-% For the aux file, @ is the escape character.  So we want to redefine
-% everything using @ instead of \realbackslash.  When everything uses
-% @, this will be simpler.
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
 %
 \def\atdummies{%
@@ -3053,142 +3246,149 @@
   \let\} = \rbraceatcmd
   %
-  % (See comments in \indexdummies.)
-  \def\definedummyword##1{%
-    \expandafter\def\csname ##1\endcsname{@##1\space}%
-  }%
-  \def\definedummyletter##1{%
-    \expandafter\def\csname ##1\endcsname{@##1}%
-  }%
-  %
   % Do the redefinitions.
   \commondummies
-}
-
-% Called from \indexdummies and \atdummies.  \definedummyword and
-% \definedummyletter must be defined first.
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
 %
 \def\commondummies{%
   %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control% words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\L
+  \definedummyword\OE
+  \definedummyword\O
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\l
+  \definedummyword\oe
+  \definedummyword\o
+  \definedummyword\ss
+  \definedummyword\exclamdown
+  \definedummyword\questiondown
+  \definedummyword\ordf
+  \definedummyword\ordm
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\minus
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\result
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
   \normalturnoffactive
-  %
-  \commondummiesnofonts
-  %
-  \definedummyletter{_}%
-  %
-  % Non-English letters.
-  \definedummyword{AA}%
-  \definedummyword{AE}%
-  \definedummyword{L}%
-  \definedummyword{OE}%
-  \definedummyword{O}%
-  \definedummyword{aa}%
-  \definedummyword{ae}%
-  \definedummyword{l}%
-  \definedummyword{oe}%
-  \definedummyword{o}%
-  \definedummyword{ss}%
-  \definedummyword{exclamdown}%
-  \definedummyword{questiondown}%
-  \definedummyword{ordf}%
-  \definedummyword{ordm}%
-  %
-  % Although these internal commands shouldn't show up, sometimes they do.
-  \definedummyword{bf}%
-  \definedummyword{gtr}%
-  \definedummyword{hat}%
-  \definedummyword{less}%
-  \definedummyword{sf}%
-  \definedummyword{sl}%
-  \definedummyword{tclose}%
-  \definedummyword{tt}%
-  %
-  \definedummyword{LaTeX}%
-  \definedummyword{TeX}%
-  %
-  % Assorted special characters.
-  \definedummyword{bullet}%
-  \definedummyword{copyright}%
-  \definedummyword{registeredsymbol}%
-  \definedummyword{dots}%
-  \definedummyword{enddots}%
-  \definedummyword{equiv}%
-  \definedummyword{error}%
-  \definedummyword{expansion}%
-  \definedummyword{minus}%
-  \definedummyword{pounds}%
-  \definedummyword{point}%
-  \definedummyword{print}%
-  \definedummyword{result}%
   %
   % Handle some cases of @value -- where it does not contain any
   % (non-fully-expandable) commands.
   \makevalueexpandable
-  %
-  % Normal spaces, not active ones.
-  \unsepspaces
-  %
-  % No macro expansion.
-  \turnoffmacros
 }
 
 % \commondummiesnofonts: common to \commondummies and \indexnofonts.
 %
-% Better have this without active chars.
-{
-  \catcode`\~=\other
-  \gdef\commondummiesnofonts{%
-    % Control letters and accents.
-    \definedummyletter{!}%
-    \definedummyletter{"}%
-    \definedummyletter{'}%
-    \definedummyletter{*}%
-    \definedummyletter{,}%
-    \definedummyletter{.}%
-    \definedummyletter{/}%
-    \definedummyletter{:}%
-    \definedummyletter{=}%
-    \definedummyletter{?}%
-    \definedummyletter{^}%
-    \definedummyletter{`}%
-    \definedummyletter{~}%
-    \definedummyword{u}%
-    \definedummyword{v}%
-    \definedummyword{H}%
-    \definedummyword{dotaccent}%
-    \definedummyword{ringaccent}%
-    \definedummyword{tieaccent}%
-    \definedummyword{ubaraccent}%
-    \definedummyword{udotaccent}%
-    \definedummyword{dotless}%
-    %
-    % Texinfo font commands.
-    \definedummyword{b}%
-    \definedummyword{i}%
-    \definedummyword{r}%
-    \definedummyword{sc}%
-    \definedummyword{t}%
-    %
-    % Commands that take arguments.
-    \definedummyword{acronym}%
-    \definedummyword{cite}%
-    \definedummyword{code}%
-    \definedummyword{command}%
-    \definedummyword{dfn}%
-    \definedummyword{emph}%
-    \definedummyword{env}%
-    \definedummyword{file}%
-    \definedummyword{kbd}%
-    \definedummyword{key}%
-    \definedummyword{math}%
-    \definedummyword{option}%
-    \definedummyword{samp}%
-    \definedummyword{strong}%
-    \definedummyword{tie}%
-    \definedummyword{uref}%
-    \definedummyword{url}%
-    \definedummyword{var}%
-    \definedummyword{verb}%
-    \definedummyword{w}%
-  }
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sc
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\acronym
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
 }
 
@@ -3199,8 +3399,10 @@
 %
 \def\indexnofonts{%
-  \def\definedummyword##1{%
-    \expandafter\let\csname ##1\endcsname\asis
-  }%
-  \let\definedummyletter=\definedummyword
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % Hopefully, all control words can become @asis.
+  \let\definedummyword\definedummyaccent
   %
   \commondummiesnofonts
@@ -3239,4 +3441,5 @@
   % (The following {} will end up in the sort string, but that's ok.)
   \def\bullet{bullet}%
+  \def\comma{,}%
   \def\copyright{copyright}%
   \def\registeredsymbol{R}%
@@ -3245,4 +3448,5 @@
   \def\equiv{==}%
   \def\error{error}%
+  \def\euro{euro}%
   \def\expansion{==>}%
   \def\minus{-}%
@@ -3251,4 +3455,16 @@
   \def\print{-|}%
   \def\result{=>}%
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  % 
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  % 
+  \macrolist
 }
 
@@ -3297,5 +3513,4 @@
   % Remember, we are within a group.
   \indexdummies % Must do this here, since \bf, etc expand at this stage
-  \escapechar=`\\
   \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
       % so it will be output as is; and it will print as backslash.
@@ -3371,9 +3586,10 @@
   %
   \ifx\lastskipmacro\zeroskipmacro
-    % if \lastskip was zero, perhaps the last item was a
-    % penalty, and perhaps it was >=10000, e.g., a \nobreak.
-    % In that case, we want to re-insert the penalty; since we
-    % just inserted a non-discardable item, any following glue
-    % (such as a \parskip) would be a breakpoint.  For example:
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    % 
     %   @deffn deffn-whatever
     %   @vindex index-whatever
@@ -3381,5 +3597,5 @@
     % would allow a break between the index-whatever whatsit
     % and the "Description." paragraph.
-    \ifnum\count255>9999 \nobreak \fi
+    \ifnum\count255>9999 \penalty\count255 \fi
   \else
     % On the other hand, if we had a nonzero \lastskip,
@@ -3479,5 +3695,8 @@
   %
   % We like breaks before the index initials, so insert a bonus.
-  \penalty -300
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
   %
   % Typeset the initial.  Making this add up to a whole number of
@@ -3489,8 +3708,7 @@
   \vskip 1.67\baselineskip plus .5\baselineskip
   \leftline{\secbf #1}%
-  \vskip .33\baselineskip plus .1\baselineskip
-  %
   % Do our best not to break after the initial.
   \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
 }}
 
@@ -3504,5 +3722,5 @@
 % @code, which sets - active.  This problem was fixed by a kludge---
 % ``-'' was active throughout whole index, but this isn't really right.
-% 
+%
 % The right solution is to prevent \entry from swallowing the whole text.
 %                                 --kasal, 21nov03
@@ -3770,5 +3988,5 @@
 % construct for the sake of pdftex, which needs the actual
 % letter in the expansion, not just typeset.
-% 
+%
 \def\appendixletter{%
   \ifnum\appendixno=`A A%
@@ -3907,9 +4125,9 @@
 % @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
 % all lower-level sectioning counters to zero.
-% 
+%
 % Also set \chaplevelprefix, which we prepend to @float sequence numbers
 % (e.g., figures), q.v.  By default (before any chapter), that is empty.
 \let\chaplevelprefix = \empty
-% 
+%
 \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
 \def\chapterzzz#1{%
@@ -4135,8 +4353,8 @@
 
 % Chapter opening.
-% 
+%
 % #1 is the text, #2 is the section type (Ynumbered, Ynothing,
 % Yappendix, Yomitfromtoc), #3 the chapter number.
-% 
+%
 % To test against our argument.
 \def\Ynothingkeyword{Ynothing}
@@ -4161,9 +4379,9 @@
       \setbox0 = \hbox{}%
       \def\toctype{unnchap}%
-      \def\thischapter{#1}%
+      \gdef\thischapter{#1}%
     \else\ifx\temptype\Yomitfromtockeyword
       \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
       \def\toctype{omit}%
-      \xdef\thischapter{}%
+      \gdef\thischapter{}%
     \else\ifx\temptype\Yappendixkeyword
       \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
@@ -4214,5 +4432,5 @@
 % I don't think this chapter style is supported any more, so I'm not
 % updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
-% 
+%
 \def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
 %
@@ -4238,5 +4456,5 @@
 % Section titles.  These macros combine the section number parts and
 % call the generic \sectionheading to do the printing.
-% 
+%
 \newskip\secheadingskip
 \def\secheadingbreak{\dobreak \secheadingskip{-1000}}
@@ -4252,9 +4470,9 @@
 
 % Print any size, any type, section title.
-% 
+%
 % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
 % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
 % section number.
-% 
+%
 \def\sectionheading#1#2#3#4{%
   {%
@@ -4289,10 +4507,18 @@
     \fi\fi\fi
     %
-    % Write the toc entry (before \donoderef).  See comments in \chfplain.
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
     \writetocentry{\toctype\sectionlevel}{#1}{#4}%
     %
     % Write the node reference (= pdf destination for pdftex).
-    % Again, see comments in \chfplain.
+    % Again, see comments in \chapmacro.
     \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
     %
     % Output the actual section heading.
@@ -4313,12 +4539,12 @@
   % discardable item.)
   \vskip-\parskip
-  %
-  % This \nobreak is purely so the last item on the list is a \penalty
-  % of 10000.  This is so other code, for instance \parsebodycommon, can
-  % check for and avoid allowing breakpoints.  Otherwise, it would
-  % insert a valid breakpoint between:
+  % 
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  % 
   %   @section sec-whatever
   %   @deffn def-whatever
-  \nobreak
+  \penalty 10001
 }
 
@@ -4329,6 +4555,6 @@
 
 % Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.  
-% 
+% Called from @chapter, etc.
+%
 % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
 % We append the current node name (if any) and page number as additional
@@ -4336,5 +4562,5 @@
 % read this.  The node name is used in the pdf outlines as the
 % destination to jump to.
-% 
+%
 % We open the .toc file for writing here instead of at @setfilename (or
 % any other fixed time) so that @contents can be anywhere in the document.
@@ -4354,9 +4580,9 @@
     %
     \iflinks
-      \toks0 = {#2}%
-      \toks2 = \expandafter{\lastnode}%
-      \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
-                               {\the\toks2}{\noexpand\folio}}}%
-      \temp
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }%
     \fi
   \fi
@@ -4371,4 +4597,29 @@
 }
 
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+% 
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \jobname.toc
+}
+
 \newskip\contentsrightmargin \contentsrightmargin=1in
 \newcount\savepageno
@@ -4392,9 +4643,5 @@
   \savepageno = \pageno
   \begingroup                  % Set up to handle contents files properly.
-    \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
-    % We can't do this, because then an actual ^ in a section
-    % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97.
-    %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
-    \raggedbottom             % Worry more about breakpoints than the bottom.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
     \advance\hsize by -\contentsrightmargin % Don't use the full line length.
     %
@@ -4409,5 +4656,5 @@
     \openin 1 \jobname.toc
     \ifeof 1 \else
-      \input \jobname.toc
+      \readtocfile
     \fi
     \vfill \eject
@@ -4447,5 +4694,5 @@
     \openin 1 \jobname.toc
     \ifeof 1 \else
-      \input \jobname.toc
+      \readtocfile
     \fi
     \closein 1
@@ -4467,5 +4714,5 @@
   % (This space doesn't include the extra space that gets added after
   % the label; that gets put in by \shortchapentry above.)
-  % 
+  %
   % We'd like to right-justify chapter numbers, but that looks strange
   % with appendix letters.  And right-justifying numbers and
@@ -4492,5 +4739,5 @@
 % Appendices, in the main contents.
 % Need the word Appendix, and a fixed-size box.
-% 
+%
 \def\appendixbox#1{%
   % We use M since it's probably the widest letter.
@@ -4637,4 +4884,5 @@
   \let\*=\ptexstar
   \let\t=\ptext
+  \let\frenchspacing=\plainfrenchspacing
   %
   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
@@ -4665,5 +4913,6 @@
 %
 \def\aboveenvbreak{{%
-  % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
   \ifnum \lastpenalty=10000 \else
     \advance\envskipamount by \parskip
@@ -4681,5 +4930,6 @@
 \let\afterenvbreak = \aboveenvbreak
 
-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins.
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
 \let\nonarrowing=\relax
 
@@ -4718,5 +4968,5 @@
   \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
   % Flag to tell @lisp, etc., not to narrow margin.
-  \let\nonarrowing=\comment
+  \let\nonarrowing = t%
   \vbox\bgroup
       \baselineskip=0pt\parskip=0pt\lineskip=0pt
@@ -4758,9 +5008,9 @@
   \parindent = 0pt
   \emergencystretch = 0pt % don't try to avoid overfull boxes
-  % @cartouche defines \nonarrowing to inhibit narrowing
-  % at next level down.
   \ifx\nonarrowing\relax
     \advance \leftskip by \lispnarrowing
     \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
   \fi
   \let\exdent=\nofillexdent
@@ -4862,4 +5112,5 @@
     \advance\rightskip by \lispnarrowing
     \exdentamount = \lispnarrowing
+  \else
     \let\nonarrowing = \relax
   \fi
@@ -4869,5 +5120,5 @@
 % We have retained a nonzero parskip for the environment, since we're
 % doing normal filling.
-% 
+%
 \def\Equotation{%
   \par
@@ -4954,6 +5205,6 @@
 \endgroup
 \def\setupverbatim{%
+  \let\nonarrowing = t%
   \nonfillstart
-  \advance\leftskip by -\defbodyindent
   % Easiest (and conventionally used) font for verbatim
   \tt
@@ -5026,6 +5277,5 @@
 
 % @copying ... @end copying.
-% Save the text away for @insertcopying later.  Many commands won't be
-% allowed in this context, but that's ok.
+% Save the text away for @insertcopying later.
 %
 % We save the uninterpreted tokens, rather than creating a box.
@@ -5036,60 +5286,12 @@
 % possible is very desirable.
 %
-\def\copying{\begingroup
-  % Define a command to swallow text until we reach `@end copying'.
-  % \ is the escape char in this texinfo.tex file, so it is the
-  % delimiter for the command; @ will be the escape char when we read
-  % it, but that doesn't matter.
-  \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
-  %
-  % We must preserve ^^M's in the input file; see \insertcopying below.
-  \catcode`\^^M = \active
-  \docopying
-}
-
-% What we do to finish off the copying text.
-%
-\def\enddocopying{\endgroup\ignorespaces}
-
-% @insertcopying.  Here we must play games with ^^M's.  On the one hand,
-% we need them to delimit commands such as `@end quotation', so they
-% must be active.  On the other hand, we certainly don't want every
-% end-of-line to be a \par, as would happen with the normal active
-% definition of ^^M.  On the third hand, two ^^M's in a row should still
-% generate a \par.
-%
-% Our approach is to make ^^M insert a space and a penalty1 normally;
-% then it can also check if \lastpenalty=1.  If it does, then manually
-% do \par.
-%
-% This messes up the normal definitions of @c[omment], so we redefine
-% it.  Similarly for @ignore.  (These commands are used in the gcc
-% manual for man page generation.)
-%
-% Seems pretty fragile, most line-oriented commands will presumably
-% fail, but for the limited use of getting the copying text (which
-% should be quite simple) inserted, we can hope it's ok.
-%
-{\catcode`\^^M=\active %
-\gdef\insertcopying{\begingroup %
-  \parindent = 0pt  % looks wrong on title page
-  \def^^M{%
-    \ifnum \lastpenalty=1 %
-      \par %
-    \else %
-      \space \penalty 1 %
-    \fi %
-  }%
-  %
-  % Fix @c[omment] for catcode 13 ^^M's.
-  \def\c##1^^M{\ignorespaces}%
-  \let\comment = \c %
-  %
-  % Don't bother jumping through all the hoops that \doignore does, it
-  % would be very hard since the catcodes are already set.
-  \long\def\ignore##1\end ignore{\ignorespaces}%
-  %
-  \copyingtext %
-\endgroup}%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
 }
 
@@ -5109,8 +5311,9 @@
     % which is there to keep the function description together with its
     % header.  But if there's nothing but headers, we need to allow a
-    % break somewhere.  Check for penalty 10002 (inserted by
-    % \defargscommonending) instead of 10000, since the sectioning
-    % commands insert a \penalty10000, and we don't want to allow a break
-    % between a section heading and a defun.
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \defargscommonending, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    % 
     \ifnum\lastpenalty=10002 \penalty2000 \fi
     %
@@ -5272,5 +5475,5 @@
 % #2 is the return type, if any.
 % #3 is the function name.
-% 
+%
 % We are followed by (but not passed) the arguments, if any.
 %
@@ -5330,7 +5533,7 @@
 % the argument list (groff manual), and ttsl and tt are not very
 % distinguishable.  Prevent hyphenation at `-' chars.
-% 
+%
 \def\defunargs#1{%
-  % use sl by default (not ttsl), 
+  % use sl by default (not ttsl),
   % tt for the names.
   \df \sl \hyphenchar\font=0
@@ -5436,5 +5639,5 @@
   \newwrite\macscribble
   \def\scantokens#1{%
-    \toks0={#1\endinput}%
+    \toks0={#1}%
     \immediate\openout\macscribble=\jobname.tmp
     \immediate\write\macscribble{\the\toks0}%
@@ -5449,5 +5652,9 @@
     \let\xeatspaces\eatspaces
     % Undo catcode changes of \startcontents and \doprintindex
-    \catcode`\@=0 \catcode`\\=\other \escapechar=`\@
+    % When called from @insertcopying or (short)caption, we need active
+    % backslash to get it printed correctly.  Previously, we had
+    % \catcode`\\=\other instead.  We'll see whether a problem appears
+    % with macro expansion.				--kasal, 19aug04
+    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
     % ... and \example
     \spaceisspace
@@ -5461,18 +5668,36 @@
 }
 
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
 \newcount\paramno   % Count of parameters
 \newtoks\macname    % Macro name
 \newif\ifrecursive  % Is it recursive?
-\def\macrolist{}    % List of all defined macros in the form
-                    % \do\macro1\do\macro2...
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
 
 % Utility routines.
-% This does \let #1 = #2, except with \csnames.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+% 
 \def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\endcsname
-\csname#2\endcsname}
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
 
 % Trim leading and trailing spaces off a string.
@@ -5501,28 +5726,34 @@
 % body, and then making it the \newlinechar in \scanmacro.
 
-\def\macrobodyctxt{%
-  \catcode`\~=\other
+\def\scanctxt{%
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
   \catcode`\^=\other
   \catcode`\_=\other
   \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
+  \catcode`\~=\other
+}
+
+\def\scanargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+  \scanctxt
   \catcode`\{=\other
   \catcode`\}=\other
-  \catcode`\@=\other
   \catcode`\^^M=\other
-  \usembodybackslash}
+  \usembodybackslash
+}
 
 \def\macroargctxt{%
-  \catcode`\~=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
-  \catcode`\@=\other
-  \catcode`\\=\other}
+  \scanctxt
+  \catcode`\\=\other
+}
 
 % \mbodybackslash is the definition of \ in @macro bodies.
@@ -5555,8 +5786,5 @@
      \global\cslet{macsave.\the\macname}{\the\macname}%
      \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
-     % Add the macroname to \macrolist
-     \toks0 = \expandafter{\macrolist\do}%
-     \xdef\macrolist{\the\toks0
-       \expandafter\noexpand\csname\the\macname\endcsname}%
+     \addtomacrolist{\the\macname}%
   \fi
   \begingroup \macrobodyctxt
@@ -5572,5 +5800,5 @@
     \begingroup
       \expandafter\let\csname#1\endcsname \relax
-      \let\do\unmacrodo
+      \let\definedummyword\unmacrodo
       \xdef\macrolist{\macrolist}%
     \endgroup
@@ -5584,8 +5812,8 @@
 %
 \def\unmacrodo#1{%
-  \ifx#1\relax
+  \ifx #1\relax
     % remove this
   \else
-    \noexpand\do \noexpand #1%
+    \noexpand\definedummyword \noexpand#1%
   \fi
 }
@@ -5700,14 +5928,9 @@
 % line.  Whatever was read is then fed to the next control sequence
 % as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
 \def\braceorlinexxx{%
   \ifx\nchar\bgroup\else
     \expandafter\parsearg
-  \fi \next}
-
-% We mant to disable all macros during \shipout so that they are not
-% expanded by \write.
-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
-  \edef\next{\macrolist}\expandafter\endgroup\next}
+  \fi \macnamexxx}
 
 
@@ -5720,4 +5943,5 @@
   {%
     \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
     \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
   }%
@@ -5739,7 +5963,16 @@
 
 % @node's only job in TeX is to define \lastnode, which is used in
-% cross-references.
-\parseargdef\node{\checkenv{}\nodexxx #1,\finishnodeparse}
-\def\nodexxx#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
 \let\nwnode=\node
 \let\lastnode=\empty
@@ -5747,5 +5980,5 @@
 % Write a cross-reference definition for the current node.  #1 is the
 % type (Ynumbered, Yappendix, Ynothing).
-% 
+%
 \def\donoderef#1{%
   \ifx\lastnode\empty\else
@@ -5770,9 +6003,9 @@
 %                 empty for anchors.
 % 3) NAME-pg    - the page number.
-% 
+%
 % This is called from \donoderef, \anchor, and \dofloat.  In the case of
 % floats, there is an additional part, which is not written here:
 % 4) NAME-lof   - the text as it should appear in a @listoffloats.
-% 
+%
 \def\setref#1#2{%
   \pdfmkdest{#1}%
@@ -5780,6 +6013,4 @@
     {%
       \atdummies  % preserve commands, but don't expand them
-      \turnoffactive
-      \otherbackslash
       \edef\writexrdef##1##2{%
 	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
@@ -5835,11 +6066,15 @@
     \leavevmode
     \getfilename{#4}%
-    {\turnoffactive \otherbackslash
+    {\turnoffactive
+     % See comments at \activebackslashdouble.
+     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+      \backslashparens\pdfxrefdest}%
+     %
      \ifnum\filenamelength>0
        \startlink attr{/Border [0 0 0]}%
-         goto file{\the\filename.pdf} name{#1}%
+         goto file{\the\filename.pdf} name{\pdfxrefdest}%
      \else
        \startlink attr{/Border [0 0 0]}%
-         goto name{\pdfmkpgn{#1}}%
+         goto name{\pdfmkpgn{\pdfxrefdest}}%
      \fi
     }%
@@ -5855,5 +6090,4 @@
     \indexnofonts
     \turnoffactive
-    \otherbackslash
     \expandafter\global\expandafter\let\expandafter\Xthisreftitle
       \csname XR#1-title\endcsname
@@ -5863,5 +6097,5 @@
     % print it instead of our usual "Figure 1.2".
     \ifdim\wd0 = 0pt
-      \refx{#1-snt}%
+      \refx{#1-snt}{}%
     \else
       \printedrefname
@@ -5869,5 +6103,5 @@
     %
     % if the user also gave the printed manual name (fifth arg), append
-    % "in MANUALNAME". 
+    % "in MANUALNAME".
     \ifdim \wd1 > 0pt
       \space \putwordin{} \cite{\printedmanual}%
@@ -5875,5 +6109,5 @@
   \else
     % node/anchor (non-float) references.
-    % 
+    %
     % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
     % insert empty discretionaries after hyphens, which means that it will
@@ -5890,5 +6124,5 @@
       % printing. So we \turnoffactive for the \refx-snt, back on for the
       % printing, back off for the \refx-pg.
-      {\turnoffactive \otherbackslash
+      {\turnoffactive
        % Only output a following space if the -snt ref is nonempty; for
        % @unnumbered and @anchor, it won't be.
@@ -5903,5 +6137,5 @@
       %
       % output the `page 3'.
-      \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
     \fi
   \fi
@@ -5986,5 +6220,5 @@
     \expandafter\let\expandafter\floatlist
       \csname floatlist\iffloattype\endcsname
-    % 
+    %
     % Is this the first time we've seen this float type?
     \expandafter\ifx\floatlist\relax
@@ -6002,9 +6236,9 @@
 
 % Read the last existing aux file, if any.  No error if none exists.
-% 
+%
 \def\tryauxfile{%
   \openin 1 \jobname.aux
   \ifeof 1 \else
-    \readauxfile
+    \readdatafile{aux}%
     \global\havexrefstrue
   \fi
@@ -6012,5 +6246,5 @@
 }
 
-\def\readauxfile{\begingroup
+\def\setupdatafile{%
   \catcode`\^^@=\other
   \catcode`\^^A=\other
@@ -6081,9 +6315,9 @@
   % Make the characters 128-255 be printing characters.
   {%
-    \count 1=128
+    \count1=128
     \def\loop{%
-      \catcode\count 1=\other
-      \advance\count 1 by 1
-      \ifnum \count 1<256 \loop \fi
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
     }%
   }%
@@ -6093,8 +6327,11 @@
   \catcode`\}=2
   \catcode`\@=0
-  %
-  \input \jobname.aux
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
 \endgroup}
-
 
 \message{insertions,}
@@ -6290,5 +6527,5 @@
     \nobreak\vskip\parskip
     \nobreak
-    \line\bgroup\hss
+    \line\bgroup
   \fi
   %
@@ -6303,24 +6540,27 @@
   \fi
   %
-  \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image
+  \ifimagevmode \egroup \bigbreak \fi  % space after the image
 \endgroup}
 
 
-% @float FLOATTYPE,LOC ... @end float for displayed figures, tables, etc.
-% We don't actually implement floating yet, we just plop the float "here".
-% But it seemed the best name for the future.
-% 
-\envparseargdef\float{\dofloat #1,,,\finish}
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
 
 % #1 is the optional FLOATTYPE, the text label for this float, typically
 % "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
 % this float will not be numbered and cannot be referred to.
-% 
+%
 % #2 is the optional xref label.  Also must be present for the float to
 % be referable.
-% 
+%
 % #3 is the optional positioning argument; for now, it is ignored.  It
 % will somehow specify the positions allowed to float to (here, top, bottom).
-% 
+%
 % We keep a separate counter for each FLOATTYPE, which we reset at each
 % chapter-level command.
@@ -6332,4 +6572,8 @@
   %
   % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
   \startsavinginserts
   %
@@ -6358,5 +6602,5 @@
       % We want each FLOATTYPE to be numbered separately (Figure 1,
       % Table 1, Figure 2, ...).  (And if no label, no number.)
-      % 
+      %
       \expandafter\getfloatno\csname\safefloattype floatno\endcsname
       \global\advance\floatno by 1
@@ -6368,5 +6612,5 @@
         % node and anchor labels.  And \xrdef uses it to construct the
         % lists of floats.
-        % 
+        %
         \edef\thissection{\floatmagic=\safefloattype}%
         \setref{\floatlabel}{Yfloat}%
@@ -6416,5 +6660,5 @@
       %
       % caption text.
-      \appendtomacro\captionline\thiscaption
+      \appendtomacro\captionline{\scanexp\thiscaption}%
     \fi
     %
@@ -6424,4 +6668,7 @@
       \vskip.5\parskip
       \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
     \fi
     %
@@ -6433,36 +6680,45 @@
       % caption if specified, else the full caption if specified, else nothing.
       {%
-        \atdummies \turnoffactive \otherbackslash
-        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{%
-          \floatident
-          \ifx\thisshortcaption\empty
-            \ifx\thiscaption\empty \else : \thiscaption \fi
-          \else
-            : \thisshortcaption
-          \fi
-        }}%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+	\scanexp{%
+	  \xdef\noexpand\gtemp{%
+	    \ifx\thisshortcaption\empty
+	      \thiscaption
+	    \else
+	      \thisshortcaption
+	    \fi
+	  }%
+	}%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+	  \ifx\gtemp\empty \else : \gtemp \fi}}%
       }%
     \fi
-    %
-    % Space below caption, if we printed anything.
-    \ifx\printedsomething\empty \else \vskip\parskip \fi
   \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
   \checkinserts
 }
 
 % Append the tokens #2 to the definition of macro #1, not expanding either.
-% 
-\newtoks\appendtomacroAtoks
-\newtoks\appendtomacroBtoks
+%
 \def\appendtomacro#1#2{%
-  \appendtomacroAtoks = \expandafter{#1}%
-  \appendtomacroBtoks = {#2}%
-  \edef#1{\the\appendtomacroAtoks \the\appendtomacroBtoks}%
-}
-
-% @caption, @shortcaption are easy.
-% 
-\long\def\caption#1{\checkenv\float \def\thiscaption{#1}}
-\def\shortcaption#1{\checkenv\float \def\thisshortcaption{#1}}
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
 
 % The parameter is the control sequence identifying the counter we are
@@ -6483,5 +6739,5 @@
 % to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
 % first read the @float command.
-% 
+%
 \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
 
@@ -6493,10 +6749,10 @@
 % which is true if #1 represents a float ref.  That is, the magic
 % \thissection value which we \setref above.
-% 
+%
 \def\iffloat#1{\expandafter\doiffloat#1==\finish}
 %
 % #1 is (maybe) the \floatmagic string.  If so, #2 will be the
 % (safe) float type for this float.  We set \iffloattype to #2.
-% 
+%
 \def\doiffloat#1=#2=#3\finish{%
   \def\temp{#1}%
@@ -6506,5 +6762,5 @@
 
 % @listoffloats FLOATTYPE - print a list of floats like a table of contents.
-% 
+%
 \parseargdef\listoffloats{%
   \def\floattype{#1}% floattype
@@ -6536,8 +6792,8 @@
 % aux file.  We strip off the -title and look up \XRLABEL-lof, which
 % has the text we're supposed to typeset here.
-% 
+%
 % Figures without xref labels will not be included in the list (since
 % they won't appear in the aux file).
-% 
+%
 \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
 \def\listoffloatsdoentry#1-title\finish{{%
@@ -6616,7 +6872,7 @@
 }
 
-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
-% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
-% physical page width.
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
 %
 % We also call \setleading{\textleading}, so the caller should define
@@ -6665,5 +6921,5 @@
 }}
 
-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
+% Use @smallbook to reset parameters for 7x9.25 trim size.
 \def\smallbook{{\globaldefs = 1
   \parskip = 2pt plus 1pt
@@ -6680,4 +6936,22 @@
   \contentsrightmargin = 0pt
   \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
 }}
 
@@ -6834,4 +7108,5 @@
 \catcode`\_=\active
 \def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
 % Subroutine for the previous macro.
 \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
@@ -6856,4 +7131,11 @@
 \def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
 
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
 \catcode`\@=0
 
@@ -6863,25 +7145,27 @@
 \global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
 
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+
 % \rawbackslash defines an active \ to do \backslashcurfont.
 % \otherbackslash defines an active \ to be a literal `\' character with
 % catcode other.
-{\catcode`\\=\active
- @gdef@rawbackslash{@let\=@backslashcurfont}
- @gdef@otherbackslash{@let\=@realbackslash}
-}
-
-% \realbackslash is an actual character `\' with catcode other.
-{\catcode`\\=\other @gdef@realbackslash{\}}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\backslashcurfont}}
-
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{%
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+% 
+@def@normalturnoffactive{%
+  @let\=@normalbackslash
   @let"=@normaldoublequote
-  @let\=@realbackslash
   @let~=@normaltilde
   @let^=@normalcaret
@@ -6895,10 +7179,4 @@
 }
 
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.  (Thus, \ is not expandable when this is in
-% effect.)
-%
-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
-
 % Make _ and + \other characters, temporarily.
 % This is canceled by @fixbackslash.
@@ -6913,7 +7191,7 @@
 
 % On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
+% the first `\' in the file would cause an error. This macro tries to fix
 % that, assuming it is called before the first `\' could plausibly occur.
-% Also back turn on active characters that might appear in the input
+% Also turn back on active characters that might appear in the input
 % file name, in case not using a pre-dumped format.
 %
Index: trunk/src/gmake/config/wchar_t.m4
===================================================================
--- trunk/src/gmake/config/wchar_t.m4	(revision 503)
+++ trunk/src/gmake/config/wchar_t.m4	(revision 503)
@@ -0,0 +1,22 @@
+# wchar_t.m4 serial 1 (gettext-0.12)
+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+  AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
+    [AC_TRY_COMPILE([#include <stddef.h>
+       wchar_t foo = (wchar_t)'\0';], ,
+       gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
+  if test $gt_cv_c_wchar_t = yes; then
+    AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
+  fi
+])
Index: trunk/src/gmake/config/wint_t.m4
===================================================================
--- trunk/src/gmake/config/wint_t.m4	(revision 503)
+++ trunk/src/gmake/config/wint_t.m4	(revision 503)
@@ -0,0 +1,22 @@
+# wint_t.m4 serial 1 (gettext-0.12)
+dnl Copyright (C) 2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+  AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
+    [AC_TRY_COMPILE([#include <wchar.h>
+       wint_t foo = (wchar_t)'\0';], ,
+       gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
+  if test $gt_cv_c_wint_t = yes; then
+    AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
+  fi
+])
Index: trunk/src/gmake/config/xsize.m4
===================================================================
--- trunk/src/gmake/config/xsize.m4	(revision 503)
+++ trunk/src/gmake/config/xsize.m4	(revision 503)
@@ -0,0 +1,14 @@
+# xsize.m4 serial 2
+dnl Copyright (C) 2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+AC_DEFUN([gl_XSIZE],
+[
+  dnl Prerequisites of lib/xsize.h.
+  AC_REQUIRE([gl_SIZE_MAX])
+  AC_CHECK_HEADERS(stdint.h)
+])
Index: trunk/src/gmake/configh.dos
===================================================================
--- trunk/src/gmake/configh.dos	(revision 466)
+++ trunk/src/gmake/configh.dos	(revision 503)
@@ -1,2 +1,19 @@
+/* configh.dos -- hand-massaged config.h file for MS-DOS builds         -*-C-*-
+
+Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+2004, 2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* Many things are defined already by a system header.  */
@@ -77,5 +94,5 @@
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU make 3.81beta1"
+#define PACKAGE_STRING "GNU make 3.81"
 
 /* Define to the one symbol short name of this package. */
@@ -83,5 +100,5 @@
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "3.81beta1"
+#define PACKAGE_VERSION "3.81"
 
 /* Define to 1 if the C compiler supports function prototypes. */
@@ -92,5 +109,5 @@
 
 /* Version number of package */
-#define VERSION "3.81beta1"
+#define VERSION "3.81"
 
 /* Build host information. */
Index: trunk/src/gmake/configure
===================================================================
--- trunk/src/gmake/configure	(revision 466)
+++ trunk/src/gmake/configure	(revision 503)
@@ -1,6 +1,6 @@
 #! /bin/sh
-# From configure.in Id: configure.in,v 1.125 2004/03/06 08:05:19 psmith Exp .
+# From configure.in Id: configure.in,v 1.142 2006/04/01 06:36:40 psmith Exp .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for GNU make 3.81beta1.
+# Generated by GNU Autoconf 2.59 for GNU make 3.81.
 #
 # Report bugs to <bug-make@gnu.org>.
@@ -271,6 +271,6 @@
 PACKAGE_NAME='GNU make'
 PACKAGE_TARNAME='make'
-PACKAGE_VERSION='3.81beta1'
-PACKAGE_STRING='GNU make 3.81beta1'
+PACKAGE_VERSION='3.81'
+PACKAGE_STRING='GNU make 3.81'
 PACKAGE_BUGREPORT='bug-make@gnu.org'
 
@@ -313,5 +313,5 @@
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP AR PERL build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP U ANSI2KNR MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB ALLOCA LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS REMOTE USE_CUSTOMS_TRUE USE_CUSTOMS_FALSE GLOBINC GLOBLIB USE_LOCAL_GLOB_TRUE USE_LOCAL_GLOB_FALSE MAKE_HOST LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP AR PERL build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP U ANSI2KNR MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB ALLOCA LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS REMOTE USE_CUSTOMS_TRUE USE_CUSTOMS_FALSE GLOBINC GLOBLIB USE_LOCAL_GLOB_TRUE USE_LOCAL_GLOB_FALSE MAKE_HOST WINDOWSENV_TRUE WINDOWSENV_FALSE LTLIBOBJS'
 ac_subst_files='MAINT_MAKEFILE'
 
@@ -782,5 +782,5 @@
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU make 3.81beta1 to adapt to many kinds of systems.
+\`configure' configures GNU make 3.81 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -848,5 +848,5 @@
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU make 3.81beta1:";;
+     short | recursive ) echo "Configuration of GNU make 3.81:";;
    esac
   cat <<\_ACEOF
@@ -860,4 +860,6 @@
   --disable-rpath         do not hardcode runtime library paths
   --disable-largefile     omit support for large files
+  --enable-case-insensitive-file-system
+                          enable case insensitive file system support
   --disable-job-server    disallow recursive make communication during -jN
 
@@ -975,5 +977,5 @@
       echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi
-    cd $ac_popdir
+    cd "$ac_popdir"
   done
 fi
@@ -982,5 +984,5 @@
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU make configure 3.81beta1
+GNU make configure 3.81
 generated by GNU Autoconf 2.59
 
@@ -996,5 +998,5 @@
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU make $as_me 3.81beta1, which was
+It was created by GNU make $as_me 3.81, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
@@ -1367,5 +1369,5 @@
 
 # Automake setup
-am__api_version="1.8"
+am__api_version="1.9"
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -1519,11 +1521,19 @@
 
 if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
@@ -1641,5 +1651,5 @@
 # Define the identity of the package.
  PACKAGE='make'
- VERSION='3.81beta1'
+ VERSION='3.81'
 
 
@@ -1668,7 +1678,4 @@
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
 
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
@@ -1764,4 +1771,11 @@
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
 
 
@@ -2337,6 +2351,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -2396,6 +2409,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -2513,6 +2525,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -2568,6 +2579,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -2614,6 +2624,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -2659,6 +2668,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -2835,7 +2843,12 @@
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
         am_cv_CC_dependencies_compiler_type=$depmode
         break
@@ -3474,6 +3487,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -3529,6 +3541,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -3595,6 +3606,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -3766,6 +3776,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -3830,6 +3839,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -4026,6 +4034,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -4542,9 +4549,10 @@
       # but apparently some GNU ld's only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
-      if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-	test "$with_gnu_ld" != no && break
-      else
-	test "$with_gnu_ld" != yes && break
-      fi
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break ;;
+      *)
+	test "$with_gnu_ld" != yes && break ;;
+      esac
     fi
   done
@@ -4572,9 +4580,10 @@
 else
   # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-  acl_cv_prog_gnu_ld=yes
-else
-  acl_cv_prog_gnu_ld=no
-fi
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac
 fi
 echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
@@ -5072,6 +5081,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5164,6 +5172,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5215,6 +5222,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5682,6 +5688,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5737,6 +5742,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5925,6 +5929,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5955,6 +5958,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6026,6 +6028,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6079,6 +6080,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6151,6 +6151,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6204,6 +6203,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6279,6 +6277,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6334,6 +6331,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6402,6 +6398,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6575,6 +6570,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6648,6 +6642,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6703,6 +6696,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6775,6 +6767,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6830,6 +6821,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6956,6 +6946,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -6998,6 +6987,7 @@
 
 
+
 for ac_header in stdlib.h locale.h unistd.h limits.h fcntl.h string.h \
-		 memory.h sys/param.h sys/time.h sys/timeb.h
+		 memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -7032,6 +7022,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7195,6 +7184,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7490,6 +7478,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7561,6 +7548,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7661,6 +7647,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7730,6 +7715,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7791,6 +7775,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7869,6 +7852,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7940,6 +7922,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8017,6 +7998,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8072,6 +8052,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8115,5 +8094,60 @@
 
 # Check for DOS-style pathnames.
-pds_AC_DOS_PATHS
+
+    echo "$as_me:$LINENO: checking whether system uses MSDOS-style paths" >&5
+echo $ECHO_N "checking whether system uses MSDOS-style paths... $ECHO_C" >&6
+if test "${ac_cv_dos_paths+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        cat >conftest.$ac_ext <<_ACEOF
+
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__
+neither MSDOS nor Windows nor OS2
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_dos_paths=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_dos_paths=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_dos_paths" >&5
+echo "${ECHO_T}$ac_cv_dos_paths" >&6
+
+    if test x"$ac_cv_dos_paths" = xyes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DOS_PATHS 1
+_ACEOF
+
+    fi
+
 
 # See if we have a standard version of gettimeofday().  Since actual
@@ -8198,8 +8232,15 @@
 
 
+
+
+
+
+
+
 for ac_func in memcpy memmove strchr strdup mkstemp mktemp fdopen \
-	        bsd_signal dup2 getcwd sigsetmask sigaction getgroups \
-		seteuid setegid setlinebuf setreuid setregid setvbuf pipe \
-		strerror strsignal
+	        bsd_signal dup2 getcwd realpath sigsetmask sigaction \
+                getgroups seteuid setegid setlinebuf setreuid setregid \
+                getrlimit setrlimit setvbuf pipe strerror strsignal \
+		lstat readlink atexit
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -8269,6 +8310,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8336,6 +8376,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8376,6 +8415,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8557,6 +8595,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8639,6 +8676,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8781,6 +8817,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -8920,6 +8955,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -9106,6 +9140,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -9149,16 +9182,22 @@
 else
   cat >conftest.$ac_ext <<_ACEOF
-/* By Ruediger Kuhlmann. */
-      #include <sys/types.h>
-      #if HAVE_UNISTD_H
-      # include <unistd.h>
-      #endif
-      /* Some systems only have a dummy stub for fork() */
-      int main ()
-      {
-	if (fork() < 0)
-	  exit (1);
-	exit (0);
-      }
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	  /* By Ruediger Kuhlmann. */
+	  if (fork() < 0)
+	    exit (1);
+	  exit (0);
+
+  ;
+  return 0;
+}
 _ACEOF
 rm -f conftest$ac_exeext
@@ -9439,6 +9478,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -9534,6 +9572,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -9709,6 +9746,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -9811,6 +9847,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -9885,6 +9920,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -9965,6 +9999,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10035,6 +10068,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10104,6 +10136,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10179,6 +10210,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10284,6 +10314,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10360,6 +10389,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10513,6 +10541,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10582,6 +10609,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10760,6 +10786,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10837,6 +10862,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -10992,6 +11016,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11144,6 +11167,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11296,6 +11318,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11439,6 +11460,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11484,6 +11504,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11630,6 +11649,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11672,4 +11690,11 @@
 /* end confdefs.h.  */
 $ac_includes_default
+#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h.  */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+
 int
 main ()
@@ -11692,6 +11717,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11726,4 +11750,156 @@
   cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_SYS_SIGLIST 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether _sys_siglist is declared" >&5
+echo $ECHO_N "checking whether _sys_siglist is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl__sys_siglist+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h.  */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+
+int
+main ()
+{
+#ifndef _sys_siglist
+  char *p = (char *) _sys_siglist;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl__sys_siglist=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl__sys_siglist=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl__sys_siglist" >&5
+echo "${ECHO_T}$ac_cv_have_decl__sys_siglist" >&6
+if test $ac_cv_have_decl__sys_siglist = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SYS_SIGLIST 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SYS_SIGLIST 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether __sys_siglist is declared" >&5
+echo $ECHO_N "checking whether __sys_siglist is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl___sys_siglist+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h.  */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+
+int
+main ()
+{
+#ifndef __sys_siglist
+  char *p = (char *) __sys_siglist;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl___sys_siglist=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl___sys_siglist=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl___sys_siglist" >&5
+echo "${ECHO_T}$ac_cv_have_decl___sys_siglist" >&6
+if test $ac_cv_have_decl___sys_siglist = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___SYS_SIGLIST 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___SYS_SIGLIST 0
 _ACEOF
 
@@ -11769,6 +11945,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -11955,6 +12130,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12033,6 +12207,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12175,6 +12348,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12246,6 +12418,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12328,6 +12499,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12415,6 +12585,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12516,6 +12685,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12587,6 +12755,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12669,6 +12836,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12792,6 +12958,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12863,6 +13028,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -12982,6 +13146,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -13053,6 +13216,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -13138,6 +13300,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -13270,4 +13431,19 @@
 
 
+# See if the user asked to handle case insensitive file systems.
+
+
+
+# Check whether --enable-case-insensitive-file-system or --disable-case-insensitive-file-system was given.
+if test "${enable_case_insensitive_file_system+set}" = set; then
+  enableval="$enable_case_insensitive_file_system"
+  case_insensitive_fs="yes" cat >>confdefs.h <<\_ACEOF
+#define HAVE_CASE_INSENSITIVE_FS 1
+_ACEOF
+
+else
+  case_insensitive_fs="no"
+fi;
+
 # See if we can handle the job server feature, and if the user wants it.
 
@@ -13315,6 +13491,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -13340,17 +13515,18 @@
 echo "${ECHO_T}$make_cv_sa_restart" >&6
 
-# enable make_cv_sa_restart for OS/2
+if test "$make_cv_sa_restart" != no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SA_RESTART 1
+_ACEOF
+
+fi
+
+# enable make_cv_sa_restart for OS/2 so that the jobserver will be enabled,
+# but do it after HAVE_SA_RESTART has been defined.
 case "$host_os" in
   os2*) make_cv_sa_restart=yes ;;
 esac
 
-if test "$make_cv_sa_restart" != no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SA_RESTART 1
-_ACEOF
-
-fi
-
 case "$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/$make_cv_job_server" in
   yes/yes/yes/yes/yes)
@@ -13358,4 +13534,15 @@
 cat >>confdefs.h <<\_ACEOF
 #define MAKE_JOBSERVER 1
+_ACEOF
+;;
+esac
+
+# if we have both lstat() and readlink() then we can support symlink
+# timechecks.
+case "$ac_cv_func_lstat/$ac_cv_func_readlink" in
+  yes/yes)
+
+cat >>confdefs.h <<\_ACEOF
+#define MAKE_SYMLINKS 1
 _ACEOF
 ;;
@@ -13479,4 +13666,42 @@
 MAKE_HOST="$host"
 
+
+w32_target_env=no
+
+
+if false; then
+  WINDOWSENV_TRUE=
+  WINDOWSENV_FALSE='#'
+else
+  WINDOWSENV_TRUE='#'
+  WINDOWSENV_FALSE=
+fi
+
+
+case "$host" in
+  *-*-mingw32)
+
+
+if true; then
+  WINDOWSENV_TRUE=
+  WINDOWSENV_FALSE='#'
+else
+  WINDOWSENV_TRUE='#'
+  WINDOWSENV_FALSE=
+fi
+
+    w32_target_env=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define WINDOWS32 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DOS_PATHS 1
+_ACEOF
+
+    ;;
+esac
 
 # Include the Maintainer's Makefile section, if it's here.
@@ -13562,14 +13787,5 @@
 
 # Specify what files are to be created.
-# We only generate the build.sh if we have a build.sh.in; we won't have
-# one before we've created a distribution.
-
-                                                  ac_config_files="$ac_config_files Makefile glob/Makefile po/Makefile.in config/Makefile doc/Makefile"
-
-
-if test -f $srcdir/build.sh.in; then
-            ac_config_files="$ac_config_files build.sh"
-
-fi
+                                                            ac_config_files="$ac_config_files Makefile glob/Makefile po/Makefile.in config/Makefile doc/Makefile w32/Makefile"
 
 
@@ -13692,4 +13908,18 @@
 Usually this means the macro was only invoked conditionally." >&5
 echo "$as_me: error: conditional \"USE_LOCAL_GLOB\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WINDOWSENV\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WINDOWSENV\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WINDOWSENV\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WINDOWSENV\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
@@ -13966,5 +14196,5 @@
 cat >&5 <<_CSEOF
 
-This file was extended by GNU make $as_me 3.81beta1, which was
+This file was extended by GNU make $as_me 3.81, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
@@ -14029,5 +14259,5 @@
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-GNU make config.status 3.81beta1
+GNU make config.status 3.81
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@@ -14130,5 +14360,5 @@
 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 # Capture the value of obsolete ALL_LINGUAS because we need it to compute
-    # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
     # from automake.
     eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
@@ -14151,5 +14381,5 @@
   "config/Makefile" ) CONFIG_FILES="$CONFIG_FILES config/Makefile" ;;
   "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-  "build.sh" ) CONFIG_FILES="$CONFIG_FILES build.sh" ;;
+  "w32/Makefile" ) CONFIG_FILES="$CONFIG_FILES w32/Makefile" ;;
   "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
   "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
@@ -14251,5 +14481,4 @@
 s,@AUTOHEADER@,$AUTOHEADER,;t t
 s,@MAKEINFO@,$MAKEINFO,;t t
-s,@AMTAR@,$AMTAR,;t t
 s,@install_sh@,$install_sh,;t t
 s,@STRIP@,$STRIP,;t t
@@ -14260,4 +14489,7 @@
 s,@SET_MAKE@,$SET_MAKE,;t t
 s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
 s,@CC@,$CC,;t t
 s,@CFLAGS@,$CFLAGS,;t t
@@ -14317,4 +14549,6 @@
 s,@USE_LOCAL_GLOB_FALSE@,$USE_LOCAL_GLOB_FALSE,;t t
 s,@MAKE_HOST@,$MAKE_HOST,;t t
+s,@WINDOWSENV_TRUE@,$WINDOWSENV_TRUE,;t t
+s,@WINDOWSENV_FALSE@,$WINDOWSENV_FALSE,;t t
 s,@LTLIBOBJS@,$LTLIBOBJS,;t t
 /@MAINT_MAKEFILE@/r $MAINT_MAKEFILE
@@ -14486,9 +14720,4 @@
   esac
 
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
   # Let's still pretend it is `configure' which instantiates (i.e., don't
   # use $as_me), people would be surprised to read:
@@ -14529,4 +14758,10 @@
       esac
     done` || { (exit 1); exit 1; }
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
@@ -14942,25 +15177,19 @@
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
   DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
   test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
   # When using ansi2knr, U may be empty or an underscore; expand it
   U=`sed -n 's/^U = //p' < "$mf"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # We invoke sed twice because it is the simplest approach to
-  # changing $(DEPDIR) to its actual value in the expansion.
-  for file in `sed -n '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
     # Make sure the directory exists.
@@ -15033,5 +15262,5 @@
           cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ 	]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
           POMAKEFILEDEPS="POTFILES.in"
-          # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
           # on $ac_dir but don't depend on user-specified configuration
           # parameters.
@@ -15049,4 +15278,12 @@
             eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
           fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
           case "$ac_given_srcdir" in
             .) srcdirpre= ;;
@@ -15054,12 +15291,12 @@
           esac
           POFILES=
-          GMOFILES=
           UPDATEPOFILES=
           DUMMYPOFILES=
+          GMOFILES=
           for lang in $ALL_LINGUAS; do
             POFILES="$POFILES $srcdirpre$lang.po"
-            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
             UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
             DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
           done
           # CATALOGS depends on both $ac_dir and the user's LINGUAS
@@ -15096,5 +15333,5 @@
           fi
           test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
-          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
           for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
             if test -f "$f"; then
@@ -15143,3 +15380,9 @@
 
 
-
+# We only generate the build.sh if we have a build.sh.in; we won't have
+# one before we've created a distribution.
+if test -f "$srcdir/build.sh.in"; then
+  ./config.status --file build.sh
+  chmod +x build.sh
+fi
+
Index: trunk/src/gmake/configure.bat
===================================================================
--- trunk/src/gmake/configure.bat	(revision 466)
+++ trunk/src/gmake/configure.bat	(revision 503)
@@ -1,3 +1,21 @@
 @echo off
+rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+rem 2004, 2005, 2006 Free Software Foundation, Inc.
+rem This file is part of GNU Make.
+
+rem GNU Make is free software; you can redistribute it and/or modify it under
+rem the terms of the GNU General Public License as published by the Free
+rem Software Foundation; either version 2, or (at your option) any later
+rem version.
+
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+rem more details.
+
+rem You should have received a copy of the GNU General Public License along
+rem with GNU Make; see the file COPYING.  If not, write to the Free Software
+rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 echo Configuring MAKE for DJGPP
 
Index: trunk/src/gmake/configure.in
===================================================================
--- trunk/src/gmake/configure.in	(revision 466)
+++ trunk/src/gmake/configure.in	(revision 503)
@@ -1,8 +1,24 @@
 # Process this file with autoconf to produce a configure script.
-
-AC_INIT([GNU make],[3.81beta3],[bug-make@gnu.org])
+#
+# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+AC_INIT([GNU make],[3.81],[bug-make@gnu.org])
 
 AC_PREREQ(2.59)
-AC_REVISION([[$Id: configure.in,v 1.135 2005/05/10 01:38:18 psmith Exp $]])
+AC_REVISION([[$Id: configure.in,v 1.142 2006/04/01 06:36:40 psmith Exp $]])
 
 # Autoconf setup
@@ -12,5 +28,5 @@
 
 # Automake setup
-AM_INIT_AUTOMAKE([1.8.2])
+AM_INIT_AUTOMAKE([1.9])
 
 # Checks for programs.
@@ -138,5 +154,5 @@
                 getgroups seteuid setegid setlinebuf setreuid setregid \
                 getrlimit setrlimit setvbuf pipe strerror strsignal \
-		lstat readlink)
+		lstat readlink atexit)
 
 AC_FUNC_SETVBUF_REVERSED
@@ -168,6 +184,7 @@
 fi
 
-AC_CHECK_DECLS([sys_siglist],,,
-[#include <signal.h>
+AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
+  [AC_INCLUDES_DEFAULT
+#include <signal.h>
 /* NetBSD declares sys_siglist in unistd.h.  */
 #if HAVE_UNISTD_H
@@ -434,5 +451,5 @@
 # We only generate the build.sh if we have a build.sh.in; we won't have
 # one before we've created a distribution.
-if test -f build.sh.in; then
+if test -f "$srcdir/build.sh.in"; then
   ./config.status --file build.sh
   chmod +x build.sh
Index: trunk/src/gmake/debug.h
===================================================================
--- trunk/src/gmake/debug.h	(revision 466)
+++ trunk/src/gmake/debug.h	(revision 503)
@@ -1,21 +1,18 @@
 /* Debugging macros and interface.
-Copyright (C) 1999 Free Software Foundation, Inc.
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
-
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #define DB_NONE         (0x000)
Index: trunk/src/gmake/default.c
===================================================================
--- trunk/src/gmake/default.c	(revision 466)
+++ trunk/src/gmake/default.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Data base of default implicit rules for GNU Make.
-Copyright (C) 1988,89,90,91,92,93,94,95,96 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
Index: trunk/src/gmake/dep.h
===================================================================
--- trunk/src/gmake/dep.h	(revision 466)
+++ trunk/src/gmake/dep.h	(revision 503)
@@ -1,20 +1,19 @@
 /* Definitions of dependency data structures for GNU Make.
-Copyright (C) 1988, 1989, 1991, 1992, 1993, 1996 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* Flag bits for the second argument to `read_makefile'.
@@ -30,5 +29,6 @@
 /* Structure representing one dependency of a file.
    Each struct file's `deps' points to a chain of these,
-   chained through the `next'.
+   chained through the `next'. `stem' is the stem for this
+   dep line of static pattern rule or NULL.
 
    Note that the first two words of this match a struct nameseq.  */
@@ -38,7 +38,9 @@
     struct dep *next;
     char *name;
+    char *stem;
     struct file *file;
     unsigned int changed : 8;
     unsigned int ignore_mtime : 1;
+    unsigned int staticpattern : 1;
     unsigned int need_2nd_expansion : 1;
   };
@@ -73,5 +75,8 @@
 #endif
 
-extern struct dep *copy_dep_chain PARAMS ((struct dep *d));
+extern struct dep *alloc_dep PARAMS ((void));
+extern void free_dep PARAMS ((struct dep *d));
+extern struct dep *copy_dep_chain PARAMS ((const struct dep *d));
+extern void free_dep_chain PARAMS ((struct dep *d));
 extern void free_ns_chain PARAMS ((struct nameseq *n));
 extern struct dep *read_all_makefiles PARAMS ((char **makefiles));
Index: trunk/src/gmake/dir.c
===================================================================
--- trunk/src/gmake/dir.c	(revision 466)
+++ trunk/src/gmake/dir.c	(revision 503)
@@ -1,21 +1,19 @@
 /* Directory hashing for GNU Make.
-Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-2002,2003 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -157,5 +155,9 @@
     {
       unsigned char uc = *name;
+#ifdef HAVE_CASE_INSENSITIVE_FS
       h = (h << 4) + (isupper (uc) ? tolower (uc) : uc);
+#else
+      h = (h << 4) + uc;
+#endif
       name++;
       g = h & 0xf0000000;
@@ -288,4 +290,15 @@
 }
 
+/* Sometimes it's OK to use subtraction to get this value:
+     result = X - Y;
+   But, if we're not sure of the type of X and Y they may be too large for an
+   int (on a 64-bit system for example).  So, use ?: instead.
+   See Savannah bug #15534.
+
+   NOTE!  This macro has side-effects!
+*/
+
+#define MAKECMP(_x,_y)  ((_x)<(_y)?-1:((_x)==(_y)?0:1))
+
 static int
 directory_contents_hash_cmp (const void *xv, const void *yv)
@@ -299,20 +312,20 @@
   if (result)
     return result;
-  result = x->ctime - y->ctime;
+  result = MAKECMP(x->ctime, y->ctime);
   if (result)
     return result;
 #else
 # ifdef VMS
-  result = x->ino[0] - y->ino[0];
+  result = MAKECMP(x->ino[0], y->ino[0]);
   if (result)
     return result;
-  result = x->ino[1] - y->ino[1];
+  result = MAKECMP(x->ino[1], y->ino[1]);
   if (result)
     return result;
-  result = x->ino[2] - y->ino[2];
+  result = MAKECMP(x->ino[2], y->ino[2]);
   if (result)
     return result;
 # else
-  result = x->ino - y->ino;
+  result = MAKECMP(x->ino, y->ino);
   if (result)
     return result;
@@ -320,5 +333,5 @@
 #endif /* WINDOWS32 */
 
-  return x->dev - y->dev;
+  return MAKECMP(x->dev, y->dev);
 }
 
@@ -419,7 +432,7 @@
   char  fs_label[BUFSIZ];
   char  fs_type[BUFSIZ];
-  long  fs_serno;
-  long  fs_flags;
-  long  fs_len;
+  unsigned long  fs_serno;
+  unsigned long  fs_flags;
+  unsigned long  fs_len;
 #endif
 #ifdef VMS
@@ -631,19 +644,26 @@
        * on directories (ugh!).
        */
-      if (dir->path_key
-	  && (dir->fs_flags & FS_FAT
-	      || (stat(dir->path_key, &st) == 0
-		  && st.st_mtime > dir->mtime)))
+      if (dir->path_key)
 	{
-	  /* reset date stamp to show most recent re-process */
-	  dir->mtime = st.st_mtime;
-
-	  /* make sure directory can still be opened */
-	  dir->dirstream = opendir(dir->path_key);
-
-	  if (dir->dirstream)
-	    rehash = 1;
-	  else
-	    return 0; /* couldn't re-read - fail */
+          if ((dir->fs_flags & FS_FAT) != 0)
+	    {
+	      dir->mtime = time ((time_t *) 0);
+	      rehash = 1;
+	    }
+	  else if (stat(dir->path_key, &st) == 0 && st.st_mtime > dir->mtime)
+	    {
+	      /* reset date stamp to show most recent re-process.  */
+	      dir->mtime = st.st_mtime;
+	      rehash = 1;
+	    }
+
+          /* If it has been already read in, all done.  */
+	  if (!rehash)
+	    return 0;
+
+          /* make sure directory can still be opened; if not return.  */
+          dir->dirstream = opendir(dir->path_key);
+          if (!dir->dirstream)
+            return 0;
 	}
       else
Index: trunk/src/gmake/doc/.cvsignore
===================================================================
--- trunk/src/gmake/doc/.cvsignore	(revision 466)
+++ 	(revision )
@@ -1,7 +1,0 @@
-Makefile Makefile.in
-fdl.texi make-stds.texi texinfo.tex
-make.info*
-make*.html
-make.aux make.cp make.cps make.fn make.fns make.ky
-make.pg make.toc make.tp make.vr make.log
-make.dvi make.ps make.pdf
Index: trunk/src/gmake/doc/Makefile.am
===================================================================
--- trunk/src/gmake/doc/Makefile.am	(revision 466)
+++ trunk/src/gmake/doc/Makefile.am	(revision 503)
@@ -1,3 +1,18 @@
 # -*-Makefile-*-, or close enough
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 TEXI2HTML = texi2html
Index: trunk/src/gmake/doc/Makefile.in
===================================================================
--- trunk/src/gmake/doc/Makefile.in	(revision 466)
+++ trunk/src/gmake/doc/Makefile.in	(revision 503)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,4 +16,19 @@
 
 # -*-Makefile-*-, or close enough
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -36,11 +51,18 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = doc
 DIST_COMMON = $(make_TEXINFOS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
+	$(srcdir)/Makefile.in $(srcdir)/stamp-vti \
+	$(srcdir)/version.texi
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
+	$(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
+	$(top_srcdir)/config/lib-ld.m4 \
+	$(top_srcdir)/config/lib-link.m4 \
+	$(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
+	$(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -134,4 +156,6 @@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+WINDOWSENV_FALSE = @WINDOWSENV_FALSE@
+WINDOWSENV_TRUE = @WINDOWSENV_TRUE@
 XGETTEXT = @XGETTEXT@
 ac_ct_CC = @ac_ct_CC@
@@ -143,4 +167,6 @@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
@@ -211,14 +237,12 @@
 
 .texi.info:
-	restore=: && \
-	backupdir="$(am__leading_dot)am$$$$" && \
+	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 	am__cwd=`pwd` && cd $(srcdir) && \
 	rm -rf $$backupdir && mkdir $$backupdir && \
-	for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-	  if test -f $$f; then \
-	    mv $$f $$backupdir; \
-	    restore=mv; \
-	  fi; \
-	done; \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
 	cd "$$am__cwd"; \
 	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
@@ -232,6 +256,5 @@
 	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
 	fi; \
-	rm -rf $$backupdir; \
-	exit $$rc
+	rm -rf $$backupdir; exit $$rc
 
 .texi.dvi:
@@ -246,17 +269,45 @@
 
 .texi.html:
-	$(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
-	 -o $@ $<
-	if test ! -d $@ && test -d $(@:.html=); then \
-	  mv $(@:.html=) $@; else :; fi
-$(srcdir)/make.info: make.texi $(make_TEXINFOS)
-make.dvi: make.texi $(make_TEXINFOS)
-make.pdf: make.texi $(make_TEXINFOS)
-make.html: make.texi $(make_TEXINFOS)
+	rm -rf $(@:.html=.htp)
+	if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+	 -o $(@:.html=.htp) $<; \
+	then \
+	  rm -rf $@; \
+	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+	    mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+	else \
+	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+	    rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+	  exit 1; \
+	fi
+$(srcdir)/make.info: make.texi $(srcdir)/version.texi $(make_TEXINFOS)
+make.dvi: make.texi $(srcdir)/version.texi $(make_TEXINFOS)
+make.pdf: make.texi $(srcdir)/version.texi $(make_TEXINFOS)
+make.html: make.texi $(srcdir)/version.texi $(make_TEXINFOS)
+$(srcdir)/version.texi:  $(srcdir)/stamp-vti
+$(srcdir)/stamp-vti: make.texi $(top_srcdir)/configure
+	@(dir=.; test -f ./make.texi || dir=$(srcdir); \
+	set `$(SHELL) $(top_srcdir)/config/mdate-sh $$dir/make.texi`; \
+	echo "@set UPDATED $$1 $$2 $$3"; \
+	echo "@set UPDATED-MONTH $$2 $$3"; \
+	echo "@set EDITION $(VERSION)"; \
+	echo "@set VERSION $(VERSION)") > vti.tmp
+	@cmp -s vti.tmp $(srcdir)/version.texi \
+	  || (echo "Updating $(srcdir)/version.texi"; \
+	      cp vti.tmp $(srcdir)/version.texi)
+	-@rm -f vti.tmp
+	@cp $(srcdir)/version.texi $@
+
+mostlyclean-vti:
+	-rm -f vti.tmp
+
+maintainer-clean-vti:
+	-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
 .dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	$(DVIPS) -o $@ $<
 
 uninstall-info-am:
-	$(PRE_UNINSTALL)
+	@$(PRE_UNINSTALL)
 	@if (install-info --version && \
 	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
@@ -274,5 +325,5 @@
 	  relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
 	  (if cd "$(DESTDIR)$(infodir)"; then \
-	     echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
+	     echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
 	     rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
 	   else :; fi); \
@@ -369,5 +420,5 @@
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
@@ -435,9 +486,9 @@
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-aminfo \
-	maintainer-clean-generic
+	maintainer-clean-generic maintainer-clean-vti
 
 mostlyclean: mostlyclean-am
 
-mostlyclean-am: mostlyclean-aminfo mostlyclean-generic
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
 
 pdf: pdf-am
@@ -457,7 +508,7 @@
 	install-man install-strip installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-aminfo \
-	maintainer-clean-generic mostlyclean mostlyclean-aminfo \
-	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
-	uninstall-info-am
+	maintainer-clean-generic maintainer-clean-vti mostlyclean \
+	mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
+	pdf-am ps ps-am uninstall uninstall-am uninstall-info-am
 
 
Index: trunk/src/gmake/doc/fdl.texi
===================================================================
--- trunk/src/gmake/doc/fdl.texi	(revision 466)
+++ trunk/src/gmake/doc/fdl.texi	(revision 503)
@@ -4,9 +4,9 @@
 
 @cindex FDL, GNU Free Documentation License
-@center Version 1.1, March 2000
+@center Version 1.2, November 2002
 
 @display
-Copyright @copyright{} 2000 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
+Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
+51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
 
 Everyone is permitted to copy and distribute verbatim copies
@@ -19,10 +19,10 @@
 
 The purpose of this License is to make a manual, textbook, or other
-written document @dfn{free} in the sense of freedom: to assure everyone
-the effective freedom to copy and redistribute it, with or without
-modifying it, either commercially or noncommercially.  Secondarily,
-this License preserves for the author and publisher a way to get
-credit for their work, while not being considered responsible for
-modifications made by others.
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
 
 This License is a kind of ``copyleft'', which means that derivative
@@ -42,9 +42,13 @@
 APPLICABILITY AND DEFINITIONS
 
-This License applies to any manual or other work that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License.  The ``Document'', below, refers to any
-such manual or work.  Any member of the public is a licensee, and is
-addressed as ``you''.
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document'', below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you''.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
 
 A ``Modified Version'' of the Document means any work containing the
@@ -52,11 +56,11 @@
 modifications and/or translated into another language.
 
-A ``Secondary Section'' is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject.  (For example, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.)  The relationship could be a matter of historical
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
 connection with the subject or with related matters, or of legal,
 commercial, philosophical, ethical or political position regarding
@@ -65,13 +69,18 @@
 The ``Invariant Sections'' are certain Secondary Sections whose titles
 are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
 
 The ``Cover Texts'' are certain short passages of text that are listed,
 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
 
 A ``Transparent'' copy of the Document means a machine-readable copy,
 represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
+general public, that is suitable for revising the document
 straightforwardly with generic text editors or (for images composed of
 pixels) generic paint programs or (for drawings) some widely available
@@ -79,18 +88,21 @@
 for automatic translation to a variety of formats suitable for input
 to text formatters.  A copy made in an otherwise Transparent file
-format whose markup has been designed to thwart or discourage
-subsequent modification by readers is not Transparent.  A copy that is
-not ``Transparent'' is called ``Opaque''.
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque''.
 
 Examples of suitable formats for Transparent copies include plain
-@sc{ascii} without markup, Texinfo input format, La@TeX{} input format,
-@acronym{SGML} or @acronym{XML} using a publicly available
-@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed
-for human modification.  Opaque formats include PostScript,
-@acronym{PDF}, proprietary formats that can be read and edited only by
-proprietary word processors, @acronym{SGML} or @acronym{XML} for which
-the @acronym{DTD} and/or processing tools are not generally available,
-and the machine-generated @acronym{HTML} produced by some word
-processors for output purposes only.
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification.  Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
 
 The ``Title Page'' means, for a printed book, the title page itself,
@@ -100,4 +112,19 @@
 the text near the most prominent appearance of the work's title,
 preceding the beginning of the body of the text.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
 
 @item
@@ -120,7 +147,8 @@
 COPYING IN QUANTITY
 
-If you publish printed copies of the Document numbering more than 100,
-and the Document's license notice requires Cover Texts, you must enclose
-the copies in covers that carry, clearly and legibly, all these Cover
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
 the back cover.  Both covers must also clearly and legibly identify
@@ -140,14 +168,13 @@
 more than 100, you must either include a machine-readable Transparent
 copy along with each Opaque copy, or state in or with each Opaque copy
-a publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols.  If you use the latter
-option, you must take reasonably prudent steps, when you begin
-distribution of Opaque copies in quantity, to ensure that this
-Transparent copy will remain thus accessible at the stated location
-until at least one year after the last time you distribute an Opaque
-copy (directly or through your agents or retailers) of that edition to
-the public.
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
 
 It is requested, but not required, that you contact the authors of the
@@ -177,5 +204,6 @@
 responsible for authorship of the modifications in the Modified
 Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has less than five).
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
 
 @item
@@ -203,8 +231,8 @@
 
 @item
-Preserve the section entitled ``History'', and its title, and add to
-it an item stating at least the title, year, new authors, and
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
 publisher of the Modified Version as given on the Title Page.  If
-there is no section entitled ``History'' in the Document, create one
+there is no section Entitled ``History'' in the Document, create one
 stating the title, year, authors, and publisher of the Document as
 given on its Title Page, then add an item describing the Modified
@@ -221,8 +249,8 @@
 
 @item
-In any section entitled ``Acknowledgments'' or ``Dedications'',
-preserve the section's title, and preserve in the section all the
-substance and tone of each of the contributor acknowledgments
-and/or dedications given therein.
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
 
 @item
@@ -232,10 +260,13 @@
 
 @item
-Delete any section entitled ``Endorsements''.  Such a section
+Delete any section Entitled ``Endorsements''.  Such a section
 may not be included in the Modified Version.
 
 @item
-Do not retitle any existing section as ``Endorsements''
-or to conflict in title with any Invariant Section.
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
 @end enumerate
 
@@ -247,5 +278,5 @@
 These titles must be distinct from any other section titles.
 
-You may add a section entitled ``Endorsements'', provided it contains
+You may add a section Entitled ``Endorsements'', provided it contains
 nothing but endorsements of your Modified Version by various
 parties---for example, statements of peer review or that the text has
@@ -275,5 +306,5 @@
 Invariant Sections of all of the original documents, unmodified, and
 list them all as Invariant Sections of your combined work in its
-license notice.
+license notice, and that you preserve all their Warranty Disclaimers.
 
 The combined work need only contain one copy of this License, and
@@ -286,9 +317,9 @@
 Invariant Sections in the license notice of the combined work.
 
-In the combination, you must combine any sections entitled ``History''
-in the various original documents, forming one section entitled
-``History''; likewise combine any sections entitled ``Acknowledgments'',
-and any sections entitled ``Dedications''.  You must delete all sections
-entitled ``Endorsements.''
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''.  You must delete all
+sections Entitled ``Endorsements.''
 
 @item
@@ -311,16 +342,18 @@
 A compilation of the Document or its derivatives with other separate
 and independent documents or works, in or on a volume of a storage or
-distribution medium, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation.  Such a compilation is called an ``aggregate'', and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-are not themselves derivative works of the Document.
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
 
 If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around the whole aggregate.
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
 
 @item
@@ -333,8 +366,15 @@
 translations of some or all Invariant Sections in addition to the
 original versions of these Invariant Sections.  You may include a
-translation of this License provided that you also include the
-original English version of this License.  In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
 
 @item
@@ -379,17 +419,26 @@
   Copyright (C)  @var{year}  @var{your name}.
   Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
+  under the terms of the GNU Free Documentation License, Version 1.2
   or any later version published by the Free Software Foundation;
-  with the Invariant Sections being @var{list their titles}, with the
-  Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
-  A copy of the license is included in the section entitled ``GNU
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
   Free Documentation License''.
 @end group
 @end smallexample
 
-If you have no Invariant Sections, write ``with no Invariant Sections''
-instead of saying which ones are invariant.  If you have no
-Front-Cover Texts, write ``no Front-Cover Texts'' instead of
-``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with...Texts.'' line with this:
+
+@smallexample
+@group
+    with the Invariant Sections being @var{list their titles}, with
+    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+    being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
 
 If your document contains nontrivial examples of program code, we
Index: trunk/src/gmake/doc/make-stds.texi
===================================================================
--- trunk/src/gmake/doc/make-stds.texi	(revision 466)
+++ trunk/src/gmake/doc/make-stds.texi	(revision 503)
@@ -9,6 +9,6 @@
 @cindex standards for makefiles
 
-@c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001 Free
-@c Software Foundation, Inc.
+@c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
+@c 2004, 2005 Free Software Foundation, Inc.
 
 @c Permission is granted to copy, distribute and/or modify this document
@@ -294,7 +294,16 @@
 Installation directories should always be named by variables, so it is
 easy to install in a nonstandard place.  The standard names for these
-variables are described below.  They are based on a standard filesystem
-layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
-and other modern operating systems.
+variables and the values they should have in GNU packages are
+described below.  They are based on a standard filesystem layout;
+variants of it are used in GNU/Linux and other modern operating
+systems.
+
+Installers are expected to override these values when calling
+@command{make} (e.g., @kbd{make prefix=/usr install} or
+@command{configure} (e.g., @kbd{configure --prefix=/usr}).  GNU
+packages should not try to guess which value should be appropriate for
+these variables on the system they are being installed onto: use the
+default settings specified here so that all GNU packages behave
+identically, allowing the installer to achieve any desired layout.
 
 These two variables set the root for the installation.  All the other
@@ -356,4 +365,10 @@
 @file{/usr/local/libexec}, but write it as @file{$(exec_prefix)/libexec}.
 (If you are using Autoconf, write it as @samp{@@libexecdir@@}.)
+
+The definition of @samp{libexecdir} is the same for all packages, so
+you should install your data in a subdirectory thereof.  Most packages
+install their data under @file{$(libexecdir)/@var{package-name}/},
+possibly within additional subdirectories thereof, such as
+@file{$(libexecdir)/@var{package-name}/@var{machine}/@var{version}}.
 @end table
 
@@ -378,15 +393,30 @@
 architecture-independent, and it is generally not hard.
 
-Therefore, here are the variables Makefiles should use to specify
-directories:
+Here are the variables Makefiles should use to specify directories
+to put these various kinds of files in:
 
 @table @samp
+@item datarootdir
+The root of the directory tree for read-only architecture-independent
+data files.  This should normally be @file{/usr/local/share}, but
+write it as @file{$(prefix)/share}.  (If you are using Autoconf, write
+it as @samp{@@datarootdir@@}.)  @samp{datadir}'s default value is
+based on this variable; so are @samp{infodir}, @samp{mandir}, and
+others.
+
 @item datadir
-The directory for installing read-only architecture independent data
-files.  This should normally be @file{/usr/local/share}, but write it as
-@file{$(prefix)/share}.
-(If you are using Autoconf, write it as @samp{@@datadir@@}.)
-As a special exception, see @file{$(infodir)}
-and @file{$(includedir)} below.
+The directory for installing idiosyncratic read-only
+architecture-independent data files for this program.  This is usually
+the same place as @samp{datarootdir}, but we use the two separate
+variables so that you can move these program-specific files without
+altering the location for Info files, man pages, etc.
+
+This should normally be @file{/usr/local/share}, but write it as
+@file{$(datarootdir)}.  (If you are using Autoconf, write it as
+@samp{@@datadir@@}.)
+
+The definition of @samp{datadir} is the same for all packages, so you
+should install your data in a subdirectory thereof.  Most packages
+install their data under @file{$(datadir)/@var{package-name}/}.
 
 @item sysconfdir
@@ -420,32 +450,12 @@
 @file{$(prefix)/var}.
 (If you are using Autoconf, write it as @samp{@@localstatedir@@}.)
-
-@item libdir
-The directory for object files and libraries of object code.  Do not
-install executables here, they probably ought to go in @file{$(libexecdir)}
-instead.  The value of @code{libdir} should normally be
-@file{/usr/local/lib}, but write it as @file{$(exec_prefix)/lib}.
-(If you are using Autoconf, write it as @samp{@@libdir@@}.)
-
-@item infodir
-The directory for installing the Info files for this package.  By
-default, it should be @file{/usr/local/info}, but it should be written
-as @file{$(prefix)/info}.
-(If you are using Autoconf, write it as @samp{@@infodir@@}.)
-
-@item lispdir
-The directory for installing any Emacs Lisp files in this package.  By
-default, it should be @file{/usr/local/share/emacs/site-lisp}, but it
-should be written as @file{$(prefix)/share/emacs/site-lisp}.
-
-If you are using Autoconf, write the default as @samp{@@lispdir@@}.
-In order to make @samp{@@lispdir@@} work, you need the following lines
-in your @file{configure.in} file:
-
-@example
-lispdir='$@{datadir@}/emacs/site-lisp'
-AC_SUBST(lispdir)
-@end example
-
+@end table
+
+These variables specify the directory for installing certain specific
+types of files, if your program has them.  Every GNU package should
+have Info files, so every program needs @samp{infodir}, but not all
+need @samp{libdir} or @samp{lispdir}.
+
+@table @samp
 @item includedir
 @c rewritten to avoid overfull hbox --roland
@@ -482,4 +492,61 @@
 To tell whether @file{foo.h} came from the Foo package, put a magic
 string in the file---part of a comment---and @code{grep} for that string.
+
+@item docdir
+The directory for installing documentation files (other than Info) for
+this package.  By default, it should be
+@file{/usr/local/share/doc/@var{yourpkg}}, but it should be written as
+@file{$(datarootdir)/doc/@var{yourpkg}}.  (If you are using Autoconf,
+write it as @samp{@@docdir@@}.)  The @var{yourpkg} subdirectory, which
+may include a version number, prevents collisions among files with
+common names, such as @file{README}.
+
+@item infodir
+The directory for installing the Info files for this package.  By
+default, it should be @file{/usr/local/share/info}, but it should be
+written as @file{$(datarootdir)/info}.  (If you are using Autoconf,
+write it as @samp{@@infodir@@}.)  @code{infodir} is separate from
+@code{docdir} for compatibility with existing practice.
+
+@item htmldir
+@itemx dvidir
+@itemx pdfdir
+@itemx psdir
+Directories for installing documentation files in the particular
+format.  (It is not required to support documentation in all these
+formats.)  They should all be set to @code{$(docdir)} by default.  (If
+you are using Autoconf, write them as @samp{@@htmldir@@},
+@samp{@@dvidir@@}, etc.)  Packages which supply several translations
+of their documentation should install them in
+@samp{$(htmldir)/}@var{ll}, @samp{$(pdfdir)/}@var{ll}, etc. where
+@var{ll} is a locale abbreviation such as @samp{en} or @samp{pt_BR}.
+
+@item libdir
+The directory for object files and libraries of object code.  Do not
+install executables here, they probably ought to go in @file{$(libexecdir)}
+instead.  The value of @code{libdir} should normally be
+@file{/usr/local/lib}, but write it as @file{$(exec_prefix)/lib}.
+(If you are using Autoconf, write it as @samp{@@libdir@@}.)
+
+@item lispdir
+The directory for installing any Emacs Lisp files in this package.  By
+default, it should be @file{/usr/local/share/emacs/site-lisp}, but it
+should be written as @file{$(datarootdir)/emacs/site-lisp}.
+
+If you are using Autoconf, write the default as @samp{@@lispdir@@}.
+In order to make @samp{@@lispdir@@} work, you need the following lines
+in your @file{configure.in} file:
+
+@example
+lispdir='$@{datarootdir@}/emacs/site-lisp'
+AC_SUBST(lispdir)
+@end example
+
+@item localedir
+The directory for installing locale-specific message catalogs for this
+package.  By default, it should be @file{/usr/local/share/locale}, but
+it should be written as @file{$(datarootdir)/locale}.  (If you are
+using Autoconf, write it as @samp{@@localedir@@}.)  This directory
+usually has a subdirectory per locale.
 @end table
 
@@ -489,7 +556,7 @@
 @item mandir
 The top-level directory for installing the man pages (if any) for this
-package.  It will normally be @file{/usr/local/man}, but you should
-write it as @file{$(prefix)/man}.
-(If you are using Autoconf, write it as @samp{@@mandir@@}.)
+package.  It will normally be @file{/usr/local/share/man}, but you
+should write it as @file{$(datarootdir)/man}.  (If you are using
+Autoconf, write it as @samp{@@mandir@@}.)
 
 @item man1dir
@@ -536,4 +603,6 @@
 # NOTE: This directory must exist when you start the install.
 prefix = /usr/local
+datarootdir = $(prefix)/share
+datadir = $(datarootdir)
 exec_prefix = $(prefix)
 # Where to put the executable for the command `gcc'.
@@ -542,5 +611,5 @@
 libexecdir = $(exec_prefix)/libexec
 # Where to put the Info files.
-infodir = $(prefix)/info
+infodir = $(datarootdir)/info
 @end smallexample
 
@@ -631,7 +700,25 @@
 Categories}.
 
+@item install-html
+@itemx install-dvi
+@itemx install-pdf
+@itemx install-ps
+These targets install documentation in formats other than Info;
+they're intended to be called explicitly by the person installing the
+package, if that format is desired.  GNU prefers Info files, so these
+must be installed by the @code{install} target.
+
+When you have many documentation files to install, we recommend that
+you avoid collisions and clutter by arranging for these targets to
+install in subdirectories of the appropriate installation directory,
+such as @code{htmldir}.  As one example, if your package has multiple
+manuals, and you wish to install HTML documentation with many files
+(such as the ``split'' mode output by @code{makeinfo --html}), you'll
+certainly want to use subdirectories, or two nodes with the same name
+in different manuals will overwrite each other.
+
 @item uninstall
 Delete all the installed files---the copies that the @samp{install}
-target creates.
+and @samp{install-*} targets create.
 
 This rule should not modify the directories where compilation is done,
@@ -669,16 +756,22 @@
 @item clean
 
-Delete all files from the current directory that are normally created by
-building the program.  Don't delete the files that record the
-configuration.  Also preserve files that could be made by building, but
-normally aren't because the distribution comes with them.
+Delete all files in the current directory that are normally created by
+building the program.  Also delete files in other directories if they
+are created by this makefile.  However, don't delete the files that
+record the configuration.  Also preserve files that could be made by
+building, but normally aren't because the distribution comes with
+them.  There is no need to delete parent directories that were created
+with @samp{mkdir -p}, since they could have existed anyway.
 
 Delete @file{.dvi} files here if they are not part of the distribution.
 
 @item distclean
-Delete all files from the current directory that are created by
-configuring or building the program.  If you have unpacked the source
-and built the program without creating any other files, @samp{make
-distclean} should leave only the files that were in the distribution.
+Delete all files in the current directory (or created by this
+makefile) that are created by configuring or building the program.  If
+you have unpacked the source and built the program without creating
+any other files, @samp{make distclean} should leave only the files
+that were in the distribution.  However, there is no need to delete
+parent directories that were created with @samp{mkdir -p}, since they
+could have existed anyway.
 
 @item mostlyclean
@@ -689,16 +782,19 @@
 
 @item maintainer-clean
-Delete almost everything from the current directory that can be
-reconstructed with this Makefile.  This typically includes everything
-deleted by @code{distclean}, plus more: C source files produced by
-Bison, tags tables, Info files, and so on.
+Delete almost everything that can be reconstructed with this Makefile.
+This typically includes everything deleted by @code{distclean}, plus
+more: C source files produced by Bison, tags tables, Info files, and
+so on.
 
 The reason we say ``almost everything'' is that running the command
-@samp{make maintainer-clean} should not delete @file{configure} even if
-@file{configure} can be remade using a rule in the Makefile.  More generally,
-@samp{make maintainer-clean} should not delete anything that needs to
-exist in order to run @file{configure} and then begin to build the
-program.  This is the only exception; @code{maintainer-clean} should
-delete everything else that can be rebuilt.
+@samp{make maintainer-clean} should not delete @file{configure} even
+if @file{configure} can be remade using a rule in the Makefile.  More
+generally, @samp{make maintainer-clean} should not delete anything
+that needs to exist in order to run @file{configure} and then begin to
+build the program.  Also, there is no need to delete parent
+directories that were created with @samp{mkdir -p}, since they could
+have existed anyway.  These are the only exceptions;
+@code{maintainer-clean} should delete everything else that can be
+rebuilt.
 
 The @samp{maintainer-clean} target is intended to be used by a maintainer of
@@ -744,6 +840,9 @@
 
 @item dvi
-Generate DVI files for all Texinfo documentation.
-For example:
+@itemx html
+@itemx pdf
+@itemx ps
+Generate documentation files in the given format, if possible.
+Here's an example rule for generating DVI files from Texinfo:
 
 @smallexample
@@ -760,4 +859,18 @@
 of formatting. @TeX{} is not distributed with Texinfo.}  Alternatively,
 write just the dependencies, and allow GNU @code{make} to provide the command.
+
+Here's another example, this one for generating HTML from Texinfo:
+
+@smallexample
+html: foo.html
+
+foo.html: foo.texi chap1.texi chap2.texi
+        $(TEXI2HTML) $(srcdir)/foo.texi
+@end smallexample
+
+@noindent
+Again, you would define the variable @code{TEXI2HTML} in the Makefile;
+for example, it might run @code{makeinfo --no-split --html}
+(@command{makeinfo} is part of the Texinfo distribution).
 
 @item dist
@@ -933,8 +1046,10 @@
 Programs to build binary packages work by extracting the
 pre-installation and post-installation commands.  Here is one way of
-extracting the pre-installation commands:
-
-@smallexample
-make -n install -o all \
+extracting the pre-installation commands (the @option{-s} option to
+@command{make} is needed to silence messages about entering
+subdirectories):
+
+@smallexample
+make -s -n install -o all \
       PRE_INSTALL=pre-install \
       POST_INSTALL=post-install \
@@ -947,9 +1062,6 @@
 
 @smallexample
-$0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ @{on = 0@}
+$0 ~ /^(normal-install|post-install)[ \t]*$/ @{on = 0@}
 on @{print $0@}
-$0 ~ /^\t[ \t]*pre_install[ \t]*$/ @{on = 1@}
-@end smallexample
-
-The resulting file of pre-installation commands is executed as a shell
-script as part of installing the binary package.
+$0 ~ /^pre-install[ \t]*$/ @{on = 1@}
+@end smallexample
Index: trunk/src/gmake/doc/make.info
===================================================================
--- trunk/src/gmake/doc/make.info	(revision 466)
+++ trunk/src/gmake/doc/make.info	(revision 503)
@@ -1,4 +1,26 @@
-This is ../../doc/make.info, produced by makeinfo version 4.6 from
-../../doc/make.texi.
+This is make.info, produced by makeinfo version 4.8 from make.texi.
+
+   This file documents the GNU `make' utility, which determines
+automatically which pieces of a large program need to be recompiled,
+and issues the commands to recompile them.
+
+   This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
+Manual', for GNU `make' version 3.81.
+
+   Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with the Front-Cover Texts
+     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     below.  A copy of the license is included in the section entitled
+     "GNU Free Documentation License."
+
+     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+     modify this GNU Manual, like GNU software.  Copies published by
+     the Free Software Foundation raise funds for GNU development."
 
 INFO-DIR-SECTION GNU Packages
@@ -7,167 +29,156 @@
 END-INFO-DIR-ENTRY
 
-   This file documents the GNU Make utility, which determines
-automatically which pieces of a large program need to be recompiled,
-and issues the commands to recompile them.
-
-   This is Edition 0.61, last updated 02 May 2003, of `The GNU Make
-Manual', for `make', Version 3.81.
-
-   Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts.  A copy of the license is included in the section entitled "GNU
-Free Documentation License".
-
 
 Indirect:
-make.info-1: 1017
-make.info-2: 300520
+make.info-1: 1297
+make.info-2: 301265
 
 Tag Table:
 (Indirect)
-Node: Top1017
-Node: Overview13551
-Node: Preparing14555
-Node: Reading15527
-Node: Bugs16446
-Node: Introduction18268
-Node: Rule Introduction19852
-Node: Simple Makefile21588
-Node: How Make Works25209
-Node: Variables Simplify27697
-Node: make Deduces29900
-Node: Combine By Prerequisite31647
-Node: Cleanup32678
-Node: Makefiles34089
-Node: Makefile Contents34972
-Node: Makefile Names37919
-Node: Include39518
-Ref: Include-Footnote-143069
-Node: MAKEFILES Variable43203
-Node: MAKEFILE_LIST Variable44705
-Node: Special Variables46024
-Node: Remaking Makefiles46759
-Node: Overriding Makefiles51001
-Node: Reading Makefiles53051
-Node: Rules55578
-Node: Rule Example58246
-Node: Rule Syntax59095
-Node: Prerequisite Types61316
-Node: Wildcards63084
-Node: Wildcard Examples64767
-Node: Wildcard Pitfall66011
-Node: Wildcard Function67793
-Node: Directory Search69570
-Node: General Search70704
-Node: Selective Search72407
-Node: Search Algorithm75383
-Node: Commands/Search77890
-Node: Implicit/Search79225
-Node: Libraries/Search80157
-Node: Phony Targets82239
-Node: Force Targets87215
-Node: Empty Targets88252
-Node: Special Targets89539
-Node: Multiple Targets96235
-Node: Multiple Rules98095
-Node: Static Pattern100321
-Node: Static Usage100963
-Node: Static versus Implicit104684
-Node: Double-Colon106414
-Node: Automatic Prerequisites108061
-Node: Commands112315
-Node: Echoing114004
-Node: Execution115282
-Ref: Execution-Footnote-1119708
-Node: Parallel119854
-Node: Errors123437
-Node: Interrupts127073
-Node: Recursion128652
-Node: MAKE Variable130735
-Node: Variables/Recursion132986
-Node: Options/Recursion138131
-Node: -w Option143284
-Node: Sequences144267
-Node: Empty Commands147268
-Node: Using Variables148434
-Node: Reference151541
-Node: Flavors153097
-Node: Advanced158881
-Node: Substitution Refs159378
-Node: Computed Names160924
-Node: Values165491
-Node: Setting166396
-Node: Appending168424
-Node: Override Directive172339
-Node: Defining173715
-Node: Environment176171
-Node: Target-specific178443
-Node: Pattern-specific181400
-Node: Conditionals182792
-Node: Conditional Example183498
-Node: Conditional Syntax186082
-Node: Testing Flags190950
-Node: Functions192044
-Node: Syntax of Functions193386
-Node: Text Functions195577
-Node: File Name Functions203727
-Node: Foreach Function208166
-Node: If Function211366
-Node: Call Function212634
-Node: Value Function215516
-Node: Eval Function216950
-Node: Origin Function219256
-Node: Shell Function222465
-Node: Make Control Functions224046
-Node: Running225476
-Node: Makefile Arguments227461
-Node: Goals228169
-Node: Instead of Execution232724
-Node: Avoiding Compilation236002
-Node: Overriding237969
-Node: Testing240259
-Node: Options Summary242136
-Node: Implicit Rules251567
-Node: Using Implicit253711
-Node: Catalogue of Rules257240
-Node: Implicit Variables266223
-Node: Chained Rules270449
-Node: Pattern Rules274448
-Node: Pattern Intro275974
-Node: Pattern Examples278822
-Node: Automatic Variables280617
-Node: Pattern Match288780
-Node: Match-Anything Rules290401
-Node: Canceling Rules294262
-Node: Last Resort294964
-Node: Suffix Rules296801
-Node: Implicit Rule Search300520
-Node: Archives304029
-Node: Archive Members304721
-Node: Archive Update306317
-Node: Archive Symbols308221
-Node: Archive Pitfalls309441
-Node: Archive Suffix Rules310154
-Node: Features311691
-Node: Missing320238
-Node: Makefile Conventions323968
-Node: Makefile Basics324748
-Node: Utilities in Makefiles327905
-Node: Command Variables330033
-Node: Directory Variables333593
-Node: Standard Targets344470
-Ref: Standard Targets-Footnote-1355724
-Node: Install Command Categories355824
-Node: Quick Reference360389
-Node: Error Messages370133
-Node: Complex Makefile377802
-Node: GNU Free Documentation License386482
-Node: Concept Index406374
-Node: Name Index451280
+Node: Top1297
+Node: Overview14702
+Node: Preparing15712
+Node: Reading16684
+Node: Bugs17611
+Node: Introduction19441
+Node: Rule Introduction21033
+Node: Simple Makefile22777
+Node: How Make Works26406
+Node: Variables Simplify29061
+Node: make Deduces31267
+Node: Combine By Prerequisite33007
+Node: Cleanup34036
+Node: Makefiles35455
+Node: Makefile Contents36421
+Node: Makefile Names39376
+Node: Include40987
+Ref: Include-Footnote-144619
+Node: MAKEFILES Variable44753
+Node: MAKEFILE_LIST Variable46263
+Node: Special Variables47531
+Node: Remaking Makefiles51038
+Node: Overriding Makefiles55287
+Node: Reading Makefiles57340
+Node: Secondary Expansion60244
+Node: Rules67678
+Node: Rule Example70350
+Node: Rule Syntax71207
+Node: Prerequisite Types73710
+Node: Wildcards75486
+Node: Wildcard Examples77204
+Node: Wildcard Pitfall78460
+Node: Wildcard Function80249
+Node: Directory Search82033
+Node: General Search83175
+Node: Selective Search84890
+Node: Search Algorithm87878
+Node: Commands/Search90397
+Node: Implicit/Search91743
+Node: Libraries/Search92687
+Node: Phony Targets94779
+Node: Force Targets99865
+Node: Empty Targets100910
+Node: Special Targets102208
+Node: Multiple Targets109382
+Node: Multiple Rules111257
+Node: Static Pattern113493
+Node: Static Usage114145
+Node: Static versus Implicit117866
+Node: Double-Colon119610
+Node: Automatic Prerequisites121267
+Node: Commands125545
+Node: Command Syntax126753
+Node: Splitting Lines128778
+Node: Variables in Commands131759
+Node: Echoing133086
+Node: Execution134378
+Ref: Execution-Footnote-1135629
+Node: Choosing the Shell135775
+Node: Parallel139744
+Node: Errors143337
+Node: Interrupts146983
+Node: Recursion148570
+Node: MAKE Variable150664
+Node: Variables/Recursion152931
+Node: Options/Recursion158372
+Node: -w Option163537
+Node: Sequences164532
+Node: Empty Commands167544
+Node: Using Variables168718
+Node: Reference171831
+Node: Flavors173390
+Node: Advanced179128
+Node: Substitution Refs179633
+Node: Computed Names181186
+Node: Values185730
+Node: Setting186643
+Node: Appending188679
+Node: Override Directive192605
+Node: Defining193989
+Node: Environment196453
+Node: Target-specific198702
+Node: Pattern-specific201669
+Node: Conditionals203071
+Node: Conditional Example203781
+Node: Conditional Syntax206358
+Node: Testing Flags212083
+Node: Functions213185
+Node: Syntax of Functions214605
+Node: Text Functions216804
+Node: File Name Functions225375
+Node: Conditional Functions230597
+Node: Foreach Function232971
+Node: Call Function236183
+Node: Value Function239068
+Node: Eval Function240505
+Node: Origin Function242779
+Node: Flavor Function245997
+Node: Shell Function247063
+Node: Make Control Functions248697
+Node: Running250366
+Node: Makefile Arguments252355
+Node: Goals253071
+Node: Instead of Execution257812
+Node: Avoiding Compilation261098
+Node: Overriding263073
+Node: Testing265371
+Node: Options Summary267256
+Node: Implicit Rules277382
+Node: Using Implicit279530
+Node: Catalogue of Rules283069
+Node: Implicit Variables292419
+Node: Chained Rules297254
+Node: Pattern Rules301265
+Node: Pattern Intro302801
+Node: Pattern Examples305698
+Node: Automatic Variables307507
+Node: Pattern Match314878
+Node: Match-Anything Rules316514
+Node: Canceling Rules320389
+Node: Last Resort321105
+Node: Suffix Rules322952
+Node: Implicit Rule Search326681
+Node: Archives330200
+Node: Archive Members330898
+Node: Archive Update332511
+Node: Archive Symbols334425
+Node: Archive Pitfalls335659
+Node: Archive Suffix Rules336382
+Node: Features337929
+Node: Missing346484
+Node: Makefile Conventions350222
+Node: Makefile Basics351008
+Node: Utilities in Makefiles354175
+Node: Command Variables356313
+Node: Directory Variables359883
+Node: Standard Targets374023
+Ref: Standard Targets-Footnote-1387142
+Node: Install Command Categories387242
+Node: Quick Reference391768
+Node: Error Messages402464
+Node: Complex Makefile410154
+Node: GNU Free Documentation License418872
+Node: Concept Index441321
+Node: Name Index506510
 
 End Tag Table
Index: trunk/src/gmake/doc/make.info-1
===================================================================
--- trunk/src/gmake/doc/make.info-1	(revision 466)
+++ trunk/src/gmake/doc/make.info-1	(revision 503)
@@ -1,4 +1,26 @@
-This is ../../doc/make.info, produced by makeinfo version 4.6 from
-../../doc/make.texi.
+This is make.info, produced by makeinfo version 4.8 from make.texi.
+
+   This file documents the GNU `make' utility, which determines
+automatically which pieces of a large program need to be recompiled,
+and issues the commands to recompile them.
+
+   This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
+Manual', for GNU `make' version 3.81.
+
+   Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with the Front-Cover Texts
+     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     below.  A copy of the license is included in the section entitled
+     "GNU Free Documentation License."
+
+     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+     modify this GNU Manual, like GNU software.  Copies published by
+     the Free Software Foundation raise funds for GNU development."
 
 INFO-DIR-SECTION GNU Packages
@@ -7,35 +29,32 @@
 END-INFO-DIR-ENTRY
 
-   This file documents the GNU Make utility, which determines
+
+File: make.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
+
+GNU `make'
+**********
+
+This file documents the GNU `make' utility, which determines
 automatically which pieces of a large program need to be recompiled,
 and issues the commands to recompile them.
 
-   This is Edition 0.61, last updated 02 May 2003, of `The GNU Make
-Manual', for `make', Version 3.81.
-
-   Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts.  A copy of the license is included in the section entitled "GNU
-Free Documentation License".
-
-
-File: make.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
-
-Make
-****
-
-The GNU `make' utility automatically determines which pieces of a large
-program need to be recompiled, and issues the commands to recompile
-them.
-
-   This edition of the `GNU Make Manual', last updated 02 May 2003,
-documents GNU `make' Version 3.81.
-
-   This manual describes `make' and contains the following chapters:
+   This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
+Manual', for GNU `make' version 3.81.
+
+   Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with the Front-Cover Texts
+     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     below.  A copy of the license is included in the section entitled
+     "GNU Free Documentation License."
+
+     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+     modify this GNU Manual, like GNU software.  Copies published by
+     the Free Software Foundation raise funds for GNU development."
 
 * Menu:
@@ -97,4 +116,5 @@
                                   with another makefile.
 * Reading Makefiles::           How makefiles are parsed.
+* Secondary Expansion::         How and when secondary expansion is performed.
 
 Writing Rules
@@ -107,6 +127,6 @@
 * Phony Targets::               Using a target that is not a real file's name.
 * Force Targets::               You can use a target without commands
-                                  or prerequisites to mark other
-                                  targets as phony.
+                                  or prerequisites to mark other targets
+                                  as phony.
 * Empty Targets::               When only the date matters and the
                                   files are empty.
@@ -148,4 +168,5 @@
 Writing the Commands in Rules
 
+* Command Syntax::              Command syntax features and pitfalls.
 * Echoing::                     How to control when commands are echoed.
 * Execution::                   How commands are executed.
@@ -156,4 +177,14 @@
 * Sequences::                   Defining canned sequences of commands.
 * Empty Commands::              Defining useful, do-nothing commands.
+
+Command Syntax
+
+* Splitting Lines::             Breaking long command lines for readability.
+* Variables in Commands::       Using `make' variables in commands.
+
+Command Execution
+
+* Choosing the Shell::          How `make' chooses the shell used
+                                  to run commands.
 
 Recursive Use of `make'
@@ -201,10 +232,11 @@
 * Text Functions::              General-purpose text manipulation functions.
 * File Name Functions::         Functions for manipulating file names.
+* Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
-* If Function::                 Conditionally expand a value.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
+* Flavor Function::             Find out the flavor of a variable.
 * Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
@@ -234,6 +266,6 @@
 * Chained Rules::               How to use a chain of implicit rules.
 * Pattern Rules::               How to define new implicit rules.
-* Last Resort::                 How to defining commands for rules
-                                  which cannot find any.
+* Last Resort::                 How to define commands for rules which
+                                  cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -264,20 +296,9 @@
 * Archive Symbols::             How to update archive symbol directories.
 
-Makefile Conventions
-
-* Makefile Basics::             General Conventions for Makefiles
-* Utilities in Makefiles::      Utilities in Makefiles
-* Command Variables::           Variables for Specifying Commands
-* Directory Variables::         Variables for Installation Directories
-* Standard Targets::            Standard Targets for Users
-* Install Command Categories::  Three categories of commands in the `install'
-
-Copying This Manual
-
 
 File: make.info,  Node: Overview,  Next: Introduction,  Prev: Top,  Up: Top
 
-Overview of `make'
-******************
+1 Overview of `make'
+********************
 
 The `make' utility automatically determines which pieces of a large
@@ -288,5 +309,5 @@
 
    GNU `make' conforms to section 6.2 of `IEEE Standard 1003.2-1992'
-(POSIX.2).
+(POSIX.2).  
 
    Our examples show C programs, since they are most common, but you
@@ -330,6 +351,6 @@
 File: make.info,  Node: Reading,  Next: Bugs,  Prev: Preparing,  Up: Overview
 
-How to Read This Manual
-=======================
+1.1 How to Read This Manual
+===========================
 
 If you are new to `make', or are looking for a general introduction,
@@ -351,6 +372,6 @@
 File: make.info,  Node: Bugs,  Prev: Reading,  Up: Overview
 
-Problems and Bugs
-=================
+1.2 Problems and Bugs
+=====================
 
 If you have problems with GNU `make' or think you've found a bug,
@@ -394,9 +415,9 @@
 File: make.info,  Node: Introduction,  Next: Makefiles,  Prev: Overview,  Up: Top
 
-An Introduction to Makefiles
-****************************
+2 An Introduction to Makefiles
+******************************
 
 You need a file called a "makefile" to tell `make' what to do.  Most
-often, the makefile tells `make' how to compile and link a program.
+often, the makefile tells `make' how to compile and link a program.  
 
    In this chapter, we will discuss a simple makefile that describes
@@ -413,5 +434,5 @@
 Finally, if any source file has been recompiled, all the object files,
 whether newly made or saved from previous compilations, must be linked
-together to produce the new executable editor.
+together to produce the new executable editor.  
 
 * Menu:
@@ -428,6 +449,6 @@
 File: make.info,  Node: Rule Introduction,  Next: Simple Makefile,  Prev: Introduction,  Up: Introduction
 
-What a Rule Looks Like
-======================
+2.1 What a Rule Looks Like
+==========================
 
 A simple makefile consists of "rules" with the following shape:
@@ -471,6 +492,6 @@
 File: make.info,  Node: Simple Makefile,  Next: How Make Works,  Prev: Rule Introduction,  Up: Introduction
 
-A Simple Makefile
-=================
+2.2 A Simple Makefile
+=====================
 
 Here is a straightforward makefile that describes the way an executable
@@ -486,5 +507,5 @@
              cc -o edit main.o kbd.o command.o display.o \
                         insert.o search.o files.o utils.o
-     
+
      main.o : main.c defs.h
              cc -c main.c
@@ -508,5 +529,5 @@
 
 We split each long line into two lines using backslash-newline; this is
-like using one long line, but is easier to read.
+like using one long line, but is easier to read.  
 
    To use this makefile to create the executable file called `edit',
@@ -536,9 +557,9 @@
 prerequisites.  These shell commands say how to update the target file.
 A tab character must come at the beginning of every command line to
-distinguish commands lines from other lines in the makefile.  (Bear in
+distinguish command lines from other lines in the makefile.  (Bear in
 mind that `make' does not know anything about how the commands work.
 It is up to you to supply commands that will update the target file
 properly.  All `make' does is execute the commands in the rule you have
-specified when the target file needs to be updated.)
+specified when the target file needs to be updated.)  
 
    The target `clean' is not a file, but merely the name of an action.
@@ -551,16 +572,18 @@
 called "phony targets".  *Note Phony Targets::, for information about
 this kind of target.  *Note Errors in Commands: Errors, to see how to
-cause `make' to ignore errors from `rm' or any other command.
+cause `make' to ignore errors from `rm' or any other command.  
 
 
 File: make.info,  Node: How Make Works,  Next: Variables Simplify,  Prev: Simple Makefile,  Up: Introduction
 
-How `make' Processes a Makefile
-===============================
+2.3 How `make' Processes a Makefile
+===================================
 
 By default, `make' starts with the first target (not targets whose
 names start with `.').  This is called the "default goal".  ("Goals"
-are the targets that `make' strives ultimately to update.  *Note
-Arguments to Specify the Goals: Goals.)
+are the targets that `make' strives ultimately to update.    You can
+override this behavior using the command line (*note Arguments to
+Specify the Goals: Goals.) or with the `.DEFAULT_GOAL' special variable
+(*note Other Special Variables: Special Variables.).  
 
    In the simple example of the previous section, the default goal is to
@@ -597,5 +620,5 @@
 not exist, or if any of the object files are newer than it.  If an
 object file was just recompiled, it is now newer than `edit', so `edit'
-is relinked.
+is relinked.  
 
    Thus, if we change the file `insert.c' and run `make', `make' will
@@ -608,6 +631,6 @@
 File: make.info,  Node: Variables Simplify,  Next: make Deduces,  Prev: How Make Works,  Up: Introduction
 
-Variables Make Makefiles Simpler
-================================
+2.4 Variables Make Makefiles Simpler
+====================================
 
 In our example, we had to list all the object files twice in the rule
@@ -642,5 +665,5 @@
      objects = main.o kbd.o command.o display.o \
                insert.o search.o files.o utils.o
-     
+
      edit : $(objects)
              cc -o edit $(objects)
@@ -667,6 +690,6 @@
 File: make.info,  Node: make Deduces,  Next: Combine By Prerequisite,  Prev: Variables Simplify,  Up: Introduction
 
-Letting `make' Deduce the Commands
-==================================
+2.5 Letting `make' Deduce the Commands
+======================================
 
 It is not necessary to spell out the commands for compiling the
@@ -687,8 +710,8 @@
      objects = main.o kbd.o command.o display.o \
                insert.o search.o files.o utils.o
-     
+
      edit : $(objects)
              cc -o edit $(objects)
-     
+
      main.o : defs.h
      kbd.o : defs.h command.h
@@ -699,5 +722,5 @@
      files.o : defs.h buffer.h command.h
      utils.o : defs.h
-     
+
      .PHONY : clean
      clean :
@@ -714,6 +737,6 @@
 File: make.info,  Node: Combine By Prerequisite,  Next: Cleanup,  Prev: make Deduces,  Up: Introduction
 
-Another Style of Makefile
-=========================
+2.6 Another Style of Makefile
+=============================
 
 When the objects of a makefile are created only by implicit rules, an
@@ -724,8 +747,8 @@
      objects = main.o kbd.o command.o display.o \
                insert.o search.o files.o utils.o
-     
+
      edit : $(objects)
              cc -o edit $(objects)
-     
+
      $(objects) : defs.h
      kbd.o command.o files.o : command.h
@@ -743,6 +766,6 @@
 File: make.info,  Node: Cleanup,  Prev: Combine By Prerequisite,  Up: Introduction
 
-Rules for Cleaning the Directory
-================================
+2.7 Rules for Cleaning the Directory
+====================================
 
 Compiling a program is not the only thing you might want to write rules
@@ -782,6 +805,6 @@
 File: make.info,  Node: Makefiles,  Next: Rules,  Prev: Introduction,  Up: Top
 
-Writing Makefiles
-*****************
+3 Writing Makefiles
+*******************
 
 The information that tells `make' how to recompile a system comes from
@@ -800,10 +823,11 @@
                                   with another makefile.
 * Reading Makefiles::           How makefiles are parsed.
+* Secondary Expansion::         How and when secondary expansion is performed.
 
 
 File: make.info,  Node: Makefile Contents,  Next: Makefile Names,  Prev: Makefiles,  Up: Makefiles
 
-What Makefiles Contain
-======================
+3.1 What Makefiles Contain
+==========================
 
 Makefiles contain five kinds of things: "explicit rules", "implicit
@@ -865,9 +889,9 @@
 File: make.info,  Node: Makefile Names,  Next: Include,  Prev: Makefile Contents,  Up: Makefiles
 
-What Name to Give Your Makefile
-===============================
+3.2 What Name to Give Your Makefile
+===================================
 
 By default, when `make' looks for the makefile, it tries the following
-names, in order: `GNUmakefile', `makefile' and `Makefile'.
+names, in order: `GNUmakefile', `makefile' and `Makefile'.  
 
    Normally you should call your makefile either `makefile' or
@@ -892,11 +916,11 @@
 concatenated in the order specified.  The default makefile names
 `GNUmakefile', `makefile' and `Makefile' are not checked automatically
-if you specify `-f' or `--file'.
+if you specify `-f' or `--file'.  
 
 
 File: make.info,  Node: Include,  Next: MAKEFILES Variable,  Prev: Makefile Names,  Up: Makefiles
 
-Including Other Makefiles
-=========================
+3.3 Including Other Makefiles
+=============================
 
 The `include' directive tells `make' to suspend reading the current
@@ -906,5 +930,6 @@
      include FILENAMES...
 
-FILENAMES can contain shell file name patterns.
+FILENAMES can contain shell file name patterns.  If FILENAMES is empty,
+nothing is included and no error is printed.  
 
    Extra spaces are allowed and ignored at the beginning of the line,
@@ -943,5 +968,5 @@
 than that of somehow appending the prerequisites to the end of the main
 makefile as has been traditionally done with other versions of `make'.
-*Note Automatic Prerequisites::.
+*Note Automatic Prerequisites::.  
 
    If the specified name does not start with a slash, and the file is
@@ -981,6 +1006,6 @@
 File: make.info,  Node: MAKEFILES Variable,  Next: MAKEFILE_LIST Variable,  Prev: Include,  Up: Makefiles
 
-The Variable `MAKEFILES'
-========================
+3.4 The Variable `MAKEFILES'
+============================
 
 If the environment variable `MAKEFILES' is defined, `make' considers
@@ -1010,6 +1035,6 @@
 File: make.info,  Node: MAKEFILE_LIST Variable,  Next: Special Variables,  Prev: MAKEFILES Variable,  Up: Makefiles
 
-The Variable `MAKEFILE_LIST'
-============================
+3.5 The Variable `MAKEFILE_LIST'
+================================
 
 As `make' reads various makefiles, including any obtained from the
@@ -1026,10 +1051,10 @@
    If a makefile named `Makefile' has this content:
 
-     name1 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
-     
+     name1 := $(lastword $(MAKEFILE_LIST))
+
      include inc.mk
-     
-     name2 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
-     
+
+     name2 := $(lastword $(MAKEFILE_LIST))
+
      all:
              @echo name1 = $(name1)
@@ -1049,23 +1074,109 @@
 File: make.info,  Node: Special Variables,  Next: Remaking Makefiles,  Prev: MAKEFILE_LIST Variable,  Up: Makefiles
 
-Other Special Variables
-=======================
-
-GNU `make' also supports a special variable.  Note that any value you
-assign to this variable will be ignored; it will always return its
-special value.
-
-   The first special variable is `.VARIABLES'.  When expanded, the
-value consists of a list of the _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 (*note Variables
-Used by Implicit Rules: Implicit Variables.), but does not include any
-variables which are only defined in a target-specific context.
+3.6 Other Special Variables
+===========================
+
+GNU `make' also supports other special variables.  Unless otherwise
+documented here, these values lose their special properties if they are
+set by a makefile or on the command line.
+
+`.DEFAULT_GOAL'
+     Sets the default goal to be used if no targets were specified on
+     the command line (*note Arguments to Specify the Goals: Goals.).
+     The `.DEFAULT_GOAL' variable allows you to discover the current
+     default goal, restart the default goal selection algorithm by
+     clearing its value, or to explicitly set the default goal.  The
+     following example illustrates these cases:
+
+          # Query the default goal.
+          ifeq ($(.DEFAULT_GOAL),)
+            $(warning no default goal is set)
+          endif
+
+          .PHONY: foo
+          foo: ; @echo $@
+
+          $(warning default goal is $(.DEFAULT_GOAL))
+
+          # Reset the default goal.
+          .DEFAULT_GOAL :=
+
+          .PHONY: bar
+          bar: ; @echo $@
+
+          $(warning default goal is $(.DEFAULT_GOAL))
+
+          # Set our own.
+          .DEFAULT_GOAL := foo
+
+     This makefile prints:
+
+          no default goal is set
+          default goal is foo
+          default goal is bar
+          foo
+
+     Note that assigning more than one target name to `.DEFAULT_GOAL' is
+     illegal and will result in an error.
+
+`MAKE_RESTARTS'
+     This variable is set only if this instance of `make' has restarted
+     (*note How Makefiles Are Remade: Remaking Makefiles.): it will
+     contain the number of times this instance has restarted.  Note
+     this is not the same as recursion (counted by the `MAKELEVEL'
+     variable).  You should not set, modify, or export this variable.
+
+`.VARIABLES'
+     Expands to a list of the _names_ of all global variables defined
+     so far.  This includes variables which have empty values, as well
+     as built-in variables (*note Variables Used by Implicit Rules:
+     Implicit Variables.), but does not include any variables which are
+     only defined in a target-specific context.  Note that any value
+     you assign to this variable will be ignored; it will always return
+     its special value.
+
+`.FEATURES'
+     Expands to a list of special features supported by this version of
+     `make'.  Possible values include:
+
+    `archives'
+          Supports `ar' (archive) files using special filename syntax.
+          *Note Using `make' to Update Archive Files: Archives.
+
+    `check-symlink'
+          Supports the `-L' (`--check-symlink-times') flag.  *Note
+          Summary of Options: Options Summary.
+
+    `else-if'
+          Supports "else if" non-nested conditionals.  *Note Syntax of
+          Conditionals: Conditional Syntax.
+
+    `jobserver'
+          Supports "job server" enhanced parallel builds.  *Note
+          Parallel Execution: Parallel.
+
+    `second-expansion'
+          Supports secondary expansion of prerequisite lists.
+
+    `order-only'
+          Supports order-only prerequisites.  *Note Types of
+          Prerequisites: Prerequisite Types.
+
+    `target-specific'
+          Supports target-specific and pattern-specific variable
+          assignments.  *Note Target-specific Variable Values:
+          Target-specific.
+
+
+`.INCLUDE_DIRS'
+     Expands to a list of directories that `make' searches for included
+     makefiles (*note Including Other Makefiles: Include.).
+
 
 
 File: make.info,  Node: Remaking Makefiles,  Next: Overriding Makefiles,  Prev: Special Variables,  Up: Makefiles
 
-How Makefiles Are Remade
-========================
+3.7 How Makefiles Are Remade
+============================
 
 Sometimes makefiles can be remade from other files, such as RCS or SCCS
@@ -1104,5 +1215,5 @@
    If you do not specify any makefiles to be read with `-f' or `--file'
 options, `make' will try the default makefile names; *note What Name to
-Give Your Makefile: Makefile Names..  Unlike makefiles explicitly
+Give Your Makefile: Makefile Names.  Unlike makefiles explicitly
 requested with `-f' or `--file' options, `make' is not certain that
 these makefiles should exist.  However, if a default makefile does not
@@ -1144,6 +1255,6 @@
 File: make.info,  Node: Overriding Makefiles,  Next: Reading Makefiles,  Prev: Remaking Makefiles,  Up: Makefiles
 
-Overriding Part of Another Makefile
-===================================
+3.8 Overriding Part of Another Makefile
+=======================================
 
 Sometimes it is useful to have a makefile that is mostly just like
@@ -1165,5 +1276,5 @@
      foo:
              frobnicate > foo
-     
+
      %: force
              @$(MAKE) -f Makefile $@
@@ -1187,8 +1298,8 @@
 
 
-File: make.info,  Node: Reading Makefiles,  Prev: Overriding Makefiles,  Up: Makefiles
-
-How `make' Reads a Makefile
-===========================
+File: make.info,  Node: Reading Makefiles,  Next: Secondary Expansion,  Prev: Overriding Makefiles,  Up: Makefiles
+
+3.9 How `make' Reads a Makefile
+===============================
 
 GNU `make' does its work in two distinct phases.  During the first
@@ -1225,5 +1336,5 @@
      IMMEDIATE := IMMEDIATE
      IMMEDIATE += DEFERRED or IMMEDIATE
-     
+
      define IMMEDIATE
        DEFERRED
@@ -1239,5 +1350,9 @@
 All instances of conditional syntax are parsed immediately, in their
 entirety; this includes the `ifdef', `ifeq', `ifndef', and `ifneq'
-forms.
+forms.  Of course this means that automatic variables cannot be used in
+conditional statements, as automatic variables are not set until the
+command script for that rule is invoked.  If you need to use automatic
+variables in a conditional you _must_ use shell conditional syntax, in
+your command script proper, for these tests, not `make' conditionals.
 
 Rule Definition
@@ -1255,8 +1370,187 @@
 
 
+File: make.info,  Node: Secondary Expansion,  Prev: Reading Makefiles,  Up: Makefiles
+
+3.10 Secondary Expansion
+========================
+
+In the previous section we learned that GNU `make' works in two
+distinct phases: a read-in phase and a target-update phase (*note How
+`make' Reads a Makefile: Reading Makefiles.).  GNU make also has the
+ability to enable a _second expansion_ of the prerequisites (only) for
+some or all targets defined in the makefile.  In order for this second
+expansion to occur, the special target `.SECONDEXPANSION' must be
+defined before the first prerequisite list that makes use of this
+feature.
+
+   If that special target is defined then in between the two phases
+mentioned above, right at the end of the read-in phase, all the
+prerequisites of the targets defined after the special target are
+expanded a _second time_.  In most circumstances this secondary
+expansion will have no effect, since all variable and function
+references will have been expanded during the initial parsing of the
+makefiles.  In order to take advantage of the secondary expansion phase
+of the parser, then, it's necessary to _escape_ the variable or
+function reference in the makefile.  In this case the first expansion
+merely un-escapes the reference but doesn't expand it, and expansion is
+left to the secondary expansion phase.  For example, consider this
+makefile:
+
+     .SECONDEXPANSION:
+     ONEVAR = onefile
+     TWOVAR = twofile
+     myfile: $(ONEVAR) $$(TWOVAR)
+
+   After the first expansion phase the prerequisites list of the
+`myfile' target will be `onefile' and `$(TWOVAR)'; the first
+(unescaped) variable reference to ONEVAR is expanded, while the second
+(escaped) variable reference is simply unescaped, without being
+recognized as a variable reference.  Now during the secondary expansion
+the first word is expanded again but since it contains no variable or
+function references it remains the static value `onefile', while the
+second word is now a normal reference to the variable TWOVAR, which is
+expanded to the value `twofile'.  The final result is that there are
+two prerequisites, `onefile' and `twofile'.
+
+   Obviously, this is not a very interesting case since the same result
+could more easily have been achieved simply by having both variables
+appear, unescaped, in the prerequisites list.  One difference becomes
+apparent if the variables are reset; consider this example:
+
+     .SECONDEXPANSION:
+     AVAR = top
+     onefile: $(AVAR)
+     twofile: $$(AVAR)
+     AVAR = bottom
+
+   Here the prerequisite of `onefile' will be expanded immediately, and
+resolve to the value `top', while the prerequisite of `twofile' will
+not be full expanded until the secondary expansion and yield a value of
+`bottom'.
+
+   This is marginally more exciting, but the true power of this feature
+only becomes apparent when you discover that secondary expansions
+always take place within the scope of the automatic variables for that
+target.  This means that you can use variables such as `$@', `$*', etc.
+during the second expansion and they will have their expected values,
+just as in the command script.  All you have to do is defer the
+expansion by escaping the `$'.  Also, secondary expansion occurs for
+both explicit and implicit (pattern) rules.  Knowing this, the possible
+uses for this feature increase dramatically.  For example:
+
+     .SECONDEXPANSION:
+     main_OBJS := main.o try.o test.o
+     lib_OBJS := lib.o api.o
+
+     main lib: $$($$@_OBJS)
+
+   Here, after the initial expansion the prerequisites of both the
+`main' and `lib' targets will be `$($@_OBJS)'.  During the secondary
+expansion, the `$@' variable is set to the name of the target and so
+the expansion for the `main' target will yield `$(main_OBJS)', or
+`main.o try.o test.o', while the secondary expansion for the `lib'
+target will yield `$(lib_OBJS)', or `lib.o api.o'.
+
+   You can also mix functions here, as long as they are properly
+escaped:
+
+     main_SRCS := main.c try.c test.c
+     lib_SRCS := lib.c api.c
+
+     .SECONDEXPANSION:
+     main lib: $$(patsubst %.c,%.o,$$($$@_SRCS))
+
+   This version allows users to specify source files rather than object
+files, but gives the same resulting prerequisites list as the previous
+example.
+
+   Evaluation of automatic variables during the secondary expansion
+phase, especially of the target name variable `$$@', behaves similarly
+to evaluation within command scripts.  However, there are some subtle
+differences and "corner cases" which come into play for the different
+types of rule definitions that `make' understands.  The subtleties of
+using the different automatic variables are described below.
+
+Secondary Expansion of Explicit Rules
+-------------------------------------
+
+During the secondary expansion of explicit rules, `$$@' and `$$%'
+evaluate, respectively, to the file name of the target and, when the
+target is an archive member, the target member name.  The `$$<'
+variable evaluates to the first prerequisite in the first rule for this
+target.  `$$^' and `$$+' evaluate to the list of all prerequisites of
+rules _that have already appeared_ for the same target (`$$+' with
+repetitions and `$$^' without).  The following example will help
+illustrate these behaviors:
+
+     .SECONDEXPANSION:
+
+     foo: foo.1 bar.1 $$< $$^ $$+    # line #1
+
+     foo: foo.2 bar.2 $$< $$^ $$+    # line #2
+
+     foo: foo.3 bar.3 $$< $$^ $$+    # line #3
+
+   In the first prerequisite list, all three variables (`$$<', `$$^',
+and `$$+') expand to the empty string.  In the second, they will have
+values `foo.1', `foo.1 bar.1', and `foo.1 bar.1' respectively.  In the
+third they will have values `foo.1', `foo.1 bar.1 foo.2 bar.2', and
+`foo.1 bar.1 foo.2 bar.2' respectively.
+
+   Rules undergo secondary expansion in makefile order, except that the
+rule with the command script is always evaluated last.
+
+   The variables `$$?' and `$$*' are not available and expand to the
+empty string.
+
+Secondary Expansion of Static Pattern Rules
+-------------------------------------------
+
+Rules for secondary expansion of static pattern rules are identical to
+those for explicit rules, above, with one exception: for static pattern
+rules the `$$*' variable is set to the pattern stem.  As with explicit
+rules, `$$?' is not available and expands to the empty string.
+
+Secondary Expansion of Implicit Rules
+-------------------------------------
+
+As `make' searches for an implicit rule, it substitutes the stem and
+then performs secondary expansion for every rule with a matching target
+pattern.  The value of the automatic variables is derived in the same
+fashion as for static pattern rules.  As an example:
+
+     .SECONDEXPANSION:
+
+     foo: bar
+
+     foo foz: fo%: bo%
+
+     %oo: $$< $$^ $$+ $$*
+
+   When the implicit rule is tried for target `foo', `$$<' expands to
+`bar', `$$^' expands to `bar boo', `$$+' also expands to `bar boo', and
+`$$*' expands to `f'.
+
+   Note that the directory prefix (D), as described in *Note Implicit
+Rule Search Algorithm: Implicit Rule Search, is appended (after
+expansion) to all the patterns in the prerequisites list.  As an
+example:
+
+     .SECONDEXPANSION:
+
+     /tmp/foo.o:
+
+     %.o: $$(addsuffix /%.c,foo bar) foo.h
+
+   The prerequisite list after the secondary expansion and directory
+prefix reconstruction will be `/tmp/foo/foo.c /tmp/var/bar/foo.c
+foo.h'.  If you are not interested in this reconstruction, you can use
+`$$*' instead of `%' in the prerequisites list.
+
+
 File: make.info,  Node: Rules,  Next: Commands,  Prev: Makefiles,  Up: Top
 
-Writing Rules
-*************
+4 Writing Rules
+***************
 
 A "rule" appears in the makefile and says when and how to remake
@@ -1289,6 +1583,6 @@
 * Phony Targets::               Using a target that is not a real file's name.
 * Force Targets::               You can use a target without commands
-                                  or prerequisites to mark other
-                                  targets as phony.
+                                  or prerequisites to mark other targets
+                                  as phony.
 * Empty Targets::               When only the date matters and the
                                   files are empty.
@@ -1307,6 +1601,6 @@
 File: make.info,  Node: Rule Example,  Next: Rule Syntax,  Prev: Rules,  Up: Rules
 
-Rule Example
-============
+4.1 Rule Example
+================
 
 Here is an example of a rule:
@@ -1333,6 +1627,6 @@
 File: make.info,  Node: Rule Syntax,  Next: Prerequisite Types,  Prev: Rule Example,  Up: Rules
 
-Rule Syntax
-===========
+4.2 Rule Syntax
+===============
 
 In general, a rule looks like this:
@@ -1359,12 +1653,17 @@
 appear on the line after the prerequisites, with a tab character, or may
 appear on the same line, with a semicolon.  Either way, the effect is
-the same.  *Note Writing the Commands in Rules: Commands.
-
-   Because dollar signs are used to start variable references, if you
-really want a dollar sign in a rule you must write two of them, `$$'
-(*note How to Use Variables: Using Variables.).  You may split a long
-line by inserting a backslash followed by a newline, but this is not
-required, as `make' places no limit on the length of a line in a
-makefile.
+the same.  There are other differences in the syntax of command lines.
+*Note Writing the Commands in Rules: Commands.
+
+   Because dollar signs are used to start `make' variable references,
+if you really want a dollar sign in a target or prerequisite you must
+write two of them, `$$' (*note How to Use Variables: Using Variables.).
+If you have enabled secondary expansion (*note Secondary Expansion::)
+and you want a literal dollar sign in the prerequisites lise, you must
+actually write _four_ dollar signs (`$$$$').
+
+   You may split a long line by inserting a backslash followed by a
+newline, but this is not required, as `make' places no limit on the
+length of a line in a makefile.
 
    A rule tells `make' two things: when the targets are out of date,
@@ -1388,6 +1687,6 @@
 File: make.info,  Node: Prerequisite Types,  Next: Wildcards,  Prev: Rule Syntax,  Up: Rules
 
-Types of Prerequisites
-======================
+4.3 Types of Prerequisites
+==========================
 
 There are actually two different types of prerequisites understood by
@@ -1424,6 +1723,6 @@
 File: make.info,  Node: Wildcards,  Next: Directory Search,  Prev: Prerequisite Types,  Up: Rules
 
-Using Wildcard Characters in File Names
-=======================================
+4.4 Using Wildcard Characters in File Names
+===========================================
 
 A single file name can specify many files using "wildcard characters".
@@ -1441,8 +1740,8 @@
 simulated by setting the environment variable HOME.
 
-   Wildcard expansion happens automatically in targets, in
-prerequisites, and in commands (where the shell does the expansion).
-In other contexts, wildcard expansion happens only if you request it
-explicitly with the `wildcard' function.
+   Wildcard expansion is performed by `make' automatically in targets
+and in prerequisites.  In commands the shell is responsible for
+wildcard expansion.  In other contexts, wildcard expansion happens only
+if you request it explicitly with the `wildcard' function.
 
    The special significance of a wildcard character can be turned off by
@@ -1460,6 +1759,6 @@
 File: make.info,  Node: Wildcard Examples,  Next: Wildcard Pitfall,  Prev: Wildcards,  Up: Wildcards
 
-Wildcard Examples
------------------
+4.4.1 Wildcard Examples
+-----------------------
 
 Wildcards can be used in the commands of a rule, where they are expanded
@@ -1500,6 +1799,6 @@
 File: make.info,  Node: Wildcard Pitfall,  Next: Wildcard Function,  Prev: Wildcard Examples,  Up: Wildcards
 
-Pitfalls of Using Wildcards
----------------------------
+4.4.2 Pitfalls of Using Wildcards
+---------------------------------
 
 Now here is an example of a naive way of using wildcard expansion, that
@@ -1509,5 +1808,5 @@
 
      objects = *.o
-     
+
      foo : $(objects)
              cc -o foo $(CFLAGS) $(objects)
@@ -1543,6 +1842,6 @@
 File: make.info,  Node: Wildcard Function,  Prev: Wildcard Pitfall,  Up: Wildcards
 
-The Function `wildcard'
------------------------
+4.4.3 The Function `wildcard'
+-----------------------------
 
 Wildcard expansion happens automatically in rules.  But wildcard
@@ -1579,5 +1878,5 @@
 
      objects := $(patsubst %.c,%.o,$(wildcard *.c))
-     
+
      foo : $(objects)
              cc -o foo $(objects)
@@ -1591,6 +1890,6 @@
 File: make.info,  Node: Directory Search,  Next: Phony Targets,  Prev: Wildcards,  Up: Rules
 
-Searching Directories for Prerequisites
-=======================================
+4.5 Searching Directories for Prerequisites
+===========================================
 
 For large systems, it is often desirable to put sources in a separate
@@ -1615,6 +1914,6 @@
 File: make.info,  Node: General Search,  Next: Selective Search,  Prev: Directory Search,  Up: Directory Search
 
-`VPATH': Search Path for All Prerequisites
-------------------------------------------
+4.5.1 `VPATH': Search Path for All Prerequisites
+------------------------------------------------
 
 The value of the `make' variable `VPATH' specifies a list of
@@ -1659,6 +1958,6 @@
 File: make.info,  Node: Selective Search,  Next: Search Algorithm,  Prev: General Search,  Up: Directory Search
 
-The `vpath' Directive
----------------------
+4.5.2 The `vpath' Directive
+---------------------------
 
 Similar to the `VPATH' variable, but more selective, is the `vpath'
@@ -1738,6 +2037,6 @@
 File: make.info,  Node: Search Algorithm,  Next: Commands/Search,  Prev: Selective Search,  Up: Directory Search
 
-How Directory Searches are Performed
-------------------------------------
+4.5.3 How Directory Searches are Performed
+------------------------------------------
 
 When a prerequisite is found through directory search, regardless of
@@ -1796,6 +2095,6 @@
 File: make.info,  Node: Commands/Search,  Next: Implicit/Search,  Prev: Search Algorithm,  Up: Directory Search
 
-Writing Shell Commands with Directory Search
---------------------------------------------
+4.5.4 Writing Shell Commands with Directory Search
+--------------------------------------------------
 
 When a prerequisite is found in another directory through directory
@@ -1817,5 +2116,5 @@
 compilation by implicit rules; we use it here for consistency so it will
 affect all C compilations uniformly; *note Variables Used by Implicit
-Rules: Implicit Variables..)
+Rules: Implicit Variables.)
 
    Often the prerequisites include header files as well, which you do
@@ -1830,6 +2129,6 @@
 File: make.info,  Node: Implicit/Search,  Next: Libraries/Search,  Prev: Commands/Search,  Up: Directory Search
 
-Directory Search and Implicit Rules
------------------------------------
+4.5.5 Directory Search and Implicit Rules
+-----------------------------------------
 
 The search through the directories specified in `VPATH' or with `vpath'
@@ -1851,6 +2150,6 @@
 File: make.info,  Node: Libraries/Search,  Prev: Implicit/Search,  Up: Directory Search
 
-Directory Search for Link Libraries
------------------------------------
+4.5.6 Directory Search for Link Libraries
+-----------------------------------------
 
 Directory search applies in a special way to libraries used with the
@@ -1890,5 +2189,5 @@
 word in the list will be used.
 
-   The default value for `.LIBPATTERNS' is "`lib%.so lib%.a'", which
+   The default value for `.LIBPATTERNS' is `lib%.so lib%.a', which
 provides the default behavior described above.
 
@@ -1899,6 +2198,6 @@
 File: make.info,  Node: Phony Targets,  Next: Force Targets,  Prev: Directory Search,  Up: Rules
 
-Phony Targets
-=============
+4.6 Phony Targets
+=================
 
 A phony target is one that is not really the name of a file.  It is
@@ -1916,5 +2215,5 @@
 Because the `rm' command does not create a file named `clean', probably
 no such file will ever exist.  Therefore, the `rm' command will be
-executed every time you say `make clean'.
+executed every time you say `make clean'.  
 
    The phony target will cease to work if anything ever does create a
@@ -1946,5 +2245,5 @@
    Another example of the usefulness of phony targets is in conjunction
 with recursive invocations of `make' (for more information, see *Note
-Recursive Use of `make': Recursion).  In this case the makefile will
+Recursive Use of `make': Recursion.).  In this case the makefile will
 often contain a variable which lists a number of subdirectories to be
 built.  One way to handle this is with one rule whose command is a
@@ -1952,5 +2251,5 @@
 
      SUBDIRS = foo bar baz
-     
+
      subdirs:
              for dir in $(SUBDIRS); do \
@@ -1964,6 +2263,6 @@
 it will do so even if `make' is invoked with the `-k' option, which is
 unfortunate.  Second, and perhaps more importantly, you cannot take
-advantage of the parallel build capabilities of make using this method,
-since there is only one rule.
+advantage of `make''s ability to build targets in parallel (*note
+Parallel Execution: Parallel.), since there is only one rule.
 
    By declaring the subdirectories as phony targets (you must do this as
@@ -1972,12 +2271,12 @@
 
      SUBDIRS = foo bar baz
-     
+
      .PHONY: subdirs $(SUBDIRS)
-     
+
      subdirs: $(SUBDIRS)
-     
+
      $(SUBDIRS):
              $(MAKE) -C $@
-     
+
      foo: baz
 
@@ -2003,16 +2302,18 @@
      all : prog1 prog2 prog3
      .PHONY : all
-     
+
      prog1 : prog1.o utils.o
              cc -o prog1 prog1.o utils.o
-     
+
      prog2 : prog2.o
              cc -o prog2 prog2.o
-     
+
      prog3 : prog3.o sort.o utils.o
              cc -o prog3 prog3.o sort.o utils.o
 
 Now you can say just `make' to remake all three programs, or specify as
-arguments the ones to remake (as in `make prog1 prog3').
+arguments the ones to remake (as in `make prog1 prog3').  Phoniness is
+not inherited: the prerequisites of a phony target are not themselves
+phony, unless explicitly declared to be so.
 
    When one phony target is a prerequisite of another, it serves as a
@@ -2021,11 +2322,11 @@
 
      .PHONY: cleanall cleanobj cleandiff
-     
+
      cleanall : cleanobj cleandiff
              rm program
-     
+
      cleanobj :
              rm *.o
-     
+
      cleandiff :
              rm *.diff
@@ -2034,6 +2335,6 @@
 File: make.info,  Node: Force Targets,  Next: Empty Targets,  Prev: Phony Targets,  Up: Rules
 
-Rules without Commands or Prerequisites
-=======================================
+4.7 Rules without Commands or Prerequisites
+===========================================
 
 If a rule has no prerequisites or commands, and the target of the rule
@@ -2063,6 +2364,6 @@
 File: make.info,  Node: Empty Targets,  Next: Special Targets,  Prev: Force Targets,  Up: Rules
 
-Empty Target Files to Record Events
-===================================
+4.8 Empty Target Files to Record Events
+=======================================
 
 The "empty target" is a variant of the phony target; it is used to hold
@@ -2085,5 +2386,5 @@
              lpr -p $?
              touch print
-
+   
 With this rule, `make print' will execute the `lpr' command if either
 source file has changed since the last `make print'.  The automatic
@@ -2094,6 +2395,6 @@
 File: make.info,  Node: Special Targets,  Next: Multiple Targets,  Prev: Empty Targets,  Up: Rules
 
-Special Built-in Target Names
-=============================
+4.9 Special Built-in Target Names
+=================================
 
 Certain names have special meanings if they appear as targets.
@@ -2148,4 +2449,14 @@
      intermediate).
 
+`.SECONDEXPANSION'
+     If `.SECONDEXPANSION' is mentioned as a target anywhere in the
+     makefile, then all prerequisite lists defined _after_ it appears
+     will be expanded a second time after all makefiles have been read
+     in.  *Note Secondary Expansion: Secondary Expansion.
+
+     The prerequisites of the special target `.SUFFIXES' are the list
+     of suffixes to be used in checking for suffix rules.  *Note
+     Old-Fashioned Suffix Rules: Suffix Rules.
+
 `.DELETE_ON_ERROR'
      If `.DELETE_ON_ERROR' is mentioned as a target anywhere in the
@@ -2234,6 +2545,6 @@
 File: make.info,  Node: Multiple Targets,  Next: Multiple Rules,  Prev: Special Targets,  Up: Rules
 
-Multiple Targets in a Rule
-==========================
+4.10 Multiple Targets in a Rule
+===============================
 
 A rule with multiple targets is equivalent to writing many rules, each
@@ -2259,5 +2570,5 @@
           bigoutput littleoutput : text.g
                   generate text.g -$(subst output,,$@) > $@
-
+     
      is equivalent to
 
@@ -2281,6 +2592,6 @@
 File: make.info,  Node: Multiple Rules,  Next: Static Pattern,  Prev: Multiple Targets,  Up: Rules
 
-Multiple Rules for One Target
-=============================
+4.11 Multiple Rules for One Target
+==================================
 
 One file can be the target of several rules.  All the prerequisites
@@ -2332,6 +2643,6 @@
 File: make.info,  Node: Static Pattern,  Next: Double-Colon,  Prev: Multiple Rules,  Up: Rules
 
-Static Pattern Rules
-====================
+4.12 Static Pattern Rules
+=========================
 
 "Static pattern rules" are rules which specify multiple targets and
@@ -2349,6 +2660,6 @@
 File: make.info,  Node: Static Usage,  Next: Static versus Implicit,  Prev: Static Pattern,  Up: Static Pattern
 
-Syntax of Static Pattern Rules
-------------------------------
+4.12.1 Syntax of Static Pattern Rules
+-------------------------------------
 
 Here is the syntax of a static pattern rule:
@@ -2398,7 +2709,7 @@
 
      objects = foo.o bar.o
-     
+
      all: $(objects)
-     
+
      $(objects): %.o: %.c
              $(CC) -c $(CFLAGS) $< -o $@
@@ -2415,5 +2726,5 @@
 
      files = foo.elc bar.o lose.o
-     
+
      $(filter %.o,$(files)): %.o: %.c
              $(CC) -c $(CFLAGS) $< -o $@
@@ -2427,5 +2738,5 @@
 from `foo.el'.
 
-   Another example shows how to use `$*' in static pattern rules:
+   Another example shows how to use `$*' in static pattern rules: 
 
      bigoutput littleoutput : %output : text.g
@@ -2438,6 +2749,6 @@
 File: make.info,  Node: Static versus Implicit,  Prev: Static Usage,  Up: Static Pattern
 
-Static Pattern Rules versus Implicit Rules
-------------------------------------------
+4.12.2 Static Pattern Rules versus Implicit Rules
+-------------------------------------------------
 
 A static pattern rule has much in common with an implicit rule defined
@@ -2475,6 +2786,6 @@
 File: make.info,  Node: Double-Colon,  Next: Automatic Prerequisites,  Prev: Static Pattern,  Up: Rules
 
-Double-Colon Rules
-==================
+4.13 Double-Colon Rules
+=======================
 
 "Double-colon" rules are rules written with `::' instead of `:' after
@@ -2512,6 +2823,6 @@
 File: make.info,  Node: Automatic Prerequisites,  Prev: Double-Colon,  Up: Rules
 
-Generating Prerequisites Automatically
-======================================
+4.14 Generating Prerequisites Automatically
+===========================================
 
 In the makefile for a program, many of the rules you need to write often
@@ -2525,5 +2836,5 @@
 would have to write dozens of such rules in your makefile.  And, you
 must always be very careful to update the makefile every time you add
-or remove an `#include'.
+or remove an `#include'.  
 
    To avoid this hassle, most modern C compilers can write these rules
@@ -2544,5 +2855,5 @@
 makefile, so it can never be considered an intermediate file by implicit
 rule search.  This means that `make' won't ever remove the file after
-using it; *note Chains of Implicit Rules: Chained Rules..
+using it; *note Chains of Implicit Rules: Chained Rules.
 
    With old `make' programs, it was traditional practice to use this
@@ -2568,5 +2879,5 @@
 
      %.d: %.c
-             
+             @set -e; rm -f $@; \
               $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
               sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
@@ -2575,5 +2886,5 @@
 *Note Pattern Rules::, for information on defining pattern rules.  The
 `-e' flag to the shell causes it to exit immediately if the `$(CC)'
-command (or any other command) fails (exits with a nonzero status).
+command (or any other command) fails (exits with a nonzero status).  
 
    With the GNU C compiler, you may wish to use the `-MM' flag instead
@@ -2600,5 +2911,5 @@
 
      sources = foo.c bar.c
-     
+
      include $(sources:.c=.d)
 
@@ -2611,21 +2922,18 @@
 
    Note that the `.d' files contain target definitions; you should be
-sure to place the `include' directive _after_ the first, default target
+sure to place the `include' directive _after_ the first, default goal
 in your makefiles or run the risk of having a random object file become
-the default target.  *Note How Make Works::.
+the default goal.  *Note How Make Works::.
 
 
 File: make.info,  Node: Commands,  Next: Using Variables,  Prev: Rules,  Up: Top
 
-Writing the Commands in Rules
-*****************************
-
-The commands of a rule consist of shell command lines to be executed one
-by one.  Each command line must start with a tab, except that the first
-command line may be attached to the target-and-prerequisites line with a
-semicolon in between.  Blank lines and lines of just comments may appear
-among the command lines; they are ignored.  (But beware, an apparently
-"blank" line that begins with a tab is _not_ blank!  It is an empty
-command; *note Empty Commands::.)
+5 Writing the Commands in Rules
+*******************************
+
+The commands of a rule consist of one or more shell command lines to be
+executed, one at a time, in the order they appear.  Typically, the
+result of executing these commands is that the target of the rule is
+brought up to date.
 
    Users use many different shell programs, but commands in makefiles
@@ -2633,12 +2941,7 @@
 otherwise.  *Note Command Execution: Execution.
 
-   The shell that is in use determines whether comments can be written
-on command lines, and what syntax they use.  When the shell is
-`/bin/sh', a `#' starts a comment that extends to the end of the line.
-The `#' does not have to be at the beginning of a line.  Text on a line
-before a `#' is not part of the comment.
-
 * Menu:
 
+* Command Syntax::              Command syntax features and pitfalls.
 * Echoing::                     How to control when commands are echoed.
 * Execution::                   How commands are executed.
@@ -2651,8 +2954,182 @@
 
 
-File: make.info,  Node: Echoing,  Next: Execution,  Prev: Commands,  Up: Commands
-
-Command Echoing
-===============
+File: make.info,  Node: Command Syntax,  Next: Echoing,  Prev: Commands,  Up: Commands
+
+5.1 Command Syntax
+==================
+
+Makefiles have the unusual property that there are really two distinct
+syntaxes in one file.  Most of the makefile uses `make' syntax (*note
+Writing Makefiles: Makefiles.).  However, commands are meant to be
+interpreted by the shell and so they are written using shell syntax.
+The `make' program does not try to understand shell syntax: it performs
+only a very few specific translations on the content of the command
+before handing it to the shell.
+
+   Each command line must start with a tab, except that the first
+command line may be attached to the target-and-prerequisites line with a
+semicolon in between.  _Any_ line in the makefile that begins with a
+tab and appears in a "rule context" (that is, after a rule has been
+started until another rule or variable definition) will be considered a
+command line for that rule.  Blank lines and lines of just comments may
+appear among the command lines; they are ignored.
+
+   Some consequences of these rules include:
+
+   * A blank line that begins with a tab is not blank: it's an empty
+     command (*note Empty Commands::).
+
+   * A comment in a command line is not a `make' comment; it will be
+     passed to the shell as-is.  Whether the shell treats it as a
+     comment or not depends on your shell.
+
+   * A variable definition in a "rule context" which is indented by a
+     tab as the first character on the line, will be considered a
+     command line, not a `make' variable definition, and passed to the
+     shell.
+
+   * A conditional expression (`ifdef', `ifeq', etc. *note Syntax of
+     Conditionals: Conditional Syntax.) in a "rule context" which is
+     indented by a tab as the first character on the line, will be
+     considered a command line and be passed to the shell.
+
+
+* Menu:
+
+* Splitting Lines::             Breaking long command lines for readability.
+* Variables in Commands::       Using `make' variables in commands.
+
+
+File: make.info,  Node: Splitting Lines,  Next: Variables in Commands,  Prev: Command Syntax,  Up: Command Syntax
+
+5.1.1 Splitting Command Lines
+-----------------------------
+
+One of the few ways in which `make' does interpret command lines is
+checking for a backslash just before the newline.  As in normal
+makefile syntax, a single command can be split into multiple lines in
+the makefile by placing a backslash before each newline.  A sequence of
+lines like this is considered a single command, and one instance of the
+shell will be invoked to run it.
+
+   However, in contrast to how they are treated in other places in a
+makefile, backslash-newline pairs are _not_ removed from the command.
+Both the backslash and the newline characters are preserved and passed
+to the shell.  How the backslash-newline is interpreted depends on your
+shell.  If the first character of the next line after the
+backslash-newline is a tab, then that tab (and only that tab) is
+removed.  Whitespace is never added to the command.
+
+   For example, this makefile:
+
+     all :
+             @echo no\
+     space
+             @echo no\
+             space
+             @echo one \
+             space
+             @echo one\
+              space
+
+consists of four separate shell commands where the output is:
+
+     nospace
+     nospace
+     one space
+     one space
+
+   As a more complex example, this makefile:
+
+     all : ; @echo 'hello \
+             world' ; echo "hello \
+         world"
+
+will run one shell with a command script of:
+
+     echo 'hello \
+     world' ; echo "hello \
+         world"
+
+which, according to shell quoting rules, will yield the following
+output:
+
+     hello \
+     world
+     hello     world
+
+Notice how the backslash/newline pair was removed inside the string
+quoted with double quotes (`"..."'), but not from the string quoted
+with single quotes (`'...'').  This is the way the default shell
+(`/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.
+This is often the case when passing scripts to languages such as Perl,
+where extraneous backslashes inside the script can change its meaning
+or even be a syntax error.  One simple way of handling this is to place
+the quoted string, or even the entire command, into a `make' variable
+then use the variable in the command.  In this situation the newline
+quoting rules for makefiles will be used, and the backslash-newline
+will be removed.  If we rewrite our example above using this method:
+
+     HELLO = 'hello \
+     world'
+
+     all : ; @echo $(HELLO)
+
+we will get output like this:
+
+     hello world
+
+   If you like, you can also use target-specific variables (*note
+Target-specific Variable Values: Target-specific.) to obtain a tighter
+correspondence between the variable and the command that uses it.
+
+
+File: make.info,  Node: Variables in Commands,  Prev: Splitting Lines,  Up: Command Syntax
+
+5.1.2 Using Variables in Commands
+---------------------------------
+
+The other way in which `make' processes commands is by expanding any
+variable references in them (*note Basics of Variable References:
+Reference.).  This occurs after make has finished reading all the
+makefiles and the target is determined to be out of date; so, the
+commands for targets which are not rebuilt are never expanded.
+
+   Variable and function references in commands have identical syntax
+and semantics to references elsewhere in the makefile.  They also have
+the same quoting rules: if you want a dollar sign to appear in your
+command, you must double it (`$$').  For shells like the default shell,
+that use dollar signs to introduce variables, it's important to keep
+clear in your mind whether the variable you want to reference is a
+`make' variable (use a single dollar sign) or a shell variable (use two
+dollar signs).  For example:
+
+     LIST = one two three
+     all:
+             for i in $(LIST); do \
+                 echo $$i; \
+             done
+
+results in the following command being passed to the shell:
+
+     for i in one two three; do \
+         echo $i; \
+     done
+
+which generates the expected result:
+
+     one
+     two
+     three
+
+
+File: make.info,  Node: Echoing,  Next: Execution,  Prev: Command Syntax,  Up: Commands
+
+5.2 Command Echoing
+===================
 
 Normally `make' prints each command line before it is executed.  We
@@ -2683,33 +3160,75 @@
 File: make.info,  Node: Execution,  Next: Parallel,  Prev: Echoing,  Up: Commands
 
-Command Execution
-=================
+5.3 Command Execution
+=====================
 
 When it is time to execute commands to update a target, they are
-executed by making a new subshell for each line.  (In practice, `make'
-may take shortcuts that do not affect the results.)
-
-   *Please note:* this implies that shell commands such as `cd' that
-set variables local to each process will not affect the following
-command lines. (1)  If you want to use `cd' to affect the next command,
-put the two on a single line with a semicolon between them.  Then
-`make' will consider them a single command and pass them, together, to
-a shell which will execute them in sequence.  For example:
+executed by invoking a new subshell for each command line.  (In
+practice, `make' may take shortcuts that do not affect the results.)
+
+   *Please note:* this implies that setting shell variables and
+invoking shell commands such as `cd' that set a context local to each
+process will not affect the following command lines.(1)  If you want to
+use `cd' to affect the next statement, put both statements in a single
+command line.  Then `make' will invoke one shell to run the entire
+line, and the shell will execute the statements in sequence.  For
+example:
 
      foo : bar/lose
-             cd bar; gobble lose > ../foo
-
-   If you would like to split a single shell command into multiple
-lines of text, you must use a backslash at the end of all but the last
-subline.  Such a sequence of lines is combined into a single line, by
-deleting the backslash-newline sequences, before passing it to the
-shell.  Thus, the following is equivalent to the preceding example:
-
-     foo : bar/lose
-             cd bar;  \
-             gobble lose > ../foo
-
-   The program used as the shell is taken from the variable `SHELL'.
-By default, the program `/bin/sh' is used.
+             cd $(@D) && gobble $(@F) > ../$@
+
+Here we use the shell AND operator (`&&') so that if the `cd' command
+fails, the script will fail without trying to invoke the `gobble'
+command in the wrong directory, which could cause problems (in this
+case it would certainly cause `../foo' to be truncated, at least).
+
+* Menu:
+
+* Choosing the Shell::          How `make' chooses the shell used
+                                  to run commands.
+
+   ---------- Footnotes ----------
+
+   (1) On MS-DOS, the value of current working directory is *global*, so
+changing it _will_ affect the following command lines on those systems.
+
+
+File: make.info,  Node: Choosing the Shell,  Prev: Execution,  Up: Execution
+
+5.3.1 Choosing the Shell
+------------------------
+
+The program used as the shell is taken from the variable `SHELL'.  If
+this variable is not set in your makefile, the program `/bin/sh' is
+used as the shell.
+
+   Unlike most variables, the variable `SHELL' is never set from the
+environment.  This is because the `SHELL' environment variable is used
+to specify your personal choice of shell program for interactive use.
+It would be very bad for personal choices like this to affect the
+functioning of makefiles.  *Note Variables from the Environment:
+Environment.
+
+   Furthermore, when you do set `SHELL' in your makefile that value is
+_not_ exported in the environment to commands that `make' invokes.
+Instead, the value inherited from the user's environment, if any, is
+exported.  You can override this behavior by explicitly exporting
+`SHELL' (*note Communicating Variables to a Sub-`make':
+Variables/Recursion.), forcing it to be passed in the environment to
+commands.
+
+   However, on MS-DOS and MS-Windows the value of `SHELL' in the
+environment *is* used, since on those systems most users do not set
+this variable, and therefore it is most likely set specifically to be
+used by `make'.  On MS-DOS, if the setting of `SHELL' is not suitable
+for `make', you can set the variable `MAKESHELL' to the shell that
+`make' should use; if set it will be used as the shell instead of the
+value of `SHELL'.
+
+Choosing a Shell in DOS and Windows
+...................................
+
+Choosing a shell in MS-DOS and MS-Windows is much more complex than on
+other systems.
 
    On MS-DOS, if `SHELL' is not set, the value of the variable
@@ -2757,31 +3276,13 @@
 
    The effect of the above DOS-specific processing is that a Makefile
-that says `SHELL = /bin/sh' (as many Unix makefiles do), will work on
-MS-DOS unaltered if you have e.g. `sh.exe' installed in some directory
-along your `PATH'.
-
-   Unlike most variables, the variable `SHELL' is never set from the
-environment.  This is because the `SHELL' environment variable is used
-to specify your personal choice of shell program for interactive use.
-It would be very bad for personal choices like this to affect the
-functioning of makefiles.  *Note Variables from the Environment:
-Environment.  However, on MS-DOS and MS-Windows the value of `SHELL' in
-the environment *is* used, since on those systems most users do not set
-this variable, and therefore it is most likely set specifically to be
-used by `make'.  On MS-DOS, if the setting of `SHELL' is not suitable
-for `make', you can set the variable `MAKESHELL' to the shell that
-`make' should use; this will override the value of `SHELL'.
-
-   ---------- Footnotes ----------
-
-   (1) On MS-DOS, the value of current working directory is *global*,
-so changing it _will_ affect the following command lines on those
-systems.
+that contains `SHELL = /bin/sh' (as many Unix makefiles do), will work
+on MS-DOS unaltered if you have e.g. `sh.exe' installed in some
+directory along your `PATH'.
 
 
 File: make.info,  Node: Parallel,  Next: Errors,  Prev: Execution,  Up: Commands
 
-Parallel Execution
-==================
+5.4 Parallel Execution
+======================
 
 GNU `make' knows how to execute several commands at once.  Normally,
@@ -2809,5 +3310,5 @@
 streams of all but one running command.  This means that attempting to
 read from standard input will usually be a fatal error (a `Broken pipe'
-signal) for most child processes if there are several.
+signal) for most child processes if there are several.  
 
    It is unpredictable which command will have a valid standard input
@@ -2858,6 +3359,6 @@
 File: make.info,  Node: Errors,  Next: Interrupts,  Prev: Parallel,  Up: Commands
 
-Errors in Commands
-==================
+5.5 Errors in Commands
+======================
 
 After each shell command returns, `make' looks at its exit status.  If
@@ -2917,5 +3418,5 @@
 program as possible, perhaps to find several independent problems so
 that you can correct them all before the next attempt to compile.  This
-is why Emacs' `compile' command passes the `-k' flag by default.
+is why Emacs' `compile' command passes the `-k' flag by default.  
 
    Usually when a command fails, if it has changed the target file at
@@ -2934,6 +3435,6 @@
 File: make.info,  Node: Interrupts,  Next: Recursion,  Prev: Errors,  Up: Commands
 
-Interrupting or Killing `make'
-==============================
+5.6 Interrupting or Killing `make'
+==================================
 
 If `make' gets a fatal signal while a command is executing, it may
@@ -2965,6 +3466,6 @@
 File: make.info,  Node: Recursion,  Next: Sequences,  Prev: Interrupts,  Up: Commands
 
-Recursive Use of `make'
-=======================
+5.7 Recursive Use of `make'
+===========================
 
 Recursive use of `make' means using `make' as a command in a makefile.
@@ -2982,5 +3483,5 @@
      subsystem:
              $(MAKE) -C subdir
-
+   
    You can write recursive `make' commands just by copying this example,
 but there are many things to know about how they work and why, and about
@@ -3012,6 +3513,6 @@
 File: make.info,  Node: MAKE Variable,  Next: Variables/Recursion,  Prev: Recursion,  Up: Recursion
 
-How the `MAKE' Variable Works
------------------------------
+5.7.1 How the `MAKE' Variable Works
+-----------------------------------
 
 Recursive `make' commands should always use the variable `MAKE', not
@@ -3025,5 +3526,5 @@
 is `cd subdir && /bin/make'.  If you use a special version of `make' to
 run the top-level makefile, the same special version will be executed
-for recursive invocations.
+for recursive invocations.  
 
    As a special feature, using the variable `MAKE' in the commands of a
@@ -3043,5 +3544,5 @@
 file named `subsystem' and do nothing else.  What you really want it to
 do is run `cd subdir && make -t'; but that would require executing the
-command, and `-t' says not to execute commands.
+command, and `-t' says not to execute commands.  
 
    The special feature makes this do what you want: whenever a command
@@ -3057,6 +3558,6 @@
 File: make.info,  Node: Variables/Recursion,  Next: Options/Recursion,  Prev: MAKE Variable,  Up: Recursion
 
-Communicating Variables to a Sub-`make'
----------------------------------------
+5.7.2 Communicating Variables to a Sub-`make'
+---------------------------------------------
 
 Variable values of the top-level `make' can be passed to the sub-`make'
@@ -3077,7 +3578,12 @@
 characters other than letters, numbers, and underscores.
 
-   The special variables `SHELL' and `MAKEFLAGS' are always exported
-(unless you unexport them).  `MAKEFILES' is exported if you set it to
-anything.
+   The value of the `make' variable `SHELL' is not exported.  Instead,
+the value of the `SHELL' variable from the invoking environment is
+passed to the sub-`make'.  You can force `make' to export its value for
+`SHELL' by using the `export' directive, described below.  *Note
+Choosing the Shell::.
+
+   The special variable `MAKEFLAGS' is always exported (unless you
+unexport it).  `MAKEFILES' is exported if you set it to anything.
 
    `make' automatically passes down variable values that were defined
@@ -3154,5 +3660,5 @@
 `.EXPORT_ALL_VARIABLES' instead of using the `export' directive.  This
 will be ignored by old `make's, while the `export' directive will cause
-a syntax error.
+a syntax error.  
 
    Likewise, you can use `unexport' by itself to tell `make' _not_ to
@@ -3187,6 +3693,6 @@
 File: make.info,  Node: Options/Recursion,  Next: -w Option,  Prev: Variables/Recursion,  Up: Recursion
 
-Communicating Options to a Sub-`make'
--------------------------------------
+5.7.3 Communicating Options to a Sub-`make'
+-------------------------------------------
 
 Flags such as `-s' and `-k' are passed automatically to the sub-`make'
@@ -3292,6 +3798,6 @@
 File: make.info,  Node: -w Option,  Prev: Options/Recursion,  Up: Recursion
 
-The `--print-directory' Option
-------------------------------
+5.7.4 The `--print-directory' Option
+------------------------------------
 
 If you use several levels of recursive `make' invocations, the `-w' or
@@ -3318,6 +3824,6 @@
 File: make.info,  Node: Sequences,  Next: Empty Commands,  Prev: Recursion,  Up: Commands
 
-Defining Canned Command Sequences
-=================================
+5.8 Defining Canned Command Sequences
+=====================================
 
 When the same sequence of commands is useful in making various targets,
@@ -3333,5 +3839,5 @@
      mv y.tab.c $@
      endef
-
+   
 Here `run-yacc' is the name of the variable being defined; `endef'
 marks the end of the definition; the lines in between are the commands.
@@ -3393,6 +3899,6 @@
 File: make.info,  Node: Empty Commands,  Prev: Sequences,  Up: Commands
 
-Using Empty Commands
-====================
+5.9 Using Empty Commands
+========================
 
 It is sometimes useful to define commands which do nothing.  This is
@@ -3422,6 +3928,6 @@
 File: make.info,  Node: Using Variables,  Next: Conditionals,  Prev: Commands,  Up: Top
 
-How to Use Variables
-********************
+6 How to Use Variables
+**********************
 
 A "variable" is a name defined in a makefile to represent a string of
@@ -3429,5 +3935,5 @@
 explicit request into targets, prerequisites, commands, and other parts
 of the makefile.  (In some other versions of `make', variables are
-called "macros".)
+called "macros".)  
 
    Variables and functions in all parts of a makefile are expanded when
@@ -3484,6 +3990,6 @@
 File: make.info,  Node: Reference,  Next: Flavors,  Prev: Using Variables,  Up: Using Variables
 
-Basics of Variable References
-=============================
+6.1 Basics of Variable References
+=================================
 
 To substitute a variable's value, write a dollar sign followed by the
@@ -3501,5 +4007,5 @@
      program : $(objects)
              cc -o program $(objects)
-     
+
      $(objects) : defs.h
 
@@ -3524,6 +4030,6 @@
 File: make.info,  Node: Flavors,  Next: Advanced,  Prev: Reference,  Up: Using Variables
 
-The Two Flavors of Variables
-============================
+6.2 The Two Flavors of Variables
+================================
 
 There are two ways that a variable in GNU `make' can have a value; we
@@ -3545,5 +4051,5 @@
      bar = $(ugh)
      ugh = Huh?
-     
+
      all:;echo $(foo)
 
@@ -3565,5 +4071,5 @@
 
 because it will cause an infinite loop in the variable expansion.
-(Actually `make' detects the infinite loop and reports an error.)
+(Actually `make' detects the infinite loop and reports an error.)  
 
    Another disadvantage is that any functions (*note Functions for
@@ -3606,5 +4112,4 @@
 
      ifeq (0,${MAKELEVEL})
-     cur-dir   := $(shell pwd)
      whoami    := $(shell whoami)
      host-type := $(shell arch)
@@ -3616,5 +4121,5 @@
 
      ${subdirs}:
-           ${MAKE} cur-dir=${cur-dir}/$@ -C $@ all
+             ${MAKE} -C $@ all
 
    Simply expanded variables generally make complicated makefile
@@ -3670,6 +4175,6 @@
 File: make.info,  Node: Advanced,  Next: Values,  Prev: Flavors,  Up: Using Variables
 
-Advanced Features for Reference to Variables
-============================================
+6.3 Advanced Features for Reference to Variables
+================================================
 
 This section describes some advanced features you can use to reference
@@ -3685,6 +4190,6 @@
 File: make.info,  Node: Substitution Refs,  Next: Computed Names,  Prev: Advanced,  Up: Advanced
 
-Substitution References
------------------------
+6.3.1 Substitution References
+-----------------------------
 
 A "substitution reference" substitutes the value of a variable with
@@ -3718,5 +4223,5 @@
 
 For example:
-     
+
      foo := a.o b.o c.o
      bar := $(foo:%.o=%.c)
@@ -3727,6 +4232,6 @@
 File: make.info,  Node: Computed Names,  Prev: Substitution Refs,  Up: Advanced
 
-Computed Variable Names
------------------------
+6.3.2 Computed Variable Names
+-----------------------------
 
 Computed variable names are a complicated concept needed only for
@@ -3799,8 +4304,8 @@
      a_dirs := dira dirb
      1_dirs := dir1 dir2
-     
+
      a_files := filea fileb
      1_files := file1 file2
-     
+
      ifeq "$(use_a)" "yes"
      a1 := a
@@ -3808,5 +4313,5 @@
      a1 := 1
      endif
-     
+
      ifeq "$(use_dirs)" "yes"
      df := dirs
@@ -3814,5 +4319,5 @@
      df := files
      endif
-     
+
      dirs := $($(a1)_$(df))
 
@@ -3824,5 +4329,5 @@
      a_objects := a.o b.o c.o
      1_objects := 1.o 2.o 3.o
-     
+
      sources := $($(a1)_objects:.o=.c)
 
@@ -3840,7 +4345,7 @@
      func := strip
      endif
-     
+
      bar := a d b g q c
-     
+
      foo := $($(func) $(bar))
 
@@ -3870,6 +4375,6 @@
 File: make.info,  Node: Values,  Next: Setting,  Prev: Advanced,  Up: Using Variables
 
-How Variables Get Their Values
-==============================
+6.4 How Variables Get Their Values
+==================================
 
 Variables can get values in several different ways:
@@ -3895,6 +4400,6 @@
 File: make.info,  Node: Setting,  Next: Appending,  Prev: Values,  Up: Using Variables
 
-Setting Variables
-=================
+6.5 Setting Variables
+=====================
 
 To set a variable from the makefile, write a line starting with the
@@ -3948,6 +4453,6 @@
 File: make.info,  Node: Appending,  Next: Override Directive,  Prev: Setting,  Up: Using Variables
 
-Appending More Text to Variables
-================================
+6.6 Appending More Text to Variables
+====================================
 
 Often it is useful to add more text to the value of a variable already
@@ -3984,6 +4489,6 @@
 it a simply-expanded variable, `+=' adds to that simply-expanded
 definition, and expands the new text before appending it to the old
-value just as `:=' does (*note Setting Variables: Setting., for a full
-explanation of `:=').  In fact,
+value just as `:=' does (see *Note Setting Variables: Setting, for a
+full explanation of `:=').  In fact,
 
      variable := value
@@ -3991,4 +4496,5 @@
 
 is exactly equivalent to:
+
 
      variable := value
@@ -4023,5 +4529,5 @@
 The first line defines the `CFLAGS' variable with a reference to another
 variable, `includes'.  (`CFLAGS' is used by the rules for C
-compilation; *note Catalogue of Implicit Rules: Catalogue of Rules..)
+compilation; *note Catalogue of Implicit Rules: Catalogue of Rules.)
 Using `=' for the definition makes `CFLAGS' a recursively-expanded
 variable, meaning `$(includes) -O' is _not_ expanded when `make'
@@ -4045,6 +4551,6 @@
 File: make.info,  Node: Override Directive,  Next: Defining,  Prev: Appending,  Up: Using Variables
 
-The `override' Directive
-========================
+6.7 The `override' Directive
+============================
 
 If a variable has been set with a command argument (*note Overriding
@@ -4089,6 +4595,6 @@
 File: make.info,  Node: Defining,  Next: Environment,  Prev: Override Directive,  Up: Using Variables
 
-Defining Variables Verbatim
-===========================
+6.8 Defining Variables Verbatim
+===============================
 
 Another way to set the value of a variable is to use the `define'
@@ -4148,14 +4654,14 @@
 File: make.info,  Node: Environment,  Next: Target-specific,  Prev: Defining,  Up: Using Variables
 
-Variables from the Environment
-==============================
+6.9 Variables from the Environment
+==================================
 
 Variables in `make' can come from the environment in which `make' is
 run.  Every environment variable that `make' sees when it starts up is
-transformed into a `make' variable with the same name and value.  But
-an explicit assignment in the makefile, or with a command argument,
-overrides the environment.  (If the `-e' flag is specified, then values
-from the environment override assignments in the makefile.  *Note
-Summary of Options: Options Summary.  But this is not recommended
+transformed into a `make' variable with the same name and value.
+However, an explicit assignment in the makefile, or with a command
+argument, overrides the environment.  (If the `-e' flag is specified,
+then values from the environment override assignments in the makefile.
+*Note Summary of Options: Options Summary.  But this is not recommended
 practice.)
 
@@ -4164,15 +4670,15 @@
 you prefer.  This is safe for variables with standard or conventional
 meanings because you know that no makefile will use them for other
-things.  (But this is not totally reliable; some makefiles set `CFLAGS'
-explicitly and therefore are not affected by the value in the
+things.  (Note this is not totally reliable; some makefiles set
+`CFLAGS' explicitly and therefore are not affected by the value in the
 environment.)
 
-   When `make' is invoked recursively, variables defined in the outer
-invocation can be passed to inner invocations through the environment
-(*note Recursive Use of `make': Recursion.).  By default, only
-variables that came from the environment or the command line are passed
-to recursive invocations.  You can use the `export' directive to pass
-other variables.  *Note Communicating Variables to a Sub-`make':
-Variables/Recursion, for full details.
+   When `make' runs a command script, variables defined in the makefile
+are placed into the environment of that command.  This allows you to
+pass values to sub-`make' invocations (*note Recursive Use of `make':
+Recursion.).  By default, only variables that came from the environment
+or the command line are passed to recursive invocations.  You can use
+the `export' directive to pass other variables.  *Note Communicating
+Variables to a Sub-`make': Variables/Recursion, for full details.
 
    Other use of variables from the environment is not recommended.  It
@@ -4185,13 +4691,12 @@
 which is normally present in the environment to specify the user's
 choice of interactive shell.  It would be very undesirable for this
-choice to affect `make'.  So `make' ignores the environment value of
-`SHELL' (except on MS-DOS and MS-Windows, where `SHELL' is usually not
-set.  *Note Special handling of SHELL on MS-DOS: Execution.)
+choice to affect `make'; so, `make' handles the `SHELL' environment
+variable in a special way; see *Note Choosing the Shell::.
 
 
 File: make.info,  Node: Target-specific,  Next: Pattern-specific,  Prev: Environment,  Up: Using Variables
 
-Target-specific Variable Values
-===============================
+6.10 Target-specific Variable Values
+====================================
 
 Variable values in `make' are usually global; that is, they are the
@@ -4262,6 +4767,6 @@
 File: make.info,  Node: Pattern-specific,  Prev: Target-specific,  Up: Using Variables
 
-Pattern-specific Variable Values
-================================
+6.11 Pattern-specific Variable Values
+=====================================
 
 In addition to target-specific variable values (*note Target-specific
@@ -4300,6 +4805,6 @@
 File: make.info,  Node: Conditionals,  Next: Functions,  Prev: Using Variables,  Up: Top
 
-Conditional Parts of Makefiles
-******************************
+7 Conditional Parts of Makefiles
+********************************
 
 A "conditional" causes part of a makefile to be obeyed or ignored
@@ -4319,6 +4824,6 @@
 File: make.info,  Node: Conditional Example,  Next: Conditional Syntax,  Prev: Conditionals,  Up: Conditionals
 
-Example of a Conditional
-========================
+7.1 Example of a Conditional
+============================
 
 The following example of a conditional tells `make' to use one set of
@@ -4331,5 +4836,5 @@
      libs_for_gcc = -lgnu
      normal_libs =
-     
+
      foo: $(objects)
      ifeq ($(CC),gcc)
@@ -4381,5 +4886,5 @@
      libs_for_gcc = -lgnu
      normal_libs =
-     
+
      ifeq ($(CC),gcc)
        libs=$(libs_for_gcc)
@@ -4387,5 +4892,5 @@
        libs=$(normal_libs)
      endif
-     
+
      foo: $(objects)
              $(CC) -o foo $(objects) $(libs)
@@ -4394,6 +4899,6 @@
 File: make.info,  Node: Conditional Syntax,  Next: Testing Flags,  Prev: Conditional Example,  Up: Conditionals
 
-Syntax of Conditionals
-======================
+7.2 Syntax of Conditionals
+==========================
 
 The syntax of a simple conditional with no `else' is as follows:
@@ -4415,11 +4920,24 @@
      endif
 
-If the condition is true, TEXT-IF-TRUE is used; otherwise,
-TEXT-IF-FALSE is used instead.  The TEXT-IF-FALSE can be any number of
-lines of text.
+   or:
+
+     CONDITIONAL-DIRECTIVE
+     TEXT-IF-ONE-IS-TRUE
+     else CONDITIONAL-DIRECTIVE
+     TEXT-IF-TRUE
+     else
+     TEXT-IF-FALSE
+     endif
+
+There can be as many "`else' CONDITIONAL-DIRECTIVE" clauses as
+necessary.  Once a given condition is true, TEXT-IF-TRUE is used and no
+other clause is used; if no condition is true then TEXT-IF-FALSE is
+used.  The TEXT-IF-TRUE and TEXT-IF-FALSE can be any number of lines of
+text.
 
    The syntax of the CONDITIONAL-DIRECTIVE is the same whether the
-conditional is simple or complex.  There are four different directives
-that test different conditions.  Here is a table of them:
+conditional is simple or complex; after an `else' or not.  There are
+four different directives that test different conditions.  Here is a
+table of them:
 
 `ifeq (ARG1, ARG2)'
@@ -4457,10 +4975,22 @@
 
 `ifdef VARIABLE-NAME'
-     If the variable VARIABLE-NAME has a non-empty value, the
-     TEXT-IF-TRUE is effective; otherwise, the TEXT-IF-FALSE, if any,
-     is effective.  Variables that have never been defined have an
-     empty value.  The variable VARIABLE-NAME is itself expanded, so it
-     could be a variable or function that expands to the name of a
-     variable.
+     The `ifdef' form takes the _name_ of a variable as its argument,
+     not a reference to a variable.  The value of that variable has a
+     non-empty value, the TEXT-IF-TRUE is effective; otherwise, the
+     TEXT-IF-FALSE, if any, is effective.  Variables that have never
+     been defined have an empty value.  The text VARIABLE-NAME is
+     expanded, so it could be a variable or function that expands to
+     the name of a variable.  For example:
+
+          bar = true
+          foo = bar
+          ifdef $(foo)
+          frobozz = yes
+          endif
+
+     The variable reference `$(foo)' is expanded, yielding `bar', which
+     is considered to be the name of a variable.  The variable `bar' is
+     not expanded, but its value is examined to determine if it is
+     non-empty.
 
      Note that `ifdef' only tests whether a variable has a value.  It
@@ -4492,4 +5022,6 @@
      If the variable VARIABLE-NAME has an empty value, the TEXT-IF-TRUE
      is effective; otherwise, the TEXT-IF-FALSE, if any, is effective.
+     The rules for expansion and testing of VARIABLE-NAME are identical
+     to the `ifdef' directive.
 
    Extra spaces are allowed and ignored at the beginning of the
@@ -4526,6 +5058,6 @@
 File: make.info,  Node: Testing Flags,  Prev: Conditional Syntax,  Up: Conditionals
 
-Conditionals that Test Flags
-============================
+7.3 Conditionals that Test Flags
+================================
 
 You can write a conditional that tests `make' command flags such as
@@ -4557,6 +5089,6 @@
 File: make.info,  Node: Functions,  Next: Running,  Prev: Conditionals,  Up: Top
 
-Functions for Transforming Text
-*******************************
+8 Functions for Transforming Text
+*********************************
 
 "Functions" allow you to do text processing in the makefile to compute
@@ -4572,10 +5104,11 @@
 * Text Functions::              General-purpose text manipulation functions.
 * File Name Functions::         Functions for manipulating file names.
+* Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
-* If Function::                 Conditionally expand a value.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
+* Flavor Function::             Find out the flavor of a variable.
 * Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
@@ -4584,6 +5117,6 @@
 File: make.info,  Node: Syntax of Functions,  Next: Text Functions,  Prev: Functions,  Up: Functions
 
-Function Call Syntax
-====================
+8.1 Function Call Syntax
+========================
 
 A function call resembles a variable reference.  It looks like this:
@@ -4638,6 +5171,6 @@
 File: make.info,  Node: Text Functions,  Next: File Name Functions,  Prev: Syntax of Functions,  Up: Functions
 
-Functions for String Substitution and Analysis
-==============================================
+8.2 Functions for String Substitution and Analysis
+==================================================
 
 Here are some functions that operate on strings:
@@ -4804,9 +5337,9 @@
 `$(wordlist S,E,TEXT)'
      Returns the list of words in TEXT starting with word S and ending
-     with word E (inclusive).  The legitimate values of S and E start
-     from 1.  If S is bigger than the number of words in TEXT, the
-     value is empty.  If E is bigger than the number of words in TEXT,
-     words up to the end of TEXT are returned.  If S is greater than E,
-     nothing is returned.  For example,
+     with word E (inclusive).  The legitimate values of S start from 1;
+     E may start from 0.  If S is bigger than the number of words in
+     TEXT, the value is empty.  If E is bigger than the number of words
+     in TEXT, words up to the end of TEXT are returned.  If S is
+     greater than E, nothing is returned.  For example,
 
           $(wordlist 2, 3, foo bar baz)
@@ -4830,4 +5363,16 @@
      same as `$(word 1,TEXT)', the `firstword' function is retained for
      its simplicity.
+
+`$(lastword NAMES...)'
+     The argument NAMES is regarded as a series of names, separated by
+     whitespace.  The value is the last name in the series.
+
+     For example,
+
+          $(lastword foo bar)
+
+     produces the result `bar'.  Although `$(lastword TEXT)' is the
+     same as `$(word $(words TEXT),TEXT)', the `lastword' function was
+     added for its simplicity and better performance.
 
    Here is a realistic example of the use of `subst' and `patsubst'.
@@ -4858,8 +5403,8 @@
 
 
-File: make.info,  Node: File Name Functions,  Next: Foreach Function,  Prev: Text Functions,  Up: Functions
-
-Functions for File Names
-========================
+File: make.info,  Node: File Name Functions,  Next: Conditional Functions,  Prev: Text Functions,  Up: Functions
+
+8.3 Functions for File Names
+============================
 
 Several of the built-in expansion functions relate specifically to
@@ -4970,9 +5515,77 @@
      File Names: Wildcards.
 
-
-File: make.info,  Node: Foreach Function,  Next: If Function,  Prev: File Name Functions,  Up: Functions
-
-The `foreach' Function
-======================
+`$(realpath NAMES...)'
+     For each file name in NAMES return the canonical absolute name.  A
+     canonical name does not contain any `.' or `..' components, nor
+     any repeated path separators (`/') or symlinks.  In case of a
+     failure the empty string is returned.  Consult the `realpath(3)'
+     documentation for a list of possible failure causes.
+
+`$(abspath NAMES...)'
+     For each file name in NAMES return an absolute name that does not
+     contain any `.' or `..' components, nor any repeated path
+     separators (`/').  Note that, in contrast to `realpath' function,
+     `abspath' does not resolve symlinks and does not require the file
+     names to refer to an existing file or directory.  Use the
+     `wildcard' function to test for existence.
+
+
+File: make.info,  Node: Conditional Functions,  Next: Foreach Function,  Prev: File Name Functions,  Up: Functions
+
+8.4 Functions for Conditionals
+==============================
+
+There are three functions that provide conditional expansion.  A key
+aspect of these functions is that not all of the arguments are expanded
+initially.  Only those arguments which need to be expanded, will be
+expanded.
+
+`$(if CONDITION,THEN-PART[,ELSE-PART])'
+     The `if' function provides support for conditional expansion in a
+     functional context (as opposed to the GNU `make' makefile
+     conditionals such as `ifeq' (*note Syntax of Conditionals:
+     Conditional Syntax.).
+
+     The first argument, CONDITION, first has all preceding and
+     trailing whitespace stripped, then is expanded.  If it expands to
+     any non-empty string, then the condition is considered to be true.
+     If it expands to an empty string, the condition is considered to
+     be false.
+
+     If the condition is true then the second argument, THEN-PART, is
+     evaluated and this is used as the result of the evaluation of the
+     entire `if' function.
+
+     If the condition is false then the third argument, ELSE-PART, is
+     evaluated and this is the result of the `if' function.  If there is
+     no third argument, the `if' function evaluates to nothing (the
+     empty string).
+
+     Note that only one of the THEN-PART or the ELSE-PART will be
+     evaluated, never both.  Thus, either can contain side-effects
+     (such as `shell' function calls, etc.)
+
+`$(or CONDITION1[,CONDITION2[,CONDITION3...]])'
+     The `or' function provides a "short-circuiting" OR operation.
+     Each argument is expanded, in order.  If an argument expands to a
+     non-empty string the processing stops and the result of the
+     expansion is that string.  If, after all arguments are expanded,
+     all of them are false (empty), then the result of the expansion is
+     the empty string.
+
+`$(and CONDITION1[,CONDITION2[,CONDITION3...]])'
+     The `and' function provides a "short-circuiting" AND operation.
+     Each argument is expanded, in order.  If an argument expands to an
+     empty string the processing stops and the result of the expansion
+     is the empty string.  If all arguments expand to a non-empty
+     string then the result of the expansion is the expansion of the
+     last argument.
+
+
+
+File: make.info,  Node: Foreach Function,  Next: Call Function,  Prev: Conditional Functions,  Up: Functions
+
+8.5 The `foreach' Function
+==========================
 
 The `foreach' function is very different from other functions.  It
@@ -5046,40 +5659,8 @@
 
 
-File: make.info,  Node: If Function,  Next: Call Function,  Prev: Foreach Function,  Up: Functions
-
-The `if' Function
-=================
-
-The `if' function provides support for conditional expansion in a
-functional context (as opposed to the GNU `make' makefile conditionals
-such as `ifeq' (*note Syntax of Conditionals: Conditional Syntax.).
-
-   An `if' function call can contain either two or three arguments:
-
-     $(if CONDITION,THEN-PART[,ELSE-PART])
-
-   The first argument, CONDITION, first has all preceding and trailing
-whitespace stripped, then is expanded.  If it expands to any non-empty
-string, then the condition is considered to be true.  If it expands to
-an empty string, the condition is considered to be false.
-
-   If the condition is true then the second argument, THEN-PART, is
-evaluated and this is used as the result of the evaluation of the entire
-`if' function.
-
-   If the condition is false then the third argument, ELSE-PART, is
-evaluated and this is the result of the `if' function.  If there is no
-third argument, the `if' function evaluates to nothing (the empty
-string).
-
-   Note that only one of the THEN-PART or the ELSE-PART will be
-evaluated, never both.  Thus, either can contain side-effects (such as
-`shell' function calls, etc.)
-
-
-File: make.info,  Node: Call Function,  Next: Value Function,  Prev: If Function,  Up: Functions
-
-The `call' Function
-===================
+File: make.info,  Node: Call Function,  Next: Value Function,  Prev: Foreach Function,  Up: Functions
+
+8.6 The `call' Function
+=======================
 
 The `call' function is unique in that it can be used to create new
@@ -5120,5 +5701,5 @@
 
      reverse = $(2) $(1)
-     
+
      foo = $(call reverse,a,b)
 
@@ -5129,5 +5710,5 @@
 
      pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
-     
+
      LS := $(call pathsearch,ls)
 
@@ -5157,6 +5738,6 @@
 File: make.info,  Node: Value Function,  Next: Eval Function,  Prev: Call Function,  Up: Functions
 
-The `value' Function
-====================
+8.7 The `value' Function
+========================
 
 The `value' function provides a way for you to use the value of a
@@ -5181,5 +5762,5 @@
 
      FOO = $PATH
-     
+
      all:
              @echo $(FOO)
@@ -5197,6 +5778,6 @@
 File: make.info,  Node: Eval Function,  Next: Origin Function,  Prev: Value Function,  Up: Functions
 
-The `eval' Function
-===================
+8.8 The `eval' Function
+=======================
 
 The `eval' function is very special: it allows you to define new
@@ -5229,34 +5810,34 @@
 
      PROGRAMS    = server client
-     
+
      server_OBJS = server.o server_priv.o server_access.o
      server_LIBS = priv protocol
-     
+
      client_OBJS = client.o client_api.o client_mem.o
      client_LIBS = protocol
-     
+
      # Everything after this is generic
-     
+
      .PHONY: all
      all: $(PROGRAMS)
-     
+
      define PROGRAM_template
       $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%)
       ALL_OBJS   += $$($(1)_OBJS)
      endef
-     
+
      $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
-     
+
      $(PROGRAMS):
              $(LINK.o) $^ $(LDLIBS) -o $@
-     
+
      clean:
              rm -f $(ALL_OBJS) $(PROGRAMS)
 
 
-File: make.info,  Node: Origin Function,  Next: Shell Function,  Prev: Eval Function,  Up: Functions
-
-The `origin' Function
-=====================
+File: make.info,  Node: Origin Function,  Next: Flavor Function,  Prev: Eval Function,  Up: Functions
+
+8.9 The `origin' Function
+=========================
 
 The `origin' function is unlike most other functions in that it does
@@ -5341,8 +5922,41 @@
 
 
-File: make.info,  Node: Shell Function,  Next: Make Control Functions,  Prev: Origin Function,  Up: Functions
-
-The `shell' Function
-====================
+File: make.info,  Node: Flavor Function,  Next: Shell Function,  Prev: Origin Function,  Up: Functions
+
+8.10 The `flavor' Function
+==========================
+
+The `flavor' function is unlike most other functions (and like `origin'
+function) in that it does not operate on the values of variables; it
+tells you something _about_ a variable.  Specifically, it tells you the
+flavor of a variable (*note The Two Flavors of Variables: Flavors.).
+
+   The syntax of the `flavor' function is:
+
+     $(flavor VARIABLE)
+
+   Note that VARIABLE is the _name_ of a variable to inquire about; not
+a _reference_ to that variable.  Therefore you would not normally use a
+`$' or parentheses when writing it.  (You can, however, use a variable
+reference in the name if you want the name not to be a constant.)
+
+   The result of this function is a string that identifies the flavor
+of the variable VARIABLE:
+
+`undefined'
+     if VARIABLE was never defined.
+
+`recursive'
+     if VARIABLE is a recursively expanded variable.
+
+`simple'
+     if VARIABLE is a simply expanded variable.
+
+
+
+File: make.info,  Node: Shell Function,  Next: Make Control Functions,  Prev: Flavor Function,  Up: Functions
+
+8.11 The `shell' Function
+=========================
 
 The `shell' function is unlike any other function other than the
@@ -5375,11 +5989,12 @@
 
 sets `files' to the expansion of `*.c'.  Unless `make' is using a very
-strange shell, this has the same result as `$(wildcard *.c)'.
+strange shell, this has the same result as `$(wildcard *.c)' (as long
+as at least one `.c' file exists).
 
 
 File: make.info,  Node: Make Control Functions,  Prev: Shell Function,  Up: Functions
 
-Functions That Control Make
-===========================
+8.12 Functions That Control Make
+================================
 
 These functions control the way make runs.  Generally, they are used to
@@ -5404,5 +6019,5 @@
 
           ERR = $(error found an error!)
-          
+
           .PHONY: err
           err: ; $(ERR)
@@ -5419,9 +6034,15 @@
      The result of the expansion of this function is the empty string.
 
+`$(info TEXT...)'
+     This function does nothing more than print its (expanded)
+     argument(s) to standard output.  No makefile name or line number
+     is added.  The result of the expansion of this function is the
+     empty string.
+
 
 File: make.info,  Node: Running,  Next: Implicit Rules,  Prev: Functions,  Up: Top
 
-How to Run `make'
-*****************
+9 How to Run `make'
+*******************
 
 A makefile that says how to recompile a program can be used in more
@@ -5469,6 +6090,6 @@
 File: make.info,  Node: Makefile Arguments,  Next: Goals,  Prev: Running,  Up: Running
 
-Arguments to Specify the Makefile
-=================================
+9.1 Arguments to Specify the Makefile
+=====================================
 
 The way to specify the name of the makefile is with the `-f' or
@@ -5487,6 +6108,6 @@
 File: make.info,  Node: Goals,  Next: Instead of Execution,  Prev: Makefile Arguments,  Up: Running
 
-Arguments to Specify the Goals
-==============================
+9.2 Arguments to Specify the Goals
+==================================
 
 The "goals" are the targets that `make' should strive ultimately to
@@ -5499,9 +6120,12 @@
 program or programs they describe.  If the first rule in the makefile
 has several targets, only the first target in the rule becomes the
-default goal, not the whole list.
-
-   You can specify a different goal or goals with arguments to `make'.
-Use the name of the goal as an argument.  If you specify several goals,
-`make' processes each of them in turn, in the order you name them.
+default goal, not the whole list.  You can manage the selection of the
+default goal from within your makefile using the `.DEFAULT_GOAL'
+variable (*note Other Special Variables: Special Variables.).
+
+   You can also specify a different goal or goals with command-line
+arguments to `make'.  Use the name of the goal as an argument.  If you
+specify several goals, `make' processes each of them in turn, in the
+order you name them.
 
    Any target in the makefile may be specified as a goal (unless it
@@ -5521,5 +6145,5 @@
 
      sources = foo.c bar.c
-     
+
      ifneq ($(MAKECMDGOALS),clean)
      include $(sources:.c=.d)
@@ -5601,6 +6225,6 @@
 File: make.info,  Node: Instead of Execution,  Next: Avoiding Compilation,  Prev: Goals,  Up: Running
 
-Instead of Executing the Commands
-=================================
+9.3 Instead of Executing the Commands
+=====================================
 
 The makefile tells `make' how to tell whether a target is up to date,
@@ -5680,6 +6304,6 @@
 File: make.info,  Node: Avoiding Compilation,  Next: Overriding,  Prev: Instead of Execution,  Up: Running
 
-Avoiding Recompilation of Some Files
-====================================
+9.4 Avoiding Recompilation of Some Files
+========================================
 
 Sometimes you may have changed a source file but you do not want to
@@ -5723,6 +6347,6 @@
 File: make.info,  Node: Overriding,  Next: Testing,  Prev: Avoiding Compilation,  Up: Running
 
-Overriding Variables
-====================
+9.5 Overriding Variables
+========================
 
 An argument that contains `=' specifies the value of a variable: `V=X'
@@ -5775,6 +6399,6 @@
 File: make.info,  Node: Testing,  Next: Options Summary,  Prev: Overriding,  Up: Running
 
-Testing the Compilation of a Program
-====================================
+9.6 Testing the Compilation of a Program
+========================================
 
 Normally, when an error happens in executing a shell command, `make'
@@ -5811,6 +6435,6 @@
 File: make.info,  Node: Options Summary,  Prev: Testing,  Up: Running
 
-Summary of Options
-==================
+9.7 Summary of Options
+======================
 
 Here is a table of all the options `make' understands:
@@ -5825,6 +6449,10 @@
      Consider all targets out-of-date.  GNU `make' proceeds to consider
      targets and their prerequisites using the normal algorithms;
-     however, all these targets are remade, regardless of the status of
-     their prerequisites.
+     however, all targets so considered are always remade regardless of
+     the status of their prerequisites.  To avoid infinite recursion, if
+     `MAKE_RESTARTS' (*note Other Special Variables: Special
+     Variables.) is set to a number greater than 0 this option is
+     disabled when considering whether to remake makefiles (*note How
+     Makefiles Are Remade: Remaking Makefiles.).
 
 `-C DIR'
@@ -5931,4 +6559,13 @@
      floating-point number).  With no argument, removes a previous load
      limit.  *Note Parallel Execution: Parallel.
+
+`-L'
+`--check-symlink-times'
+     On systems that support symbolic links, this option causes `make'
+     to consider the timestamps on any symbolic links in addition to the
+     timestamp on the file referenced by those links.  When this option
+     is provided, the most recent timestamp among the file and the
+     symbolic links is taken as the modification time for this target
+     file.
 
 `-n'
@@ -6053,6 +6690,6 @@
 File: make.info,  Node: Implicit Rules,  Next: Archives,  Prev: Running,  Up: Top
 
-Using Implicit Rules
-********************
+10 Using Implicit Rules
+***********************
 
 Certain standard ways of remaking target files are used very often.  For
@@ -6091,6 +6728,6 @@
 * Chained Rules::               How to use a chain of implicit rules.
 * Pattern Rules::               How to define new implicit rules.
-* Last Resort::                 How to defining commands for rules
-                                  which cannot find any.
+* Last Resort::                 How to define commands for rules which
+                                  cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -6100,6 +6737,6 @@
 File: make.info,  Node: Using Implicit,  Next: Catalogue of Rules,  Prev: Implicit Rules,  Up: Implicit Rules
 
-Using Implicit Rules
-====================
+10.1 Using Implicit Rules
+=========================
 
 To allow `make' to find a customary method for updating a target file,
@@ -6174,6 +6811,6 @@
 File: make.info,  Node: Catalogue of Rules,  Next: Implicit Variables,  Prev: Using Implicit,  Up: Implicit Rules
 
-Catalogue of Implicit Rules
-===========================
+10.2 Catalogue of Implicit Rules
+================================
 
 Here is a catalogue of predefined implicit rules which are always
@@ -6183,4 +6820,10 @@
 `--no-builtin-rules' option cancels all predefined rules.
 
+   This manual only documents the default rules available on POSIX-based
+operating systems.  Other operating systems, such as VMS, Windows,
+OS/2, etc. may have different sets of default rules.  To see the full
+list of default rules and variables available in your version of GNU
+`make', run `make -p' in a directory with no makefile.
+
    Not all of these rules will always be defined, even when the `-r'
 option is not given.  Many of the predefined implicit rules are
@@ -6188,14 +6831,14 @@
 depends on the "suffix list" (the list of prerequisites of the special
 target `.SUFFIXES').  The default suffix list is: `.out', `.a', `.ln',
-`.o', `.c', `.cc', `.C', `.p', `.f', `.F', `.r', `.y', `.l', `.s',
-`.S', `.mod', `.sym', `.def', `.h', `.info', `.dvi', `.tex', `.texinfo',
-`.texi', `.txinfo', `.w', `.ch' `.web', `.sh', `.elc', `.el'.  All of
-the implicit rules described below whose prerequisites have one of
-these suffixes are actually suffix rules.  If you modify the suffix
-list, the only predefined suffix rules in effect will be those named by
-one or two of the suffixes that are on the list you specify; rules
-whose suffixes fail to be on the list are disabled.  *Note
-Old-Fashioned Suffix Rules: Suffix Rules, for full details on suffix
-rules.
+`.o', `.c', `.cc', `.C', `.cpp', `.p', `.f', `.F', `.r', `.y', `.l',
+`.s', `.S', `.mod', `.sym', `.def', `.h', `.info', `.dvi', `.tex',
+`.texinfo', `.texi', `.txinfo', `.w', `.ch' `.web', `.sh', `.elc',
+`.el'.  All of the implicit rules described below whose prerequisites
+have one of these suffixes are actually suffix rules.  If you modify
+the suffix list, the only predefined suffix rules in effect will be
+those named by one or two of the suffixes that are on the list you
+specify; rules whose suffixes fail to be on the list are disabled.
+*Note Old-Fashioned Suffix Rules: Suffix Rules, for full details on
+suffix rules.
 
 Compiling C programs
@@ -6204,7 +6847,8 @@
 
 Compiling C++ programs
-     `N.o' is made automatically from `N.cc' or `N.C' with a command of
-     the form `$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)'.  We encourage you to
-     use the suffix `.cc' for C++ source files instead of `.C'.
+     `N.o' is made automatically from `N.cc', `N.cpp', or `N.C' with a
+     command of the form `$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)'.  We
+     encourage you to use the suffix `.cc' for C++ source files instead
+     of `.C'.
 
 Compiling Pascal programs
@@ -6380,12 +7024,12 @@
 File: make.info,  Node: Implicit Variables,  Next: Chained Rules,  Prev: Catalogue of Rules,  Up: Implicit Rules
 
-Variables Used by Implicit Rules
-================================
+10.3 Variables Used by Implicit Rules
+=====================================
 
 The commands in built-in implicit rules make liberal use of certain
-predefined variables.  You can alter these variables in the makefile,
-with arguments to `make', or in the environment to alter how the
-implicit rules work without redefining the rules themselves.  You can
-cancel all variables used by implicit rules with the `-R' or
+predefined variables.  You can alter the values of these variables in
+the makefile, with arguments to `make', or in the environment to alter
+how the implicit rules work without redefining the rules themselves.
+You can cancel all variables used by implicit rules with the `-R' or
 `--no-builtin-variables' option.
 
@@ -6407,21 +7051,31 @@
 argument, separate them with spaces.
 
-   Here is a table of variables used as names of programs in built-in
-rules:
+   The following tables describe of some of the more commonly-used
+predefined variables.  This list is not exhaustive, and the default
+values shown here may not be what are selected by `make' for your
+environment.  To see the complete list of predefined variables for your
+instance of GNU `make' you can run `make -p' in a directory with no
+makefiles.
+
+   Here is a table of some of the more common variables used as names of
+programs in built-in rules: makefiles.
 
 `AR'
-     Archive-maintaining program; default `ar'.
+     Archive-maintaining program; default `ar'.  
 
 `AS'
-     Program for doing assembly; default `as'.
+     Program for compiling assembly files; default `as'.  
 
 `CC'
-     Program for compiling C programs; default `cc'.
+     Program for compiling C programs; default `cc'.  
+
+`CO'
+     Program for checking out files from RCS; default `co'.  
 
 `CXX'
-     Program for compiling C++ programs; default `g++'.
+     Program for compiling C++ programs; default `g++'.  
 
 `CO'
-     Program for extracting a file from RCS; default `co'.
+     Program for extracting a file from RCS; default `co'.  
 
 `CPP'
@@ -6431,49 +7085,51 @@
 `FC'
      Program for compiling or preprocessing Fortran and Ratfor programs;
-     default `f77'.
+     default `f77'.  
 
 `GET'
-     Program for extracting a file from SCCS; default `get'.
+     Program for extracting a file from SCCS; default `get'.  
 
 `LEX'
-     Program to use to turn Lex grammars into C programs or Ratfor
-     programs; default `lex'.
+     Program to use to turn Lex grammars into source code; default
+     `lex'.  
+
+`YACC'
+     Program to use to turn Yacc grammars into source code; default
+     `yacc'.  
+
+`LINT'
+     Program to use to run lint on source code; default `lint'.  
+
+`M2C'
+     Program to use to compile Modula-2 source code; default `m2c'.  
 
 `PC'
-     Program for compiling Pascal programs; default `pc'.
-
-`YACC'
-     Program to use to turn Yacc grammars into C programs; default
-     `yacc'.
-
-`YACCR'
-     Program to use to turn Yacc grammars into Ratfor programs; default
-     `yacc -r'.
+     Program for compiling Pascal programs; default `pc'.  
 
 `MAKEINFO'
      Program to convert a Texinfo source file into an Info file; default
-     `makeinfo'.
+     `makeinfo'.  
 
 `TEX'
-     Program to make TeX DVI files from TeX source; default `tex'.
+     Program to make TeX DVI files from TeX source; default `tex'.  
 
 `TEXI2DVI'
      Program to make TeX DVI files from Texinfo source; default
-     `texi2dvi'.
+     `texi2dvi'.  
 
 `WEAVE'
-     Program to translate Web into TeX; default `weave'.
+     Program to translate Web into TeX; default `weave'.  
 
 `CWEAVE'
-     Program to translate C Web into TeX; default `cweave'.
+     Program to translate C Web into TeX; default `cweave'.  
 
 `TANGLE'
-     Program to translate Web into Pascal; default `tangle'.
+     Program to translate Web into Pascal; default `tangle'.  
 
 `CTANGLE'
-     Program to translate C Web into C; default `ctangle'.
+     Program to translate C Web into C; default `ctangle'.  
 
 `RM'
-     Command to remove a file; default `rm -f'.
+     Command to remove a file; default `rm -f'.  
 
    Here is a table of variables whose values are additional arguments
@@ -6514,4 +7170,7 @@
      Extra flags to give to Lex.
 
+`YFLAGS'
+     Extra flags to give to Yacc.
+
 `PFLAGS'
      Extra flags to give to the Pascal compiler.
@@ -6520,12 +7179,12 @@
      Extra flags to give to the Fortran compiler for Ratfor programs.
 
-`YFLAGS'
-     Extra flags to give to Yacc.
+`LINTFLAGS'
+     Extra flags to give to lint.
 
 
 File: make.info,  Node: Chained Rules,  Next: Pattern Rules,  Prev: Implicit Variables,  Up: Implicit Rules
 
-Chains of Implicit Rules
-========================
+10.4 Chains of Implicit Rules
+=============================
 
 Sometimes a file can be made by a sequence of implicit rules.  For
@@ -6579,5 +7238,5 @@
 as a prerequisite of the special target `.PRECIOUS' to preserve
 intermediate files made by implicit rules whose target patterns match
-that file's name; see *Note Interrupts::.
+that file's name; see *Note Interrupts::.  
 
    A chain can involve more than two implicit rules.  For example, it is
@@ -6601,575 +7260,2 @@
 earlier in the ordering of rules.
 
-
-File: make.info,  Node: Pattern Rules,  Next: Last Resort,  Prev: Chained Rules,  Up: Implicit Rules
-
-Defining and Redefining Pattern Rules
-=====================================
-
-You define an implicit rule by writing a "pattern rule".  A pattern
-rule looks like an ordinary rule, except that its target contains the
-character `%' (exactly one of them).  The target is considered a
-pattern for matching file names; the `%' can match any nonempty
-substring, while other characters match only themselves.  The
-prerequisites likewise use `%' to show how their names relate to the
-target name.
-
-   Thus, a pattern rule `%.o : %.c' says how to make any file `STEM.o'
-from another file `STEM.c'.
-
-   Note that expansion using `%' in pattern rules occurs *after* any
-variable or function expansions, which take place when the makefile is
-read.  *Note How to Use Variables: Using Variables, and *Note Functions
-for Transforming Text: Functions.
-
-* Menu:
-
-* Pattern Intro::               An introduction to pattern rules.
-* Pattern Examples::            Examples of pattern rules.
-* Automatic Variables::         How to use automatic variables in the
-                                  commands of implicit rules.
-* Pattern Match::               How patterns match.
-* Match-Anything Rules::        Precautions you should take prior to
-                                  defining rules that can match any
-                                  target file whatever.
-* Canceling Rules::             How to override or cancel built-in rules.
-
-
-File: make.info,  Node: Pattern Intro,  Next: Pattern Examples,  Prev: Pattern Rules,  Up: Pattern Rules
-
-Introduction to Pattern Rules
------------------------------
-
-A pattern rule contains the character `%' (exactly one of them) in the
-target; otherwise, it looks exactly like an ordinary rule.  The target
-is a pattern for matching file names; the `%' matches any nonempty
-substring, while other characters match only themselves.
-
-   For example, `%.c' as a pattern matches any file name that ends in
-`.c'.  `s.%.c' as a pattern matches any file name that starts with
-`s.', ends in `.c' and is at least five characters long.  (There must
-be at least one character to match the `%'.)  The substring that the
-`%' matches is called the "stem".
-
-   `%' in a prerequisite of a pattern rule stands for the same stem
-that was matched by the `%' in the target.  In order for the pattern
-rule to apply, its target pattern must match the file name under
-consideration, and its prerequisite patterns must name files that exist
-or can be made.  These files become prerequisites of the target.
-
-   Thus, a rule of the form
-
-     %.o : %.c ; COMMAND...
-
-specifies how to make a file `N.o', with another file `N.c' as its
-prerequisite, provided that `N.c' exists or can be made.
-
-   There may also be prerequisites that do not use `%'; such a
-prerequisite attaches to every file made by this pattern rule.  These
-unvarying prerequisites are useful occasionally.
-
-   A pattern rule need not have any prerequisites that contain `%', or
-in fact any prerequisites at all.  Such a rule is effectively a general
-wildcard.  It provides a way to make any file that matches the target
-pattern.  *Note Last Resort::.
-
-   Pattern rules may have more than one target.  Unlike normal rules,
-this does not act as many different rules with the same prerequisites
-and commands.  If a pattern rule has multiple targets, `make' knows that
-the rule's commands are responsible for making all of the targets.  The
-commands are executed only once to make all the targets.  When searching
-for a pattern rule to match a target, the target patterns of a rule
-other than the one that matches the target in need of a rule are
-incidental: `make' worries only about giving commands and prerequisites
-to the file presently in question.  However, when this file's commands
-are run, the other targets are marked as having been updated themselves.
-
-   The order in which pattern rules appear in the makefile is important
-since this is the order in which they are considered.  Of equally
-applicable rules, only the first one found is used.  The rules you
-write take precedence over those that are built in.  Note however, that
-a rule whose prerequisites actually exist or are mentioned always takes
-priority over a rule with prerequisites that must be made by chaining
-other implicit rules.
-
-
-File: make.info,  Node: Pattern Examples,  Next: Automatic Variables,  Prev: Pattern Intro,  Up: Pattern Rules
-
-Pattern Rule Examples
----------------------
-
-Here are some examples of pattern rules actually predefined in `make'.
-First, the rule that compiles `.c' files into `.o' files:
-
-     %.o : %.c
-             $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
-
-defines a rule that can make any file `X.o' from `X.c'.  The command
-uses the automatic variables `$@' and `$<' to substitute the names of
-the target file and the source file in each case where the rule applies
-(*note Automatic Variables::).
-
-   Here is a second built-in rule:
-
-     % :: RCS/%,v
-             $(CO) $(COFLAGS) $<
-
-defines a rule that can make any file `X' whatsoever from a
-corresponding file `X,v' in the subdirectory `RCS'.  Since the target
-is `%', this rule will apply to any file whatever, provided the
-appropriate prerequisite file exists.  The double colon makes the rule
-"terminal", which means that its prerequisite may not be an intermediate
-file (*note Match-Anything Pattern Rules: Match-Anything Rules.).
-
-   This pattern rule has two targets:
-
-     %.tab.c %.tab.h: %.y
-             bison -d $<
-
-This tells `make' that the command `bison -d X.y' will make both
-`X.tab.c' and `X.tab.h'.  If the file `foo' depends on the files
-`parse.tab.o' and `scan.o' and the file `scan.o' depends on the file
-`parse.tab.h', when `parse.y' is changed, the command `bison -d parse.y'
-will be executed only once, and the prerequisites of both `parse.tab.o'
-and `scan.o' will be satisfied.  (Presumably the file `parse.tab.o'
-will be recompiled from `parse.tab.c' and the file `scan.o' from
-`scan.c', while `foo' is linked from `parse.tab.o', `scan.o', and its
-other prerequisites, and it will execute happily ever after.)
-
-
-File: make.info,  Node: Automatic Variables,  Next: Pattern Match,  Prev: Pattern Examples,  Up: Pattern Rules
-
-Automatic Variables
--------------------
-
-Suppose you are writing a pattern rule to compile a `.c' file into a
-`.o' file: how do you write the `cc' command so that it operates on the
-right source file name?  You cannot write the name in the command,
-because the name is different each time the implicit rule is applied.
-
-   What you do is use a special feature of `make', the "automatic
-variables".  These variables have values computed afresh for each rule
-that is executed, based on the target and prerequisites of the rule.
-In this example, you would use `$@' for the object file name and `$<'
-for the source file name.
-
-   It's very important that you recognize the limited scope in which
-automatic variable values are available: they only have values within
-the command script.  In particular, you cannot use them anywhere within
-the target or prerequisite lists of a rule; they have no value there
-and will expand to the empty string.  A common mistake is attempting to
-use `$@' within the prerequisites list in a rule; this will not work.
-However, see below for information on the SysV-style `$$@' variables.
-
-   Here is a table of automatic variables:
-
-`$@'
-     The file name of the target of the rule.  If the target is an
-     archive member, then `$@' is the name of the archive file.  In a
-     pattern rule that has multiple targets (*note Introduction to
-     Pattern Rules: Pattern Intro.), `$@' is the name of whichever
-     target caused the rule's commands to be run.
-
-`$%'
-     The target member name, when the target is an archive member.
-     *Note Archives::.  For example, if the target is `foo.a(bar.o)'
-     then `$%' is `bar.o' and `$@' is `foo.a'.  `$%' is empty when the
-     target is not an archive member.
-
-`$<'
-     The name of the first prerequisite.  If the target got its
-     commands from an implicit rule, this will be the first
-     prerequisite added by the implicit rule (*note Implicit Rules::).
-
-`$?'
-     The names of all the prerequisites that are newer than the target,
-     with spaces between them.  For prerequisites which are archive
-     members, only the member named is used (*note Archives::).
-
-`$^'
-     The names of all the prerequisites, with spaces between them.  For
-     prerequisites which are archive members, only the member named is
-     used (*note Archives::).  A target has only one prerequisite on
-     each other file it depends on, no matter how many times each file
-     is listed as a prerequisite.  So if you list a prerequisite more
-     than once for a target, the value of `$^' contains just one copy
-     of the name.
-
-`$+'
-     This is like `$^', but prerequisites listed more than once are
-     duplicated in the order they were listed in the makefile.  This is
-     primarily useful for use in linking commands where it is
-     meaningful to repeat library file names in a particular order.
-
-`$*'
-     The stem with which an implicit rule matches (*note How Patterns
-     Match: Pattern Match.).  If the target is `dir/a.foo.b' and the
-     target pattern is `a.%.b' then the stem is `dir/foo'.  The stem is
-     useful for constructing names of related files.
-
-     In a static pattern rule, the stem is part of the file name that
-     matched the `%' in the target pattern.
-
-     In an explicit rule, there is no stem; so `$*' cannot be determined
-     in that way.  Instead, if the target name ends with a recognized
-     suffix (*note Old-Fashioned Suffix Rules: Suffix Rules.), `$*' is
-     set to the target name minus the suffix.  For example, if the
-     target name is `foo.c', then `$*' is set to `foo', since `.c' is a
-     suffix.  GNU `make' does this bizarre thing only for compatibility
-     with other implementations of `make'.  You should generally avoid
-     using `$*' except in implicit rules or static pattern rules.
-
-     If the target name in an explicit rule does not end with a
-     recognized suffix, `$*' is set to the empty string for that rule.
-
-   `$?' is useful even in explicit rules when you wish to operate on
-only the prerequisites that have changed.  For example, suppose that an
-archive named `lib' is supposed to contain copies of several object
-files.  This rule copies just the changed object files into the archive:
-
-     lib: foo.o bar.o lose.o win.o
-             ar r lib $?
-
-   Of the variables listed above, four have values that are single file
-names, and three have values that are lists of file names.  These seven
-have variants that get just the file's directory name or just the file
-name within the directory.  The variant variables' names are formed by
-appending `D' or `F', respectively.  These variants are semi-obsolete
-in GNU `make' since the functions `dir' and `notdir' can be used to get
-a similar effect (*note Functions for File Names: File Name
-Functions.).  Note, however, that the `D' variants all omit the
-trailing slash which always appears in the output of the `dir'
-function.  Here is a table of the variants:
-
-`$(@D)'
-     The directory part of the file name of the target, with the
-     trailing slash removed.  If the value of `$@' is `dir/foo.o' then
-     `$(@D)' is `dir'.  This value is `.' if `$@' does not contain a
-     slash.
-
-`$(@F)'
-     The file-within-directory part of the file name of the target.  If
-     the value of `$@' is `dir/foo.o' then `$(@F)' is `foo.o'.  `$(@F)'
-     is equivalent to `$(notdir $@)'.
-
-`$(*D)'
-`$(*F)'
-     The directory part and the file-within-directory part of the stem;
-     `dir' and `foo' in this example.
-
-`$(%D)'
-`$(%F)'
-     The directory part and the file-within-directory part of the target
-     archive member name.  This makes sense only for archive member
-     targets of the form `ARCHIVE(MEMBER)' and is useful only when
-     MEMBER may contain a directory name.  (*Note Archive Members as
-     Targets: Archive Members.)
-
-`$(<D)'
-`$(<F)'
-     The directory part and the file-within-directory part of the first
-     prerequisite.
-
-`$(^D)'
-`$(^F)'
-     Lists of the directory parts and the file-within-directory parts
-     of all prerequisites.
-
-`$(+D)'
-`$(+F)'
-     Lists of the directory parts and the file-within-directory parts
-     of all prerequisites, including multiple instances of duplicated
-     prerequisites.
-
-`$(?D)'
-`$(?F)'
-     Lists of the directory parts and the file-within-directory parts of
-     all prerequisites that are newer than the target.
-
-   Note that we use a special stylistic convention when we talk about
-these automatic variables; we write "the value of `$<'", rather than
-"the variable `<'" as we would write for ordinary variables such as
-`objects' and `CFLAGS'.  We think this convention looks more natural in
-this special case.  Please do not assume it has a deep significance;
-`$<' refers to the variable named `<' just as `$(CFLAGS)' refers to the
-variable named `CFLAGS'.  You could just as well use `$(<)' in place of
-`$<'.
-
-   GNU `make' provides support for the SysV `make' feature that allows
-special variable references `$$@', `$$(@D)', and `$$(@F)' (note the
-required double-"$"!) to appear with the _prerequisites list_ (normal
-automatic variables are available only within a command script).  When
-appearing in a prerequisites list, these variables are expanded to the
-name of the target, the directory component of the target, and the file
-component of the target, respectively.
-
-   Note that these variables are available only within explicit and
-static pattern (*note Static Pattern Rules: Static Pattern.) rules;
-they have no special significance within implicit (suffix or pattern)
-rules.  Also note that while SysV `make' actually expands its entire
-prerequisite list _twice_, GNU `make' does not behave this way: instead
-it simply expands these special variables without re-expanding any
-other part of the prerequisites list.
-
-   This somewhat bizarre feature is included only to provide some
-compatibility with SysV makefiles.  In a native GNU `make' file there
-are other ways to accomplish the same results.  This feature is
-disabled if the special pseudo target `.POSIX' is defined.
-
-
-File: make.info,  Node: Pattern Match,  Next: Match-Anything Rules,  Prev: Automatic Variables,  Up: Pattern Rules
-
-How Patterns Match
-------------------
-
-A target pattern is composed of a `%' between a prefix and a suffix,
-either or both of which may be empty.  The pattern matches a file name
-only if the file name starts with the prefix and ends with the suffix,
-without overlap.  The text between the prefix and the suffix is called
-the "stem".  Thus, when the pattern `%.o' matches the file name
-`test.o', the stem is `test'.  The pattern rule prerequisites are
-turned into actual file names by substituting the stem for the character
-`%'.  Thus, if in the same example one of the prerequisites is written
-as `%.c', it expands to `test.c'.
-
-   When the target pattern does not contain a slash (and it usually does
-not), directory names in the file names are removed from the file name
-before it is compared with the target prefix and suffix.  After the
-comparison of the file name to the target pattern, the directory names,
-along with the slash that ends them, are added on to the prerequisite
-file names generated from the pattern rule's prerequisite patterns and
-the file name. The directories are ignored only for the purpose of
-finding an implicit rule to use, not in the application of that rule.
-Thus, `e%t' matches the file name `src/eat', with `src/a' as the stem.
-When prerequisites are turned into file names, the directories from the
-stem are added at the front, while the rest of the stem is substituted
-for the `%'.  The stem `src/a' with a prerequisite pattern `c%r' gives
-the file name `src/car'.
-
-
-File: make.info,  Node: Match-Anything Rules,  Next: Canceling Rules,  Prev: Pattern Match,  Up: Pattern Rules
-
-Match-Anything Pattern Rules
-----------------------------
-
-When a pattern rule's target is just `%', it matches any file name
-whatever.  We call these rules "match-anything" rules.  They are very
-useful, but it can take a lot of time for `make' to think about them,
-because it must consider every such rule for each file name listed
-either as a target or as a prerequisite.
-
-   Suppose the makefile mentions `foo.c'.  For this target, `make'
-would have to consider making it by linking an object file `foo.c.o',
-or by C compilation-and-linking in one step from `foo.c.c', or by
-Pascal compilation-and-linking from `foo.c.p', and many other
-possibilities.
-
-   We know these possibilities are ridiculous since `foo.c' is a C
-source file, not an executable.  If `make' did consider these
-possibilities, it would ultimately reject them, because files such as
-`foo.c.o' and `foo.c.p' would not exist.  But these possibilities are so
-numerous that `make' would run very slowly if it had to consider them.
-
-   To gain speed, we have put various constraints on the way `make'
-considers match-anything rules.  There are two different constraints
-that can be applied, and each time you define a match-anything rule you
-must choose one or the other for that rule.
-
-   One choice is to mark the match-anything rule as "terminal" by
-defining it with a double colon.  When a rule is terminal, it does not
-apply unless its prerequisites actually exist.  Prerequisites that
-could be made with other implicit rules are not good enough.  In other
-words, no further chaining is allowed beyond a terminal rule.
-
-   For example, the built-in implicit rules for extracting sources from
-RCS and SCCS files are terminal; as a result, if the file `foo.c,v' does
-not exist, `make' will not even consider trying to make it as an
-intermediate file from `foo.c,v.o' or from `RCS/SCCS/s.foo.c,v'.  RCS
-and SCCS files are generally ultimate source files, which should not be
-remade from any other files; therefore, `make' can save time by not
-looking for ways to remake them.
-
-   If you do not mark the match-anything rule as terminal, then it is
-nonterminal.  A nonterminal match-anything rule cannot apply to a file
-name that indicates a specific type of data.  A file name indicates a
-specific type of data if some non-match-anything implicit rule target
-matches it.
-
-   For example, the file name `foo.c' matches the target for the pattern
-rule `%.c : %.y' (the rule to run Yacc).  Regardless of whether this
-rule is actually applicable (which happens only if there is a file
-`foo.y'), the fact that its target matches is enough to prevent
-consideration of any nonterminal match-anything rules for the file
-`foo.c'.  Thus, `make' will not even consider trying to make `foo.c' as
-an executable file from `foo.c.o', `foo.c.c', `foo.c.p', etc.
-
-   The motivation for this constraint is that nonterminal match-anything
-rules are used for making files containing specific types of data (such
-as executable files) and a file name with a recognized suffix indicates
-some other specific type of data (such as a C source file).
-
-   Special built-in dummy pattern rules are provided solely to recognize
-certain file names so that nonterminal match-anything rules will not be
-considered.  These dummy rules have no prerequisites and no commands,
-and they are ignored for all other purposes.  For example, the built-in
-implicit rule
-
-     %.p :
-
-exists to make sure that Pascal source files such as `foo.p' match a
-specific target pattern and thereby prevent time from being wasted
-looking for `foo.p.o' or `foo.p.c'.
-
-   Dummy pattern rules such as the one for `%.p' are made for every
-suffix listed as valid for use in suffix rules (*note Old-Fashioned
-Suffix Rules: Suffix Rules.).
-
-
-File: make.info,  Node: Canceling Rules,  Prev: Match-Anything Rules,  Up: Pattern Rules
-
-Canceling Implicit Rules
-------------------------
-
-You can override a built-in implicit rule (or one you have defined
-yourself) by defining a new pattern rule with the same target and
-prerequisites, but different commands.  When the new rule is defined,
-the built-in one is replaced.  The new rule's position in the sequence
-of implicit rules is determined by where you write the new rule.
-
-   You can cancel a built-in implicit rule by defining a pattern rule
-with the same target and prerequisites, but no commands.  For example,
-the following would cancel the rule that runs the assembler:
-
-     %.o : %.s
-
-
-File: make.info,  Node: Last Resort,  Next: Suffix Rules,  Prev: Pattern Rules,  Up: Implicit Rules
-
-Defining Last-Resort Default Rules
-==================================
-
-You can define a last-resort implicit rule by writing a terminal
-match-anything pattern rule with no prerequisites (*note Match-Anything
-Rules::).  This is just like any other pattern rule; the only thing
-special about it is that it will match any target.  So such a rule's
-commands are used for all targets and prerequisites that have no
-commands of their own and for which no other implicit rule applies.
-
-   For example, when testing a makefile, you might not care if the
-source files contain real data, only that they exist.  Then you might
-do this:
-
-     %::
-             touch $@
-
-to cause all the source files needed (as prerequisites) to be created
-automatically.
-
-   You can instead define commands to be used for targets for which
-there are no rules at all, even ones which don't specify commands.  You
-do this by writing a rule for the target `.DEFAULT'.  Such a rule's
-commands are used for all prerequisites which do not appear as targets
-in any explicit rule, and for which no implicit rule applies.
-Naturally, there is no `.DEFAULT' rule unless you write one.
-
-   If you use `.DEFAULT' with no commands or prerequisites:
-
-     .DEFAULT:
-
-the commands previously stored for `.DEFAULT' are cleared.  Then `make'
-acts as if you had never defined `.DEFAULT' at all.
-
-   If you do not want a target to get the commands from a match-anything
-pattern rule or `.DEFAULT', but you also do not want any commands to be
-run for the target, you can give it empty commands (*note Defining
-Empty Commands: Empty Commands.).
-
-   You can use a last-resort rule to override part of another makefile.
-*Note Overriding Part of Another Makefile: Overriding Makefiles.
-
-
-File: make.info,  Node: Suffix Rules,  Next: Implicit Rule Search,  Prev: Last Resort,  Up: Implicit Rules
-
-Old-Fashioned Suffix Rules
-==========================
-
-"Suffix rules" are the old-fashioned way of defining implicit rules for
-`make'.  Suffix rules are obsolete because pattern rules are more
-general and clearer.  They are supported in GNU `make' for
-compatibility with old makefiles.  They come in two kinds:
-"double-suffix" and "single-suffix".
-
-   A double-suffix rule is defined by a pair of suffixes: the target
-suffix and the source suffix.  It matches any file whose name ends with
-the target suffix.  The corresponding implicit prerequisite is made by
-replacing the target suffix with the source suffix in the file name.  A
-two-suffix rule whose target and source suffixes are `.o' and `.c' is
-equivalent to the pattern rule `%.o : %.c'.
-
-   A single-suffix rule is defined by a single suffix, which is the
-source suffix.  It matches any file name, and the corresponding implicit
-prerequisite name is made by appending the source suffix.  A
-single-suffix rule whose source suffix is `.c' is equivalent to the
-pattern rule `% : %.c'.
-
-   Suffix rule definitions are recognized by comparing each rule's
-target against a defined list of known suffixes.  When `make' sees a
-rule whose target is a known suffix, this rule is considered a
-single-suffix rule.  When `make' sees a rule whose target is two known
-suffixes concatenated, this rule is taken as a double-suffix rule.
-
-   For example, `.c' and `.o' are both on the default list of known
-suffixes.  Therefore, if you define a rule whose target is `.c.o',
-`make' takes it to be a double-suffix rule with source suffix `.c' and
-target suffix `.o'.  Here is the old-fashioned way to define the rule
-for compiling a C source file:
-
-     .c.o:
-             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
-
-   Suffix rules cannot have any prerequisites of their own.  If they
-have any, they are treated as normal files with funny names, not as
-suffix rules.  Thus, the rule:
-
-     .c.o: foo.h
-             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
-
-tells how to make the file `.c.o' from the prerequisite file `foo.h',
-and is not at all like the pattern rule:
-
-     %.o: %.c foo.h
-             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
-
-which tells how to make `.o' files from `.c' files, and makes all `.o'
-files using this pattern rule also depend on `foo.h'.
-
-   Suffix rules with no commands are also meaningless.  They do not
-remove previous rules as do pattern rules with no commands (*note
-Canceling Implicit Rules: Canceling Rules.).  They simply enter the
-suffix or pair of suffixes concatenated as a target in the data base.
-
-   The known suffixes are simply the names of the prerequisites of the
-special target `.SUFFIXES'.  You can add your own suffixes by writing a
-rule for `.SUFFIXES' that adds more prerequisites, as in:
-
-     .SUFFIXES: .hack .win
-
-which adds `.hack' and `.win' to the end of the list of suffixes.
-
-   If you wish to eliminate the default known suffixes instead of just
-adding to them, write a rule for `.SUFFIXES' with no prerequisites.  By
-special dispensation, this eliminates all existing prerequisites of
-`.SUFFIXES'.  You can then write another rule to add the suffixes you
-want.  For example,
-
-     .SUFFIXES:            # Delete the default suffixes
-     .SUFFIXES: .c .o .h   # Define our suffix list
-
-   The `-r' or `--no-builtin-rules' flag causes the default list of
-suffixes to be empty.
-
-   The variable `SUFFIXES' is defined to the default list of suffixes
-before `make' reads any makefiles.  You can change the list of suffixes
-with a rule for the special target `.SUFFIXES', but that does not alter
-this variable.
-
Index: trunk/src/gmake/doc/make.info-2
===================================================================
--- trunk/src/gmake/doc/make.info-2	(revision 466)
+++ trunk/src/gmake/doc/make.info-2	(revision 503)
@@ -1,4 +1,26 @@
-This is ../../doc/make.info, produced by makeinfo version 4.6 from
-../../doc/make.texi.
+This is make.info, produced by makeinfo version 4.8 from make.texi.
+
+   This file documents the GNU `make' utility, which determines
+automatically which pieces of a large program need to be recompiled,
+and issues the commands to recompile them.
+
+   This is Edition 0.70, last updated 1 April 2006, of `The GNU Make
+Manual', for GNU `make' version 3.81.
+
+   Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with the Front-Cover Texts
+     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     below.  A copy of the license is included in the section entitled
+     "GNU Free Documentation License."
+
+     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+     modify this GNU Manual, like GNU software.  Copies published by
+     the Free Software Foundation raise funds for GNU development."
 
 INFO-DIR-SECTION GNU Packages
@@ -7,26 +29,570 @@
 END-INFO-DIR-ENTRY
 
-   This file documents the GNU Make utility, which determines
-automatically which pieces of a large program need to be recompiled,
-and issues the commands to recompile them.
-
-   This is Edition 0.61, last updated 02 May 2003, of `The GNU Make
-Manual', for `make', Version 3.81.
-
-   Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts.  A copy of the license is included in the section entitled "GNU
-Free Documentation License".
+
+File: make.info,  Node: Pattern Rules,  Next: Last Resort,  Prev: Chained Rules,  Up: Implicit Rules
+
+10.5 Defining and Redefining Pattern Rules
+==========================================
+
+You define an implicit rule by writing a "pattern rule".  A pattern
+rule looks like an ordinary rule, except that its target contains the
+character `%' (exactly one of them).  The target is considered a
+pattern for matching file names; the `%' can match any nonempty
+substring, while other characters match only themselves.  The
+prerequisites likewise use `%' to show how their names relate to the
+target name.
+
+   Thus, a pattern rule `%.o : %.c' says how to make any file `STEM.o'
+from another file `STEM.c'.
+
+   Note that expansion using `%' in pattern rules occurs *after* any
+variable or function expansions, which take place when the makefile is
+read.  *Note How to Use Variables: Using Variables, and *Note Functions
+for Transforming Text: Functions.
+
+* Menu:
+
+* Pattern Intro::               An introduction to pattern rules.
+* Pattern Examples::            Examples of pattern rules.
+* Automatic Variables::         How to use automatic variables in the
+                                  commands of implicit rules.
+* Pattern Match::               How patterns match.
+* Match-Anything Rules::        Precautions you should take prior to
+                                  defining rules that can match any
+                                  target file whatever.
+* Canceling Rules::             How to override or cancel built-in rules.
+
+
+File: make.info,  Node: Pattern Intro,  Next: Pattern Examples,  Prev: Pattern Rules,  Up: Pattern Rules
+
+10.5.1 Introduction to Pattern Rules
+------------------------------------
+
+A pattern rule contains the character `%' (exactly one of them) in the
+target; otherwise, it looks exactly like an ordinary rule.  The target
+is a pattern for matching file names; the `%' matches any nonempty
+substring, while other characters match only themselves.  
+
+   For example, `%.c' as a pattern matches any file name that ends in
+`.c'.  `s.%.c' as a pattern matches any file name that starts with
+`s.', ends in `.c' and is at least five characters long.  (There must
+be at least one character to match the `%'.)  The substring that the
+`%' matches is called the "stem".
+
+   `%' in a prerequisite of a pattern rule stands for the same stem
+that was matched by the `%' in the target.  In order for the pattern
+rule to apply, its target pattern must match the file name under
+consideration and all of its prerequisites (after pattern substitution)
+must name files that exist or can be made.  These files become
+prerequisites of the target.  
+
+   Thus, a rule of the form
+
+     %.o : %.c ; COMMAND...
+
+specifies how to make a file `N.o', with another file `N.c' as its
+prerequisite, provided that `N.c' exists or can be made.
+
+   There may also be prerequisites that do not use `%'; such a
+prerequisite attaches to every file made by this pattern rule.  These
+unvarying prerequisites are useful occasionally.
+
+   A pattern rule need not have any prerequisites that contain `%', or
+in fact any prerequisites at all.  Such a rule is effectively a general
+wildcard.  It provides a way to make any file that matches the target
+pattern.  *Note Last Resort::.
+
+   Pattern rules may have more than one target.  Unlike normal rules,
+this does not act as many different rules with the same prerequisites
+and commands.  If a pattern rule has multiple targets, `make' knows that
+the rule's commands are responsible for making all of the targets.  The
+commands are executed only once to make all the targets.  When searching
+for a pattern rule to match a target, the target patterns of a rule
+other than the one that matches the target in need of a rule are
+incidental: `make' worries only about giving commands and prerequisites
+to the file presently in question.  However, when this file's commands
+are run, the other targets are marked as having been updated themselves.  
+
+   The order in which pattern rules appear in the makefile is important
+since this is the order in which they are considered.  Of equally
+applicable rules, only the first one found is used.  The rules you
+write take precedence over those that are built in.  Note however, that
+a rule whose prerequisites actually exist or are mentioned always takes
+priority over a rule with prerequisites that must be made by chaining
+other implicit rules.  
+
+
+File: make.info,  Node: Pattern Examples,  Next: Automatic Variables,  Prev: Pattern Intro,  Up: Pattern Rules
+
+10.5.2 Pattern Rule Examples
+----------------------------
+
+Here are some examples of pattern rules actually predefined in `make'.
+First, the rule that compiles `.c' files into `.o' files:
+
+     %.o : %.c
+             $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+
+defines a rule that can make any file `X.o' from `X.c'.  The command
+uses the automatic variables `$@' and `$<' to substitute the names of
+the target file and the source file in each case where the rule applies
+(*note Automatic Variables::).
+
+   Here is a second built-in rule:
+
+     % :: RCS/%,v
+             $(CO) $(COFLAGS) $<
+
+defines a rule that can make any file `X' whatsoever from a
+corresponding file `X,v' in the subdirectory `RCS'.  Since the target
+is `%', this rule will apply to any file whatever, provided the
+appropriate prerequisite file exists.  The double colon makes the rule
+"terminal", which means that its prerequisite may not be an intermediate
+file (*note Match-Anything Pattern Rules: Match-Anything Rules.).
+
+   This pattern rule has two targets:
+
+     %.tab.c %.tab.h: %.y
+             bison -d $<
+
+This tells `make' that the command `bison -d X.y' will make both
+`X.tab.c' and `X.tab.h'.  If the file `foo' depends on the files
+`parse.tab.o' and `scan.o' and the file `scan.o' depends on the file
+`parse.tab.h', when `parse.y' is changed, the command `bison -d parse.y'
+will be executed only once, and the prerequisites of both `parse.tab.o'
+and `scan.o' will be satisfied.  (Presumably the file `parse.tab.o'
+will be recompiled from `parse.tab.c' and the file `scan.o' from
+`scan.c', while `foo' is linked from `parse.tab.o', `scan.o', and its
+other prerequisites, and it will execute happily ever after.)
+
+
+File: make.info,  Node: Automatic Variables,  Next: Pattern Match,  Prev: Pattern Examples,  Up: Pattern Rules
+
+10.5.3 Automatic Variables
+--------------------------
+
+Suppose you are writing a pattern rule to compile a `.c' file into a
+`.o' file: how do you write the `cc' command so that it operates on the
+right source file name?  You cannot write the name in the command,
+because the name is different each time the implicit rule is applied.
+
+   What you do is use a special feature of `make', the "automatic
+variables".  These variables have values computed afresh for each rule
+that is executed, based on the target and prerequisites of the rule.
+In this example, you would use `$@' for the object file name and `$<'
+for the source file name.
+
+   It's very important that you recognize the limited scope in which
+automatic variable values are available: they only have values within
+the command script.  In particular, you cannot use them anywhere within
+the target list of a rule; they have no value there and will expand to
+the empty string.  Also, they cannot be accessed directly within the
+prerequisite list of a rule.  A common mistake is attempting to use
+`$@' within the prerequisites list; this will not work.  However, there
+is a special feature of GNU `make', secondary expansion (*note
+Secondary Expansion::), which will allow automatic variable values to
+be used in prerequisite lists.
+
+   Here is a table of automatic variables:
+
+`$@'
+     The file name of the target of the rule.  If the target is an
+     archive member, then `$@' is the name of the archive file.  In a
+     pattern rule that has multiple targets (*note Introduction to
+     Pattern Rules: Pattern Intro.), `$@' is the name of whichever
+     target caused the rule's commands to be run.
+
+`$%'
+     The target member name, when the target is an archive member.
+     *Note Archives::.  For example, if the target is `foo.a(bar.o)'
+     then `$%' is `bar.o' and `$@' is `foo.a'.  `$%' is empty when the
+     target is not an archive member.
+
+`$<'
+     The name of the first prerequisite.  If the target got its
+     commands from an implicit rule, this will be the first
+     prerequisite added by the implicit rule (*note Implicit Rules::).
+
+`$?'
+     The names of all the prerequisites that are newer than the target,
+     with spaces between them.  For prerequisites which are archive
+     members, only the member named is used (*note Archives::).  
+
+`$^'
+     The names of all the prerequisites, with spaces between them.  For
+     prerequisites which are archive members, only the member named is
+     used (*note Archives::).  A target has only one prerequisite on
+     each other file it depends on, no matter how many times each file
+     is listed as a prerequisite.  So if you list a prerequisite more
+     than once for a target, the value of `$^' contains just one copy
+     of the name.  This list does *not* contain any of the order-only
+     prerequisites; for those see the `$|' variable, below.  
+
+`$+'
+     This is like `$^', but prerequisites listed more than once are
+     duplicated in the order they were listed in the makefile.  This is
+     primarily useful for use in linking commands where it is
+     meaningful to repeat library file names in a particular order.
+
+`$|'
+     The names of all the order-only prerequisites, with spaces between
+     them.
+
+`$*'
+     The stem with which an implicit rule matches (*note How Patterns
+     Match: Pattern Match.).  If the target is `dir/a.foo.b' and the
+     target pattern is `a.%.b' then the stem is `dir/foo'.  The stem is
+     useful for constructing names of related files.  
+
+     In a static pattern rule, the stem is part of the file name that
+     matched the `%' in the target pattern.
+
+     In an explicit rule, there is no stem; so `$*' cannot be determined
+     in that way.  Instead, if the target name ends with a recognized
+     suffix (*note Old-Fashioned Suffix Rules: Suffix Rules.), `$*' is
+     set to the target name minus the suffix.  For example, if the
+     target name is `foo.c', then `$*' is set to `foo', since `.c' is a
+     suffix.  GNU `make' does this bizarre thing only for compatibility
+     with other implementations of `make'.  You should generally avoid
+     using `$*' except in implicit rules or static pattern rules.
+
+     If the target name in an explicit rule does not end with a
+     recognized suffix, `$*' is set to the empty string for that rule.
+
+   `$?' is useful even in explicit rules when you wish to operate on
+only the prerequisites that have changed.  For example, suppose that an
+archive named `lib' is supposed to contain copies of several object
+files.  This rule copies just the changed object files into the archive:
+
+     lib: foo.o bar.o lose.o win.o
+             ar r lib $?
+
+   Of the variables listed above, four have values that are single file
+names, and three have values that are lists of file names.  These seven
+have variants that get just the file's directory name or just the file
+name within the directory.  The variant variables' names are formed by
+appending `D' or `F', respectively.  These variants are semi-obsolete
+in GNU `make' since the functions `dir' and `notdir' can be used to get
+a similar effect (*note Functions for File Names: File Name
+Functions.).  Note, however, that the `D' variants all omit the
+trailing slash which always appears in the output of the `dir'
+function.  Here is a table of the variants:
+
+`$(@D)'
+     The directory part of the file name of the target, with the
+     trailing slash removed.  If the value of `$@' is `dir/foo.o' then
+     `$(@D)' is `dir'.  This value is `.' if `$@' does not contain a
+     slash.
+
+`$(@F)'
+     The file-within-directory part of the file name of the target.  If
+     the value of `$@' is `dir/foo.o' then `$(@F)' is `foo.o'.  `$(@F)'
+     is equivalent to `$(notdir $@)'.
+
+`$(*D)'
+`$(*F)'
+     The directory part and the file-within-directory part of the stem;
+     `dir' and `foo' in this example.
+
+`$(%D)'
+`$(%F)'
+     The directory part and the file-within-directory part of the target
+     archive member name.  This makes sense only for archive member
+     targets of the form `ARCHIVE(MEMBER)' and is useful only when
+     MEMBER may contain a directory name.  (*Note Archive Members as
+     Targets: Archive Members.)
+
+`$(<D)'
+`$(<F)'
+     The directory part and the file-within-directory part of the first
+     prerequisite.
+
+`$(^D)'
+`$(^F)'
+     Lists of the directory parts and the file-within-directory parts
+     of all prerequisites.
+
+`$(+D)'
+`$(+F)'
+     Lists of the directory parts and the file-within-directory parts
+     of all prerequisites, including multiple instances of duplicated
+     prerequisites.
+
+`$(?D)'
+`$(?F)'
+     Lists of the directory parts and the file-within-directory parts of
+     all prerequisites that are newer than the target.
+
+   Note that we use a special stylistic convention when we talk about
+these automatic variables; we write "the value of `$<'", rather than
+"the variable `<'" as we would write for ordinary variables such as
+`objects' and `CFLAGS'.  We think this convention looks more natural in
+this special case.  Please do not assume it has a deep significance;
+`$<' refers to the variable named `<' just as `$(CFLAGS)' refers to the
+variable named `CFLAGS'.  You could just as well use `$(<)' in place of
+`$<'.
+
+
+File: make.info,  Node: Pattern Match,  Next: Match-Anything Rules,  Prev: Automatic Variables,  Up: Pattern Rules
+
+10.5.4 How Patterns Match
+-------------------------
+
+A target pattern is composed of a `%' between a prefix and a suffix,
+either or both of which may be empty.  The pattern matches a file name
+only if the file name starts with the prefix and ends with the suffix,
+without overlap.  The text between the prefix and the suffix is called
+the "stem".  Thus, when the pattern `%.o' matches the file name
+`test.o', the stem is `test'.  The pattern rule prerequisites are
+turned into actual file names by substituting the stem for the character
+`%'.  Thus, if in the same example one of the prerequisites is written
+as `%.c', it expands to `test.c'.
+
+   When the target pattern does not contain a slash (and it usually does
+not), directory names in the file names are removed from the file name
+before it is compared with the target prefix and suffix.  After the
+comparison of the file name to the target pattern, the directory names,
+along with the slash that ends them, are added on to the prerequisite
+file names generated from the pattern rule's prerequisite patterns and
+the file name.  The directories are ignored only for the purpose of
+finding an implicit rule to use, not in the application of that rule.
+Thus, `e%t' matches the file name `src/eat', with `src/a' as the stem.
+When prerequisites are turned into file names, the directories from the
+stem are added at the front, while the rest of the stem is substituted
+for the `%'.  The stem `src/a' with a prerequisite pattern `c%r' gives
+the file name `src/car'.
+
+
+File: make.info,  Node: Match-Anything Rules,  Next: Canceling Rules,  Prev: Pattern Match,  Up: Pattern Rules
+
+10.5.5 Match-Anything Pattern Rules
+-----------------------------------
+
+When a pattern rule's target is just `%', it matches any file name
+whatever.  We call these rules "match-anything" rules.  They are very
+useful, but it can take a lot of time for `make' to think about them,
+because it must consider every such rule for each file name listed
+either as a target or as a prerequisite.
+
+   Suppose the makefile mentions `foo.c'.  For this target, `make'
+would have to consider making it by linking an object file `foo.c.o',
+or by C compilation-and-linking in one step from `foo.c.c', or by
+Pascal compilation-and-linking from `foo.c.p', and many other
+possibilities.
+
+   We know these possibilities are ridiculous since `foo.c' is a C
+source file, not an executable.  If `make' did consider these
+possibilities, it would ultimately reject them, because files such as
+`foo.c.o' and `foo.c.p' would not exist.  But these possibilities are so
+numerous that `make' would run very slowly if it had to consider them.
+
+   To gain speed, we have put various constraints on the way `make'
+considers match-anything rules.  There are two different constraints
+that can be applied, and each time you define a match-anything rule you
+must choose one or the other for that rule.
+
+   One choice is to mark the match-anything rule as "terminal" by
+defining it with a double colon.  When a rule is terminal, it does not
+apply unless its prerequisites actually exist.  Prerequisites that
+could be made with other implicit rules are not good enough.  In other
+words, no further chaining is allowed beyond a terminal rule.
+
+   For example, the built-in implicit rules for extracting sources from
+RCS and SCCS files are terminal; as a result, if the file `foo.c,v' does
+not exist, `make' will not even consider trying to make it as an
+intermediate file from `foo.c,v.o' or from `RCS/SCCS/s.foo.c,v'.  RCS
+and SCCS files are generally ultimate source files, which should not be
+remade from any other files; therefore, `make' can save time by not
+looking for ways to remake them.
+
+   If you do not mark the match-anything rule as terminal, then it is
+nonterminal.  A nonterminal match-anything rule cannot apply to a file
+name that indicates a specific type of data.  A file name indicates a
+specific type of data if some non-match-anything implicit rule target
+matches it.
+
+   For example, the file name `foo.c' matches the target for the pattern
+rule `%.c : %.y' (the rule to run Yacc).  Regardless of whether this
+rule is actually applicable (which happens only if there is a file
+`foo.y'), the fact that its target matches is enough to prevent
+consideration of any nonterminal match-anything rules for the file
+`foo.c'.  Thus, `make' will not even consider trying to make `foo.c' as
+an executable file from `foo.c.o', `foo.c.c', `foo.c.p', etc.
+
+   The motivation for this constraint is that nonterminal match-anything
+rules are used for making files containing specific types of data (such
+as executable files) and a file name with a recognized suffix indicates
+some other specific type of data (such as a C source file).
+
+   Special built-in dummy pattern rules are provided solely to recognize
+certain file names so that nonterminal match-anything rules will not be
+considered.  These dummy rules have no prerequisites and no commands,
+and they are ignored for all other purposes.  For example, the built-in
+implicit rule
+
+     %.p :
+
+exists to make sure that Pascal source files such as `foo.p' match a
+specific target pattern and thereby prevent time from being wasted
+looking for `foo.p.o' or `foo.p.c'.
+
+   Dummy pattern rules such as the one for `%.p' are made for every
+suffix listed as valid for use in suffix rules (*note Old-Fashioned
+Suffix Rules: Suffix Rules.).
+
+
+File: make.info,  Node: Canceling Rules,  Prev: Match-Anything Rules,  Up: Pattern Rules
+
+10.5.6 Canceling Implicit Rules
+-------------------------------
+
+You can override a built-in implicit rule (or one you have defined
+yourself) by defining a new pattern rule with the same target and
+prerequisites, but different commands.  When the new rule is defined,
+the built-in one is replaced.  The new rule's position in the sequence
+of implicit rules is determined by where you write the new rule.
+
+   You can cancel a built-in implicit rule by defining a pattern rule
+with the same target and prerequisites, but no commands.  For example,
+the following would cancel the rule that runs the assembler:
+
+     %.o : %.s
+
+
+File: make.info,  Node: Last Resort,  Next: Suffix Rules,  Prev: Pattern Rules,  Up: Implicit Rules
+
+10.6 Defining Last-Resort Default Rules
+=======================================
+
+You can define a last-resort implicit rule by writing a terminal
+match-anything pattern rule with no prerequisites (*note Match-Anything
+Rules::).  This is just like any other pattern rule; the only thing
+special about it is that it will match any target.  So such a rule's
+commands are used for all targets and prerequisites that have no
+commands of their own and for which no other implicit rule applies.
+
+   For example, when testing a makefile, you might not care if the
+source files contain real data, only that they exist.  Then you might
+do this:
+
+     %::
+             touch $@
+
+to cause all the source files needed (as prerequisites) to be created
+automatically.
+
+   You can instead define commands to be used for targets for which
+there are no rules at all, even ones which don't specify commands.  You
+do this by writing a rule for the target `.DEFAULT'.  Such a rule's
+commands are used for all prerequisites which do not appear as targets
+in any explicit rule, and for which no implicit rule applies.
+Naturally, there is no `.DEFAULT' rule unless you write one.
+
+   If you use `.DEFAULT' with no commands or prerequisites:
+
+     .DEFAULT:
+
+the commands previously stored for `.DEFAULT' are cleared.  Then `make'
+acts as if you had never defined `.DEFAULT' at all.
+
+   If you do not want a target to get the commands from a match-anything
+pattern rule or `.DEFAULT', but you also do not want any commands to be
+run for the target, you can give it empty commands (*note Defining
+Empty Commands: Empty Commands.).
+
+   You can use a last-resort rule to override part of another makefile.
+*Note Overriding Part of Another Makefile: Overriding Makefiles.
+
+
+File: make.info,  Node: Suffix Rules,  Next: Implicit Rule Search,  Prev: Last Resort,  Up: Implicit Rules
+
+10.7 Old-Fashioned Suffix Rules
+===============================
+
+"Suffix rules" are the old-fashioned way of defining implicit rules for
+`make'.  Suffix rules are obsolete because pattern rules are more
+general and clearer.  They are supported in GNU `make' for
+compatibility with old makefiles.  They come in two kinds:
+"double-suffix" and "single-suffix".
+
+   A double-suffix rule is defined by a pair of suffixes: the target
+suffix and the source suffix.  It matches any file whose name ends with
+the target suffix.  The corresponding implicit prerequisite is made by
+replacing the target suffix with the source suffix in the file name.  A
+two-suffix rule whose target and source suffixes are `.o' and `.c' is
+equivalent to the pattern rule `%.o : %.c'.
+
+   A single-suffix rule is defined by a single suffix, which is the
+source suffix.  It matches any file name, and the corresponding implicit
+prerequisite name is made by appending the source suffix.  A
+single-suffix rule whose source suffix is `.c' is equivalent to the
+pattern rule `% : %.c'.
+
+   Suffix rule definitions are recognized by comparing each rule's
+target against a defined list of known suffixes.  When `make' sees a
+rule whose target is a known suffix, this rule is considered a
+single-suffix rule.  When `make' sees a rule whose target is two known
+suffixes concatenated, this rule is taken as a double-suffix rule.
+
+   For example, `.c' and `.o' are both on the default list of known
+suffixes.  Therefore, if you define a rule whose target is `.c.o',
+`make' takes it to be a double-suffix rule with source suffix `.c' and
+target suffix `.o'.  Here is the old-fashioned way to define the rule
+for compiling a C source file:
+
+     .c.o:
+             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
+
+   Suffix rules cannot have any prerequisites of their own.  If they
+have any, they are treated as normal files with funny names, not as
+suffix rules.  Thus, the rule:
+
+     .c.o: foo.h
+             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
+
+tells how to make the file `.c.o' from the prerequisite file `foo.h',
+and is not at all like the pattern rule:
+
+     %.o: %.c foo.h
+             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
+
+which tells how to make `.o' files from `.c' files, and makes all `.o'
+files using this pattern rule also depend on `foo.h'.
+
+   Suffix rules with no commands are also meaningless.  They do not
+remove previous rules as do pattern rules with no commands (*note
+Canceling Implicit Rules: Canceling Rules.).  They simply enter the
+suffix or pair of suffixes concatenated as a target in the data base.
+
+   The known suffixes are simply the names of the prerequisites of the
+special target `.SUFFIXES'.  You can add your own suffixes by writing a
+rule for `.SUFFIXES' that adds more prerequisites, as in:
+
+     .SUFFIXES: .hack .win
+
+which adds `.hack' and `.win' to the end of the list of suffixes.
+
+   If you wish to eliminate the default known suffixes instead of just
+adding to them, write a rule for `.SUFFIXES' with no prerequisites.  By
+special dispensation, this eliminates all existing prerequisites of
+`.SUFFIXES'.  You can then write another rule to add the suffixes you
+want.  For example,
+
+     .SUFFIXES:            # Delete the default suffixes
+     .SUFFIXES: .c .o .h   # Define our suffix list
+
+   The `-r' or `--no-builtin-rules' flag causes the default list of
+suffixes to be empty.
+
+   The variable `SUFFIXES' is defined to the default list of suffixes
+before `make' reads any makefiles.  You can change the list of suffixes
+with a rule for the special target `.SUFFIXES', but that does not alter
+this variable.
 
 
 File: make.info,  Node: Implicit Rule Search,  Prev: Suffix Rules,  Up: Implicit Rules
 
-Implicit Rule Search Algorithm
-==============================
+10.8 Implicit Rule Search Algorithm
+===================================
 
 Here is the procedure `make' uses for searching for an implicit rule
@@ -110,6 +676,6 @@
 File: make.info,  Node: Archives,  Next: Features,  Prev: Implicit Rules,  Up: Top
 
-Using `make' to Update Archive Files
-************************************
+11 Using `make' to Update Archive Files
+***************************************
 
 "Archive files" are files containing named subfiles called "members";
@@ -128,6 +694,6 @@
 File: make.info,  Node: Archive Members,  Next: Archive Update,  Prev: Archives,  Up: Archives
 
-Archive Members as Targets
-==========================
+11.1 Archive Members as Targets
+===============================
 
 An individual member of an archive file can be used as a target or
@@ -149,6 +715,6 @@
 
    In fact, nearly all archive member targets are updated in just this
-way and there is an implicit rule to do it for you.  *Note:* The `c'
-flag to `ar' is required if the archive file does not already exist.
+way and there is an implicit rule to do it for you.  *Please note:* The
+`c' flag to `ar' is required if the archive file does not already exist.
 
    To specify several members in the same archive, you can write all the
@@ -170,6 +736,6 @@
 File: make.info,  Node: Archive Update,  Next: Archive Pitfalls,  Prev: Archive Members,  Up: Archives
 
-Implicit Rule for Archive Member Targets
-========================================
+11.2 Implicit Rule for Archive Member Targets
+=============================================
 
 Recall that a target that looks like `A(M)' stands for the member named
@@ -220,6 +786,6 @@
 File: make.info,  Node: Archive Symbols,  Prev: Archive Update,  Up: Archive Update
 
-Updating Archive Symbol Directories
------------------------------------
+11.2.1 Updating Archive Symbol Directories
+------------------------------------------
 
 An archive file that is used as a library usually contains a special
@@ -251,6 +817,6 @@
 File: make.info,  Node: Archive Pitfalls,  Next: Archive Suffix Rules,  Prev: Archive Update,  Up: Archives
 
-Dangers When Using Archives
-===========================
+11.3 Dangers When Using Archives
+================================
 
 It is important to be careful when using parallel execution (the `-j'
@@ -267,6 +833,6 @@
 File: make.info,  Node: Archive Suffix Rules,  Prev: Archive Pitfalls,  Up: Archives
 
-Suffix Rules for Archive Files
-==============================
+11.4 Suffix Rules for Archive Files
+===================================
 
 You can write a special kind of suffix rule for dealing with archive
@@ -306,6 +872,6 @@
 File: make.info,  Node: Features,  Next: Missing,  Prev: Archives,  Up: Top
 
-Features of GNU `make'
-**********************
+12 Features of GNU `make'
+*************************
 
 Here is a summary of the features of GNU `make', for comparison with
@@ -500,11 +1066,11 @@
 
    * The built-in variable `MAKE_VERSION' gives the version number of
-     `make'.
+     `make'.  
 
 
 File: make.info,  Node: Missing,  Next: Makefile Conventions,  Prev: Features,  Up: Top
 
-Incompatibilities and Missing Features
-**************************************
+13 Incompatibilities and Missing Features
+*****************************************
 
 The `make' programs in various other systems support a few features
@@ -546,5 +1112,5 @@
      imagine what went on in the minds of Unix `make' developers to do
      this; it is utterly inconsistent with the normal definition of
-     `$*'.
+     `$*'.  
 
    * In some Unix `make's, implicit rule search (*note Using Implicit
@@ -590,6 +1156,6 @@
 File: make.info,  Node: Makefile Conventions,  Next: Quick Reference,  Prev: Missing,  Up: Top
 
-Makefile Conventions
-********************
+14 Makefile Conventions
+***********************
 
 This node describes conventions for writing the Makefiles for GNU
@@ -610,6 +1176,6 @@
 File: make.info,  Node: Makefile Basics,  Next: Utilities in Makefiles,  Up: Makefile Conventions
 
-General Conventions for Makefiles
-=================================
+14.1 General Conventions for Makefiles
+======================================
 
 Every Makefile should contain this line:
@@ -690,6 +1256,6 @@
 File: make.info,  Node: Utilities in Makefiles,  Next: Command Variables,  Prev: Makefile Basics,  Up: Makefile Conventions
 
-Utilities in Makefiles
-======================
+14.2 Utilities in Makefiles
+===========================
 
 Write the Makefile commands (and any shell scripts, such as
@@ -745,6 +1311,6 @@
 File: make.info,  Node: Command Variables,  Next: Directory Variables,  Prev: Utilities in Makefiles,  Up: Makefile Conventions
 
-Variables for Specifying Commands
-=================================
+14.3 Variables for Specifying Commands
+======================================
 
 Makefiles should provide variables for overriding certain commands,
@@ -825,12 +1391,20 @@
 File: make.info,  Node: Directory Variables,  Next: Standard Targets,  Prev: Command Variables,  Up: Makefile Conventions
 
-Variables for Installation Directories
-======================================
+14.4 Variables for Installation Directories
+===========================================
 
 Installation directories should always be named by variables, so it is
 easy to install in a nonstandard place.  The standard names for these
-variables are described below.  They are based on a standard filesystem
-layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
-and other modern operating systems.
+variables and the values they should have in GNU packages are described
+below.  They are based on a standard filesystem layout; variants of it
+are used in GNU/Linux and other modern operating systems.
+
+   Installers are expected to override these values when calling `make'
+(e.g., `make prefix=/usr install' or `configure' (e.g., `configure
+--prefix=/usr').  GNU packages should not try to guess which value
+should be appropriate for these variables on the system they are being
+installed onto: use the default settings specified here so that all GNU
+packages behave identically, allowing the installer to achieve any
+desired layout.
 
    These two variables set the root for the installation.  All the other
@@ -885,4 +1459,10 @@
      (If you are using Autoconf, write it as `@libexecdir@'.)
 
+     The definition of `libexecdir' is the same for all packages, so
+     you should install your data in a subdirectory thereof.  Most
+     packages install their data under `$(libexecdir)/PACKAGE-NAME/',
+     possibly within additional subdirectories thereof, such as
+     `$(libexecdir)/PACKAGE-NAME/MACHINE/VERSION'.
+
    Data files used by the program during its execution are divided into
 categories in two ways.
@@ -901,13 +1481,29 @@
 architecture-independent, and it is generally not hard.
 
-   Therefore, here are the variables Makefiles should use to specify
-directories:
+   Here are the variables Makefiles should use to specify directories
+to put these various kinds of files in:
+
+`datarootdir'
+     The root of the directory tree for read-only
+     architecture-independent data files.  This should normally be
+     `/usr/local/share', but write it as `$(prefix)/share'.  (If you
+     are using Autoconf, write it as `@datarootdir@'.)  `datadir''s
+     default value is based on this variable; so are `infodir',
+     `mandir', and others.
 
 `datadir'
-     The directory for installing read-only architecture independent
-     data files.  This should normally be `/usr/local/share', but write
-     it as `$(prefix)/share'.  (If you are using Autoconf, write it as
-     `@datadir@'.)  As a special exception, see `$(infodir)' and
-     `$(includedir)' below.
+     The directory for installing idiosyncratic read-only
+     architecture-independent data files for this program.  This is
+     usually the same place as `datarootdir', but we use the two
+     separate variables so that you can move these program-specific
+     files without altering the location for Info files, man pages, etc.
+
+     This should normally be `/usr/local/share', but write it as
+     `$(datarootdir)'.  (If you are using Autoconf, write it as
+     `@datadir@'.)
+
+     The definition of `datadir' is the same for all packages, so you
+     should install your data in a subdirectory thereof.  Most packages
+     install their data under `$(datadir)/PACKAGE-NAME/'.
 
 `sysconfdir'
@@ -942,28 +1538,8 @@
      `@localstatedir@'.)
 
-`libdir'
-     The directory for object files and libraries of object code.  Do
-     not install executables here, they probably ought to go in
-     `$(libexecdir)' instead.  The value of `libdir' should normally be
-     `/usr/local/lib', but write it as `$(exec_prefix)/lib'.  (If you
-     are using Autoconf, write it as `@libdir@'.)
-
-`infodir'
-     The directory for installing the Info files for this package.  By
-     default, it should be `/usr/local/info', but it should be written
-     as `$(prefix)/info'.  (If you are using Autoconf, write it as
-     `@infodir@'.)
-
-`lispdir'
-     The directory for installing any Emacs Lisp files in this package.
-     By default, it should be `/usr/local/share/emacs/site-lisp', but
-     it should be written as `$(prefix)/share/emacs/site-lisp'.
-
-     If you are using Autoconf, write the default as `@lispdir@'.  In
-     order to make `@lispdir@' work, you need the following lines in
-     your `configure.in' file:
-
-          lispdir='${datadir}/emacs/site-lisp'
-          AC_SUBST(lispdir)
+   These variables specify the directory for installing certain specific
+types of files, if your program has them.  Every GNU package should
+have Info files, so every program needs `infodir', but not all need
+`libdir' or `lispdir'.
 
 `includedir'
@@ -1001,11 +1577,66 @@
      string in the file--part of a comment--and `grep' for that string.
 
+`docdir'
+     The directory for installing documentation files (other than Info)
+     for this package.  By default, it should be
+     `/usr/local/share/doc/YOURPKG', but it should be written as
+     `$(datarootdir)/doc/YOURPKG'.  (If you are using Autoconf, write
+     it as `@docdir@'.)  The YOURPKG subdirectory, which may include a
+     version number, prevents collisions among files with common names,
+     such as `README'.
+
+`infodir'
+     The directory for installing the Info files for this package.  By
+     default, it should be `/usr/local/share/info', but it should be
+     written as `$(datarootdir)/info'.  (If you are using Autoconf,
+     write it as `@infodir@'.)  `infodir' is separate from `docdir' for
+     compatibility with existing practice.
+
+`htmldir'
+`dvidir'
+`pdfdir'
+`psdir'
+     Directories for installing documentation files in the particular
+     format.  (It is not required to support documentation in all these
+     formats.)  They should all be set to `$(docdir)' by default.  (If
+     you are using Autoconf, write them as `@htmldir@', `@dvidir@',
+     etc.)  Packages which supply several translations of their
+     documentation should install them in `$(htmldir)/'LL,
+     `$(pdfdir)/'LL, etc. where LL is a locale abbreviation such as
+     `en' or `pt_BR'.
+
+`libdir'
+     The directory for object files and libraries of object code.  Do
+     not install executables here, they probably ought to go in
+     `$(libexecdir)' instead.  The value of `libdir' should normally be
+     `/usr/local/lib', but write it as `$(exec_prefix)/lib'.  (If you
+     are using Autoconf, write it as `@libdir@'.)
+
+`lispdir'
+     The directory for installing any Emacs Lisp files in this package.
+     By default, it should be `/usr/local/share/emacs/site-lisp', but
+     it should be written as `$(datarootdir)/emacs/site-lisp'.
+
+     If you are using Autoconf, write the default as `@lispdir@'.  In
+     order to make `@lispdir@' work, you need the following lines in
+     your `configure.in' file:
+
+          lispdir='${datarootdir}/emacs/site-lisp'
+          AC_SUBST(lispdir)
+
+`localedir'
+     The directory for installing locale-specific message catalogs for
+     this package.  By default, it should be `/usr/local/share/locale',
+     but it should be written as `$(datarootdir)/locale'.  (If you are
+     using Autoconf, write it as `@localedir@'.)  This directory
+     usually has a subdirectory per locale.
+
    Unix-style man pages are installed in one of the following:
 
 `mandir'
      The top-level directory for installing the man pages (if any) for
-     this package.  It will normally be `/usr/local/man', but you should
-     write it as `$(prefix)/man'.  (If you are using Autoconf, write it
-     as `@mandir@'.)
+     this package.  It will normally be `/usr/local/share/man', but you
+     should write it as `$(datarootdir)/man'.  (If you are using
+     Autoconf, write it as `@mandir@'.)
 
 `man1dir'
@@ -1050,4 +1681,6 @@
      # NOTE: This directory must exist when you start the install.
      prefix = /usr/local
+     datarootdir = $(prefix)/share
+     datadir = $(datarootdir)
      exec_prefix = $(prefix)
      # Where to put the executable for the command `gcc'.
@@ -1056,5 +1689,5 @@
      libexecdir = $(exec_prefix)/libexec
      # Where to put the Info files.
-     infodir = $(prefix)/info
+     infodir = $(datarootdir)/info
 
    If your program installs a large number of files into one of the
@@ -1073,6 +1706,6 @@
 File: make.info,  Node: Standard Targets,  Next: Install Command Categories,  Prev: Directory Variables,  Up: Makefile Conventions
 
-Standard Targets for Users
-==========================
+14.5 Standard Targets for Users
+===============================
 
 All GNU programs should have the following targets in their Makefiles:
@@ -1143,7 +1776,26 @@
      Categories::.
 
+`install-html'
+`install-dvi'
+`install-pdf'
+`install-ps'
+     These targets install documentation in formats other than Info;
+     they're intended to be called explicitly by the person installing
+     the package, if that format is desired.  GNU prefers Info files,
+     so these must be installed by the `install' target.
+
+     When you have many documentation files to install, we recommend
+     that you avoid collisions and clutter by arranging for these
+     targets to install in subdirectories of the appropriate
+     installation directory, such as `htmldir'.  As one example, if
+     your package has multiple manuals, and you wish to install HTML
+     documentation with many files (such as the "split" mode output by
+     `makeinfo --html'), you'll certainly want to use subdirectories,
+     or two nodes with the same name in different manuals will
+     overwrite each other.
+
 `uninstall'
-     Delete all the installed files--the copies that the `install'
-     target creates.
+     Delete all the installed files--the copies that the `install' and
+     `install-*' targets create.
 
      This rule should not modify the directories where compilation is
@@ -1177,18 +1829,23 @@
 
 `clean'
-     Delete all files from the current directory that are normally
-     created by building the program.  Don't delete the files that
-     record the configuration.  Also preserve files that could be made
-     by building, but normally aren't because the distribution comes
-     with them.
+     Delete all files in the current directory that are normally
+     created by building the program.  Also delete files in other
+     directories if they are created by this makefile.  However, don't
+     delete the files that record the configuration.  Also preserve
+     files that could be made by building, but normally aren't because
+     the distribution comes with them.  There is no need to delete
+     parent directories that were created with `mkdir -p', since they
+     could have existed anyway.
 
      Delete `.dvi' files here if they are not part of the distribution.
 
 `distclean'
-     Delete all files from the current directory that are created by
-     configuring or building the program.  If you have unpacked the
-     source and built the program without creating any other files,
-     `make distclean' should leave only the files that were in the
-     distribution.
+     Delete all files in the current directory (or created by this
+     makefile) that are created by configuring or building the program.
+     If you have unpacked the source and built the program without
+     creating any other files, `make distclean' should leave only the
+     files that were in the distribution.  However, there is no need to
+     delete parent directories that were created with `mkdir -p', since
+     they could have existed anyway.
 
 `mostlyclean'
@@ -1199,8 +1856,8 @@
 
 `maintainer-clean'
-     Delete almost everything from the current directory that can be
-     reconstructed with this Makefile.  This typically includes
-     everything deleted by `distclean', plus more: C source files
-     produced by Bison, tags tables, Info files, and so on.
+     Delete almost everything that can be reconstructed with this
+     Makefile.  This typically includes everything deleted by
+     `distclean', plus more: C source files produced by Bison, tags
+     tables, Info files, and so on.
 
      The reason we say "almost everything" is that running the command
@@ -1209,5 +1866,7 @@
      generally, `make maintainer-clean' should not delete anything that
      needs to exist in order to run `configure' and then begin to build
-     the program.  This is the only exception; `maintainer-clean' should
+     the program.  Also, there is no need to delete parent directories
+     that were created with `mkdir -p', since they could have existed
+     anyway.  These are the only exceptions; `maintainer-clean' should
      delete everything else that can be rebuilt.
 
@@ -1234,5 +1893,5 @@
 
           info: foo.info
-          
+
           foo.info: foo.texi chap1.texi chap2.texi
                   $(MAKEINFO) $(srcdir)/foo.texi
@@ -1249,8 +1908,12 @@
 
 `dvi'
-     Generate DVI files for all Texinfo documentation.  For example:
+`html'
+`pdf'
+`ps'
+     Generate documentation files in the given format, if possible.
+     Here's an example rule for generating DVI files from Texinfo:
 
           dvi: foo.dvi
-          
+
           foo.dvi: foo.texi chap1.texi chap2.texi
                   $(TEXI2DVI) $(srcdir)/foo.texi
@@ -1260,4 +1923,15 @@
      distribution.(1)  Alternatively, write just the dependencies, and
      allow GNU `make' to provide the command.
+
+     Here's another example, this one for generating HTML from Texinfo:
+
+          html: foo.html
+
+          foo.html: foo.texi chap1.texi chap2.texi
+                  $(TEXI2HTML) $(srcdir)/foo.texi
+
+     Again, you would define the variable `TEXI2HTML' in the Makefile;
+     for example, it might run `makeinfo --no-split --html' (`makeinfo'
+     is part of the Texinfo distribution).
 
 `dist'
@@ -1330,6 +2004,6 @@
 File: make.info,  Node: Install Command Categories,  Prev: Standard Targets,  Up: Makefile Conventions
 
-Install Command Categories
-==========================
+14.6 Install Command Categories
+===============================
 
 When writing the `install' target, you must classify all the commands
@@ -1416,7 +2090,8 @@
    Programs to build binary packages work by extracting the
 pre-installation and post-installation commands.  Here is one way of
-extracting the pre-installation commands:
-
-     make -n install -o all \
+extracting the pre-installation commands (the `-s' option to `make' is
+needed to silence messages about entering subdirectories):
+
+     make -s -n install -o all \
            PRE_INSTALL=pre-install \
            POST_INSTALL=post-install \
@@ -1426,16 +2101,13 @@
 where the file `pre-install.awk' could contain this:
 
-     $0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ {on = 0}
+     $0 ~ /^(normal-install|post-install)[ \t]*$/ {on = 0}
      on {print $0}
-     $0 ~ /^\t[ \t]*pre_install[ \t]*$/ {on = 1}
-
-   The resulting file of pre-installation commands is executed as a
-shell script as part of installing the binary package.
+     $0 ~ /^pre-install[ \t]*$/ {on = 1}
 
 
 File: make.info,  Node: Quick Reference,  Next: Error Messages,  Prev: Makefile Conventions,  Up: Top
 
-Quick Reference
-***************
+Appendix A Quick Reference
+**************************
 
 This appendix summarizes the directives, text manipulation functions,
@@ -1505,6 +2177,5 @@
      directive.
 
-   Here is a summary of the text manipulation functions (*note
-Functions::):
+   Here is a summary of the built-in functions (*note Functions::):
 
 `$(subst FROM,TO,TEXT)'
@@ -1543,4 +2214,29 @@
      Functions.
 
+`$(word N,TEXT)'
+     Extract the Nth word (one-origin) of TEXT.
+     *Note Functions for String Substitution and Analysis: Text
+     Functions.
+
+`$(words TEXT)'
+     Count the number of words in TEXT.
+     *Note Functions for String Substitution and Analysis: Text
+     Functions.
+
+`$(wordlist S,E,TEXT)'
+     Returns the list of words in TEXT from S to E.
+     *Note Functions for String Substitution and Analysis: Text
+     Functions.
+
+`$(firstword NAMES...)'
+     Extract the first word of NAMES.
+     *Note Functions for String Substitution and Analysis: Text
+     Functions.
+
+`$(lastword NAMES...)'
+     Extract the last word of NAMES.
+     *Note Functions for String Substitution and Analysis: Text
+     Functions.
+
 `$(dir NAMES...)'
      Extract the directory part of each file name.
@@ -1572,20 +2268,4 @@
      *Note Functions for File Names: File Name Functions.
 
-`$(word N,TEXT)'
-     Extract the Nth word (one-origin) of TEXT.
-     *Note Functions for File Names: File Name Functions.
-
-`$(words TEXT)'
-     Count the number of words in TEXT.
-     *Note Functions for File Names: File Name Functions.
-
-`$(wordlist S,E,TEXT)'
-     Returns the list of words in TEXT from S to E.
-     *Note Functions for File Names: File Name Functions.
-
-`$(firstword NAMES...)'
-     Extract the first word of NAMES.
-     *Note Functions for File Names: File Name Functions.
-
 `$(wildcard PATTERN...)'
      Find file names matching a shell file name pattern (_not_ a `%'
@@ -1593,4 +2273,14 @@
      *Note The Function `wildcard': Wildcard Function.
 
+`$(realpath NAMES...)'
+     For each file name in NAMES, expand to an absolute name that does
+     not contain any `.', `..', nor symlinks.
+     *Note Functions for File Names: File Name Functions.
+
+`$(abspath NAMES...)'
+     For each file name in NAMES, expand to an absolute name that does
+     not contain any `.' or `..' components, but preserves symlinks.
+     *Note Functions for File Names: File Name Functions.
+
 `$(error TEXT...)'
      When this function is evaluated, `make' generates a fatal error
@@ -1611,4 +2301,9 @@
      defined.
      *Note The `origin' Function: Origin Function.
+
+`$(flavor VARIABLE)'
+     Return a string describing the flavor of the `make' variable
+     VARIABLE.
+     *Note The `flavor' Function: Flavor Function.
 
 `$(foreach VAR,WORDS,TEXT)'
@@ -1702,8 +2397,10 @@
      `/bin/sh'.  You can set `SHELL' in the makefile to change the
      shell used to run commands.  *Note Command Execution: Execution.
+     The `SHELL' variable is handled specially when importing from and
+     exporting to the environment.  *Note Choosing the Shell::.
 
 `MAKESHELL'
      On MS-DOS only, the name of the command interpreter that is to be
-     used by `make'. This value takes precedence over the value of
+     used by `make'.  This value takes precedence over the value of
      `SHELL'.  *Note MAKESHELL variable: Execution.
 
@@ -1749,6 +2446,6 @@
 File: make.info,  Node: Error Messages,  Next: Complex Makefile,  Prev: Quick Reference,  Up: Top
 
-Errors Generated by Make
-************************
+Appendix B Errors Generated by Make
+***********************************
 
 Here is a list of the more common errors you might see generated by
@@ -1823,7 +2520,7 @@
      on the command line, and `make' couldn't find any makefiles to
      read in.  The latter means that some makefile was found, but it
-     didn't contain any default target and none was given on the
-     command line.  GNU `make' has nothing to do in these situations.
-     *Note Arguments to Specify the Makefile: Makefile Arguments.
+     didn't contain any default goal and none was given on the command
+     line.  GNU `make' has nothing to do in these situations.  *Note
+     Arguments to Specify the Makefile: Makefile Arguments.
 
 `Makefile `XXX' was not found.'
@@ -1902,6 +2599,6 @@
 File: make.info,  Node: Complex Makefile,  Next: GNU Free Documentation License,  Prev: Error Messages,  Up: Top
 
-Complex Makefile Example
-************************
+Appendix C Complex Makefile Example
+***********************************
 
 Here is the makefile for the GNU `tar' program.  This is a moderately
@@ -1939,5 +2636,5 @@
      # Un*x Makefile for GNU tar program.
      # Copyright (C) 1991 Free Software Foundation, Inc.
-     
+
      # This program is free software; you can redistribute
      # it and/or modify it under the terms of the GNU
@@ -1945,11 +2642,11 @@
      ...
      ...
-     
+
      SHELL = /bin/sh
-     
+
      #### Start of system configuration section. ####
-     
+
      srcdir = .
-     
+
      # If you use gcc, you should either run the
      # fixincludes script that comes with it or else use
@@ -1960,5 +2657,5 @@
      INSTALL = /usr/local/bin/install -c
      INSTALLDATA = /usr/local/bin/install -c -m 644
-     
+
      # Things you might add to DEFS:
      # -DSTDC_HEADERS        If you have ANSI C headers and
@@ -2011,5 +2708,5 @@
      # -DXENIX               If you have sys/inode.h
      #                       and need it 94 to be included.
-     
+
      DEFS =  -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
              -DVPRINTF_MISSING -DBSD42
@@ -2020,5 +2717,5 @@
      DEF_AR_FILE = /dev/rmt8
      DEFBLOCKING = 20
-     
+
      CDEBUG = -g
      CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
@@ -2026,18 +2723,18 @@
              -DDEFBLOCKING=$(DEFBLOCKING)
      LDFLAGS = -g
-     
+
      prefix = /usr/local
      # Prefix for each installed program,
      # normally empty or `g'.
      binprefix =
-     
+
      # The directory to install tar in.
      bindir = $(prefix)/bin
-     
+
      # The directory to install the info files in.
      infodir = $(prefix)/info
-     
+
      #### End of system configuration section. ####
-     
+
      SRC1 =  tar.c create.c extract.c buffer.c \
              getoldopt.c update.c gnu.c mangle.c
@@ -2059,43 +2756,50 @@
              msd_dir.h msd_dir.c tcexparg.c \
              level-0 level-1 backup-specs testpad.c
-     
+
+     .PHONY: all
      all:    tar rmt tar.info
-     
+
+     .PHONY: tar
      tar:    $(OBJS)
              $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
-     
+
      rmt:    rmt.c
              $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rmt.c
-     
+
      tar.info: tar.texinfo
              makeinfo tar.texinfo
-     
+
+     .PHONY: install
      install: all
              $(INSTALL) tar $(bindir)/$(binprefix)tar
              -test ! -f rmt || $(INSTALL) rmt /etc/rmt
              $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
-     
+
      $(OBJS): tar.h port.h testpad.h
      regex.o buffer.o tar.o: regex.h
      # getdate.y has 8 shift/reduce conflicts.
-     
+
      testpad.h: testpad
              ./testpad
-     
+
      testpad: testpad.o
              $(CC) -o $@ testpad.o
-     
+
      TAGS:   $(SRCS)
              etags $(SRCS)
-     
+
+     .PHONY: clean
      clean:
              rm -f *.o tar rmt testpad testpad.h core
-     
+
+     .PHONY: distclean
      distclean: clean
              rm -f TAGS Makefile config.status
-     
+
+     .PHONY: realclean
      realclean: distclean
              rm -f tar.info*
-     
+
+     .PHONY: shar
      shar: $(SRCS) $(AUX)
              shar $(SRCS) $(AUX) | compress \
@@ -2104,5 +2808,6 @@
                           -e q
                           version.c`.shar.Z
-     
+
+     .PHONY: dist
      dist: $(SRCS) $(AUX)
              echo tar-`sed \
@@ -2116,5 +2821,5 @@
              tar chZf `cat .fname`.tar.Z `cat .fname`
              -rm -rf `cat .fname` .fname
-     
+
      tar.zoo: $(SRCS) $(AUX)
              -rm -rf tmp.dir
@@ -2131,11 +2836,12 @@
 File: make.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: Complex Makefile,  Up: Top
 
-GNU Free Documentation License
-******************************
-
-                        Version 1.1, March 2000
-     Copyright (C) 2000 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
-     
+Appendix D GNU Free Documentation License
+*****************************************
+
+                      Version 1.2, November 2002
+
+     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+
      Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.
@@ -2144,10 +2850,10 @@
 
      The purpose of this License is to make a manual, textbook, or other
-     written document "free" in the sense of freedom: to assure everyone
-     the effective freedom to copy and redistribute it, with or without
-     modifying it, either commercially or noncommercially.  Secondarily,
-     this License preserves for the author and publisher a way to get
-     credit for their work, while not being considered responsible for
-     modifications made by others.
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
 
      This License is a kind of "copyleft", which means that derivative
@@ -2167,9 +2873,13 @@
   1. APPLICABILITY AND DEFINITIONS
 
-     This License applies to any manual or other work that contains a
-     notice placed by the copyright holder saying it can be distributed
-     under the terms of this License.  The "Document", below, refers to
-     any such manual or work.  Any member of the public is a licensee,
-     and is addressed as "you".
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it
+     can be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You
+     accept the license if you copy, modify or distribute the work in a
+     way requiring permission under copyright law.
 
      A "Modified Version" of the Document means any work containing the
@@ -2177,45 +2887,53 @@
      modifications and/or translated into another language.
 
-     A "Secondary Section" is a named appendix or a front-matter
-     section of the Document that deals exclusively with the
-     relationship of the publishers or authors of the Document to the
-     Document's overall subject (or to related matters) and contains
-     nothing that could fall directly within that overall subject.
-     (For example, if the Document is in part a textbook of
-     mathematics, a Secondary Section may not explain any mathematics.)
-     The relationship could be a matter of historical connection with
-     the subject or with related matters, or of legal, commercial,
-     philosophical, ethical or political position regarding them.
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
 
      The "Invariant Sections" are certain Secondary Sections whose
      titles are designated, as being those of Invariant Sections, in
      the notice that says that the Document is released under this
-     License.
+     License.  If a section does not fit the above definition of
+     Secondary then it is not allowed to be designated as Invariant.
+     The Document may contain zero Invariant Sections.  If the Document
+     does not identify any Invariant Sections then there are none.
 
      The "Cover Texts" are certain short passages of text that are
      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
 
      A "Transparent" copy of the Document means a machine-readable copy,
      represented in a format whose specification is available to the
-     general public, whose contents can be viewed and edited directly
-     and straightforwardly with generic text editors or (for images
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images
      composed of pixels) generic paint programs or (for drawings) some
      widely available drawing editor, and that is suitable for input to
      text formatters or for automatic translation to a variety of
      formats suitable for input to text formatters.  A copy made in an
-     otherwise Transparent file format whose markup has been designed
-     to thwart or discourage subsequent modification by readers is not
-     Transparent.  A copy that is not "Transparent" is called "Opaque".
+     otherwise Transparent file format whose markup, or absence of
+     markup, has been arranged to thwart or discourage subsequent
+     modification by readers is not Transparent.  An image format is
+     not Transparent if used for any substantial amount of text.  A
+     copy that is not "Transparent" is called "Opaque".
 
      Examples of suitable formats for Transparent copies include plain
      ASCII without markup, Texinfo input format, LaTeX input format,
      SGML or XML using a publicly available DTD, and
-     standard-conforming simple HTML designed for human modification.
-     Opaque formats include PostScript, PDF, proprietary formats that
-     can be read and edited only by proprietary word processors, SGML
-     or XML for which the DTD and/or processing tools are not generally
-     available, and the machine-generated HTML produced by some word
-     processors for output purposes only.
+     standard-conforming simple HTML, PostScript or PDF designed for
+     human modification.  Examples of transparent image formats include
+     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+     can be read and edited only by proprietary word processors, SGML or
+     XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML, PostScript or PDF
+     produced by some word processors for output purposes only.
 
      The "Title Page" means, for a printed book, the title page itself,
@@ -2225,4 +2943,20 @@
      Page" means the text near the most prominent appearance of the
      work's title, preceding the beginning of the body of the text.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
 
   2. VERBATIM COPYING
@@ -2244,8 +2978,9 @@
   3. COPYING IN QUANTITY
 
-     If you publish printed copies of the Document numbering more than
-     100, and the Document's license notice requires Cover Texts, you
-     must enclose the copies in covers that carry, clearly and legibly,
-     all these Cover Texts: Front-Cover Texts on the front cover, and
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
      Back-Cover Texts on the back cover.  Both covers must also clearly
      and legibly identify you as the publisher of these copies.  The
@@ -2265,9 +3000,8 @@
      numbering more than 100, you must either include a
      machine-readable Transparent copy along with each Opaque copy, or
-     state in or with each Opaque copy a publicly-accessible
-     computer-network location containing a complete Transparent copy
-     of the Document, free of added material, which the general
-     network-using public has access to download anonymously at no
-     charge using public-standard network protocols.  If you use the
+     state in or with each Opaque copy a computer-network location from
+     which the general network-using public has access to download
+     using public-standard network protocols a complete Transparent
+     copy of the Document, free of added material.  If you use the
      latter option, you must take reasonably prudent steps, when you
      begin distribution of Opaque copies in quantity, to ensure that
@@ -2303,5 +3037,6 @@
           the Modified Version, together with at least five of the
           principal authors of the Document (all of its principal
-          authors, if it has less than five).
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
 
        C. State on the Title page the name of the publisher of the
@@ -2324,8 +3059,8 @@
        H. Include an unaltered copy of this License.
 
-       I. Preserve the section entitled "History", and its title, and
-          add to it an item stating at least the title, year, new
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
           authors, and publisher of the Modified Version as given on
-          the Title Page.  If there is no section entitled "History" in
+          the Title Page.  If there is no section Entitled "History" in
           the Document, create one stating the title, year, authors,
           and publisher of the Document as given on its Title Page,
@@ -2342,8 +3077,8 @@
           it refers to gives permission.
 
-       K. In any section entitled "Acknowledgments" or "Dedications",
-          preserve the section's title, and preserve in the section all
-          the substance and tone of each of the contributor
-          acknowledgments and/or dedications given therein.
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the
+          section all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
 
        L. Preserve all the Invariant Sections of the Document,
@@ -2352,9 +3087,12 @@
           titles.
 
-       M. Delete any section entitled "Endorsements".  Such a section
+       M. Delete any section Entitled "Endorsements".  Such a section
           may not be included in the Modified Version.
 
-       N. Do not retitle any existing section as "Endorsements" or to
-          conflict in title with any Invariant Section.
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
 
      If the Modified Version includes new front-matter sections or
@@ -2366,5 +3104,5 @@
      other section titles.
 
-     You may add a section entitled "Endorsements", provided it contains
+     You may add a section Entitled "Endorsements", provided it contains
      nothing but endorsements of your Modified Version by various
      parties--for example, statements of peer review or that the text
@@ -2394,5 +3132,6 @@
      all of the Invariant Sections of all of the original documents,
      unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice.
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
 
      The combined work need only contain one copy of this License, and
@@ -2406,9 +3145,9 @@
      combined work.
 
-     In the combination, you must combine any sections entitled
+     In the combination, you must combine any sections Entitled
      "History" in the various original documents, forming one section
-     entitled "History"; likewise combine any sections entitled
-     "Acknowledgments", and any sections entitled "Dedications".  You
-     must delete all sections entitled "Endorsements."
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
 
   6. COLLECTIONS OF DOCUMENTS
@@ -2431,18 +3170,18 @@
      A compilation of the Document or its derivatives with other
      separate and independent documents or works, in or on a volume of
-     a storage or distribution medium, does not as a whole count as a
-     Modified Version of the Document, provided no compilation
-     copyright is claimed for the compilation.  Such a compilation is
-     called an "aggregate", and this License does not apply to the
-     other self-contained works thus compiled with the Document, on
-     account of their being thus compiled, if they are not themselves
-     derivative works of the Document.
+     a storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
 
      If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one
-     quarter of the entire aggregate, the Document's Cover Texts may be
-     placed on covers that surround only the Document within the
-     aggregate.  Otherwise they must appear on covers around the whole
-     aggregate.
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
 
   8. TRANSLATION
@@ -2454,8 +3193,16 @@
      translations of some or all Invariant Sections in addition to the
      original versions of these Invariant Sections.  You may include a
-     translation of this License provided that you also include the
-     original English version of this License.  In case of a
-     disagreement between the translation and the original English
-     version of this License, the original English version will prevail.
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
 
   9. TERMINATION
@@ -2487,6 +3234,6 @@
      Free Software Foundation.
 
-ADDENDUM: How to use this License for your documents
-====================================================
+D.1 ADDENDUM: How to use this License for your documents
+========================================================
 
 To use this License in a document you have written, include a copy of
@@ -2496,15 +3243,20 @@
        Copyright (C)  YEAR  YOUR NAME.
        Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.1
+       under the terms of the GNU Free Documentation License, Version 1.2
        or any later version published by the Free Software Foundation;
-       with the Invariant Sections being LIST THEIR TITLES, with the
-       Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
-       A copy of the license is included in the section entitled ``GNU
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
        Free Documentation License''.
 
-   If you have no Invariant Sections, write "with no Invariant Sections"
-instead of saying which ones are invariant.  If you have no Front-Cover
-Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
-LIST"; likewise for Back-Cover Texts.
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with
+         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+         being LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
 
    If your document contains nontrivial examples of program code, we
@@ -2519,786 +3271,907 @@
 *****************
 
+[index]
 * Menu:
 
-* # (comments), in commands:             Commands.
-* # (comments), in makefile:             Makefile Contents.
+* # (comments), in commands:             Command Syntax.      (line  27)
+* # (comments), in makefile:             Makefile Contents.   (line  41)
 * #include:                              Automatic Prerequisites.
-* $$@, support for:                      Automatic Variables.
-* $, in function call:                   Syntax of Functions.
-* $, in rules:                           Rule Syntax.
-* $, in variable name:                   Computed Names.
-* $, in variable reference:              Reference.
-* %, in pattern rules:                   Pattern Intro.
-* %, quoting in patsubst:                Text Functions.
-* %, quoting in static pattern:          Static Usage.
-* %, quoting in vpath:                   Selective Search.
-* %, quoting with \ (backslash) <1>:     Text Functions.
-* %, quoting with \ (backslash) <2>:     Static Usage.
-* %, quoting with \ (backslash):         Selective Search.
-* * (wildcard character):                Wildcards.
+                                                              (line  16)
+* $, in function call:                   Syntax of Functions. (line   6)
+* $, in rules:                           Rule Syntax.         (line  32)
+* $, in variable name:                   Computed Names.      (line   6)
+* $, in variable reference:              Reference.           (line   6)
+* %, in pattern rules:                   Pattern Intro.       (line   9)
+* %, quoting in patsubst:                Text Functions.      (line  26)
+* %, quoting in static pattern:          Static Usage.        (line  37)
+* %, quoting in vpath:                   Selective Search.    (line  38)
+* %, quoting with \ (backslash) <1>:     Text Functions.      (line  26)
+* %, quoting with \ (backslash) <2>:     Static Usage.        (line  37)
+* %, quoting with \ (backslash):         Selective Search.    (line  38)
+* * (wildcard character):                Wildcards.           (line   6)
 * +, and command execution:              Instead of Execution.
-* +, and commands:                       MAKE Variable.
-* +, and define:                         Sequences.
-* +=:                                    Appending.
-* +=, expansion:                         Reading Makefiles.
-* ,v (RCS file extension):               Catalogue of Rules.
-* - (in commands):                       Errors.
-* -, and define:                         Sequences.
-* --always-make:                         Options Summary.
-* --assume-new <1>:                      Options Summary.
+                                                              (line  58)
+* +, and commands:                       MAKE Variable.       (line  18)
+* +, and define:                         Sequences.           (line  50)
+* +=:                                    Appending.           (line   6)
+* +=, expansion:                         Reading Makefiles.   (line  33)
+* ,v (RCS file extension):               Catalogue of Rules.  (line 164)
+* - (in commands):                       Errors.              (line  19)
+* -, and define:                         Sequences.           (line  50)
+* --always-make:                         Options Summary.     (line  15)
+* --assume-new <1>:                      Options Summary.     (line 242)
 * --assume-new:                          Instead of Execution.
-* --assume-new, and recursion:           Options/Recursion.
-* --assume-old <1>:                      Options Summary.
+                                                              (line  33)
+* --assume-new, and recursion:           Options/Recursion.   (line  22)
+* --assume-old <1>:                      Options Summary.     (line 147)
 * --assume-old:                          Avoiding Compilation.
-* --assume-old, and recursion:           Options/Recursion.
-* --debug:                               Options Summary.
-* --directory <1>:                       Options Summary.
-* --directory:                           Recursion.
-* --directory, and --print-directory:    -w Option.
-* --directory, and recursion:            Options/Recursion.
-* --dry-run <1>:                         Options Summary.
+                                                              (line   6)
+* --assume-old, and recursion:           Options/Recursion.   (line  22)
+* --check-symlink-times:                 Options Summary.     (line 130)
+* --debug:                               Options Summary.     (line  42)
+* --directory <1>:                       Options Summary.     (line  26)
+* --directory:                           Recursion.           (line  20)
+* --directory, and --print-directory:    -w Option.           (line  20)
+* --directory, and recursion:            Options/Recursion.   (line  22)
+* --dry-run <1>:                         Options Summary.     (line 140)
 * --dry-run <2>:                         Instead of Execution.
-* --dry-run:                             Echoing.
-* --environment-overrides:               Options Summary.
-* --file <1>:                            Options Summary.
-* --file <2>:                            Makefile Arguments.
-* --file:                                Makefile Names.
-* --file, and recursion:                 Options/Recursion.
-* --help:                                Options Summary.
-* --ignore-errors <1>:                   Options Summary.
-* --ignore-errors:                       Errors.
-* --include-dir <1>:                     Options Summary.
-* --include-dir:                         Include.
-* --jobs <1>:                            Options Summary.
-* --jobs:                                Parallel.
-* --jobs, and recursion:                 Options/Recursion.
-* --just-print <1>:                      Options Summary.
+                                                              (line  14)
+* --dry-run:                             Echoing.             (line  18)
+* --environment-overrides:               Options Summary.     (line  78)
+* --file <1>:                            Options Summary.     (line  84)
+* --file <2>:                            Makefile Arguments.  (line   6)
+* --file:                                Makefile Names.      (line  23)
+* --file, and recursion:                 Options/Recursion.   (line  22)
+* --help:                                Options Summary.     (line  90)
+* --ignore-errors <1>:                   Options Summary.     (line  94)
+* --ignore-errors:                       Errors.              (line  30)
+* --include-dir <1>:                     Options Summary.     (line  99)
+* --include-dir:                         Include.             (line  52)
+* --jobs <1>:                            Options Summary.     (line 106)
+* --jobs:                                Parallel.            (line   6)
+* --jobs, and recursion:                 Options/Recursion.   (line  25)
+* --just-print <1>:                      Options Summary.     (line 139)
 * --just-print <2>:                      Instead of Execution.
-* --just-print:                          Echoing.
-* --keep-going <1>:                      Options Summary.
-* --keep-going <2>:                      Testing.
-* --keep-going:                          Errors.
-* --load-average <1>:                    Options Summary.
-* --load-average:                        Parallel.
-* --makefile <1>:                        Options Summary.
-* --makefile <2>:                        Makefile Arguments.
-* --makefile:                            Makefile Names.
-* --max-load <1>:                        Options Summary.
-* --max-load:                            Parallel.
-* --new-file <1>:                        Options Summary.
+                                                              (line  14)
+* --just-print:                          Echoing.             (line  18)
+* --keep-going <1>:                      Options Summary.     (line 115)
+* --keep-going <2>:                      Testing.             (line  16)
+* --keep-going:                          Errors.              (line  47)
+* --load-average <1>:                    Options Summary.     (line 122)
+* --load-average:                        Parallel.            (line  57)
+* --makefile <1>:                        Options Summary.     (line  85)
+* --makefile <2>:                        Makefile Arguments.  (line   6)
+* --makefile:                            Makefile Names.      (line  23)
+* --max-load <1>:                        Options Summary.     (line 123)
+* --max-load:                            Parallel.            (line  57)
+* --new-file <1>:                        Options Summary.     (line 241)
 * --new-file:                            Instead of Execution.
-* --new-file, and recursion:             Options/Recursion.
-* --no-builtin-rules:                    Options Summary.
-* --no-builtin-variables:                Options Summary.
-* --no-keep-going:                       Options Summary.
-* --no-print-directory <1>:              Options Summary.
-* --no-print-directory:                  -w Option.
-* --old-file <1>:                        Options Summary.
+                                                              (line  33)
+* --new-file, and recursion:             Options/Recursion.   (line  22)
+* --no-builtin-rules:                    Options Summary.     (line 175)
+* --no-builtin-variables:                Options Summary.     (line 188)
+* --no-keep-going:                       Options Summary.     (line 203)
+* --no-print-directory <1>:              Options Summary.     (line 233)
+* --no-print-directory:                  -w Option.           (line  20)
+* --old-file <1>:                        Options Summary.     (line 146)
 * --old-file:                            Avoiding Compilation.
-* --old-file, and recursion:             Options/Recursion.
-* --print-data-base:                     Options Summary.
-* --print-directory:                     Options Summary.
-* --print-directory, and --directory:    -w Option.
-* --print-directory, and recursion:      -w Option.
-* --print-directory, disabling:          -w Option.
-* --question <1>:                        Options Summary.
+                                                              (line   6)
+* --old-file, and recursion:             Options/Recursion.   (line  22)
+* --print-data-base:                     Options Summary.     (line 155)
+* --print-directory:                     Options Summary.     (line 225)
+* --print-directory, and --directory:    -w Option.           (line  20)
+* --print-directory, and recursion:      -w Option.           (line  20)
+* --print-directory, disabling:          -w Option.           (line  20)
+* --question <1>:                        Options Summary.     (line 167)
 * --question:                            Instead of Execution.
-* --quiet <1>:                           Options Summary.
-* --quiet:                               Echoing.
-* --recon <1>:                           Options Summary.
+                                                              (line  25)
+* --quiet <1>:                           Options Summary.     (line 198)
+* --quiet:                               Echoing.             (line  24)
+* --recon <1>:                           Options Summary.     (line 141)
 * --recon <2>:                           Instead of Execution.
-* --recon:                               Echoing.
-* --silent <1>:                          Options Summary.
-* --silent:                              Echoing.
-* --stop:                                Options Summary.
-* --touch <1>:                           Options Summary.
+                                                              (line  14)
+* --recon:                               Echoing.             (line  18)
+* --silent <1>:                          Options Summary.     (line 197)
+* --silent:                              Echoing.             (line  24)
+* --stop:                                Options Summary.     (line 204)
+* --touch <1>:                           Options Summary.     (line 212)
 * --touch:                               Instead of Execution.
-* --touch, and recursion:                MAKE Variable.
-* --version:                             Options Summary.
-* --warn-undefined-variables:            Options Summary.
-* --what-if <1>:                         Options Summary.
+                                                              (line  19)
+* --touch, and recursion:                MAKE Variable.       (line  34)
+* --version:                             Options Summary.     (line 220)
+* --warn-undefined-variables:            Options Summary.     (line 251)
+* --what-if <1>:                         Options Summary.     (line 240)
 * --what-if:                             Instead of Execution.
-* -B:                                    Options Summary.
-* -b:                                    Options Summary.
-* -C <1>:                                Options Summary.
-* -C:                                    Recursion.
-* -C, and -w:                            -w Option.
-* -C, and recursion:                     Options/Recursion.
-* -d:                                    Options Summary.
-* -e:                                    Options Summary.
+                                                              (line  33)
+* -B:                                    Options Summary.     (line  14)
+* -b:                                    Options Summary.     (line   9)
+* -C <1>:                                Options Summary.     (line  25)
+* -C:                                    Recursion.           (line  20)
+* -C, and -w:                            -w Option.           (line  20)
+* -C, and recursion:                     Options/Recursion.   (line  22)
+* -d:                                    Options Summary.     (line  33)
+* -e:                                    Options Summary.     (line  77)
 * -e (shell flag):                       Automatic Prerequisites.
-* -f <1>:                                Options Summary.
-* -f <2>:                                Makefile Arguments.
-* -f:                                    Makefile Names.
-* -f, and recursion:                     Options/Recursion.
-* -h:                                    Options Summary.
-* -I:                                    Options Summary.
-* -i <1>:                                Options Summary.
-* -i:                                    Errors.
-* -I:                                    Include.
-* -j <1>:                                Options Summary.
-* -j:                                    Parallel.
-* -j, and archive update:                Archive Pitfalls.
-* -j, and recursion:                     Options/Recursion.
-* -k <1>:                                Options Summary.
-* -k <2>:                                Testing.
-* -k:                                    Errors.
-* -l:                                    Options Summary.
-* -l (library search):                   Libraries/Search.
-* -l (load average):                     Parallel.
-* -m:                                    Options Summary.
+                                                              (line  66)
+* -f <1>:                                Options Summary.     (line  83)
+* -f <2>:                                Makefile Arguments.  (line   6)
+* -f:                                    Makefile Names.      (line  23)
+* -f, and recursion:                     Options/Recursion.   (line  22)
+* -h:                                    Options Summary.     (line  89)
+* -I:                                    Options Summary.     (line  98)
+* -i <1>:                                Options Summary.     (line  93)
+* -i:                                    Errors.              (line  30)
+* -I:                                    Include.             (line  52)
+* -j <1>:                                Options Summary.     (line 105)
+* -j:                                    Parallel.            (line   6)
+* -j, and archive update:                Archive Pitfalls.    (line   6)
+* -j, and recursion:                     Options/Recursion.   (line  25)
+* -k <1>:                                Options Summary.     (line 114)
+* -k <2>:                                Testing.             (line  16)
+* -k:                                    Errors.              (line  47)
+* -L:                                    Options Summary.     (line 129)
+* -l:                                    Options Summary.     (line 121)
+* -l (library search):                   Libraries/Search.    (line   6)
+* -l (load average):                     Parallel.            (line  57)
+* -m:                                    Options Summary.     (line  10)
 * -M (to compiler):                      Automatic Prerequisites.
+                                                              (line  18)
 * -MM (to GNU compiler):                 Automatic Prerequisites.
-* -n <1>:                                Options Summary.
+                                                              (line  68)
+* -n <1>:                                Options Summary.     (line 138)
 * -n <2>:                                Instead of Execution.
-* -n:                                    Echoing.
-* -o <1>:                                Options Summary.
+                                                              (line  14)
+* -n:                                    Echoing.             (line  18)
+* -o <1>:                                Options Summary.     (line 145)
 * -o:                                    Avoiding Compilation.
-* -o, and recursion:                     Options/Recursion.
-* -p:                                    Options Summary.
-* -q <1>:                                Options Summary.
+                                                              (line   6)
+* -o, and recursion:                     Options/Recursion.   (line  22)
+* -p:                                    Options Summary.     (line 154)
+* -q <1>:                                Options Summary.     (line 166)
 * -q:                                    Instead of Execution.
-* -R:                                    Options Summary.
-* -r:                                    Options Summary.
-* -S:                                    Options Summary.
-* -s <1>:                                Options Summary.
-* -s:                                    Echoing.
-* -t <1>:                                Options Summary.
+                                                              (line  25)
+* -R:                                    Options Summary.     (line 187)
+* -r:                                    Options Summary.     (line 174)
+* -S:                                    Options Summary.     (line 202)
+* -s <1>:                                Options Summary.     (line 196)
+* -s:                                    Echoing.             (line  24)
+* -t <1>:                                Options Summary.     (line 211)
 * -t:                                    Instead of Execution.
-* -t, and recursion:                     MAKE Variable.
-* -v:                                    Options Summary.
-* -W:                                    Options Summary.
-* -w:                                    Options Summary.
+                                                              (line  19)
+* -t, and recursion:                     MAKE Variable.       (line  34)
+* -v:                                    Options Summary.     (line 219)
+* -W:                                    Options Summary.     (line 239)
+* -w:                                    Options Summary.     (line 224)
 * -W:                                    Instead of Execution.
-* -w, and -C:                            -w Option.
-* -w, and recursion:                     -w Option.
-* -W, and recursion:                     Options/Recursion.
-* -w, disabling:                         -w Option.
+                                                              (line  33)
+* -w, and -C:                            -w Option.           (line  20)
+* -w, and recursion:                     -w Option.           (line  20)
+* -W, and recursion:                     Options/Recursion.   (line  22)
+* -w, disabling:                         -w Option.           (line  20)
 * .a (archives):                         Archive Suffix Rules.
-* .C:                                    Catalogue of Rules.
-* .c:                                    Catalogue of Rules.
-* .cc:                                   Catalogue of Rules.
-* .ch:                                   Catalogue of Rules.
+                                                              (line   6)
+* .C:                                    Catalogue of Rules.  (line  39)
+* .c:                                    Catalogue of Rules.  (line  35)
+* .cc:                                   Catalogue of Rules.  (line  39)
+* .ch:                                   Catalogue of Rules.  (line 151)
+* .cpp:                                  Catalogue of Rules.  (line  39)
 * .d:                                    Automatic Prerequisites.
-* .def:                                  Catalogue of Rules.
-* .dvi:                                  Catalogue of Rules.
-* .F:                                    Catalogue of Rules.
-* .f:                                    Catalogue of Rules.
-* .info:                                 Catalogue of Rules.
-* .l:                                    Catalogue of Rules.
-* .LIBPATTERNS, and link libraries:      Libraries/Search.
-* .ln:                                   Catalogue of Rules.
-* .mod:                                  Catalogue of Rules.
-* .o:                                    Catalogue of Rules.
-* .p:                                    Catalogue of Rules.
-* .PRECIOUS intermediate files:          Chained Rules.
-* .r:                                    Catalogue of Rules.
-* .S:                                    Catalogue of Rules.
-* .s:                                    Catalogue of Rules.
-* .sh:                                   Catalogue of Rules.
-* .sym:                                  Catalogue of Rules.
-* .tex:                                  Catalogue of Rules.
-* .texi:                                 Catalogue of Rules.
-* .texinfo:                              Catalogue of Rules.
-* .txinfo:                               Catalogue of Rules.
-* .w:                                    Catalogue of Rules.
-* .web:                                  Catalogue of Rules.
-* .y:                                    Catalogue of Rules.
-* :: rules (double-colon):               Double-Colon.
-* := <1>:                                Setting.
-* :=:                                    Flavors.
-* = <1>:                                 Setting.
-* =:                                     Flavors.
-* =, expansion:                          Reading Makefiles.
-* ? (wildcard character):                Wildcards.
-* ?= <1>:                                Setting.
-* ?=:                                    Flavors.
-* ?=, expansion:                         Reading Makefiles.
-* @ (in commands):                       Echoing.
-* @, and define:                         Sequences.
-* [...] (wildcard characters):           Wildcards.
-* \ (backslash), for continuation lines: Simple Makefile.
-* \ (backslash), in commands:            Execution.
-* \ (backslash), to quote % <1>:         Text Functions.
-* \ (backslash), to quote % <2>:         Static Usage.
-* \ (backslash), to quote %:             Selective Search.
-* __.SYMDEF:                             Archive Symbols.
-* algorithm for directory search:        Search Algorithm.
-* all (standard target):                 Goals.
-* appending to variables:                Appending.
-* ar:                                    Implicit Variables.
-* archive:                               Archives.
-* archive member targets:                Archive Members.
-* archive symbol directory updating:     Archive Symbols.
-* archive, and -j:                       Archive Pitfalls.
-* archive, and parallel execution:       Archive Pitfalls.
+                                                              (line  81)
+* .def:                                  Catalogue of Rules.  (line  74)
+* .dvi:                                  Catalogue of Rules.  (line 151)
+* .F:                                    Catalogue of Rules.  (line  49)
+* .f:                                    Catalogue of Rules.  (line  49)
+* .info:                                 Catalogue of Rules.  (line 158)
+* .l:                                    Catalogue of Rules.  (line 124)
+* .LIBPATTERNS, and link libraries:      Libraries/Search.    (line   6)
+* .ln:                                   Catalogue of Rules.  (line 146)
+* .mod:                                  Catalogue of Rules.  (line  74)
+* .o:                                    Catalogue of Rules.  (line  35)
+* .p:                                    Catalogue of Rules.  (line  45)
+* .PRECIOUS intermediate files:          Chained Rules.       (line  56)
+* .r:                                    Catalogue of Rules.  (line  49)
+* .S:                                    Catalogue of Rules.  (line  82)
+* .s:                                    Catalogue of Rules.  (line  79)
+* .sh:                                   Catalogue of Rules.  (line 180)
+* .sym:                                  Catalogue of Rules.  (line  74)
+* .tex:                                  Catalogue of Rules.  (line 151)
+* .texi:                                 Catalogue of Rules.  (line 158)
+* .texinfo:                              Catalogue of Rules.  (line 158)
+* .txinfo:                               Catalogue of Rules.  (line 158)
+* .w:                                    Catalogue of Rules.  (line 151)
+* .web:                                  Catalogue of Rules.  (line 151)
+* .y:                                    Catalogue of Rules.  (line 120)
+* :: rules (double-colon):               Double-Colon.        (line   6)
+* := <1>:                                Setting.             (line   6)
+* :=:                                    Flavors.             (line  56)
+* = <1>:                                 Setting.             (line   6)
+* =:                                     Flavors.             (line  10)
+* =, expansion:                          Reading Makefiles.   (line  33)
+* ? (wildcard character):                Wildcards.           (line   6)
+* ?= <1>:                                Setting.             (line   6)
+* ?=:                                    Flavors.             (line 129)
+* ?=, expansion:                         Reading Makefiles.   (line  33)
+* @ (in commands):                       Echoing.             (line   6)
+* @, and define:                         Sequences.           (line  50)
+* [...] (wildcard characters):           Wildcards.           (line   6)
+* \ (backslash), for continuation lines: Simple Makefile.     (line  40)
+* \ (backslash), in commands:            Splitting Lines.     (line   6)
+* \ (backslash), to quote % <1>:         Text Functions.      (line  26)
+* \ (backslash), to quote % <2>:         Static Usage.        (line  37)
+* \ (backslash), to quote %:             Selective Search.    (line  38)
+* __.SYMDEF:                             Archive Symbols.     (line   6)
+* abspath:                               File Name Functions. (line 121)
+* algorithm for directory search:        Search Algorithm.    (line   6)
+* all (standard target):                 Goals.               (line  72)
+* appending to variables:                Appending.           (line   6)
+* ar:                                    Implicit Variables.  (line  41)
+* archive:                               Archives.            (line   6)
+* archive member targets:                Archive Members.     (line   6)
+* archive symbol directory updating:     Archive Symbols.     (line   6)
+* archive, and -j:                       Archive Pitfalls.    (line   6)
+* archive, and parallel execution:       Archive Pitfalls.    (line   6)
 * archive, suffix rule for:              Archive Suffix Rules.
-* Arg list too long:                     Options/Recursion.
-* arguments of functions:                Syntax of Functions.
-* as <1>:                                Implicit Variables.
-* as:                                    Catalogue of Rules.
-* assembly, rule to compile:             Catalogue of Rules.
+                                                              (line   6)
+* Arg list too long:                     Options/Recursion.   (line  57)
+* arguments of functions:                Syntax of Functions. (line   6)
+* as <1>:                                Implicit Variables.  (line  44)
+* as:                                    Catalogue of Rules.  (line  79)
+* assembly, rule to compile:             Catalogue of Rules.  (line  79)
 * automatic generation of prerequisites <1>: Automatic Prerequisites.
-* automatic generation of prerequisites: Include.
-* automatic variables:                   Automatic Variables.
-* automatic variables in prerequisites:  Automatic Variables.
-* backquotes:                            Shell Function.
-* backslash (\), for continuation lines: Simple Makefile.
-* backslash (\), in commands:            Execution.
-* backslash (\), to quote % <1>:         Text Functions.
-* backslash (\), to quote % <2>:         Static Usage.
-* backslash (\), to quote %:             Selective Search.
+                                                              (line   6)
+* automatic generation of prerequisites: Include.             (line  50)
+* automatic variables:                   Automatic Variables. (line   6)
+* automatic variables in prerequisites:  Automatic Variables. (line  17)
+* backquotes:                            Shell Function.      (line   6)
+* backslash (\), for continuation lines: Simple Makefile.     (line  40)
+* backslash (\), in commands:            Splitting Lines.     (line   6)
+* backslash (\), to quote % <1>:         Text Functions.      (line  26)
+* backslash (\), to quote % <2>:         Static Usage.        (line  37)
+* backslash (\), to quote %:             Selective Search.    (line  38)
 * backslashes in pathnames and wildcard expansion: Wildcard Pitfall.
-* basename:                              File Name Functions.
+                                                              (line  31)
+* basename:                              File Name Functions. (line  57)
 * binary packages:                       Install Command Categories.
-* broken pipe:                           Parallel.
-* bugs, reporting:                       Bugs.
-* built-in special targets:              Special Targets.
-* C++, rule to compile:                  Catalogue of Rules.
-* C, rule to compile:                    Catalogue of Rules.
-* cc <1>:                                Implicit Variables.
-* cc:                                    Catalogue of Rules.
-* cd (shell command) <1>:                MAKE Variable.
-* cd (shell command):                    Execution.
-* chains of rules:                       Chained Rules.
-* check (standard target):               Goals.
-* clean (standard target):               Goals.
-* clean target <1>:                      Cleanup.
-* clean target:                          Simple Makefile.
-* cleaning up:                           Cleanup.
-* clobber (standard target):             Goals.
-* co <1>:                                Implicit Variables.
-* co:                                    Catalogue of Rules.
+                                                              (line  80)
+* broken pipe:                           Parallel.            (line  30)
+* bugs, reporting:                       Bugs.                (line   6)
+* built-in special targets:              Special Targets.     (line   6)
+* C++, rule to compile:                  Catalogue of Rules.  (line  39)
+* C, rule to compile:                    Catalogue of Rules.  (line  35)
+* cc <1>:                                Implicit Variables.  (line  47)
+* cc:                                    Catalogue of Rules.  (line  35)
+* cd (shell command) <1>:                MAKE Variable.       (line  16)
+* cd (shell command):                    Execution.           (line  10)
+* chains of rules:                       Chained Rules.       (line   6)
+* check (standard target):               Goals.               (line 114)
+* clean (standard target):               Goals.               (line  75)
+* clean target <1>:                      Cleanup.             (line  11)
+* clean target:                          Simple Makefile.     (line  83)
+* cleaning up:                           Cleanup.             (line   6)
+* clobber (standard target):             Goals.               (line  86)
+* co <1>:                                Implicit Variables.  (line  56)
+* co:                                    Catalogue of Rules.  (line 164)
 * combining rules by prerequisite:       Combine By Prerequisite.
+                                                              (line   6)
 * command line variable definitions, and recursion: Options/Recursion.
-* command line variables:                Overriding.
-* commands:                              Rule Syntax.
-* commands, backslash (\) in:            Execution.
-* commands, comments in:                 Commands.
-* commands, echoing:                     Echoing.
-* commands, empty:                       Empty Commands.
-* commands, errors in:                   Errors.
-* commands, execution:                   Execution.
-* commands, execution in parallel:       Parallel.
-* commands, expansion:                   Shell Function.
-* commands, how to write:                Commands.
+                                                              (line  17)
+* command line variables:                Overriding.          (line   6)
+* command syntax:                        Command Syntax.      (line   6)
+* commands:                              Rule Syntax.         (line  26)
+* commands setting shell variables:      Execution.           (line  10)
+* commands, backslash (\) in:            Splitting Lines.     (line   6)
+* commands, comments in:                 Command Syntax.      (line  27)
+* commands, echoing:                     Echoing.             (line   6)
+* commands, empty:                       Empty Commands.      (line   6)
+* commands, errors in:                   Errors.              (line   6)
+* commands, execution:                   Execution.           (line   6)
+* commands, execution in parallel:       Parallel.            (line   6)
+* commands, expansion:                   Shell Function.      (line   6)
+* commands, how to write:                Commands.            (line   6)
 * commands, instead of executing:        Instead of Execution.
-* commands, introduction to:             Rule Introduction.
-* commands, quoting newlines in:         Execution.
-* commands, sequences of:                Sequences.
-* comments, in commands:                 Commands.
-* comments, in makefile:                 Makefile Contents.
-* compatibility:                         Features.
-* compatibility in exporting:            Variables/Recursion.
-* compilation, testing:                  Testing.
-* computed variable name:                Computed Names.
-* conditional expansion:                 If Function.
-* conditional variable assignment:       Flavors.
-* conditionals:                          Conditionals.
-* continuation lines:                    Simple Makefile.
+                                                              (line   6)
+* commands, introduction to:             Rule Introduction.   (line   8)
+* commands, quoting newlines in:         Splitting Lines.     (line   6)
+* commands, sequences of:                Sequences.           (line   6)
+* commands, splitting:                   Splitting Lines.     (line   6)
+* commands, using variables in:          Variables in Commands.
+                                                              (line   6)
+* comments, in commands:                 Command Syntax.      (line  27)
+* comments, in makefile:                 Makefile Contents.   (line  41)
+* compatibility:                         Features.            (line   6)
+* compatibility in exporting:            Variables/Recursion. (line 105)
+* compilation, testing:                  Testing.             (line   6)
+* computed variable name:                Computed Names.      (line   6)
+* conditional expansion:                 Conditional Functions.
+                                                              (line   6)
+* conditional variable assignment:       Flavors.             (line 129)
+* conditionals:                          Conditionals.        (line   6)
+* continuation lines:                    Simple Makefile.     (line  40)
 * controlling make:                      Make Control Functions.
+                                                              (line   6)
 * conventions for makefiles:             Makefile Conventions.
-* ctangle <1>:                           Implicit Variables.
-* ctangle:                               Catalogue of Rules.
-* cweave <1>:                            Implicit Variables.
-* cweave:                                Catalogue of Rules.
-* data base of make rules:               Options Summary.
-* deducing commands (implicit rules):    make Deduces.
-* default directories for included makefiles: Include.
-* default goal <1>:                      Rules.
-* default goal:                          How Make Works.
-* default makefile name:                 Makefile Names.
-* default rules, last-resort:            Last Resort.
-* define, expansion:                     Reading Makefiles.
-* defining variables verbatim:           Defining.
-* deletion of target files <1>:          Interrupts.
-* deletion of target files:              Errors.
-* directive:                             Makefile Contents.
-* directories, printing them:            -w Option.
-* directories, updating archive symbol:  Archive Symbols.
-* directory part:                        File Name Functions.
-* directory search (VPATH):              Directory Search.
+                                                              (line   6)
+* ctangle <1>:                           Implicit Variables.  (line 107)
+* ctangle:                               Catalogue of Rules.  (line 151)
+* cweave <1>:                            Implicit Variables.  (line 101)
+* cweave:                                Catalogue of Rules.  (line 151)
+* data base of make rules:               Options Summary.     (line 155)
+* deducing commands (implicit rules):    make Deduces.        (line   6)
+* default directories for included makefiles: Include.        (line  52)
+* default goal <1>:                      Rules.               (line  11)
+* default goal:                          How Make Works.      (line  11)
+* default makefile name:                 Makefile Names.      (line   6)
+* default rules, last-resort:            Last Resort.         (line   6)
+* define, expansion:                     Reading Makefiles.   (line  33)
+* defining variables verbatim:           Defining.            (line   6)
+* deletion of target files <1>:          Interrupts.          (line   6)
+* deletion of target files:              Errors.              (line  64)
+* directive:                             Makefile Contents.   (line  28)
+* directories, printing them:            -w Option.           (line   6)
+* directories, updating archive symbol:  Archive Symbols.     (line   6)
+* directory part:                        File Name Functions. (line  17)
+* directory search (VPATH):              Directory Search.    (line   6)
 * directory search (VPATH), and implicit rules: Implicit/Search.
+                                                              (line   6)
 * directory search (VPATH), and link libraries: Libraries/Search.
+                                                              (line   6)
 * directory search (VPATH), and shell commands: Commands/Search.
-* directory search algorithm:            Search Algorithm.
-* directory search, traditional (GPATH): Search Algorithm.
-* dist (standard target):                Goals.
-* distclean (standard target):           Goals.
-* dollar sign ($), in function call:     Syntax of Functions.
-* dollar sign ($), in rules:             Rule Syntax.
-* dollar sign ($), in variable name:     Computed Names.
-* dollar sign ($), in variable reference: Reference.
-* double-colon rules:                    Double-Colon.
-* duplicate words, removing:             Text Functions.
-* E2BIG:                                 Options/Recursion.
-* echoing of commands:                   Echoing.
-* editor:                                Introduction.
-* Emacs (M-x compile):                   Errors.
-* empty commands:                        Empty Commands.
-* empty targets:                         Empty Targets.
-* environment:                           Environment.
-* environment, and recursion:            Variables/Recursion.
-* environment, SHELL in:                 Execution.
+                                                              (line   6)
+* directory search algorithm:            Search Algorithm.    (line   6)
+* directory search, traditional (GPATH): Search Algorithm.    (line  42)
+* dist (standard target):                Goals.               (line 106)
+* distclean (standard target):           Goals.               (line  84)
+* dollar sign ($), in function call:     Syntax of Functions. (line   6)
+* dollar sign ($), in rules:             Rule Syntax.         (line  32)
+* dollar sign ($), in variable name:     Computed Names.      (line   6)
+* dollar sign ($), in variable reference: Reference.          (line   6)
+* DOS, choosing a shell in:              Choosing the Shell.  (line  36)
+* double-colon rules:                    Double-Colon.        (line   6)
+* duplicate words, removing:             Text Functions.      (line 155)
+* E2BIG:                                 Options/Recursion.   (line  57)
+* echoing of commands:                   Echoing.             (line   6)
+* editor:                                Introduction.        (line  22)
+* Emacs (M-x compile):                   Errors.              (line  62)
+* empty commands:                        Empty Commands.      (line   6)
+* empty targets:                         Empty Targets.       (line   6)
+* environment:                           Environment.         (line   6)
+* environment, and recursion:            Variables/Recursion. (line   6)
+* environment, SHELL in:                 Choosing the Shell.  (line  10)
 * error, stopping on:                    Make Control Functions.
-* errors (in commands):                  Errors.
-* errors with wildcards:                 Wildcard Pitfall.
-* evaluating makefile syntax:            Eval Function.
-* execution, in parallel:                Parallel.
+                                                              (line  11)
+* errors (in commands):                  Errors.              (line   6)
+* errors with wildcards:                 Wildcard Pitfall.    (line   6)
+* evaluating makefile syntax:            Eval Function.       (line   6)
+* execution, in parallel:                Parallel.            (line   6)
 * execution, instead of:                 Instead of Execution.
-* execution, of commands:                Execution.
-* exit status (errors):                  Errors.
-* explicit rule, definition of:          Makefile Contents.
-* explicit rule, expansion:              Reading Makefiles.
-* exporting variables:                   Variables/Recursion.
-* f77 <1>:                               Implicit Variables.
-* f77:                                   Catalogue of Rules.
+                                                              (line   6)
+* execution, of commands:                Execution.           (line   6)
+* exit status (errors):                  Errors.              (line   6)
+* exit status of make:                   Running.             (line  18)
+* expansion, secondary:                  Secondary Expansion. (line   6)
+* explicit rule, definition of:          Makefile Contents.   (line  10)
+* explicit rule, expansion:              Reading Makefiles.   (line  62)
+* explicit rules, secondary expansion of: Secondary Expansion.
+                                                              (line 106)
+* exporting variables:                   Variables/Recursion. (line   6)
+* f77 <1>:                               Implicit Variables.  (line  64)
+* f77:                                   Catalogue of Rules.  (line  49)
 * FDL, GNU Free Documentation License:   GNU Free Documentation License.
-* features of GNU make:                  Features.
-* features, missing:                     Missing.
-* file name functions:                   File Name Functions.
-* file name of makefile:                 Makefile Names.
-* file name of makefile, how to specify: Makefile Names.
-* file name prefix, adding:              File Name Functions.
-* file name suffix:                      File Name Functions.
-* file name suffix, adding:              File Name Functions.
-* file name with wildcards:              Wildcards.
-* file name, basename of:                File Name Functions.
-* file name, directory part:             File Name Functions.
-* file name, nondirectory part:          File Name Functions.
+                                                              (line   6)
+* features of GNU make:                  Features.            (line   6)
+* features, missing:                     Missing.             (line   6)
+* file name functions:                   File Name Functions. (line   6)
+* file name of makefile:                 Makefile Names.      (line   6)
+* file name of makefile, how to specify: Makefile Names.      (line  30)
+* file name prefix, adding:              File Name Functions. (line  79)
+* file name suffix:                      File Name Functions. (line  43)
+* file name suffix, adding:              File Name Functions. (line  68)
+* file name with wildcards:              Wildcards.           (line   6)
+* file name, abspath of:                 File Name Functions. (line 121)
+* file name, basename of:                File Name Functions. (line  57)
+* file name, directory part:             File Name Functions. (line  17)
+* file name, nondirectory part:          File Name Functions. (line  27)
+* file name, realpath of:                File Name Functions. (line 114)
 * files, assuming new:                   Instead of Execution.
+                                                              (line  33)
 * files, assuming old:                   Avoiding Compilation.
+                                                              (line   6)
 * files, avoiding recompilation of:      Avoiding Compilation.
-* files, intermediate:                   Chained Rules.
-* filtering out words:                   Text Functions.
-* filtering words:                       Text Functions.
-* finding strings:                       Text Functions.
-* flags:                                 Options Summary.
-* flags for compilers:                   Implicit Variables.
-* flavors of variables:                  Flavors.
-* FORCE:                                 Force Targets.
-* force targets:                         Force Targets.
-* Fortran, rule to compile:              Catalogue of Rules.
-* functions:                             Functions.
+                                                              (line   6)
+* files, intermediate:                   Chained Rules.       (line  16)
+* filtering out words:                   Text Functions.      (line 132)
+* filtering words:                       Text Functions.      (line 114)
+* finding strings:                       Text Functions.      (line 103)
+* flags:                                 Options Summary.     (line   6)
+* flags for compilers:                   Implicit Variables.  (line   6)
+* flavor of variable:                    Flavor Function.     (line   6)
+* flavors of variables:                  Flavors.             (line   6)
+* FORCE:                                 Force Targets.       (line   6)
+* force targets:                         Force Targets.       (line   6)
+* Fortran, rule to compile:              Catalogue of Rules.  (line  49)
+* functions:                             Functions.           (line   6)
 * functions, for controlling make:       Make Control Functions.
-* functions, for file names:             File Name Functions.
-* functions, for text:                   Text Functions.
-* functions, syntax of:                  Syntax of Functions.
-* functions, user defined:               Call Function.
-* g++ <1>:                               Implicit Variables.
-* g++:                                   Catalogue of Rules.
-* gcc:                                   Catalogue of Rules.
+                                                              (line   6)
+* functions, for file names:             File Name Functions. (line   6)
+* functions, for text:                   Text Functions.      (line   6)
+* functions, syntax of:                  Syntax of Functions. (line   6)
+* functions, user defined:               Call Function.       (line   6)
+* g++ <1>:                               Implicit Variables.  (line  53)
+* g++:                                   Catalogue of Rules.  (line  39)
+* gcc:                                   Catalogue of Rules.  (line  35)
 * generating prerequisites automatically <1>: Automatic Prerequisites.
-* generating prerequisites automatically: Include.
-* get <1>:                               Implicit Variables.
-* get:                                   Catalogue of Rules.
-* globbing (wildcards):                  Wildcards.
-* goal:                                  How Make Works.
-* goal, default <1>:                     Rules.
-* goal, default:                         How Make Works.
-* goal, how to specify:                  Goals.
-* home directory:                        Wildcards.
-* IEEE Standard 1003.2:                  Overview.
-* ifdef, expansion:                      Reading Makefiles.
-* ifeq, expansion:                       Reading Makefiles.
-* ifndef, expansion:                     Reading Makefiles.
-* ifneq, expansion:                      Reading Makefiles.
-* implicit rule:                         Implicit Rules.
-* implicit rule, and directory search:   Implicit/Search.
-* implicit rule, and VPATH:              Implicit/Search.
-* implicit rule, definition of:          Makefile Contents.
-* implicit rule, expansion:              Reading Makefiles.
-* implicit rule, how to use:             Using Implicit.
-* implicit rule, introduction to:        make Deduces.
-* implicit rule, predefined:             Catalogue of Rules.
+                                                              (line   6)
+* generating prerequisites automatically: Include.            (line  50)
+* get <1>:                               Implicit Variables.  (line  67)
+* get:                                   Catalogue of Rules.  (line 173)
+* globbing (wildcards):                  Wildcards.           (line   6)
+* goal:                                  How Make Works.      (line  11)
+* goal, default <1>:                     Rules.               (line  11)
+* goal, default:                         How Make Works.      (line  11)
+* goal, how to specify:                  Goals.               (line   6)
+* home directory:                        Wildcards.           (line  11)
+* IEEE Standard 1003.2:                  Overview.            (line  13)
+* ifdef, expansion:                      Reading Makefiles.   (line  51)
+* ifeq, expansion:                       Reading Makefiles.   (line  51)
+* ifndef, expansion:                     Reading Makefiles.   (line  51)
+* ifneq, expansion:                      Reading Makefiles.   (line  51)
+* implicit rule:                         Implicit Rules.      (line   6)
+* implicit rule, and directory search:   Implicit/Search.     (line   6)
+* implicit rule, and VPATH:              Implicit/Search.     (line   6)
+* implicit rule, definition of:          Makefile Contents.   (line  16)
+* implicit rule, expansion:              Reading Makefiles.   (line  62)
+* implicit rule, how to use:             Using Implicit.      (line   6)
+* implicit rule, introduction to:        make Deduces.        (line   6)
+* implicit rule, predefined:             Catalogue of Rules.  (line   6)
 * implicit rule, search algorithm:       Implicit Rule Search.
-* included makefiles, default directories: Include.
+                                                              (line   6)
+* implicit rules, secondary expansion of: Secondary Expansion.
+                                                              (line 146)
+* included makefiles, default directories: Include.           (line  52)
 * including (MAKEFILE_LIST variable):    MAKEFILE_LIST Variable.
-* including (MAKEFILES variable):        MAKEFILES Variable.
-* including other makefiles:             Include.
-* incompatibilities:                     Missing.
-* Info, rule to format:                  Catalogue of Rules.
-* install (standard target):             Goals.
-* intermediate files:                    Chained Rules.
-* intermediate files, preserving:        Chained Rules.
-* intermediate targets, explicit:        Special Targets.
-* interrupt:                             Interrupts.
-* job slots:                             Parallel.
-* job slots, and recursion:              Options/Recursion.
-* jobs, limiting based on load:          Parallel.
-* joining lists of words:                File Name Functions.
-* killing (interruption):                Interrupts.
-* last-resort default rules:             Last Resort.
-* ld:                                    Catalogue of Rules.
-* lex <1>:                               Implicit Variables.
-* lex:                                   Catalogue of Rules.
-* Lex, rule to run:                      Catalogue of Rules.
-* libraries for linking, directory search: Libraries/Search.
+                                                              (line   6)
+* including (MAKEFILES variable):        MAKEFILES Variable.  (line   6)
+* including other makefiles:             Include.             (line   6)
+* incompatibilities:                     Missing.             (line   6)
+* Info, rule to format:                  Catalogue of Rules.  (line 158)
+* install (standard target):             Goals.               (line  92)
+* intermediate files:                    Chained Rules.       (line  16)
+* intermediate files, preserving:        Chained Rules.       (line  46)
+* intermediate targets, explicit:        Special Targets.     (line  44)
+* interrupt:                             Interrupts.          (line   6)
+* job slots:                             Parallel.            (line   6)
+* job slots, and recursion:              Options/Recursion.   (line  25)
+* jobs, limiting based on load:          Parallel.            (line  57)
+* joining lists of words:                File Name Functions. (line  90)
+* killing (interruption):                Interrupts.          (line   6)
+* last-resort default rules:             Last Resort.         (line   6)
+* ld:                                    Catalogue of Rules.  (line  86)
+* lex <1>:                               Implicit Variables.  (line  71)
+* lex:                                   Catalogue of Rules.  (line 124)
+* Lex, rule to run:                      Catalogue of Rules.  (line 124)
+* libraries for linking, directory search: Libraries/Search.  (line   6)
 * library archive, suffix rule for:      Archive Suffix Rules.
-* limiting jobs based on load:           Parallel.
-* link libraries, and directory search:  Libraries/Search.
-* link libraries, patterns matching:     Libraries/Search.
-* linking, predefined rule for:          Catalogue of Rules.
-* lint:                                  Catalogue of Rules.
-* lint, rule to run:                     Catalogue of Rules.
-* list of all prerequisites:             Automatic Variables.
-* list of changed prerequisites:         Automatic Variables.
-* load average:                          Parallel.
-* loops in variable expansion:           Flavors.
-* lpr (shell command) <1>:               Empty Targets.
-* lpr (shell command):                   Wildcard Examples.
-* m2c:                                   Catalogue of Rules.
-* macro:                                 Using Variables.
+                                                              (line   6)
+* limiting jobs based on load:           Parallel.            (line  57)
+* link libraries, and directory search:  Libraries/Search.    (line   6)
+* link libraries, patterns matching:     Libraries/Search.    (line   6)
+* linking, predefined rule for:          Catalogue of Rules.  (line  86)
+* lint <1>:                              Implicit Variables.  (line  78)
+* lint:                                  Catalogue of Rules.  (line 146)
+* lint, rule to run:                     Catalogue of Rules.  (line 146)
+* list of all prerequisites:             Automatic Variables. (line  61)
+* list of changed prerequisites:         Automatic Variables. (line  51)
+* load average:                          Parallel.            (line  57)
+* loops in variable expansion:           Flavors.             (line  44)
+* lpr (shell command) <1>:               Empty Targets.       (line  25)
+* lpr (shell command):                   Wildcard Examples.   (line  21)
+* m2c <1>:                               Implicit Variables.  (line  81)
+* m2c:                                   Catalogue of Rules.  (line  74)
+* macro:                                 Using Variables.     (line  10)
 * make depend:                           Automatic Prerequisites.
-* MAKECMDGOALS:                          Goals.
-* makefile:                              Introduction.
-* makefile name:                         Makefile Names.
-* makefile name, how to specify:         Makefile Names.
-* makefile rule parts:                   Rule Introduction.
-* makefile syntax, evaluating:           Eval Function.
-* makefile, and MAKEFILES variable:      MAKEFILES Variable.
+                                                              (line  37)
+* makefile:                              Introduction.        (line   7)
+* makefile name:                         Makefile Names.      (line   6)
+* makefile name, how to specify:         Makefile Names.      (line  30)
+* makefile rule parts:                   Rule Introduction.   (line   6)
+* makefile syntax, evaluating:           Eval Function.       (line   6)
+* makefile, and MAKEFILES variable:      MAKEFILES Variable.  (line   6)
 * makefile, conventions for:             Makefile Conventions.
-* makefile, how make processes:          How Make Works.
-* makefile, how to write:                Makefiles.
-* makefile, including:                   Include.
+                                                              (line   6)
+* makefile, how make processes:          How Make Works.      (line   6)
+* makefile, how to write:                Makefiles.           (line   6)
+* makefile, including:                   Include.             (line   6)
 * makefile, overriding:                  Overriding Makefiles.
-* makefile, parsing:                     Reading Makefiles.
-* makefile, remaking of:                 Remaking Makefiles.
-* makefile, simple:                      Simple Makefile.
+                                                              (line   6)
+* makefile, parsing:                     Reading Makefiles.   (line   6)
+* makefile, remaking of:                 Remaking Makefiles.  (line   6)
+* makefile, simple:                      Simple Makefile.     (line   6)
 * makefiles, and MAKEFILE_LIST variable: MAKEFILE_LIST Variable.
-* makefiles, and special variables:      Special Variables.
-* makeinfo <1>:                          Implicit Variables.
-* makeinfo:                              Catalogue of Rules.
+                                                              (line   6)
+* makefiles, and special variables:      Special Variables.   (line   6)
+* makeinfo <1>:                          Implicit Variables.  (line  88)
+* makeinfo:                              Catalogue of Rules.  (line 158)
 * match-anything rule:                   Match-Anything Rules.
+                                                              (line   6)
 * match-anything rule, used to override: Overriding Makefiles.
-* missing features:                      Missing.
-* mistakes with wildcards:               Wildcard Pitfall.
-* modified variable reference:           Substitution Refs.
-* Modula-2, rule to compile:             Catalogue of Rules.
-* mostlyclean (standard target):         Goals.
-* multiple rules for one target:         Multiple Rules.
-* multiple rules for one target (::):    Double-Colon.
-* multiple targets:                      Multiple Targets.
-* multiple targets, in pattern rule:     Pattern Intro.
-* name of makefile:                      Makefile Names.
-* name of makefile, how to specify:      Makefile Names.
-* nested variable reference:             Computed Names.
-* newline, quoting, in commands:         Execution.
-* newline, quoting, in makefile:         Simple Makefile.
-* nondirectory part:                     File Name Functions.
-* normal prerequisites:                  Prerequisite Types.
-* OBJ:                                   Variables Simplify.
-* obj:                                   Variables Simplify.
-* OBJECTS:                               Variables Simplify.
-* objects:                               Variables Simplify.
-* OBJS:                                  Variables Simplify.
-* objs:                                  Variables Simplify.
-* old-fashioned suffix rules:            Suffix Rules.
-* options:                               Options Summary.
-* options, and recursion:                Options/Recursion.
-* options, setting from environment:     Options/Recursion.
-* options, setting in makefiles:         Options/Recursion.
-* order of pattern rules:                Pattern Intro.
-* order-only prerequisites:              Prerequisite Types.
-* origin of variable:                    Origin Function.
+                                                              (line  12)
+* missing features:                      Missing.             (line   6)
+* mistakes with wildcards:               Wildcard Pitfall.    (line   6)
+* modified variable reference:           Substitution Refs.   (line   6)
+* Modula-2, rule to compile:             Catalogue of Rules.  (line  74)
+* mostlyclean (standard target):         Goals.               (line  78)
+* multiple rules for one target:         Multiple Rules.      (line   6)
+* multiple rules for one target (::):    Double-Colon.        (line   6)
+* multiple targets:                      Multiple Targets.    (line   6)
+* multiple targets, in pattern rule:     Pattern Intro.       (line  49)
+* name of makefile:                      Makefile Names.      (line   6)
+* name of makefile, how to specify:      Makefile Names.      (line  30)
+* nested variable reference:             Computed Names.      (line   6)
+* newline, quoting, in commands:         Splitting Lines.     (line   6)
+* newline, quoting, in makefile:         Simple Makefile.     (line  40)
+* nondirectory part:                     File Name Functions. (line  27)
+* normal prerequisites:                  Prerequisite Types.  (line   6)
+* OBJ:                                   Variables Simplify.  (line  20)
+* obj:                                   Variables Simplify.  (line  20)
+* OBJECTS:                               Variables Simplify.  (line  20)
+* objects:                               Variables Simplify.  (line  14)
+* OBJS:                                  Variables Simplify.  (line  20)
+* objs:                                  Variables Simplify.  (line  20)
+* old-fashioned suffix rules:            Suffix Rules.        (line   6)
+* options:                               Options Summary.     (line   6)
+* options, and recursion:                Options/Recursion.   (line   6)
+* options, setting from environment:     Options/Recursion.   (line  81)
+* options, setting in makefiles:         Options/Recursion.   (line  81)
+* order of pattern rules:                Pattern Intro.       (line  57)
+* order-only prerequisites:              Prerequisite Types.  (line   6)
+* origin of variable:                    Origin Function.     (line   6)
 * overriding makefiles:                  Overriding Makefiles.
-* overriding variables with arguments:   Overriding.
-* overriding with override:              Override Directive.
-* parallel execution:                    Parallel.
-* parallel execution, and archive update: Archive Pitfalls.
-* parallel execution, overriding:        Special Targets.
-* parts of makefile rule:                Rule Introduction.
-* Pascal, rule to compile:               Catalogue of Rules.
-* pattern rule:                          Pattern Intro.
-* pattern rule, expansion:               Reading Makefiles.
-* pattern rules, order of:               Pattern Intro.
-* pattern rules, static (not implicit):  Static Pattern.
-* pattern rules, static, syntax of:      Static Usage.
-* pattern-specific variables:            Pattern-specific.
-* pc <1>:                                Implicit Variables.
-* pc:                                    Catalogue of Rules.
-* phony targets:                         Phony Targets.
-* pitfalls of wildcards:                 Wildcard Pitfall.
-* portability:                           Features.
-* POSIX:                                 Overview.
-* POSIX.2:                               Options/Recursion.
+                                                              (line   6)
+* overriding variables with arguments:   Overriding.          (line   6)
+* overriding with override:              Override Directive.  (line   6)
+* parallel execution:                    Parallel.            (line   6)
+* parallel execution, and archive update: Archive Pitfalls.   (line   6)
+* parallel execution, overriding:        Special Targets.     (line 135)
+* parts of makefile rule:                Rule Introduction.   (line   6)
+* Pascal, rule to compile:               Catalogue of Rules.  (line  45)
+* pattern rule:                          Pattern Intro.       (line   6)
+* pattern rule, expansion:               Reading Makefiles.   (line  62)
+* pattern rules, order of:               Pattern Intro.       (line  57)
+* pattern rules, static (not implicit):  Static Pattern.      (line   6)
+* pattern rules, static, syntax of:      Static Usage.        (line   6)
+* pattern-specific variables:            Pattern-specific.    (line   6)
+* pc <1>:                                Implicit Variables.  (line  84)
+* pc:                                    Catalogue of Rules.  (line  45)
+* phony targets:                         Phony Targets.       (line   6)
+* pitfalls of wildcards:                 Wildcard Pitfall.    (line   6)
+* portability:                           Features.            (line   6)
+* POSIX:                                 Overview.            (line  13)
+* POSIX.2:                               Options/Recursion.   (line  60)
 * post-installation commands:            Install Command Categories.
+                                                              (line   6)
 * pre-installation commands:             Install Command Categories.
-* precious targets:                      Special Targets.
-* predefined rules and variables, printing: Options Summary.
-* prefix, adding:                        File Name Functions.
-* prerequisite:                          Rules.
-* prerequisite pattern, implicit:        Pattern Intro.
-* prerequisite pattern, static (not implicit): Static Usage.
-* prerequisite types:                    Prerequisite Types.
-* prerequisite, expansion:               Reading Makefiles.
-* prerequisites:                         Rule Syntax.
+                                                              (line   6)
+* precious targets:                      Special Targets.     (line  29)
+* predefined rules and variables, printing: Options Summary.  (line 155)
+* prefix, adding:                        File Name Functions. (line  79)
+* prerequisite:                          Rules.               (line   6)
+* prerequisite pattern, implicit:        Pattern Intro.       (line  22)
+* prerequisite pattern, static (not implicit): Static Usage.  (line  30)
+* prerequisite types:                    Prerequisite Types.  (line   6)
+* prerequisite, expansion:               Reading Makefiles.   (line  62)
+* prerequisites:                         Rule Syntax.         (line  46)
 * prerequisites, and automatic variables: Automatic Variables.
+                                                              (line  17)
 * prerequisites, automatic generation <1>: Automatic Prerequisites.
-* prerequisites, automatic generation:   Include.
-* prerequisites, introduction to:        Rule Introduction.
-* prerequisites, list of all:            Automatic Variables.
-* prerequisites, list of changed:        Automatic Variables.
-* prerequisites, normal:                 Prerequisite Types.
-* prerequisites, order-only:             Prerequisite Types.
-* prerequisites, varying (static pattern): Static Pattern.
-* preserving intermediate files:         Chained Rules.
-* preserving with .PRECIOUS <1>:         Chained Rules.
-* preserving with .PRECIOUS:             Special Targets.
-* preserving with .SECONDARY:            Special Targets.
-* print (standard target):               Goals.
-* print target <1>:                      Empty Targets.
-* print target:                          Wildcard Examples.
-* printing directories:                  -w Option.
-* printing of commands:                  Echoing.
+                                                              (line   6)
+* prerequisites, automatic generation:   Include.             (line  50)
+* prerequisites, introduction to:        Rule Introduction.   (line   8)
+* prerequisites, list of all:            Automatic Variables. (line  61)
+* prerequisites, list of changed:        Automatic Variables. (line  51)
+* prerequisites, normal:                 Prerequisite Types.  (line   6)
+* prerequisites, order-only:             Prerequisite Types.  (line   6)
+* prerequisites, varying (static pattern): Static Pattern.    (line   6)
+* preserving intermediate files:         Chained Rules.       (line  46)
+* preserving with .PRECIOUS <1>:         Chained Rules.       (line  56)
+* preserving with .PRECIOUS:             Special Targets.     (line  29)
+* preserving with .SECONDARY:            Special Targets.     (line  49)
+* print (standard target):               Goals.               (line  97)
+* print target <1>:                      Empty Targets.       (line  25)
+* print target:                          Wildcard Examples.   (line  21)
+* printing directories:                  -w Option.           (line   6)
+* printing messages:                     Make Control Functions.
+                                                              (line  43)
+* printing of commands:                  Echoing.             (line   6)
 * printing user warnings:                Make Control Functions.
-* problems and bugs, reporting:          Bugs.
-* problems with wildcards:               Wildcard Pitfall.
-* processing a makefile:                 How Make Works.
+                                                              (line  35)
+* problems and bugs, reporting:          Bugs.                (line   6)
+* problems with wildcards:               Wildcard Pitfall.    (line   6)
+* processing a makefile:                 How Make Works.      (line   6)
 * question mode:                         Instead of Execution.
-* quoting %, in patsubst:                Text Functions.
-* quoting %, in static pattern:          Static Usage.
-* quoting %, in vpath:                   Selective Search.
-* quoting newline, in commands:          Execution.
-* quoting newline, in makefile:          Simple Makefile.
-* Ratfor, rule to compile:               Catalogue of Rules.
-* RCS, rule to extract from:             Catalogue of Rules.
-* reading makefiles:                     Reading Makefiles.
-* README:                                Makefile Names.
-* realclean (standard target):           Goals.
-* recompilation:                         Introduction.
+                                                              (line  25)
+* quoting %, in patsubst:                Text Functions.      (line  26)
+* quoting %, in static pattern:          Static Usage.        (line  37)
+* quoting %, in vpath:                   Selective Search.    (line  38)
+* quoting newline, in commands:          Splitting Lines.     (line   6)
+* quoting newline, in makefile:          Simple Makefile.     (line  40)
+* Ratfor, rule to compile:               Catalogue of Rules.  (line  49)
+* RCS, rule to extract from:             Catalogue of Rules.  (line 164)
+* reading makefiles:                     Reading Makefiles.   (line   6)
+* README:                                Makefile Names.      (line   9)
+* realclean (standard target):           Goals.               (line  85)
+* realpath:                              File Name Functions. (line 114)
+* recompilation:                         Introduction.        (line  22)
 * recompilation, avoiding:               Avoiding Compilation.
-* recording events with empty targets:   Empty Targets.
-* recursion:                             Recursion.
-* recursion, and -C:                     Options/Recursion.
-* recursion, and -f:                     Options/Recursion.
-* recursion, and -j:                     Options/Recursion.
-* recursion, and -o:                     Options/Recursion.
-* recursion, and -t:                     MAKE Variable.
-* recursion, and -w:                     -w Option.
-* recursion, and -W:                     Options/Recursion.
+                                                              (line   6)
+* recording events with empty targets:   Empty Targets.       (line   6)
+* recursion:                             Recursion.           (line   6)
+* recursion, and -C:                     Options/Recursion.   (line  22)
+* recursion, and -f:                     Options/Recursion.   (line  22)
+* recursion, and -j:                     Options/Recursion.   (line  25)
+* recursion, and -o:                     Options/Recursion.   (line  22)
+* recursion, and -t:                     MAKE Variable.       (line  34)
+* recursion, and -w:                     -w Option.           (line  20)
+* recursion, and -W:                     Options/Recursion.   (line  22)
 * recursion, and command line variable definitions: Options/Recursion.
-* recursion, and environment:            Variables/Recursion.
-* recursion, and MAKE variable:          MAKE Variable.
-* recursion, and MAKEFILES variable:     MAKEFILES Variable.
-* recursion, and options:                Options/Recursion.
-* recursion, and printing directories:   -w Option.
-* recursion, and variables:              Variables/Recursion.
-* recursion, level of:                   Variables/Recursion.
-* recursive variable expansion <1>:      Flavors.
-* recursive variable expansion:          Using Variables.
-* recursively expanded variables:        Flavors.
-* reference to variables <1>:            Advanced.
-* reference to variables:                Reference.
-* relinking:                             How Make Works.
-* remaking makefiles:                    Remaking Makefiles.
-* removal of target files <1>:           Interrupts.
-* removal of target files:               Errors.
-* removing duplicate words:              Text Functions.
-* removing targets on failure:           Special Targets.
-* removing, to clean up:                 Cleanup.
-* reporting bugs:                        Bugs.
-* rm:                                    Implicit Variables.
-* rm (shell command) <1>:                Errors.
-* rm (shell command) <2>:                Phony Targets.
-* rm (shell command) <3>:                Wildcard Examples.
-* rm (shell command):                    Simple Makefile.
-* rule commands:                         Commands.
-* rule prerequisites:                    Rule Syntax.
-* rule syntax:                           Rule Syntax.
-* rule targets:                          Rule Syntax.
-* rule, and $:                           Rule Syntax.
-* rule, double-colon (::):               Double-Colon.
-* rule, explicit, definition of:         Makefile Contents.
-* rule, how to write:                    Rules.
-* rule, implicit:                        Implicit Rules.
-* rule, implicit, and directory search:  Implicit/Search.
-* rule, implicit, and VPATH:             Implicit/Search.
-* rule, implicit, chains of:             Chained Rules.
-* rule, implicit, definition of:         Makefile Contents.
-* rule, implicit, how to use:            Using Implicit.
-* rule, implicit, introduction to:       make Deduces.
-* rule, implicit, predefined:            Catalogue of Rules.
-* rule, introduction to:                 Rule Introduction.
-* rule, multiple for one target:         Multiple Rules.
-* rule, no commands or prerequisites:    Force Targets.
-* rule, pattern:                         Pattern Intro.
-* rule, static pattern:                  Static Pattern.
+                                                              (line  17)
+* recursion, and environment:            Variables/Recursion. (line   6)
+* recursion, and MAKE variable:          MAKE Variable.       (line   6)
+* recursion, and MAKEFILES variable:     MAKEFILES Variable.  (line  14)
+* recursion, and options:                Options/Recursion.   (line   6)
+* recursion, and printing directories:   -w Option.           (line   6)
+* recursion, and variables:              Variables/Recursion. (line   6)
+* recursion, level of:                   Variables/Recursion. (line 115)
+* recursive variable expansion <1>:      Flavors.             (line   6)
+* recursive variable expansion:          Using Variables.     (line   6)
+* recursively expanded variables:        Flavors.             (line   6)
+* reference to variables <1>:            Advanced.            (line   6)
+* reference to variables:                Reference.           (line   6)
+* relinking:                             How Make Works.      (line  46)
+* remaking makefiles:                    Remaking Makefiles.  (line   6)
+* removal of target files <1>:           Interrupts.          (line   6)
+* removal of target files:               Errors.              (line  64)
+* removing duplicate words:              Text Functions.      (line 155)
+* removing targets on failure:           Special Targets.     (line  68)
+* removing, to clean up:                 Cleanup.             (line   6)
+* reporting bugs:                        Bugs.                (line   6)
+* rm:                                    Implicit Variables.  (line 110)
+* rm (shell command) <1>:                Errors.              (line  27)
+* rm (shell command) <2>:                Phony Targets.       (line  20)
+* rm (shell command) <3>:                Wildcard Examples.   (line  12)
+* rm (shell command):                    Simple Makefile.     (line  83)
+* rule commands:                         Commands.            (line   6)
+* rule prerequisites:                    Rule Syntax.         (line  46)
+* rule syntax:                           Rule Syntax.         (line   6)
+* rule targets:                          Rule Syntax.         (line  18)
+* rule, double-colon (::):               Double-Colon.        (line   6)
+* rule, explicit, definition of:         Makefile Contents.   (line  10)
+* rule, how to write:                    Rules.               (line   6)
+* rule, implicit:                        Implicit Rules.      (line   6)
+* rule, implicit, and directory search:  Implicit/Search.     (line   6)
+* rule, implicit, and VPATH:             Implicit/Search.     (line   6)
+* rule, implicit, chains of:             Chained Rules.       (line   6)
+* rule, implicit, definition of:         Makefile Contents.   (line  16)
+* rule, implicit, how to use:            Using Implicit.      (line   6)
+* rule, implicit, introduction to:       make Deduces.        (line   6)
+* rule, implicit, predefined:            Catalogue of Rules.  (line   6)
+* rule, introduction to:                 Rule Introduction.   (line   6)
+* rule, multiple for one target:         Multiple Rules.      (line   6)
+* rule, no commands or prerequisites:    Force Targets.       (line   6)
+* rule, pattern:                         Pattern Intro.       (line   6)
+* rule, static pattern:                  Static Pattern.      (line   6)
 * rule, static pattern versus implicit:  Static versus Implicit.
-* rule, with multiple targets:           Multiple Targets.
-* s. (SCCS file prefix):                 Catalogue of Rules.
-* SCCS, rule to extract from:            Catalogue of Rules.
+                                                              (line   6)
+* rule, with multiple targets:           Multiple Targets.    (line   6)
+* rules, and $:                          Rule Syntax.         (line  32)
+* s. (SCCS file prefix):                 Catalogue of Rules.  (line 173)
+* SCCS, rule to extract from:            Catalogue of Rules.  (line 173)
 * search algorithm, implicit rule:       Implicit Rule Search.
-* search path for prerequisites (VPATH): Directory Search.
+                                                              (line   6)
+* search path for prerequisites (VPATH): Directory Search.    (line   6)
 * search path for prerequisites (VPATH), and implicit rules: Implicit/Search.
+                                                              (line   6)
 * search path for prerequisites (VPATH), and link libraries: Libraries/Search.
-* searching for strings:                 Text Functions.
-* secondary files:                       Chained Rules.
-* secondary targets:                     Special Targets.
+                                                              (line   6)
+* searching for strings:                 Text Functions.      (line 103)
+* secondary expansion:                   Secondary Expansion. (line   6)
+* secondary expansion and explicit rules: Secondary Expansion.
+                                                              (line 106)
+* secondary expansion and implicit rules: Secondary Expansion.
+                                                              (line 146)
+* secondary expansion and static pattern rules: Secondary Expansion.
+                                                              (line 138)
+* secondary files:                       Chained Rules.       (line  46)
+* secondary targets:                     Special Targets.     (line  49)
 * sed (shell command):                   Automatic Prerequisites.
-* selecting a word:                      Text Functions.
-* selecting word lists:                  Text Functions.
-* sequences of commands:                 Sequences.
-* setting options from environment:      Options/Recursion.
-* setting options in makefiles:          Options/Recursion.
-* setting variables:                     Setting.
-* several rules for one target:          Multiple Rules.
-* several targets in a rule:             Multiple Targets.
-* shar (standard target):                Goals.
-* shell command:                         Simple Makefile.
-* shell command, and directory search:   Commands/Search.
-* shell command, execution:              Execution.
-* shell command, function for:           Shell Function.
-* shell file name pattern (in include):  Include.
-* shell wildcards (in include):          Include.
-* SHELL, MS-DOS specifics:               Execution.
-* signal:                                Interrupts.
-* silent operation:                      Echoing.
-* simple makefile:                       Simple Makefile.
-* simple variable expansion:             Using Variables.
-* simplifying with variables:            Variables Simplify.
-* simply expanded variables:             Flavors.
-* sorting words:                         Text Functions.
-* spaces, in variable values:            Flavors.
-* spaces, stripping:                     Text Functions.
-* special targets:                       Special Targets.
-* special variables:                     Special Variables.
-* specifying makefile name:              Makefile Names.
-* standard input:                        Parallel.
-* standards conformance:                 Overview.
+                                                              (line  73)
+* selecting a word:                      Text Functions.      (line 159)
+* selecting word lists:                  Text Functions.      (line 168)
+* sequences of commands:                 Sequences.           (line   6)
+* setting options from environment:      Options/Recursion.   (line  81)
+* setting options in makefiles:          Options/Recursion.   (line  81)
+* setting variables:                     Setting.             (line   6)
+* several rules for one target:          Multiple Rules.      (line   6)
+* several targets in a rule:             Multiple Targets.    (line   6)
+* shar (standard target):                Goals.               (line 103)
+* shell command:                         Simple Makefile.     (line  72)
+* shell command, and directory search:   Commands/Search.     (line   6)
+* shell command, execution:              Execution.           (line   6)
+* shell command, function for:           Shell Function.      (line   6)
+* shell file name pattern (in include):  Include.             (line  13)
+* shell variables, setting in commands:  Execution.           (line  10)
+* shell wildcards (in include):          Include.             (line  13)
+* shell, choosing the:                   Choosing the Shell.  (line   6)
+* SHELL, exported value:                 Variables/Recursion. (line  23)
+* SHELL, import from environment:        Environment.         (line  37)
+* shell, in DOS and Windows:             Choosing the Shell.  (line  36)
+* SHELL, MS-DOS specifics:               Choosing the Shell.  (line  42)
+* SHELL, value of:                       Choosing the Shell.  (line   6)
+* signal:                                Interrupts.          (line   6)
+* silent operation:                      Echoing.             (line   6)
+* simple makefile:                       Simple Makefile.     (line   6)
+* simple variable expansion:             Using Variables.     (line   6)
+* simplifying with variables:            Variables Simplify.  (line   6)
+* simply expanded variables:             Flavors.             (line  56)
+* sorting words:                         Text Functions.      (line 146)
+* spaces, in variable values:            Flavors.             (line 103)
+* spaces, stripping:                     Text Functions.      (line  80)
+* special targets:                       Special Targets.     (line   6)
+* special variables:                     Special Variables.   (line   6)
+* specifying makefile name:              Makefile Names.      (line  30)
+* splitting commands:                    Splitting Lines.     (line   6)
+* standard input:                        Parallel.            (line  30)
+* standards conformance:                 Overview.            (line  13)
 * standards for makefiles:               Makefile Conventions.
-* static pattern rule:                   Static Pattern.
-* static pattern rule, syntax of:        Static Usage.
+                                                              (line   6)
+* static pattern rule:                   Static Pattern.      (line   6)
+* static pattern rule, syntax of:        Static Usage.        (line   6)
 * static pattern rule, versus implicit:  Static versus Implicit.
-* stem <1>:                              Pattern Match.
-* stem:                                  Static Usage.
-* stem, variable for:                    Automatic Variables.
+                                                              (line   6)
+* static pattern rules, secondary expansion of: Secondary Expansion.
+                                                              (line 138)
+* stem <1>:                              Pattern Match.       (line   6)
+* stem:                                  Static Usage.        (line  17)
+* stem, variable for:                    Automatic Variables. (line  77)
 * stopping make:                         Make Control Functions.
-* strings, searching for:                Text Functions.
-* stripping whitespace:                  Text Functions.
-* sub-make:                              Variables/Recursion.
-* subdirectories, recursion for:         Recursion.
-* substitution variable reference:       Substitution Refs.
-* suffix rule:                           Suffix Rules.
+                                                              (line  11)
+* strings, searching for:                Text Functions.      (line 103)
+* stripping whitespace:                  Text Functions.      (line  80)
+* sub-make:                              Variables/Recursion. (line   6)
+* subdirectories, recursion for:         Recursion.           (line   6)
+* substitution variable reference:       Substitution Refs.   (line   6)
+* suffix rule:                           Suffix Rules.        (line   6)
 * suffix rule, for archive:              Archive Suffix Rules.
-* suffix, adding:                        File Name Functions.
-* suffix, function to find:              File Name Functions.
-* suffix, substituting in variables:     Substitution Refs.
-* switches:                              Options Summary.
-* symbol directories, updating archive:  Archive Symbols.
-* syntax of rules:                       Rule Syntax.
-* tab character (in commands):           Rule Syntax.
-* tabs in rules:                         Rule Introduction.
-* TAGS (standard target):                Goals.
-* tangle <1>:                            Implicit Variables.
-* tangle:                                Catalogue of Rules.
-* tar (standard target):                 Goals.
-* target:                                Rules.
-* target pattern, implicit:              Pattern Intro.
-* target pattern, static (not implicit): Static Usage.
-* target, deleting on error:             Errors.
-* target, deleting on interrupt:         Interrupts.
-* target, expansion:                     Reading Makefiles.
-* target, multiple in pattern rule:      Pattern Intro.
-* target, multiple rules for one:        Multiple Rules.
+                                                              (line   6)
+* suffix, adding:                        File Name Functions. (line  68)
+* suffix, function to find:              File Name Functions. (line  43)
+* suffix, substituting in variables:     Substitution Refs.   (line   6)
+* switches:                              Options Summary.     (line   6)
+* symbol directories, updating archive:  Archive Symbols.     (line   6)
+* syntax of commands:                    Command Syntax.      (line   6)
+* syntax of rules:                       Rule Syntax.         (line   6)
+* tab character (in commands):           Rule Syntax.         (line  26)
+* tabs in rules:                         Rule Introduction.   (line  21)
+* TAGS (standard target):                Goals.               (line 111)
+* tangle <1>:                            Implicit Variables.  (line 104)
+* tangle:                                Catalogue of Rules.  (line 151)
+* tar (standard target):                 Goals.               (line 100)
+* target:                                Rules.               (line   6)
+* target pattern, implicit:              Pattern Intro.       (line   9)
+* target pattern, static (not implicit): Static Usage.        (line  17)
+* target, deleting on error:             Errors.              (line  64)
+* target, deleting on interrupt:         Interrupts.          (line   6)
+* target, expansion:                     Reading Makefiles.   (line  62)
+* target, multiple in pattern rule:      Pattern Intro.       (line  49)
+* target, multiple rules for one:        Multiple Rules.      (line   6)
 * target, touching:                      Instead of Execution.
-* target-specific variables:             Target-specific.
-* targets:                               Rule Syntax.
-* targets without a file:                Phony Targets.
-* targets, built-in special:             Special Targets.
-* targets, empty:                        Empty Targets.
-* targets, force:                        Force Targets.
-* targets, introduction to:              Rule Introduction.
-* targets, multiple:                     Multiple Targets.
-* targets, phony:                        Phony Targets.
+                                                              (line  19)
+* target-specific variables:             Target-specific.     (line   6)
+* targets:                               Rule Syntax.         (line  18)
+* targets without a file:                Phony Targets.       (line   6)
+* targets, built-in special:             Special Targets.     (line   6)
+* targets, empty:                        Empty Targets.       (line   6)
+* targets, force:                        Force Targets.       (line   6)
+* targets, introduction to:              Rule Introduction.   (line   8)
+* targets, multiple:                     Multiple Targets.    (line   6)
+* targets, phony:                        Phony Targets.       (line   6)
 * terminal rule:                         Match-Anything Rules.
-* test (standard target):                Goals.
-* testing compilation:                   Testing.
-* tex <1>:                               Implicit Variables.
-* tex:                                   Catalogue of Rules.
-* TeX, rule to run:                      Catalogue of Rules.
-* texi2dvi <1>:                          Implicit Variables.
-* texi2dvi:                              Catalogue of Rules.
-* Texinfo, rule to format:               Catalogue of Rules.
-* tilde (~):                             Wildcards.
-* touch (shell command) <1>:             Empty Targets.
-* touch (shell command):                 Wildcard Examples.
+                                                              (line   6)
+* test (standard target):                Goals.               (line 115)
+* testing compilation:                   Testing.             (line   6)
+* tex <1>:                               Implicit Variables.  (line  91)
+* tex:                                   Catalogue of Rules.  (line 151)
+* TeX, rule to run:                      Catalogue of Rules.  (line 151)
+* texi2dvi <1>:                          Implicit Variables.  (line  95)
+* texi2dvi:                              Catalogue of Rules.  (line 158)
+* Texinfo, rule to format:               Catalogue of Rules.  (line 158)
+* tilde (~):                             Wildcards.           (line  11)
+* touch (shell command) <1>:             Empty Targets.       (line  25)
+* touch (shell command):                 Wildcard Examples.   (line  21)
 * touching files:                        Instead of Execution.
-* traditional directory search (GPATH):  Search Algorithm.
-* types of prerequisites:                Prerequisite Types.
-* undefined variables, warning message:  Options Summary.
-* updating archive symbol directories:   Archive Symbols.
-* updating makefiles:                    Remaking Makefiles.
-* user defined functions:                Call Function.
-* value:                                 Using Variables.
-* value, how a variable gets it:         Values.
-* variable:                              Using Variables.
-* variable definition:                   Makefile Contents.
-* variables:                             Variables Simplify.
-* variables, $ in name:                  Computed Names.
-* variables, and implicit rule:          Automatic Variables.
-* variables, appending to:               Appending.
-* variables, automatic:                  Automatic Variables.
-* variables, command line:               Overriding.
-* variables, command line, and recursion: Options/Recursion.
-* variables, computed names:             Computed Names.
-* variables, conditional assignment:     Flavors.
-* variables, defining verbatim:          Defining.
-* variables, environment <1>:            Environment.
-* variables, environment:                Variables/Recursion.
-* variables, exporting:                  Variables/Recursion.
-* variables, flavors:                    Flavors.
-* variables, how they get their values:  Values.
-* variables, how to reference:           Reference.
-* variables, loops in expansion:         Flavors.
-* variables, modified reference:         Substitution Refs.
-* variables, nested references:          Computed Names.
-* variables, origin of:                  Origin Function.
-* variables, overriding:                 Override Directive.
-* variables, overriding with arguments:  Overriding.
-* variables, pattern-specific:           Pattern-specific.
-* variables, recursively expanded:       Flavors.
-* variables, setting:                    Setting.
-* variables, simply expanded:            Flavors.
-* variables, spaces in values:           Flavors.
-* variables, substituting suffix in:     Substitution Refs.
-* variables, substitution reference:     Substitution Refs.
-* variables, target-specific:            Target-specific.
-* variables, unexpanded value:           Value Function.
-* variables, warning for undefined:      Options Summary.
-* varying prerequisites:                 Static Pattern.
-* verbatim variable definition:          Defining.
-* vpath:                                 Directory Search.
-* VPATH, and implicit rules:             Implicit/Search.
-* VPATH, and link libraries:             Libraries/Search.
+                                                              (line  19)
+* traditional directory search (GPATH):  Search Algorithm.    (line  42)
+* types of prerequisites:                Prerequisite Types.  (line   6)
+* undefined variables, warning message:  Options Summary.     (line 251)
+* updating archive symbol directories:   Archive Symbols.     (line   6)
+* updating makefiles:                    Remaking Makefiles.  (line   6)
+* user defined functions:                Call Function.       (line   6)
+* value:                                 Using Variables.     (line   6)
+* value, how a variable gets it:         Values.              (line   6)
+* variable:                              Using Variables.     (line   6)
+* variable definition:                   Makefile Contents.   (line  22)
+* variable references in commands:       Variables in Commands.
+                                                              (line   6)
+* variables:                             Variables Simplify.  (line   6)
+* variables, $ in name:                  Computed Names.      (line   6)
+* variables, and implicit rule:          Automatic Variables. (line   6)
+* variables, appending to:               Appending.           (line   6)
+* variables, automatic:                  Automatic Variables. (line   6)
+* variables, command line:               Overriding.          (line   6)
+* variables, command line, and recursion: Options/Recursion.  (line  17)
+* variables, computed names:             Computed Names.      (line   6)
+* variables, conditional assignment:     Flavors.             (line 129)
+* variables, defining verbatim:          Defining.            (line   6)
+* variables, environment <1>:            Environment.         (line   6)
+* variables, environment:                Variables/Recursion. (line   6)
+* variables, exporting:                  Variables/Recursion. (line   6)
+* variables, flavor of:                  Flavor Function.     (line   6)
+* variables, flavors:                    Flavors.             (line   6)
+* variables, how they get their values:  Values.              (line   6)
+* variables, how to reference:           Reference.           (line   6)
+* variables, loops in expansion:         Flavors.             (line  44)
+* variables, modified reference:         Substitution Refs.   (line   6)
+* variables, nested references:          Computed Names.      (line   6)
+* variables, origin of:                  Origin Function.     (line   6)
+* variables, overriding:                 Override Directive.  (line   6)
+* variables, overriding with arguments:  Overriding.          (line   6)
+* variables, pattern-specific:           Pattern-specific.    (line   6)
+* variables, recursively expanded:       Flavors.             (line   6)
+* variables, setting:                    Setting.             (line   6)
+* variables, simply expanded:            Flavors.             (line  56)
+* variables, spaces in values:           Flavors.             (line 103)
+* variables, substituting suffix in:     Substitution Refs.   (line   6)
+* variables, substitution reference:     Substitution Refs.   (line   6)
+* variables, target-specific:            Target-specific.     (line   6)
+* variables, unexpanded value:           Value Function.      (line   6)
+* variables, warning for undefined:      Options Summary.     (line 251)
+* varying prerequisites:                 Static Pattern.      (line   6)
+* verbatim variable definition:          Defining.            (line   6)
+* vpath:                                 Directory Search.    (line   6)
+* VPATH, and implicit rules:             Implicit/Search.     (line   6)
+* VPATH, and link libraries:             Libraries/Search.    (line   6)
 * warnings, printing:                    Make Control Functions.
-* weave <1>:                             Implicit Variables.
-* weave:                                 Catalogue of Rules.
-* Web, rule to run:                      Catalogue of Rules.
+                                                              (line  35)
+* weave <1>:                             Implicit Variables.  (line  98)
+* weave:                                 Catalogue of Rules.  (line 151)
+* Web, rule to run:                      Catalogue of Rules.  (line 151)
 * what if:                               Instead of Execution.
-* whitespace, in variable values:        Flavors.
-* whitespace, stripping:                 Text Functions.
-* wildcard:                              Wildcards.
-* wildcard pitfalls:                     Wildcard Pitfall.
-* wildcard, function:                    File Name Functions.
-* wildcard, in archive member:           Archive Members.
-* wildcard, in include:                  Include.
+                                                              (line  33)
+* whitespace, in variable values:        Flavors.             (line 103)
+* whitespace, stripping:                 Text Functions.      (line  80)
+* wildcard:                              Wildcards.           (line   6)
+* wildcard pitfalls:                     Wildcard Pitfall.    (line   6)
+* wildcard, function:                    File Name Functions. (line 107)
+* wildcard, in archive member:           Archive Members.     (line  36)
+* wildcard, in include:                  Include.             (line  13)
 * wildcards and MS-DOS/MS-Windows backslashes: Wildcard Pitfall.
-* word, selecting a:                     Text Functions.
-* words, extracting first:               Text Functions.
-* words, filtering:                      Text Functions.
-* words, filtering out:                  Text Functions.
-* words, finding number:                 Text Functions.
-* words, iterating over:                 Foreach Function.
-* words, joining lists:                  File Name Functions.
-* words, removing duplicates:            Text Functions.
-* words, selecting lists of:             Text Functions.
-* writing rule commands:                 Commands.
-* writing rules:                         Rules.
-* yacc <1>:                              Implicit Variables.
-* yacc <2>:                              Catalogue of Rules.
-* yacc:                                  Sequences.
-* Yacc, rule to run:                     Catalogue of Rules.
-* ~ (tilde):                             Wildcards.
+                                                              (line  31)
+* Windows, choosing a shell in:          Choosing the Shell.  (line  36)
+* word, selecting a:                     Text Functions.      (line 159)
+* words, extracting first:               Text Functions.      (line 184)
+* words, extracting last:                Text Functions.      (line 197)
+* words, filtering:                      Text Functions.      (line 114)
+* words, filtering out:                  Text Functions.      (line 132)
+* words, finding number:                 Text Functions.      (line 180)
+* words, iterating over:                 Foreach Function.    (line   6)
+* words, joining lists:                  File Name Functions. (line  90)
+* words, removing duplicates:            Text Functions.      (line 155)
+* words, selecting lists of:             Text Functions.      (line 168)
+* writing rule commands:                 Commands.            (line   6)
+* writing rules:                         Rules.               (line   6)
+* yacc <1>:                              Implicit Variables.  (line  75)
+* yacc <2>:                              Catalogue of Rules.  (line 120)
+* yacc:                                  Sequences.           (line  18)
+* Yacc, rule to run:                     Catalogue of Rules.  (line 120)
+* ~ (tilde):                             Wildcards.           (line  11)
 
 
@@ -3308,186 +4181,213 @@
 *******************************************
 
+[index]
 * Menu:
 
-* $$(@D):                                Automatic Variables.
-* $$(@F):                                Automatic Variables.
-* $$@:                                   Automatic Variables.
-* $%:                                    Automatic Variables.
-* $(%D):                                 Automatic Variables.
-* $(%F):                                 Automatic Variables.
-* $(*D):                                 Automatic Variables.
-* $(*F):                                 Automatic Variables.
-* $(+D):                                 Automatic Variables.
-* $(+F):                                 Automatic Variables.
-* $(.VARIABLES):                         Special Variables.
-* $(<D):                                 Automatic Variables.
-* $(<F):                                 Automatic Variables.
-* $(?D):                                 Automatic Variables.
-* $(?F):                                 Automatic Variables.
-* $(@D):                                 Automatic Variables.
-* $(@F):                                 Automatic Variables.
-* $(^D):                                 Automatic Variables.
-* $(^F):                                 Automatic Variables.
-* $*:                                    Automatic Variables.
-* $*, and static pattern:                Static Usage.
-* $+:                                    Automatic Variables.
-* $<:                                    Automatic Variables.
-* $?:                                    Automatic Variables.
-* $@:                                    Automatic Variables.
-* $^:                                    Automatic Variables.
-* % (automatic variable):                Automatic Variables.
-* %D (automatic variable):               Automatic Variables.
-* %F (automatic variable):               Automatic Variables.
-* * (automatic variable):                Automatic Variables.
-* * (automatic variable), unsupported bizarre usage: Missing.
-* *D (automatic variable):               Automatic Variables.
-* *F (automatic variable):               Automatic Variables.
-* + (automatic variable):                Automatic Variables.
-* +D (automatic variable):               Automatic Variables.
-* +F (automatic variable):               Automatic Variables.
-* .DEFAULT <1>:                          Last Resort.
-* .DEFAULT:                              Special Targets.
-* .DEFAULT, and empty commands:          Empty Commands.
-* .DELETE_ON_ERROR <1>:                  Errors.
-* .DELETE_ON_ERROR:                      Special Targets.
-* .EXPORT_ALL_VARIABLES <1>:             Variables/Recursion.
-* .EXPORT_ALL_VARIABLES:                 Special Targets.
-* .IGNORE <1>:                           Errors.
-* .IGNORE:                               Special Targets.
-* .INTERMEDIATE:                         Special Targets.
-* .LIBPATTERNS:                          Libraries/Search.
-* .LOW_RESOLUTION_TIME:                  Special Targets.
-* .NOTPARALLEL:                          Special Targets.
-* .PHONY <1>:                            Special Targets.
-* .PHONY:                                Phony Targets.
-* .POSIX:                                Options/Recursion.
-* .PRECIOUS <1>:                         Interrupts.
-* .PRECIOUS:                             Special Targets.
-* .SECONDARY:                            Special Targets.
-* .SILENT <1>:                           Echoing.
-* .SILENT:                               Special Targets.
-* .SUFFIXES <1>:                         Suffix Rules.
-* .SUFFIXES:                             Special Targets.
-* .VARIABLES (list of variables):        Special Variables.
-* /usr/gnu/include:                      Include.
-* /usr/include:                          Include.
-* /usr/local/include:                    Include.
-* < (automatic variable):                Automatic Variables.
-* <D (automatic variable):               Automatic Variables.
-* <F (automatic variable):               Automatic Variables.
-* ? (automatic variable):                Automatic Variables.
-* ?D (automatic variable):               Automatic Variables.
-* ?F (automatic variable):               Automatic Variables.
-* @ (automatic variable):                Automatic Variables.
-* @D (automatic variable):               Automatic Variables.
-* @F (automatic variable):               Automatic Variables.
-* ^ (automatic variable):                Automatic Variables.
-* ^D (automatic variable):               Automatic Variables.
-* ^F (automatic variable):               Automatic Variables.
-* addprefix:                             File Name Functions.
-* addsuffix:                             File Name Functions.
-* AR:                                    Implicit Variables.
-* ARFLAGS:                               Implicit Variables.
-* AS:                                    Implicit Variables.
-* ASFLAGS:                               Implicit Variables.
-* basename:                              File Name Functions.
-* bindir:                                Directory Variables.
-* call:                                  Call Function.
-* CC:                                    Implicit Variables.
-* CFLAGS:                                Implicit Variables.
-* CO:                                    Implicit Variables.
-* COFLAGS:                               Implicit Variables.
-* COMSPEC:                               Execution.
-* CPP:                                   Implicit Variables.
-* CPPFLAGS:                              Implicit Variables.
-* CTANGLE:                               Implicit Variables.
-* CURDIR:                                Recursion.
-* CWEAVE:                                Implicit Variables.
-* CXX:                                   Implicit Variables.
-* CXXFLAGS:                              Implicit Variables.
-* define:                                Defining.
-* dir:                                   File Name Functions.
-* else:                                  Conditional Syntax.
-* endef:                                 Defining.
-* endif:                                 Conditional Syntax.
+* $%:                                    Automatic Variables. (line  37)
+* $(%D):                                 Automatic Variables. (line 129)
+* $(%F):                                 Automatic Variables. (line 130)
+* $(*D):                                 Automatic Variables. (line 124)
+* $(*F):                                 Automatic Variables. (line 125)
+* $(+D):                                 Automatic Variables. (line 147)
+* $(+F):                                 Automatic Variables. (line 148)
+* $(<D):                                 Automatic Variables. (line 137)
+* $(<F):                                 Automatic Variables. (line 138)
+* $(?D):                                 Automatic Variables. (line 153)
+* $(?F):                                 Automatic Variables. (line 154)
+* $(@D):                                 Automatic Variables. (line 113)
+* $(@F):                                 Automatic Variables. (line 119)
+* $(^D):                                 Automatic Variables. (line 142)
+* $(^F):                                 Automatic Variables. (line 143)
+* $*:                                    Automatic Variables. (line  73)
+* $*, and static pattern:                Static Usage.        (line  81)
+* $+:                                    Automatic Variables. (line  63)
+* $<:                                    Automatic Variables. (line  43)
+* $?:                                    Automatic Variables. (line  48)
+* $@:                                    Automatic Variables. (line  30)
+* $^:                                    Automatic Variables. (line  53)
+* $|:                                    Automatic Variables. (line  69)
+* % (automatic variable):                Automatic Variables. (line  37)
+* %D (automatic variable):               Automatic Variables. (line 129)
+* %F (automatic variable):               Automatic Variables. (line 130)
+* * (automatic variable):                Automatic Variables. (line  73)
+* * (automatic variable), unsupported bizarre usage: Missing. (line  44)
+* *D (automatic variable):               Automatic Variables. (line 124)
+* *F (automatic variable):               Automatic Variables. (line 125)
+* + (automatic variable):                Automatic Variables. (line  63)
+* +D (automatic variable):               Automatic Variables. (line 147)
+* +F (automatic variable):               Automatic Variables. (line 148)
+* .DEFAULT <1>:                          Last Resort.         (line  23)
+* .DEFAULT:                              Special Targets.     (line  20)
+* .DEFAULT, and empty commands:          Empty Commands.      (line  16)
+* .DEFAULT_GOAL (define default goal):   Special Variables.   (line  10)
+* .DELETE_ON_ERROR <1>:                  Errors.              (line  64)
+* .DELETE_ON_ERROR:                      Special Targets.     (line  67)
+* .EXPORT_ALL_VARIABLES <1>:             Variables/Recursion. (line  99)
+* .EXPORT_ALL_VARIABLES:                 Special Targets.     (line 129)
+* .FEATURES (list of supported features): Special Variables.  (line  65)
+* .IGNORE <1>:                           Errors.              (line  30)
+* .IGNORE:                               Special Targets.     (line  74)
+* .INCLUDE_DIRS (list of include directories): Special Variables.
+                                                              (line  98)
+* .INTERMEDIATE:                         Special Targets.     (line  43)
+* .LIBPATTERNS:                          Libraries/Search.    (line   6)
+* .LOW_RESOLUTION_TIME:                  Special Targets.     (line  86)
+* .NOTPARALLEL:                          Special Targets.     (line 134)
+* .PHONY <1>:                            Special Targets.     (line   8)
+* .PHONY:                                Phony Targets.       (line  22)
+* .POSIX:                                Options/Recursion.   (line  60)
+* .PRECIOUS <1>:                         Interrupts.          (line  22)
+* .PRECIOUS:                             Special Targets.     (line  28)
+* .SECONDARY:                            Special Targets.     (line  48)
+* .SECONDEXPANSION <1>:                  Special Targets.     (line  57)
+* .SECONDEXPANSION:                      Secondary Expansion. (line   6)
+* .SILENT <1>:                           Echoing.             (line  24)
+* .SILENT:                               Special Targets.     (line 116)
+* .SUFFIXES <1>:                         Suffix Rules.        (line  61)
+* .SUFFIXES:                             Special Targets.     (line  15)
+* .VARIABLES (list of variables):        Special Variables.   (line  56)
+* /usr/gnu/include:                      Include.             (line  52)
+* /usr/include:                          Include.             (line  52)
+* /usr/local/include:                    Include.             (line  52)
+* < (automatic variable):                Automatic Variables. (line  43)
+* <D (automatic variable):               Automatic Variables. (line 137)
+* <F (automatic variable):               Automatic Variables. (line 138)
+* ? (automatic variable):                Automatic Variables. (line  48)
+* ?D (automatic variable):               Automatic Variables. (line 153)
+* ?F (automatic variable):               Automatic Variables. (line 154)
+* @ (automatic variable):                Automatic Variables. (line  30)
+* @D (automatic variable):               Automatic Variables. (line 113)
+* @F (automatic variable):               Automatic Variables. (line 119)
+* ^ (automatic variable):                Automatic Variables. (line  53)
+* ^D (automatic variable):               Automatic Variables. (line 142)
+* ^F (automatic variable):               Automatic Variables. (line 143)
+* abspath:                               File Name Functions. (line 121)
+* addprefix:                             File Name Functions. (line  79)
+* addsuffix:                             File Name Functions. (line  68)
+* and:                                   Conditional Functions.
+                                                              (line  45)
+* AR:                                    Implicit Variables.  (line  41)
+* ARFLAGS:                               Implicit Variables.  (line 117)
+* AS:                                    Implicit Variables.  (line  44)
+* ASFLAGS:                               Implicit Variables.  (line 120)
+* basename:                              File Name Functions. (line  57)
+* bindir:                                Directory Variables. (line  53)
+* call:                                  Call Function.       (line   6)
+* CC:                                    Implicit Variables.  (line  47)
+* CFLAGS:                                Implicit Variables.  (line 124)
+* CO:                                    Implicit Variables.  (line  50)
+* COFLAGS:                               Implicit Variables.  (line 130)
+* COMSPEC:                               Choosing the Shell.  (line  39)
+* CPP:                                   Implicit Variables.  (line  59)
+* CPPFLAGS:                              Implicit Variables.  (line 133)
+* CTANGLE:                               Implicit Variables.  (line 107)
+* CURDIR:                                Recursion.           (line  28)
+* CWEAVE:                                Implicit Variables.  (line 101)
+* CXX:                                   Implicit Variables.  (line  53)
+* CXXFLAGS:                              Implicit Variables.  (line 127)
+* define:                                Defining.            (line   6)
+* dir:                                   File Name Functions. (line  17)
+* else:                                  Conditional Syntax.  (line   6)
+* endef:                                 Defining.            (line   6)
+* endif:                                 Conditional Syntax.  (line   6)
 * error:                                 Make Control Functions.
-* eval:                                  Eval Function.
-* exec_prefix:                           Directory Variables.
-* export:                                Variables/Recursion.
-* FC:                                    Implicit Variables.
-* FFLAGS:                                Implicit Variables.
-* filter:                                Text Functions.
-* filter-out:                            Text Functions.
-* findstring:                            Text Functions.
-* firstword:                             Text Functions.
-* foreach:                               Foreach Function.
-* GET:                                   Implicit Variables.
-* GFLAGS:                                Implicit Variables.
-* GNUmakefile:                           Makefile Names.
-* GPATH:                                 Search Algorithm.
-* if:                                    If Function.
-* ifdef:                                 Conditional Syntax.
-* ifeq:                                  Conditional Syntax.
-* ifndef:                                Conditional Syntax.
-* ifneq:                                 Conditional Syntax.
-* include:                               Include.
-* join:                                  File Name Functions.
-* LDFLAGS:                               Implicit Variables.
-* LEX:                                   Implicit Variables.
-* LFLAGS:                                Implicit Variables.
-* libexecdir:                            Directory Variables.
-* MAKE <1>:                              Flavors.
-* MAKE:                                  MAKE Variable.
-* MAKECMDGOALS:                          Goals.
-* makefile:                              Makefile Names.
-* Makefile:                              Makefile Names.
-* MAKEFILES <1>:                         Variables/Recursion.
-* MAKEFILES:                             MAKEFILES Variable.
-* MAKEFLAGS:                             Options/Recursion.
-* MAKEINFO:                              Implicit Variables.
-* MAKELEVEL <1>:                         Flavors.
-* MAKELEVEL:                             Variables/Recursion.
-* MAKEOVERRIDES:                         Options/Recursion.
-* MFLAGS:                                Options/Recursion.
-* notdir:                                File Name Functions.
-* origin:                                Origin Function.
-* OUTPUT_OPTION:                         Catalogue of Rules.
-* override:                              Override Directive.
-* patsubst <1>:                          Text Functions.
-* patsubst:                              Substitution Refs.
-* PC:                                    Implicit Variables.
-* PFLAGS:                                Implicit Variables.
-* prefix:                                Directory Variables.
-* RFLAGS:                                Implicit Variables.
-* RM:                                    Implicit Variables.
-* sbindir:                               Directory Variables.
-* shell:                                 Shell Function.
-* SHELL:                                 Execution.
-* SHELL (command execution):             Execution.
-* sort:                                  Text Functions.
-* strip:                                 Text Functions.
-* subst <1>:                             Text Functions.
-* subst:                                 Multiple Targets.
-* suffix:                                File Name Functions.
-* SUFFIXES:                              Suffix Rules.
-* TANGLE:                                Implicit Variables.
-* TEX:                                   Implicit Variables.
-* TEXI2DVI:                              Implicit Variables.
-* unexport:                              Variables/Recursion.
-* value:                                 Value Function.
-* vpath:                                 Selective Search.
-* VPATH:                                 General Search.
-* vpath:                                 Directory Search.
-* VPATH:                                 Directory Search.
+                                                              (line  11)
+* eval:                                  Eval Function.       (line   6)
+* exec_prefix:                           Directory Variables. (line  35)
+* export:                                Variables/Recursion. (line  40)
+* FC:                                    Implicit Variables.  (line  63)
+* FFLAGS:                                Implicit Variables.  (line 137)
+* filter:                                Text Functions.      (line 114)
+* filter-out:                            Text Functions.      (line 132)
+* findstring:                            Text Functions.      (line 103)
+* firstword:                             Text Functions.      (line 184)
+* flavor:                                Flavor Function.     (line   6)
+* foreach:                               Foreach Function.    (line   6)
+* GET:                                   Implicit Variables.  (line  67)
+* GFLAGS:                                Implicit Variables.  (line 140)
+* GNUmakefile:                           Makefile Names.      (line   7)
+* GPATH:                                 Search Algorithm.    (line  48)
+* if:                                    Conditional Functions.
+                                                              (line   6)
+* ifdef:                                 Conditional Syntax.  (line   6)
+* ifeq:                                  Conditional Syntax.  (line   6)
+* ifndef:                                Conditional Syntax.  (line   6)
+* ifneq:                                 Conditional Syntax.  (line   6)
+* include:                               Include.             (line   6)
+* info:                                  Make Control Functions.
+                                                              (line  43)
+* join:                                  File Name Functions. (line  90)
+* lastword:                              Text Functions.      (line 197)
+* LDFLAGS:                               Implicit Variables.  (line 143)
+* LEX:                                   Implicit Variables.  (line  70)
+* LFLAGS:                                Implicit Variables.  (line 147)
+* libexecdir:                            Directory Variables. (line  66)
+* LINT:                                  Implicit Variables.  (line  78)
+* LINTFLAGS:                             Implicit Variables.  (line 159)
+* M2C:                                   Implicit Variables.  (line  81)
+* MAKE <1>:                              Flavors.             (line  84)
+* MAKE:                                  MAKE Variable.       (line   6)
+* MAKE_RESTARTS (number of times make has restarted): Special Variables.
+                                                              (line  49)
+* MAKE_VERSION:                          Features.            (line 197)
+* MAKECMDGOALS:                          Goals.               (line  30)
+* makefile:                              Makefile Names.      (line   7)
+* Makefile:                              Makefile Names.      (line   7)
+* MAKEFILE_LIST:                         MAKEFILE_LIST Variable.
+                                                              (line   6)
+* MAKEFILES <1>:                         Variables/Recursion. (line 127)
+* MAKEFILES:                             MAKEFILES Variable.  (line   6)
+* MAKEFLAGS:                             Options/Recursion.   (line   6)
+* MAKEINFO:                              Implicit Variables.  (line  87)
+* MAKELEVEL <1>:                         Flavors.             (line  84)
+* MAKELEVEL:                             Variables/Recursion. (line 115)
+* MAKEOVERRIDES:                         Options/Recursion.   (line  49)
+* MAKESHELL (MS-DOS alternative to SHELL): Choosing the Shell.
+                                                              (line  25)
+* MFLAGS:                                Options/Recursion.   (line  65)
+* notdir:                                File Name Functions. (line  27)
+* or:                                    Conditional Functions.
+                                                              (line  37)
+* origin:                                Origin Function.     (line   6)
+* OUTPUT_OPTION:                         Catalogue of Rules.  (line 202)
+* override:                              Override Directive.  (line   6)
+* patsubst <1>:                          Text Functions.      (line  18)
+* patsubst:                              Substitution Refs.   (line  28)
+* PC:                                    Implicit Variables.  (line  84)
+* PFLAGS:                                Implicit Variables.  (line 153)
+* prefix:                                Directory Variables. (line  25)
+* realpath:                              File Name Functions. (line 114)
+* RFLAGS:                                Implicit Variables.  (line 156)
+* RM:                                    Implicit Variables.  (line 110)
+* sbindir:                               Directory Variables. (line  59)
+* shell:                                 Shell Function.      (line   6)
+* SHELL:                                 Choosing the Shell.  (line   6)
+* SHELL (command execution):             Execution.           (line   6)
+* sort:                                  Text Functions.      (line 146)
+* strip:                                 Text Functions.      (line  80)
+* subst <1>:                             Text Functions.      (line   9)
+* subst:                                 Multiple Targets.    (line  28)
+* suffix:                                File Name Functions. (line  43)
+* SUFFIXES:                              Suffix Rules.        (line  81)
+* TANGLE:                                Implicit Variables.  (line 104)
+* TEX:                                   Implicit Variables.  (line  91)
+* TEXI2DVI:                              Implicit Variables.  (line  94)
+* unexport:                              Variables/Recursion. (line  45)
+* value:                                 Value Function.      (line   6)
+* vpath:                                 Selective Search.    (line   6)
+* VPATH:                                 General Search.      (line   6)
+* vpath:                                 Directory Search.    (line   6)
+* VPATH:                                 Directory Search.    (line   6)
 * warning:                               Make Control Functions.
-* WEAVE:                                 Implicit Variables.
-* wildcard <1>:                          File Name Functions.
-* wildcard:                              Wildcard Function.
-* word:                                  Text Functions.
-* wordlist:                              Text Functions.
-* words:                                 Text Functions.
-* YACC:                                  Implicit Variables.
-* YACCR:                                 Implicit Variables.
-* YFLAGS:                                Implicit Variables.
-
-
+                                                              (line  35)
+* WEAVE:                                 Implicit Variables.  (line  98)
+* wildcard <1>:                          File Name Functions. (line 107)
+* wildcard:                              Wildcard Function.   (line   6)
+* word:                                  Text Functions.      (line 159)
+* wordlist:                              Text Functions.      (line 168)
+* words:                                 Text Functions.      (line 180)
+* YACC:                                  Implicit Variables.  (line  74)
+* YFLAGS:                                Implicit Variables.  (line 150)
+* | (automatic variable):                Automatic Variables. (line  69)
+
+
Index: trunk/src/gmake/doc/make.texi
===================================================================
--- trunk/src/gmake/doc/make.texi	(revision 466)
+++ trunk/src/gmake/doc/make.texi	(revision 503)
@@ -2,27 +2,52 @@
 @c %**start of header
 @setfilename make.info
+
+@include version.texi
+@set EDITION 0.70
+@set RCSID $Id: make.texi,v 1.45 2006/04/01 06:36:40 psmith Exp $
+
 @settitle GNU @code{make}
 @setchapternewpage odd
-@c %**end of header
-
-@c FSF publishers: format makebook.texi instead of using this file directly.
-
-@set RCSID $Id: make.texi,v 1.30 2005/05/13 12:45:31 psmith Exp $
-@set EDITION 0.70
-@set VERSION 3.81
-@set UPDATED 07 May 2005
-@set UPDATE-MONTH May 2005
-@c ISBN provided by Lisa M. Opus Goldstein <opus@gnu.org>, 5 May 2004
-@set ISBN 1-882114-83-5
-
-@c finalout
-
-@c ISPELL CHECK: done, 10 June 1993 --roland
-@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
-
 @c Combine the variable and function indices:
 @syncodeindex vr fn
 @c Combine the program and concept indices:
 @syncodeindex pg cp
+@c FSF publishers: format makebook.texi instead of using this file directly.
+@c ISBN provided by Lisa M. Opus Goldstein <opus@gnu.org>, 5 May 2004
+@set ISBN 1-882114-83-5
+@c %**end of header
+
+@copying
+This file documents the GNU @code{make} utility, which determines
+automatically which pieces of a large program need to be recompiled,
+and issues the commands to recompile them.
+
+This is Edition @value{EDITION}, last updated @value{UPDATED},
+of @cite{The GNU Make Manual}, for GNU @code{make} version @value{VERSION}.
+
+Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License.''
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
+@end quotation
+@end copying
+
+@c finalout
+
+@c ISPELL CHECK: done, 10 June 1993 --roland
+@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
+
 
 @dircategory GNU Packages
@@ -30,24 +55,4 @@
 * Make: (make).            Remake files automatically.
 @end direntry
-
-@ifnottex
-This file documents the GNU Make utility, which determines
-automatically which pieces of a large program need to be recompiled,
-and issues the commands to recompile them.
-
-This is Edition @value{EDITION}, last updated @value{UPDATED},
-of @cite{The GNU Make Manual}, for @code{make}, Version @value{VERSION}.
-
-Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts.  A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-@end ifnottex
 
 @iftex
@@ -58,49 +63,26 @@
 @subtitle A Program for Directing Recompilation
 @subtitle GNU @code{make} Version @value{VERSION}
-@subtitle @value{UPDATE-MONTH}
+@subtitle @value{UPDATED-MONTH}
 @author Richard M. Stallman, Roland McGrath, Paul D. Smith
 @page
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+@insertcopying
 @sp 2
 Published by the Free Software Foundation @*
-59 Temple Place -- Suite 330, @*
-Boston, MA 02111-1307 USA @*
+51 Franklin St. -- Fifth Floor @*
+Boston, MA 02110-1301 USA @*
 ISBN @value{ISBN} @*
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'', the Front-Cover
-Texts being ``A GNU Manual'', and with the Back-Cover Texts being as in
-(a) below.  A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Back-Cover Text is:
-
-@quotation
-      You have freedom to copy and modify this GNU Manual, like GNU
-      software.  Copies published by the Free Software Foundation raise
-      funds for GNU development.
-@end quotation
 @sp 2
 Cover art by Etienne Suvasa.
 @end titlepage
-@page
+
+@summarycontents
+@contents
 
 @ifnottex
 @node Top, Overview, (dir), (dir)
-@top Make
-
-The GNU @code{make} utility automatically determines which pieces of a
-large program need to be recompiled, and issues the commands to
-recompile them.@refill
-
-This edition of the @cite{GNU Make Manual},
-last updated @value{UPDATED},
-documents GNU @code{make} Version @value{VERSION}.@refill
-
-This manual describes @code{make} and contains the following chapters:@refill
+@top GNU @code{make}
+
+@insertcopying
 @end ifnottex
 
@@ -174,6 +156,6 @@
 * Phony Targets::               Using a target that is not a real file's name.
 * Force Targets::               You can use a target without commands
-                                  or prerequisites to mark other
-                                  targets as phony.
+                                  or prerequisites to mark other targets
+                                  as phony.
 * Empty Targets::               When only the date matters and the
                                   files are empty.
@@ -215,4 +197,5 @@
 Writing the Commands in Rules
 
+* Command Syntax::              Command syntax features and pitfalls.
 * Echoing::                     How to control when commands are echoed.
 * Execution::                   How commands are executed.
@@ -223,4 +206,14 @@
 * Sequences::                   Defining canned sequences of commands.
 * Empty Commands::              Defining useful, do-nothing commands.
+
+Command Syntax
+
+* Splitting Lines::             Breaking long command lines for readability.
+* Variables in Commands::       Using @code{make} variables in commands.
+
+Command Execution
+
+* Choosing the Shell::          How @code{make} chooses the shell used
+                                  to run commands.
 
 Recursive Use of @code{make}
@@ -268,10 +261,11 @@
 * Text Functions::              General-purpose text manipulation functions.
 * File Name Functions::         Functions for manipulating file names.
+* Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
-* If Function::                 Conditionally expand a value.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
+* Flavor Function::             Find out the flavor of a variable.
 * Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
@@ -301,6 +295,6 @@
 * Chained Rules::               How to use a chain of implicit rules.
 * Pattern Rules::               How to define new implicit rules.
-* Last Resort::                 How to defining commands for rules
-                                  which cannot find any.
+* Last Resort::                 How to define commands for rules which
+                                  cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -330,13 +324,4 @@
 
 * Archive Symbols::             How to update archive symbol directories.
-
-Makefile Conventions
-
-* Makefile Basics::             General Conventions for Makefiles
-* Utilities in Makefiles::      Utilities in Makefiles
-* Command Variables::           Variables for Specifying Commands
-* Directory Variables::         Variables for Installation Directories
-* Standard Targets::            Standard Targets for Users
-* Install Command Categories::  Three categories of commands in the `install'
 
 @end detailmenu
@@ -1100,5 +1085,6 @@
 
 @noindent
-@var{filenames} can contain shell file name patterns.
+@var{filenames} can contain shell file name patterns.  If
+@var{filenames} is empty, nothing is included and no error is printed.
 @cindex shell file name pattern (in @code{include})
 @cindex shell wildcards (in @code{include})
@@ -1289,5 +1275,5 @@
 @code{.DEFAULT_GOAL} variable allows you to discover the current
 default goal, restart the default goal selection algorithm by clearing
-its value, or to explicitly set the default goal. The following
+its value, or to explicitly set the default goal.  The following
 example illustrates these cases:
 
@@ -1330,4 +1316,12 @@
 Note that assigning more than one target name to @code{.DEFAULT_GOAL} is
 illegal and will result in an error.
+
+@vindex MAKE_RESTARTS @r{(number of times @code{make} has restarted)}
+@item MAKE_RESTARTS
+This variable is set only if this instance of @code{make} has
+restarted (@pxref{Remaking Makefiles, , How Makefiles Are Remade}): it
+will contain the number of times this instance has restarted.  Note
+this is not the same as recursion (counted by the @code{MAKELEVEL}
+variable).  You should not set, modify, or export this variable.
 
 @vindex .VARIABLES @r{(list of variables)}
@@ -1357,24 +1351,38 @@
 
 @table @samp
+
+@item archives
+Supports @code{ar} (archive) files using special filename syntax.
+@xref{Archives, ,Using @code{make} to Update Archive Files}.
+
+@item check-symlink
+Supports the @code{-L} (@code{--check-symlink-times}) flag.
+@xref{Options Summary, ,Summary of Options}.
+
+@item else-if
+Supports ``else if'' non-nested conditionals.  @xref{Conditional
+Syntax, ,Syntax of Conditionals}.
+
+@item jobserver
+Supports ``job server'' enhanced parallel builds.  @xref{Parallel,
+,Parallel Execution}.
+
+@item second-expansion
+Supports secondary expansion of prerequisite lists.
+
+@item order-only
+Supports order-only prerequisites.  @xref{Prerequisite Types, ,Types
+of Prerequisites}.
+
 @item target-specific
 Supports target-specific and pattern-specific variable assignments.
 @xref{Target-specific, ,Target-specific Variable Values}.
 
-@item order-only
-Supports order-only prerequisites.  @xref{Prerequisite Types, ,Types
-of Prerequisites}.
-
-@item second-expansion
-Supports secondary expansion of prerequisite lists.
-
-@item jobserver
-Supports ``job server'' enhanced parallel builds.  @xref{Parallel,
-,Parallel Execution}.
-
-@item check-symlink
-Supports the @code{-L} (@code{--check-symlink-times}) flag.
-@xref{Options Summary, ,Summary of Options}.
-
 @end table
+
+@vindex .INCLUDE_DIRS @r{(list of include directories)}
+@item .INCLUDE_DIRS
+Expands to a list of directories that @code{make} searches for
+included makefiles (@pxref{Include, , Including Other Makefiles}).
 
 @end table
@@ -1600,20 +1608,29 @@
 @cindex expansion, secondary
 
+@findex .SECONDEXPANSION
 In the previous section we learned that GNU @code{make} works in two
 distinct phases: a read-in phase and a target-update phase
-(@pxref{Reading Makefiles, , How @code{make} Reads a Makefile}).
-There is an extra wrinkle that comes in between those two phases,
-right at the end of the read-in phase: at that time, all the
-prerequisites of all of the targets are expanded a @emph{second time}.
-In most circumstances this secondary expansion will have no effect,
-since all variable and function references will have been expanded
-during the initial parsing of the makefiles.  In order to take
-advantage of the secondary expansion phase of the parser, then, it's
-necessary to @emph{escape} the variable or function reference in the
-makefile.  In this case the first expansion merely un-escapes the
-reference but doesn't expand it, and expansion is left to the
-secondary expansion phase.  For example, consider this makefile:
-
-@example
+(@pxref{Reading Makefiles, , How @code{make} Reads a Makefile}).  GNU
+make also has the ability to enable a @emph{second expansion} of the
+prerequisites (only) for some or all targets defined in the makefile.
+In order for this second expansion to occur, the special target
+@code{.SECONDEXPANSION} must be defined before the first prerequisite
+list that makes use of this feature.
+
+If that special target is defined then in between the two phases
+mentioned above, right at the end of the read-in phase, all the
+prerequisites of the targets defined after the special target are
+expanded a @emph{second time}.  In most circumstances this secondary
+expansion will have no effect, since all variable and function
+references will have been expanded during the initial parsing of the
+makefiles.  In order to take advantage of the secondary expansion
+phase of the parser, then, it's necessary to @emph{escape} the
+variable or function reference in the makefile.  In this case the
+first expansion merely un-escapes the reference but doesn't expand it,
+and expansion is left to the secondary expansion phase.  For example,
+consider this makefile:
+
+@example
+.SECONDEXPANSION:
 ONEVAR = onefile
 TWOVAR = twofile
@@ -1639,4 +1656,5 @@
 
 @example
+.SECONDEXPANSION:
 AVAR = top
 onefile: $(AVAR)
@@ -1658,8 +1676,9 @@
 defer the expansion by escaping the @code{$}.  Also, secondary
 expansion occurs for both explicit and implicit (pattern) rules.
-Knowing this, the possible uses for this feature are almost endless.
-For example:
-
-@example
+Knowing this, the possible uses for this feature increase
+dramatically.  For example:
+
+@example
+.SECONDEXPANSION:
 main_OBJS := main.o try.o test.o
 lib_OBJS := lib.o api.o
@@ -1682,4 +1701,5 @@
 lib_SRCS := lib.c api.c
 
+.SECONDEXPANSION:
 main lib: $$(patsubst %.c,%.o,$$($$@@_SRCS))
 @end example
@@ -1708,7 +1728,9 @@
 of all prerequisites of rules @emph{that have already appeared} for
 the same target (@code{$$+} with repetitions and @code{$$^}
-without). The following example will help illustrate these behaviors:
-
-@example
+without).  The following example will help illustrate these behaviors:
+
+@example
+.SECONDEXPANSION:
+
 foo: foo.1 bar.1 $$< $$^ $$+    # line #1
 
@@ -1718,10 +1740,10 @@
 @end example
 
-For the first line, all three variables (@code{$$<}, @code{$$^}, and
-@code{$$+}) expand to the empty string. For the second line, they will
-have values @code{foo.1}, @code{foo.1 bar.1}, and @code{foo.1 bar.1}
-respectively. For 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.
+In the first prerequisite list, all three variables (@code{$$<},
+@code{$$^}, and @code{$$+}) expand to the empty string.  In the
+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.
 
 Rules undergo secondary expansion in makefile order, except that
@@ -1751,4 +1773,6 @@
 
 @example
+.SECONDEXPANSION:
+
 foo: bar
 
@@ -1769,4 +1793,6 @@
 
 @example
+.SECONDEXPANSION:
+
 /tmp/foo.o:
 
@@ -1816,6 +1842,6 @@
 * Phony Targets::               Using a target that is not a real file's name.
 * Force Targets::               You can use a target without commands
-                                  or prerequisites to mark other
-                                  targets as phony.
+                                  or prerequisites to mark other targets
+                                  as phony.
 * Empty Targets::               When only the date matters and the
                                   files are empty.
@@ -1901,17 +1927,21 @@
 appear on the line after the prerequisites, with a tab character, or may
 appear on the same line, with a semicolon.  Either way, the effect is the
-same.  @xref{Commands, ,Writing the Commands in Rules}.
+same.  There are other differences in the syntax of command lines.
+@xref{Commands, ,Writing the Commands in Rules}.
 
 @cindex dollar sign (@code{$}), in rules
 @cindex @code{$}, in rules
-@cindex rule, and @code{$}
-Because dollar signs are used to start variable references, if you really
-want a dollar sign in a rule you must write two of them, @samp{$$}
-(@pxref{Using Variables, ,How to Use Variables}).  In prerequisite
-lists you must actually write @emph{four} dollar signs (@samp{$$$$}),
-due to secondary expansion (@pxref{Secondary Expansion}).
-You may split a long line by inserting a backslash
-followed by a newline, but this is not required, as @code{make} places no
-limit on the length of a line in a makefile.
+@cindex rules, and @code{$}
+Because dollar signs are used to start @code{make} variable
+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}
+dollar signs (@samp{$$$$}).
+
+You may split a long line by inserting a backslash followed by a
+newline, but this is not required, as @code{make} places no limit on
+the length of a line in a makefile.
 
 A rule tells @code{make} two things: when the targets are out of date,
@@ -2004,8 +2034,8 @@
 @var{HOME}.@refill
 
-Wildcard expansion happens automatically in targets, in prerequisites,
-and in commands (where the shell does the expansion).  In other
-contexts, wildcard expansion happens only if you request it explicitly
-with the @code{wildcard} function.
+Wildcard expansion is performed by @code{make} automatically in
+targets and in prerequisites.  In commands the shell is responsible
+for wildcard expansion.  In other contexts, wildcard expansion happens
+only if you request it explicitly with the @code{wildcard} function.
 
 The special significance of a wildcard character can be turned off by
@@ -2553,5 +2583,5 @@
 word in the list will be used.
 
-The default value for @code{.LIBPATTERNS} is ``@samp{lib%.so lib%.a}'',
+The default value for @code{.LIBPATTERNS} is @samp{lib%.so lib%.a},
 which provides the default behavior described above.
 
@@ -2644,6 +2674,6 @@
 it will do so even if @code{make} is invoked with the @code{-k} option,
 which is unfortunate.  Second, and perhaps more importantly, you cannot
-take advantage of the parallel build capabilities of make using this
-method, since there is only one rule.
+take advantage of @code{make}'s ability to build targets in parallel
+(@pxref{Parallel, ,Parallel Execution}), since there is only one rule.
 
 By declaring the subdirectories as phony targets (you must do this as
@@ -2867,4 +2897,16 @@
 as secondary (i.e., no target is removed because it is considered
 intermediate).
+
+@findex .SECONDEXPANSION
+@item .SECONDEXPANSION
+
+If @code{.SECONDEXPANSION} is mentioned as a target anywhere in the
+makefile, then all prerequisite lists defined @emph{after} it appears
+will be expanded a second time after all makefiles have been read in.
+@xref{Secondary Expansion, ,Secondary Expansion}.
+
+The prerequisites of the special target @code{.SUFFIXES} are the list
+of suffixes to be used in checking for suffix rules.
+@xref{Suffix Rules, , Old-Fashioned Suffix Rules}.
 
 @findex .DELETE_ON_ERROR
@@ -3376,5 +3418,5 @@
 @group
 %.d: %.c
-        @set -e; rm -f $@@; \
+        @@set -e; rm -f $@@; \
          $(CC) -M $(CPPFLAGS) $< > $@@.$$$$; \
          sed 's,\($*\)\.o[ :]*,\1.o $@@ : ,g' < $@@.$$$$ > $@@; \
@@ -3449,11 +3491,8 @@
 @cindex writing rule commands
 
-The commands of a rule consist of shell command lines to be executed one
-by one.  Each command line must start with a tab, except that the first
-command line may be attached to the target-and-prerequisites line with a
-semicolon in between.  Blank lines and lines of just comments may appear
-among the command lines; they are ignored.  (But beware, an apparently
-``blank'' line that begins with a tab is @emph{not} blank!  It is an
-empty command; @pxref{Empty Commands}.)
+The commands of a rule consist of one or more shell command lines to
+be executed, one at a time, in the order they appear.  Typically, the
+result of executing these commands is that the target of the rule is
+brought up to date.
 
 Users use many different shell programs, but commands in makefiles are
@@ -3461,14 +3500,6 @@
 otherwise.  @xref{Execution, ,Command Execution}.
 
-@cindex comments, in commands
-@cindex commands, comments in
-@cindex @code{#} (comments), in commands
-The shell that is in use determines whether comments can be written on
-command lines, and what syntax they use.  When the shell is
-@file{/bin/sh}, a @samp{#} starts a comment that extends to the end of
-the line.  The @samp{#} does not have to be at the beginning of a line.
-Text on a line before a @samp{#} is not part of the comment.
-
 @menu
+* Command Syntax::              Command syntax features and pitfalls.
 * Echoing::                     How to control when commands are echoed.
 * Execution::                   How commands are executed.
@@ -3481,5 +3512,238 @@
 @end menu
 
-@node Echoing, Execution, Commands, Commands
+@node Command Syntax, Echoing, Commands, Commands
+@section Command Syntax
+@cindex command syntax
+@cindex syntax of commands
+
+Makefiles have the unusual property that there are really two distinct
+syntaxes in one file.  Most of the makefile uses @code{make} syntax
+(@pxref{Makefiles, ,Writing Makefiles}).  However, commands are meant to be
+interpreted by the shell and so they are written using shell syntax.
+The @code{make} program does not try to understand shell syntax: it
+performs only a very few specific translations on the content of the
+command before handing it to the shell.
+
+Each command line must start with a tab, except that the first command
+line may be attached to the target-and-prerequisites line with a
+semicolon in between.  @emph{Any} line in the makefile that begins
+with a tab and appears in a ``rule context'' (that is, after a rule
+has been started until another rule or variable definition) will be
+considered a command line for that rule.  Blank lines and lines of
+just comments may appear among the command lines; they are ignored.
+
+Some consequences of these rules include:
+
+@itemize @bullet
+@item
+A blank line that begins with a tab is not blank: it's an empty
+command (@pxref{Empty Commands}).
+
+@cindex comments, in commands
+@cindex commands, comments in
+@cindex @code{#} (comments), in commands
+@item
+A comment in a command line is not a @code{make} comment; it will be
+passed to the shell as-is.  Whether the shell treats it as a comment
+or not depends on your shell.
+
+@item
+A variable definition in a ``rule context'' which is indented by a tab
+as the first character on the line, will be considered a command line,
+not a @code{make} variable definition, and passed to the shell.
+
+@item
+A conditional expression (@code{ifdef}, @code{ifeq},
+etc. @pxref{Conditional Syntax, ,Syntax of Conditionals}) in a ``rule
+context'' which is indented by a tab as the first character on the
+line, will be considered a command line and be passed to the shell.
+
+@end itemize
+
+@menu
+* Splitting Lines::             Breaking long command lines for readability.
+* Variables in Commands::       Using @code{make} variables in commands.
+@end menu
+
+@node Splitting Lines, Variables in Commands, Command Syntax, Command Syntax
+@subsection Splitting Command Lines
+@cindex commands, splitting
+@cindex splitting commands
+@cindex commands, backslash (@code{\}) in
+@cindex commands, quoting newlines in
+@cindex backslash (@code{\}), in commands
+@cindex @code{\} (backslash), in commands
+@cindex quoting newline, in commands
+@cindex newline, quoting, in commands
+
+One of the few ways in which @code{make} does interpret command lines
+is checking for a backslash just before the newline.  As in normal
+makefile syntax, a single command can be split into multiple lines in
+the makefile by placing a backslash before each newline.  A sequence
+of lines like this is considered a single command, and one instance of
+the shell will be invoked to run it.
+
+However, in contrast to how they are treated in other places in a
+makefile, backslash-newline pairs are @emph{not} removed from the
+command.  Both the backslash and the newline characters are preserved
+and passed to the shell.  How the backslash-newline is interpreted
+depends on your shell.  If the first character of the next line
+after the backslash-newline is a tab, then that tab (and only that
+tab) is removed.  Whitespace is never added to the command.
+
+For example, this makefile:
+
+@example
+@group
+all :
+        @@echo no\
+space
+        @@echo no\
+        space
+        @@echo one \
+        space
+        @@echo one\
+         space
+@end group
+@end example
+
+@noindent
+consists of four separate shell commands where the output is:
+
+@example
+@group
+nospace
+nospace
+one space
+one space
+@end group
+@end example
+
+As a more complex example, this makefile:
+
+@example
+@group
+all : ; @@echo 'hello \
+        world' ; echo "hello \
+    world"
+@end group
+@end example
+
+@noindent
+will run one shell with a command script of:
+
+@example
+@group
+echo 'hello \
+world' ; echo "hello \
+    world"
+@end group
+@end example
+
+@noindent
+which, according to shell quoting rules, will yield the following output:
+
+@example
+@group
+hello \
+world
+hello     world
+@end group
+@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.
+
+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.
+This is often the case when passing scripts to languages such as Perl,
+where extraneous backslashes inside the script can change its meaning
+or even be a syntax error.  One simple way of handling this is to
+place the quoted string, or even the entire command, into a
+@code{make} variable then use the variable in the command.  In this
+situation the newline quoting rules for makefiles will be used, and
+the backslash-newline will be removed.  If we rewrite our example
+above using this method:
+
+@example
+@group
+HELLO = 'hello \
+world'
+
+all : ; @@echo $(HELLO)
+@end group
+@end example
+
+@noindent
+we will get output like this:
+
+@example
+@group
+hello world
+@end group
+@end example
+
+If you like, you can also use target-specific variables
+(@pxref{Target-specific, ,Target-specific Variable Values}) to obtain
+a tighter correspondence between the variable and the command that
+uses it.
+
+@node Variables in Commands,  , Splitting Lines, Command Syntax
+@subsection Using Variables in Commands
+@cindex variable references in commands
+@cindex commands, using variables in
+
+The other way in which @code{make} processes commands is by expanding
+any variable references in them (@pxref{Reference,Basics of Variable
+References}).  This occurs after make has finished reading all the
+makefiles and the target is determined to be out of date; so, the
+commands for targets which are not rebuilt are never expanded.
+
+Variable and function references in commands have identical syntax and
+semantics to references elsewhere in the makefile.  They also have the
+same quoting rules: if you want a dollar sign to appear in your
+command, you must double it (@samp{$$}).  For shells like the default
+shell, that use dollar signs to introduce variables, it's important to
+keep clear in your mind whether the variable you want to reference is
+a @code{make} variable (use a single dollar sign) or a shell variable
+(use two dollar signs).  For example:
+
+@example
+@group
+LIST = one two three
+all:
+        for i in $(LIST); do \
+            echo $$i; \
+        done
+@end group
+@end example
+
+@noindent
+results in the following command being passed to the shell:
+
+@example
+@group
+for i in one two three; do \
+    echo $i; \
+done
+@end group
+@end example
+
+@noindent
+which generates the expected result:
+
+@example
+@group
+one
+two
+three
+@end group
+@end example
+
+@node Echoing, Execution, Command Syntax, Commands
 @section Command Echoing
 @cindex echoing of commands
@@ -3530,49 +3794,83 @@
 @cindex execution, of commands
 @cindex shell command, execution
-@vindex SHELL @r{(command execution)}
-
-When it is time to execute commands to update a target, they are executed
-by making a new subshell for each line.  (In practice, @code{make} may
-take shortcuts that do not affect the results.)
+@vindex @code{SHELL} @r{(command execution)}
+
+When it is time to execute commands to update a target, they are
+executed by invoking a new subshell for each command line.  (In
+practice, @code{make} may take shortcuts that do not affect the
+results.)
 
 @cindex @code{cd} (shell command)
-@strong{Please note:} this implies that shell commands such as @code{cd}
-that set variables local to each process will not affect the following
-command lines. @footnote{On MS-DOS, the value of current working
-directory is @strong{global}, so changing it @emph{will} affect the
-following command lines on those systems.}  If you want to use @code{cd}
-to affect the next command, put the two on a single line with a
-semicolon between them.  Then @code{make} will consider them a single
-command and pass them, together, to a shell which will execute them in
-sequence.  For example:
+@cindex shell variables, setting in commands
+@cindex commands setting shell variables
+@strong{Please note:} this implies that setting shell variables and
+invoking shell commands such as @code{cd} that set a context local to
+each process will not affect the following command lines.@footnote{On
+MS-DOS, the value of current working directory is @strong{global}, so
+changing it @emph{will} affect the following command lines on those
+systems.}  If you want to use @code{cd} to affect the next statement,
+put both statements in a single command line.  Then @code{make} will
+invoke one shell to run the entire line, and the shell will execute
+the statements in sequence.  For example:
 
 @example
 foo : bar/lose
-        cd bar; gobble lose > ../foo
-@end example
-
-@cindex commands, backslash (@code{\}) in
-@cindex commands, quoting newlines in
-@cindex backslash (@code{\}), in commands
-@cindex @code{\} (backslash), in commands
-@cindex quoting newline, in commands
-@cindex newline, quoting, in commands
-If you would like to split a single shell command into multiple lines of
-text, you must use a backslash at the end of all but the last subline.
-Such a sequence of lines is combined into a single line, by deleting the
-backslash-newline sequences, before passing it to the shell.  Thus, the
-following is equivalent to the preceding example:
-
-@example
-@group
-foo : bar/lose
-        cd bar;  \
-        gobble lose > ../foo
-@end group
-@end example
+        cd $(@@D) && gobble $(@@F) > ../$@@
+@end example
+
+@noindent
+Here we use the shell AND operator (@code{&&}) so that if the
+@code{cd} command fails, the script will fail without trying to invoke
+the @code{gobble} command in the wrong directory, which could cause
+problems (in this case it would certainly cause @file{../foo} to be
+truncated, at least).
+
+@menu
+* Choosing the Shell::          How @code{make} chooses the shell used
+                                  to run commands.
+@end menu
+
+@node Choosing the Shell,  , Execution, Execution
+@subsection Choosing the Shell
+@cindex shell, choosing the
+@cindex @code{SHELL}, value of
 
 @vindex SHELL
 The program used as the shell is taken from the variable @code{SHELL}.
-By default, the program @file{/bin/sh} is used.
+If this variable is not set in your makefile, the program
+@file{/bin/sh} is used as the shell.
+
+@cindex environment, @code{SHELL} in
+Unlike most variables, the variable @code{SHELL} is never set from the
+environment.  This is because the @code{SHELL} environment variable is
+used to specify your personal choice of shell program for interactive
+use.  It would be very bad for personal choices like this to affect the
+functioning of makefiles.  @xref{Environment, ,Variables from the
+Environment}.
+
+Furthermore, when you do set @code{SHELL} in your makefile that value
+is @emph{not} exported in the environment to commands that @code{make}
+invokes.  Instead, the value inherited from the user's environment, if
+any, is exported.  You can override this behavior by explicitly
+exporting @code{SHELL} (@pxref{Variables/Recursion, ,Communicating
+Variables to a Sub-@code{make}}), forcing it to be passed in the
+environment to commands.
+
+@vindex @code{MAKESHELL} @r{(MS-DOS alternative to @code{SHELL})}
+However, on MS-DOS and MS-Windows the value of @code{SHELL} in the
+environment @strong{is} used, since on those systems most users do not
+set this variable, and therefore it is most likely set specifically to
+be used by @code{make}.  On MS-DOS, if the setting of @code{SHELL} is
+not suitable for @code{make}, you can set the variable
+@code{MAKESHELL} to the shell that @code{make} should use; if set it
+will be used as the shell instead of the value of @code{SHELL}.
+
+@subsubheading Choosing a Shell in DOS and Windows
+@cindex shell, in DOS and Windows
+@cindex DOS, choosing a shell in
+@cindex Windows, choosing a shell in
+
+Choosing a shell in MS-DOS and MS-Windows is much more complex than on
+other systems.
 
 @vindex COMSPEC
@@ -3628,22 +3926,7 @@
 
 The effect of the above DOS-specific processing is that a Makefile that
-says @samp{SHELL = /bin/sh} (as many Unix makefiles do), will work
-on MS-DOS unaltered if you have e.g. @file{sh.exe} installed in some
+contains @samp{SHELL = /bin/sh} (as many Unix makefiles do), will work
+on MS-DOS unaltered if you have e.g.@: @file{sh.exe} installed in some
 directory along your @code{PATH}.
-
-@cindex environment, @code{SHELL} in
-@vindex MAKESHELL @r{(MS-DOS alternative to @code{SHELL})}
-Unlike most variables, the variable @code{SHELL} is never set from the
-environment.  This is because the @code{SHELL} environment variable is
-used to specify your personal choice of shell program for interactive
-use.  It would be very bad for personal choices like this to affect the
-functioning of makefiles.  @xref{Environment, ,Variables from the
-Environment}.  However, on MS-DOS and MS-Windows the value of
-@code{SHELL} in the environment @strong{is} used, since on those systems
-most users do not set this variable, and therefore it is most likely set
-specifically to be used by @code{make}.  On MS-DOS, if the setting of
-@code{SHELL} is not suitable for @code{make}, you can set the variable
-@code{MAKESHELL} to the shell that @code{make} should use; this will
-override the value of @code{SHELL}.
 
 @node Parallel, Errors, Execution, Commands
@@ -4015,5 +4298,5 @@
 environment is passed to the sub-@code{make}.  You can force
 @code{make} to export its value for @code{SHELL} by using the
-@code{export} directive, described below.
+@code{export} directive, described below.  @xref{Choosing the Shell}.
 
 The special variable @code{MAKEFLAGS} is always exported (unless you
@@ -4712,5 +4995,4 @@
 @group
 ifeq (0,$@{MAKELEVEL@})
-cur-dir   := $(shell pwd)
 whoami    := $(shell whoami)
 host-type := $(shell arch)
@@ -4727,5 +5009,5 @@
 @group
 $@{subdirs@}:
-      $@{MAKE@} cur-dir=$@{cur-dir@}/$@@ -C $@@ all
+        $@{MAKE@} -C $@@ all
 @end group
 @end example
@@ -5197,5 +5479,5 @@
 simply-expanded definition, and expands the new text before appending it
 to the old value just as @samp{:=} does
-(@pxref{Setting, ,Setting Variables}, for a full explanation of @samp{:=}).
+(see @ref{Setting, ,Setting Variables}, for a full explanation of @samp{:=}).
 In fact,
 
@@ -5438,5 +5720,5 @@
 When @code{make} runs a command script, variables defined in the
 makefile are placed into the environment of that command.  This allows
-you to pass values to sub-@code{make} invocations. (@pxref{Recursion,
+you to pass values to sub-@code{make} invocations (@pxref{Recursion,
 ,Recursive Use of @code{make}}).  By default, only variables that came
 from the environment or the command line are passed to recursive
@@ -5452,20 +5734,10 @@
 
 @cindex SHELL, import from environment
-Such problems would be especially likely with the variable @code{SHELL},
-which is normally present in the environment to specify the user's choice
-of interactive shell.  It would be very undesirable for this choice to
-affect @code{make}.  So @code{make} ignores the environment value of
-@code{SHELL} (except on MS-DOS and MS-Windows, where @code{SHELL} is
-usually not set.  @xref{Execution, ,Special handling of SHELL on
-MS-DOS}.)@refill
-
-@cindex SHELL, export to environment
-The @code{SHELL} variable is special in another way: just as the value
-of the @code{make} variable @code{SHELL} is not taken from the
-environment, so also it is not placed into the environment of commands
-that @code{make} invokes.  Instead, the value of @code{SHELL} from the
-invoking environment is provided to the command.  You can use
-@code{export SHELL} to force the value of the @code{make} variable
-@code{SHELL} to be placed in the environment of commands.
+Such problems would be especially likely with the variable
+@code{SHELL}, which is normally present in the environment to specify
+the user's choice of interactive shell.  It would be very undesirable
+for this choice to affect @code{make}; so, @code{make} handles the
+@code{SHELL} environment variable in a special way; see @ref{Choosing
+the Shell}.@refill
 
 @node Target-specific, Pattern-specific, Environment, Using Variables
@@ -5515,5 +5787,5 @@
 will be in effect.  Note that this variable is actually distinct from
 any ``global'' value: the two variables do not have to have the same
-flavor (recursive vs. static).
+flavor (recursive vs.@: static).
 
 Target-specific variables have the same priority as any other makefile
@@ -5526,5 +5798,5 @@
 you define a target-specific variable that variable value is also in
 effect for all prerequisites of this target, and all their
-prerequisites, etc. (unless those prerequisites override that variable
+prerequisites, etc.@: (unless those prerequisites override that variable
 with their own target-specific variable value).  So, for example, a
 statement like this:
@@ -5925,10 +6197,11 @@
 * Text Functions::              General-purpose text manipulation functions.
 * File Name Functions::         Functions for manipulating file names.
+* Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
-* If Function::                 Conditionally expand a value.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
+* Flavor Function::             Find out the flavor of a variable.
 * Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
@@ -6345,5 +6618,5 @@
 Directive, , The @code{override} Directive}).
 
-@node File Name Functions, Foreach Function, Text Functions, Functions
+@node File Name Functions, Conditional Functions, Text Functions, Functions
 @section Functions for File Names
 @cindex functions, for file names
@@ -6505,6 +6778,6 @@
 For each file name in @var{names} return the canonical absolute name.
 A canonical name does not contain any @code{.} or @code{..} components,
-nor any repeated path separators (@code{/}) or symlinks. In case of a
-failure the empty string is returned. Consult the @code{realpath(3)}
+nor any repeated path separators (@code{/}) or symlinks.  In case of a
+failure the empty string is returned.  Consult the @code{realpath(3)}
 documentation for a list of possible failure causes.
 
@@ -6515,11 +6788,64 @@
 For each file name in @var{names} return an absolute name that does
 not contain any @code{.} or @code{..} components, nor any repeated path
-separators (@code{/}). Note that in contrast to @code{realpath}
+separators (@code{/}).  Note that, in contrast to @code{realpath}
 function, @code{abspath} does not resolve symlinks and does not require
-the file names to refer to an existing file or directory. Use the
+the file names to refer to an existing file or directory.  Use the
 @code{wildcard} function to test for existence.
 @end table
 
-@node Foreach Function, If Function, File Name Functions, Functions
+@node Conditional Functions, Foreach Function, File Name Functions, Functions
+@section Functions for Conditionals
+@findex if
+@cindex conditional expansion
+There are three functions that provide conditional expansion.  A key
+aspect of these functions is that not all of the arguments are
+expanded initially.  Only those arguments which need to be expanded,
+will be expanded.
+
+@table @code
+@item $(if @var{condition},@var{then-part}[,@var{else-part}])
+@findex if
+The @code{if} function provides support for conditional expansion in a
+functional context (as opposed to the GNU @code{make} makefile
+conditionals such as @code{ifeq} (@pxref{Conditional Syntax, ,Syntax of
+Conditionals}).
+
+The first argument, @var{condition}, first has all preceding and
+trailing whitespace stripped, then is expanded.  If it expands to any
+non-empty string, then the condition is considered to be true.  If it
+expands to an empty string, the condition is considered to be false.
+
+If the condition is true then the second argument, @var{then-part}, is
+evaluated and this is used as the result of the evaluation of the entire
+@code{if} function.
+
+If the condition is false then the third argument, @var{else-part}, is
+evaluated and this is the result of the @code{if} function.  If there is
+no third argument, the @code{if} function evaluates to nothing (the
+empty string).
+
+Note that only one of the @var{then-part} or the @var{else-part} will be
+evaluated, never both.  Thus, either can contain side-effects (such as
+@code{shell} function calls, etc.)
+
+@item $(or @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]])
+@findex or
+The @code{or} function provides a ``short-circuiting'' OR operation.
+Each argument is expanded, in order.  If an argument expands to a
+non-empty string the processing stops and the result of the expansion
+is that string.  If, after all arguments are expanded, all of them are
+false (empty), then the result of the expansion is the empty string.
+
+@item $(and @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]])
+@findex and
+The @code{and} function provides a ``short-circuiting'' AND operation.
+Each argument is expanded, in order.  If an argument expands to an
+empty string the processing stops and the result of the expansion is
+the empty string.  If all arguments expand to a non-empty string then
+the result of the expansion is the expansion of the last argument.
+
+@end table
+
+@node Foreach Function, Call Function, Conditional Functions, Functions
 @section The @code{foreach} Function
 @findex foreach
@@ -6609,39 +6935,5 @@
 no?), but it is more likely to be a mistake.
 
-@node If Function, Call Function, Foreach Function, Functions
-@section The @code{if} Function
-@findex if
-@cindex conditional expansion
-
-The @code{if} function provides support for conditional expansion in a
-functional context (as opposed to the GNU @code{make} makefile
-conditionals such as @code{ifeq} (@pxref{Conditional Syntax, ,Syntax of
-Conditionals}).
-
-An @code{if} function call can contain either two or three arguments:
-
-@example
-$(if @var{condition},@var{then-part}[,@var{else-part}])
-@end example
-
-The first argument, @var{condition}, first has all preceding and
-trailing whitespace stripped, then is expanded.  If it expands to any
-non-empty string, then the condition is considered to be true.  If it
-expands to an empty string, the condition is considered to be false.
-
-If the condition is true then the second argument, @var{then-part}, is
-evaluated and this is used as the result of the evaluation of the entire
-@code{if} function.
-
-If the condition is false then the third argument, @var{else-part}, is
-evaluated and this is the result of the @code{if} function.  If there is
-no third argument, the @code{if} function evaluates to nothing (the
-empty string).
-
-Note that only one of the @var{then-part} or the @var{else-part} will be
-evaluated, never both.  Thus, either can contain side-effects (such as
-@code{shell} function calls, etc.)
-
-@node Call Function, Value Function, If Function, Functions
+@node Call Function, Value Function, Foreach Function, Functions
 @section The @code{call} Function
 @findex call
@@ -6713,5 +7005,5 @@
 
 The @code{call} function can be nested.  Each recursive invocation gets
-its own local values for @code{$(1)}, etc. that mask the values of
+its own local values for @code{$(1)}, etc.@: that mask the values of
 higher-level @code{call}.  For example, here is an implementation of a
 @dfn{map} function:
@@ -6850,5 +7142,5 @@
 @end example
 
-@node Origin Function, Shell Function, Eval Function, Functions
+@node Origin Function, Flavor Function, Eval Function, Functions
 @section The @code{origin} Function
 @findex origin
@@ -6959,5 +7251,47 @@
 @xref{Text Functions, , Functions for String Substitution and Analysis}.
 
-@node Shell Function, Make Control Functions, Origin Function, Functions
+@node Flavor Function, Shell Function, Origin Function, Functions
+@section The @code{flavor} Function
+@findex flavor
+@cindex variables, flavor of
+@cindex flavor of variable
+
+The @code{flavor} function is unlike most other functions (and like
+@code{origin} function) in that it does not operate on the values of
+variables; it tells you something @emph{about} a variable.
+Specifically, it tells you the flavor of a variable (@pxref{Flavors,
+,The Two Flavors of Variables}).
+
+The syntax of the @code{flavor} function is:
+
+@example
+$(flavor @var{variable})
+@end example
+
+Note that @var{variable} is the @emph{name} of a variable to inquire about;
+not a @emph{reference} to that variable.  Therefore you would not normally
+use a @samp{$} or parentheses when writing it.  (You can, however, use a
+variable reference in the name if you want the name not to be a constant.)
+
+The result of this function is a string that identifies the flavor of the
+variable @var{variable}:
+
+@table @samp
+@item undefined
+
+if @var{variable} was never defined.
+
+@item recursive
+
+if @var{variable} is a recursively expanded variable.
+
+@item simple
+
+if @var{variable} is a simply expanded variable.
+
+@end table
+
+
+@node Shell Function, Make Control Functions, Flavor Function, Functions
 @section The @code{shell} Function
 @findex shell
@@ -6984,5 +7318,5 @@
 spawning a new shell, you should carefully consider the performance
 implications of using the @code{shell} function within recursively
-expanded variables vs. simply expanded variables (@pxref{Flavors, ,The
+expanded variables vs.@: simply expanded variables (@pxref{Flavors, ,The
 Two Flavors of Variables}).
 
@@ -7084,4 +7418,5 @@
 things and many others.
 
+@cindex exit status of make
 The exit status of @code{make} is always one of three values:
 @table @code
@@ -7550,6 +7885,10 @@
 Consider all targets out-of-date.  GNU @code{make} proceeds to
 consider targets and their prerequisites using the normal algorithms;
-however, all these targets are remade, regardless of the status of
-their prerequisites.
+however, all targets so considered are always remade regardless of the
+status of their prerequisites.  To avoid infinite recursion, if
+@code{MAKE_RESTARTS} (@pxref{Special Variables, , Other Special
+Variables}) is set to a number greater than 0 this option is disabled
+when considering whether to remake makefiles (@pxref{Remaking
+Makefiles, , How Makefiles Are Remade}).
 
 @item -C @var{dir}
@@ -7907,5 +8246,5 @@
 * Pattern Rules::               How to define new implicit rules.
 * Last Resort::                 How to define commands for rules which
-                                cannot find any.
+                                  cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -8002,4 +8341,10 @@
 @samp{--no-builtin-rules} option cancels all predefined rules.
 
+This manual only documents the default rules available on POSIX-based
+operating systems.  Other operating systems, such as VMS, Windows,
+OS/2, etc. may have different sets of default rules.  To see the full
+list of default rules and variables available in your version of GNU
+@code{make}, run @samp{make -p} in a directory with no makefile.
+
 Not all of these rules will always be defined, even when the @samp{-r}
 option is not given.  Many of the predefined implicit rules are
@@ -8008,5 +8353,5 @@
 the special target @code{.SUFFIXES}).  The default suffix list is:
 @code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc},
-@code{.C}, @code{.p}, @code{.f}, @code{.F}, @code{.r}, @code{.y},
+@code{.C}, @code{.cpp}, @code{.p}, @code{.f}, @code{.F}, @code{.r}, @code{.y},
 @code{.l}, @code{.s}, @code{.S}, @code{.mod}, @code{.sym}, @code{.def},
 @code{.h}, @code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo},
@@ -8033,10 +8378,11 @@
 @cindex C++, rule to compile
 @pindex g++
+@pindex .cc
+@pindex .cpp
 @pindex .C
-@pindex .cc
-@file{@var{n}.o} is made automatically from @file{@var{n}.cc} or
-@file{@var{n}.C} with a command of the form @samp{$(CXX) -c $(CPPFLAGS)
-$(CXXFLAGS)}.  We encourage you to use the suffix @samp{.cc} for C++
-source files instead of @samp{.C}.@refill
+@file{@var{n}.o} is made automatically from @file{@var{n}.cc},
+@file{@var{n}.cpp}, or @file{@var{n}.C} with a command of the form
+@samp{$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)}.  We encourage you to use the
+suffix @samp{.cc} for C++ source files instead of @samp{.C}.@refill
 
 @item Compiling Pascal programs
@@ -8299,9 +8645,9 @@
 
 The commands in built-in implicit rules make liberal use of certain
-predefined variables.  You can alter these variables in the makefile,
-with arguments to @code{make}, or in the environment to alter how the
-implicit rules work without redefining the rules themselves.  You can
-cancel all variables used by implicit rules with the @samp{-R} or
-@samp{--no-builtin-variables} option.
+predefined variables.  You can alter the values of these variables in
+the makefile, with arguments to @code{make}, or in the environment to
+alter how the implicit rules work without redefining the rules
+themselves.  You can cancel all variables used by implicit rules with
+the @samp{-R} or @samp{--no-builtin-variables} option.
 
 For example, the command used to compile a C source file actually says
@@ -8322,5 +8668,13 @@
 with spaces.
 
-Here is a table of variables used as names of programs in built-in rules:
+The following tables describe of some of the more commonly-used predefined
+variables.  This list is not exhaustive, and the default values shown here may
+not be what are selected by @code{make} for your environment.  To see the
+complete list of predefined variables for your instance of GNU @code{make} you
+can run @samp{make -p} in a directory with no makefiles.
+
+Here is a table of some of the more common variables used as names of
+programs in built-in rules:
+makefiles.
 
 @table @code
@@ -8332,5 +8686,5 @@
 @item AS
 @vindex AS
-Program for doing assembly; default @samp{as}.
+Program for compiling assembly files; default @samp{as}.
 @pindex as
 
@@ -8338,4 +8692,9 @@
 @vindex CC
 Program for compiling C programs; default @samp{cc}.
+@pindex cc
+
+@item CO
+@vindex CO
+Program for checking out files from RCS; default @samp{co}.
 @pindex cc
 
@@ -8368,7 +8727,21 @@
 @item LEX
 @vindex LEX
-Program to use to turn Lex grammars into C programs or Ratfor programs;
-default @samp{lex}.
+Program to use to turn Lex grammars into source code; default @samp{lex}.
 @pindex lex
+
+@item YACC
+@vindex YACC
+Program to use to turn Yacc grammars into source code; default @samp{yacc}.
+@pindex yacc
+
+@item LINT
+@vindex LINT
+Program to use to run lint on source code; default @samp{lint}.
+@pindex lint
+
+@item M2C
+@vindex M2C
+Program to use to compile Modula-2 source code; default @samp{m2c}.
+@pindex m2c
 
 @item PC
@@ -8376,14 +8749,4 @@
 Program for compiling Pascal programs; default @samp{pc}.
 @pindex pc
-
-@item YACC
-@vindex YACC
-Program to use to turn Yacc grammars into C programs; default @samp{yacc}.
-@pindex yacc
-
-@item YACCR
-@vindex YACCR
-Program to use to turn Yacc grammars into Ratfor
-programs; default @samp{yacc -r}.
 
 @item MAKEINFO
@@ -8472,6 +8835,6 @@
 @item LDFLAGS
 @vindex LDFLAGS
-Extra flags to give to compilers when they are
-supposed to invoke the linker, @samp{ld}.
+Extra flags to give to compilers when they are supposed to invoke the linker,
+@samp{ld}.
 
 @item LFLAGS
@@ -8479,4 +8842,8 @@
 Extra flags to give to Lex.
 
+@item YFLAGS
+@vindex YFLAGS
+Extra flags to give to Yacc.
+
 @item PFLAGS
 @vindex PFLAGS
@@ -8487,7 +8854,7 @@
 Extra flags to give to the Fortran compiler for Ratfor programs.
 
-@item YFLAGS
-@vindex YFLAGS
-Extra flags to give to Yacc.
+@item LINTFLAGS
+@vindex LINTFLAGS
+Extra flags to give to lint.
 @end table
 
@@ -8629,8 +8996,9 @@
 
 @samp{%} in a prerequisite of a pattern rule stands for the same stem
-that was matched by the @samp{%} in the target.  In order for
-the pattern rule to apply, its target pattern must match the file name
-under consideration, and its prerequisite patterns must name files that
-exist or can be made.  These files become prerequisites of the target.
+that was matched by the @samp{%} in the target.  In order for the
+pattern rule to apply, its target pattern must match the file name
+under consideration and all of its prerequisites (after pattern
+substitution) must name files that exist or can be made.  These files
+become prerequisites of the target.
 @cindex prerequisite pattern, implicit
 
@@ -8982,5 +9350,5 @@
 names, along with the slash that ends them, are added on to the
 prerequisite file names generated from the pattern rule's prerequisite
-patterns and the file name. The directories are ignored only for the
+patterns and the file name.  The directories are ignored only for the
 purpose of finding an implicit rule to use, not in the application of
 that rule.  Thus, @samp{e%t} matches the file name @file{src/eat},
@@ -9386,5 +9754,5 @@
 
 In fact, nearly all archive member targets are updated in just this way
-and there is an implicit rule to do it for you.  @strong{Note:} The
+and there is an implicit rule to do it for you.  @strong{Please note:} The
 @samp{c} flag to @code{ar} is required if the archive file does not
 already exist.
@@ -10124,4 +10492,10 @@
 @xref{Origin Function, , The @code{origin} Function}.
 
+@item $(flavor @var{variable})
+
+Return a string describing the flavor of the @code{make} variable
+@var{variable}.@*
+@xref{Flavor Function, , The @code{flavor} Function}.
+
 @item $(foreach @var{var},@var{words},@var{text})
 
@@ -10133,5 +10507,5 @@
 
 Evaluate the variable @var{var} replacing any references to @code{$(1)},
-@code{$(2)} with the first, second, etc. @var{param} values.@*
+@code{$(2)} with the first, second, etc.@: @var{param} values.@*
 @xref{Call Function, ,The @code{call} Function}.
 
@@ -10228,10 +10602,10 @@
 commands.  @xref{Execution, ,Command Execution}.  The @code{SHELL}
 variable is handled specially when importing from and exporting to the
-environment.  @xref{Environment, ,Using Variable from the Environment}.
+environment.  @xref{Choosing the Shell}.
 
 @item MAKESHELL
 
 On MS-DOS only, the name of the command interpreter that is to be used
-by @code{make}. This value takes precedence over the value of
+by @code{make}.  This value takes precedence over the value of
 @code{SHELL}.  @xref{Execution, ,MAKESHELL variable}.
 
@@ -10728,5 +11102,3 @@
 @printindex fn
 
-@summarycontents
-@contents
 @bye
Index: trunk/src/gmake/doc/stamp-vti
===================================================================
--- trunk/src/gmake/doc/stamp-vti	(revision 503)
+++ trunk/src/gmake/doc/stamp-vti	(revision 503)
@@ -0,0 +1,4 @@
+@set UPDATED 1 April 2006
+@set UPDATED-MONTH April 2006
+@set EDITION 3.81
+@set VERSION 3.81
Index: trunk/src/gmake/doc/version.texi
===================================================================
--- trunk/src/gmake/doc/version.texi	(revision 503)
+++ trunk/src/gmake/doc/version.texi	(revision 503)
@@ -0,0 +1,4 @@
+@set UPDATED 1 April 2006
+@set UPDATED-MONTH April 2006
+@set EDITION 3.81
+@set VERSION 3.81
Index: trunk/src/gmake/dosbuild.bat
===================================================================
--- trunk/src/gmake/dosbuild.bat	(revision 466)
+++ trunk/src/gmake/dosbuild.bat	(revision 503)
@@ -1,4 +1,22 @@
-@echo Building Make for MSDOS
-@rem Echo ON so they will see what is going on.
+@echo off
+rem Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
+rem Software Foundation, Inc.
+rem This file is part of GNU Make.
+
+rem GNU Make is free software; you can redistribute it and/or modify it under the
+rem terms of the GNU General Public License as published by the Free Software
+rem Foundation; either version 2, or (at your option) any later version.
+
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+rem WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+rem A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+rem You should have received a copy of the GNU General Public License along with
+rem GNU Make; see the file COPYING.  If not, write to the Free Software
+rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+echo Building Make for MSDOS
+
+rem Echo ON so they will see what is going on.
 @echo on
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g commands.c -o commands.o
@@ -17,4 +35,6 @@
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g function.c -o function.o
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g vpath.c -o vpath.o
+gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g hash.c -o hash.o
+gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g strcache.c -o strcache.o
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g version.c -o version.o
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g ar.c -o ar.o
@@ -33,5 +53,5 @@
 echo commands.o > respf.$$$
 for %%f in (job dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$
-for %%f in (expand function vpath version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$
+for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$
 echo glob/libglob.a >> respf.$$$
 @echo Linking...
Index: trunk/src/gmake/expand.c
===================================================================
--- trunk/src/gmake/expand.c	(revision 466)
+++ trunk/src/gmake/expand.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Variable expansion functions for GNU Make.
-Copyright (C) 1988, 89, 91, 92, 93, 95 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -27,4 +26,8 @@
 #include "variable.h"
 #include "rule.h"
+
+/* Initially, any errors reported when expanding strings will be reported
+   against the file where the error appears.  */
+const struct floc **expanding_var = &reading_file;
 
 /* The next two describe the variable output buffer.
@@ -98,12 +101,30 @@
 {
   char *value;
+  const struct floc *this_var;
+  const struct floc **saved_varp;
   struct variable_set_list *save = 0;
   int set_reading = 0;
 
+  /* Don't install a new location if this location is empty.
+     This can happen for command-line variables, builtin variables, etc.  */
+  saved_varp = expanding_var;
+  if (v->fileinfo.filenm)
+    {
+      this_var = &v->fileinfo;
+      expanding_var = &this_var;
+    }
+
+  /* If we have no other file-reading context, use the variable's context. */
+  if (!reading_file)
+    {
+      set_reading = 1;
+      reading_file = &v->fileinfo;
+    }
+
   if (v->expanding)
     {
       if (!v->exp_count)
         /* Expanding V causes infinite recursion.  Lose.  */
-        fatal (reading_file,
+        fatal (*expanding_var,
                _("Recursive variable `%s' references itself (eventually)"),
                v->name);
@@ -115,11 +136,4 @@
       save = current_variable_set_list;
       current_variable_set_list = file->variables;
-    }
-
-  /* If we have no other file-reading context, use the variable's context. */
-  if (!reading_file)
-    {
-      set_reading = 1;
-      reading_file = &v->fileinfo;
     }
 
@@ -133,6 +147,9 @@
   if (set_reading)
     reading_file = 0;
+
   if (file)
     current_variable_set_list = save;
+
+  expanding_var = saved_varp;
 
   return value;
@@ -208,5 +225,5 @@
       p1 = strchr (p, '$');
 
-      o = variable_buffer_output (o, p, p1 != 0 ? p1 - p : strlen (p) + 1);
+      o = variable_buffer_output (o, p, p1 != 0 ? (unsigned int)(p1 - p) : strlen (p) + 1);
 
       if (p1 == 0)
@@ -249,5 +266,5 @@
 	    if (end == 0)
               /* Unterminated variable reference.  */
-              fatal (reading_file, _("unterminated variable reference"));
+              fatal (*expanding_var, _("unterminated variable reference"));
 	    p1 = lindex (beg, end, '$');
 	    if (p1 != 0)
@@ -375,17 +392,5 @@
 	  /* A $ followed by a random char is a variable reference:
 	     $a is equivalent to $(a).  */
-	  {
-	    /* We could do the expanding here, but this way
-	       avoids code repetition at a small performance cost.  */
-	    char name[5];
-	    name[0] = '$';
-	    name[1] = '(';
-	    name[2] = *p;
-	    name[3] = ')';
-	    name[4] = '\0';
-	    p1 = allocated_variable_expand (name);
-	    o = variable_buffer_output (o, p1, strlen (p1));
-	    free (p1);
-	  }
+          o = reference_variable (o, p, 1);
 
 	  break;
@@ -503,5 +508,10 @@
     buf = variable_buffer_output (buf, " ", 1);
 
-  return variable_buffer_output (buf, v->value, strlen (v->value));
+  /* Either expand it or copy it, depending.  */
+  if (! v->recursive)
+    return variable_buffer_output (buf, v->value, strlen (v->value));
+
+  buf = variable_expand_string (buf, v->value, strlen (v->value));
+  return (buf + strlen (buf));
 }
 
@@ -510,5 +520,5 @@
 allocated_variable_append (const struct variable *v)
 {
-  char *val, *retval;
+  char *val;
 
   /* Construct the appended variable value.  */
@@ -526,10 +536,5 @@
   variable_buffer_length = olen;
 
-  /* Now expand it and return that.  */
-
-  retval = allocated_variable_expand (val);
-
-  free (val);
-  return retval;
+  return val;
 }
 
Index: trunk/src/gmake/file.c
===================================================================
--- trunk/src/gmake/file.c	(revision 466)
+++ trunk/src/gmake/file.c	(revision 503)
@@ -1,21 +1,19 @@
-/* Target file hash table management for GNU Make.
+/* Target file management for GNU Make.
 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-2002 Free Software Foundation, Inc.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -91,12 +89,13 @@
 #ifdef VMS
 # ifndef WANT_CASE_SENSITIVE_TARGETS
-  {
-    register char *n;
-    lname = (char *) malloc (strlen (name) + 1);
-    for (n = name, ln = lname; *n != '\0'; ++n, ++ln)
-      *ln = isupper ((unsigned char)*n) ? tolower ((unsigned char)*n) : *n;
-    *ln = '\0';
-    name = lname;
-  }
+  if (*name != '.')
+    {
+      register char *n;
+      lname = (char *) malloc (strlen (name) + 1);
+      for (n = name, ln = lname; *n != '\0'; ++n, ++ln)
+        *ln = isupper ((unsigned char)*n) ? tolower ((unsigned char)*n) : *n;
+      *ln = '\0';
+      name = lname;
+    }
 # endif
 
@@ -127,5 +126,6 @@
   f = (struct file *) hash_find_item (&files, &file_key);
 #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
-  free (lname);
+  if (*name != '.')
+    free (lname);
 #endif
   return f;
@@ -146,20 +146,21 @@
 
 #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
-  {
-    register char *n;
-    lname = (char *) malloc (strlen (name) + 1);
-    for (n = name, ln = lname; *n != '\0'; ++n, ++ln)
-      {
-        if (isupper ((unsigned char)*n))
-          *ln = tolower ((unsigned char)*n);
-        else
-          *ln = *n;
-      }
-
-    *ln = 0;
-    /* Creates a possible leak, old value of name is unreachable, but I
-       currently don't know how to fix it. */
-    name = lname;
-  }
+  if (*name != '.')
+    {
+      register char *n;
+      lname = (char *) malloc (strlen (name) + 1);
+      for (n = name, ln = lname; *n != '\0'; ++n, ++ln)
+        {
+          if (isupper ((unsigned char)*n))
+            *ln = tolower ((unsigned char)*n);
+          else
+            *ln = *n;
+        }
+
+      *ln = 0;
+      /* Creates a possible leak, old value of name is unreachable, but I
+         currently don't know how to fix it. */
+      name = lname;
+    }
 #endif
 
@@ -170,5 +171,6 @@
     {
 #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
-      free(lname);
+      if (*name != '.')
+        free (lname);
 #endif
       return f;
@@ -181,12 +183,14 @@
 
   if (HASH_VACANT (f))
-    hash_insert_at (&files, new, file_slot);
+    {
+      new->last = new;
+      hash_insert_at (&files, new, file_slot);
+    }
   else
     {
       /* There is already a double-colon entry for this file.  */
       new->double_colon = f;
-      while (f->prev != 0)
-	f = f->prev;
-      f->prev = new;
+      f->last->prev = new;
+      f->last = new;
     }
 
@@ -409,4 +413,40 @@
 
 
+struct dep *
+parse_prereqs (char *p)
+{
+  struct dep *new = (struct dep *)
+    multi_glob (parse_file_seq (&p, '|', sizeof (struct dep), 1),
+                sizeof (struct dep));
+
+  if (*p)
+    {
+      /* Files that follow '|' are "order-only" prerequisites that satisfy the
+         dependency by existing: their modification times are irrelevant.  */
+      struct dep *ood;
+
+      ++p;
+      ood = (struct dep *)
+        multi_glob (parse_file_seq (&p, '\0', sizeof (struct dep), 1),
+                    sizeof (struct dep));
+
+      if (! new)
+        new = ood;
+      else
+        {
+          struct dep *dp;
+          for (dp = new; dp->next != NULL; dp = dp->next)
+            ;
+          dp->next = ood;
+        }
+
+      for (; ood != NULL; ood = ood->next)
+        ood->ignore_mtime = 1;
+    }
+
+  return new;
+}
+
+
 /* Set the intermediate flag.  */
 
@@ -422,7 +462,7 @@
 expand_deps (struct file *f)
 {
-  struct dep *d, *d1;
-  struct dep *new = 0;
+  struct dep *d;
   struct dep *old = f->deps;
+  char *file_stem = f->stem;
   unsigned int last_dep_has_cmds = f->updating;
   int initialized = 0;
@@ -433,100 +473,152 @@
   for (d = old; d != 0; d = d->next)
     {
-      if (d->name != 0)
+      struct dep *new, *d1;
+      char *p;
+
+      if (! d->name)
+        continue;
+
+      /* Create the dependency list.
+         If we're not doing 2nd expansion, then it's just the name.  */
+      if (! d->need_2nd_expansion)
+        p = d->name;
+      else
         {
-          char *p;
-
-          /* If we need a second expansion on these, set up the file
-             variables, etc.  It takes a lot of extra memory and processing
-             to do this, so only do it if it's needed.  */
-          if (! d->need_2nd_expansion)
-            p = d->name;
+          /* If it's from a static pattern rule, convert the patterns into
+             "$*" so they'll expand properly.  */
+          if (d->staticpattern)
+            {
+              char *o;
+              char *buffer = variable_expand ("");
+
+              o = subst_expand (buffer, d->name, "%", "$*", 1, 2, 0);
+
+              free (d->name);
+              d->name = savestring (buffer, o - buffer);
+              d->staticpattern = 0; /* Clear staticpattern so that we don't
+                                       re-expand %s below. */
+            }
+
+          /* We are going to do second expansion so initialize file variables
+             for the file. Since the stem for static pattern rules comes from
+             individual dep lines, we will temporarily set f->stem to d->stem.
+          */
+          if (!initialized)
+            {
+              initialize_file_variables (f, 0);
+              initialized = 1;
+            }
+
+          if (d->stem != 0)
+            f->stem = d->stem;
+
+          set_file_variables (f);
+
+          p = variable_expand_for_file (d->name, f);
+
+          if (d->stem != 0)
+            f->stem = file_stem;
+        }
+
+      /* Parse the prerequisites.  */
+      new = parse_prereqs (p);
+
+      /* If this dep list was from a static pattern rule, expand the %s.  We
+         use patsubst_expand to translate the prerequisites' patterns into
+         plain prerequisite names.  */
+      if (new && d->staticpattern)
+        {
+          char *pattern = "%";
+          char *buffer = variable_expand ("");
+          struct dep *dp = new, *dl = 0;
+
+          while (dp != 0)
+            {
+              char *percent = find_percent (dp->name);
+              if (percent)
+                {
+                  /* We have to handle empty stems specially, because that
+                     would be equivalent to $(patsubst %,dp->name,) which
+                     will always be empty.  */
+                  if (d->stem[0] == '\0')
+                    /* This needs memmove() in ISO C.  */
+                    bcopy (percent+1, percent, strlen (percent));
+                  else
+                    {
+                      char *o = patsubst_expand (buffer, d->stem, pattern,
+                                                 dp->name, pattern+1,
+                                                 percent+1);
+                      if (o == buffer)
+                        dp->name[0] = '\0';
+                      else
+                        {
+                          free (dp->name);
+                          dp->name = savestring (buffer, o - buffer);
+                        }
+                    }
+
+                  /* If the name expanded to the empty string, ignore it.  */
+                  if (dp->name[0] == '\0')
+                    {
+                      struct dep *df = dp;
+                      if (dp == new)
+                        dp = new = new->next;
+                      else
+                        dp = dl->next = dp->next;
+                      /* @@ Are we leaking df->name here?  */
+                      df->name = 0;
+                      free_dep (df);
+                      continue;
+                    }
+                }
+              dl = dp;
+              dp = dp->next;
+            }
+        }
+
+      /* Enter them as files. */
+      for (d1 = new; d1 != 0; d1 = d1->next)
+        {
+          d1->file = lookup_file (d1->name);
+          if (d1->file == 0)
+            d1->file = enter_file (d1->name);
+          else
+            free (d1->name);
+          d1->name = 0;
+          d1->staticpattern = 0;
+          d1->need_2nd_expansion = 0;
+        }
+
+      /* Add newly parsed deps to f->deps. If this is the last dependency
+         line and this target has commands then put it in front so the
+         last dependency line (the one with commands) ends up being the
+         first. This is important because people expect $< to hold first
+         prerequisite from the rule with commands. If it is not the last
+         dependency line or the rule does not have commands then link it
+         at the end so it appears in makefile order.  */
+
+      if (new != 0)
+        {
+          if (d->next == 0 && last_dep_has_cmds)
+            {
+              struct dep **d_ptr;
+              for (d_ptr = &new; *d_ptr; d_ptr = &(*d_ptr)->next)
+                ;
+
+              *d_ptr = f->deps;
+              f->deps = new;
+            }
           else
             {
-              /* We are going to do second expansion so initialize file
-                 variables for the file. */
-              if (!initialized)
-                {
-                  initialize_file_variables (f, 0);
-                  initialized = 1;
-                }
-
-              set_file_variables (f);
-
-              p = variable_expand_for_file (d->name, f);
-            }
-
-          /* Parse the dependencies.  */
-          new = (struct dep *)
-            multi_glob (
-              parse_file_seq (&p, '|', sizeof (struct dep), 1),
-              sizeof (struct dep));
-
-          if (*p)
-            {
-              /* Files that follow '|' are special prerequisites that
-                 need only exist in order to satisfy the dependency.
-                 Their modification times are irrelevant.  */
               struct dep **d_ptr;
-
-              for (d_ptr = &new; *d_ptr; d_ptr = &(*d_ptr)->next)
+              for (d_ptr = &f->deps; *d_ptr; d_ptr = &(*d_ptr)->next)
                 ;
-              ++p;
-
-              *d_ptr = (struct dep *)
-                multi_glob (
-                  parse_file_seq (&p, '\0', sizeof (struct dep), 1),
-                  sizeof (struct dep));
-
-              for (d1 = *d_ptr; d1 != 0; d1 = d1->next)
-                d1->ignore_mtime = 1;
-            }
-
-          /* Enter them as files. */
-          for (d1 = new; d1 != 0; d1 = d1->next)
-            {
-              d1->file = lookup_file (d1->name);
-              if (d1->file == 0)
-                d1->file = enter_file (d1->name);
-              else
-                free (d1->name);
-              d1->name = 0;
-              d1->need_2nd_expansion = 0;
-            }
-
-          /* Add newly parsed deps to f->deps. If this is the last
-             dependency line and this target has commands then put
-             it in front so the last dependency line (the one with
-             commands) ends up being the first. This is important
-             because people expect $< to hold first prerequisite
-             from the rule with commands. If it is not the last
-             dependency line or the rule does not have commands
-             then link it at the end so it appears in makefile
-             order.  */
-
-          if (new != 0)
-            {
-              if (d->next == 0 && last_dep_has_cmds)
-                {
-                  struct dep **d_ptr;
-                  for (d_ptr = &new; *d_ptr; d_ptr = &(*d_ptr)->next)
-                    ;
-
-                  *d_ptr = f->deps;
-                  f->deps = new;
-                }
-              else
-                {
-                  struct dep **d_ptr;
-                  for (d_ptr = &f->deps; *d_ptr; d_ptr = &(*d_ptr)->next)
-                    ;
-
-                  *d_ptr = new;
-                }
+
+              *d_ptr = new;
             }
         }
     }
 
-  free_ns_chain ((struct nameseq *) old);
+  free_dep_chain (old);
 }
 
@@ -646,8 +738,4 @@
     }
 
-  f = lookup_file (".POSIX");
-  if (f != 0 && f->is_target)
-    posix_pedantic = 1;
-
   /* kmk changed */
   f = lookup_file (".NOTPARALLEL");
@@ -664,4 +752,12 @@
             f2->command_flags |= COMMANDS_NOTPARALLEL;
     }
+
+#ifndef NO_MINUS_C_MINUS_O
+  /* If .POSIX was defined, remove OUTPUT_OPTION to comply.  */
+  /* This needs more work: what if the user sets this in the makefile?
+  if (posix_pedantic)
+    define_variable (STRING_SIZE_TUPLE("OUTPUT_OPTION"), "", o_default, 1);
+  */
+#endif
 
   /* Remember that we've done this. */
Index: trunk/src/gmake/filedef.h
===================================================================
--- trunk/src/gmake/filedef.h	(revision 466)
+++ trunk/src/gmake/filedef.h	(revision 503)
@@ -1,21 +1,19 @@
 /* Definition of target file data structures for GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1997,
-2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 
@@ -43,4 +41,5 @@
 				   used when there are multiple double-colon
 				   entries for the same file.  */
+    struct file *last;          /* Last entry for the same file name.  */
 
     /* File that this file was renamed to.  After any time that a
@@ -85,9 +84,8 @@
     unsigned int cmd_target:1;	/* Nonzero if file was given on cmd line.  */
     unsigned int phony:1;	/* Nonzero if this is a phony file
-				   i.e., a dependency of .PHONY.  */
+				   i.e., a prerequisite of .PHONY.  */
     unsigned int intermediate:1;/* Nonzero if this is an intermediate file.  */
-    /* Nonzero, for an intermediate file,
-       means remove_intermediates should not delete it.  */
-    unsigned int secondary:1;
+    unsigned int secondary:1;   /* Nonzero means remove_intermediates should
+                                   not delete it.  */
     unsigned int dontcare:1;	/* Nonzero if no complaint is to be made if
 				   this target cannot be remade.  */
@@ -95,5 +93,5 @@
     unsigned int pat_searched:1;/* Nonzero if we already searched for
                                    pattern-specific variables.  */
-    unsigned int considered:1;  /* equal to `considered' if file has been
+    unsigned int considered:1;  /* equal to 'considered' if file has been
                                    considered on current scan of goal chain */
   };
@@ -106,4 +104,5 @@
 extern struct file *lookup_file PARAMS ((char *name));
 extern struct file *enter_file PARAMS ((char *name));
+extern struct dep *parse_prereqs PARAMS ((char *prereqs));
 extern void remove_intermediates PARAMS ((int sig));
 extern void snap_deps PARAMS ((void));
Index: trunk/src/gmake/function.c
===================================================================
--- trunk/src/gmake/function.c	(revision 466)
+++ trunk/src/gmake/function.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Builtin function expansion for GNU Make.
-Copyright (C) 1988, 1989, 1991-1997, 1999, 2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -501,4 +500,20 @@
 }
 
+static char *
+func_flavor (char *o, char **argv, const char *funcname UNUSED)
+{
+  register struct variable *v = lookup_variable (argv[0], strlen (argv[0]));
+
+  if (v == 0)
+    o = variable_buffer_output (o, "undefined", 9);
+  else
+    if (v->recursive)
+      o = variable_buffer_output (o, "recursive", 9);
+    else
+      o = variable_buffer_output (o, "simple", 6);
+
+  return o;
+}
+
 #ifdef VMS
 # define IS_PATHSEP(c) ((c) == ']')
@@ -740,5 +755,5 @@
 
   if (s <= end || end - beg < 0)
-    fatal (reading_file, "%s: '%s'", message, beg);
+    fatal (*expanding_var, "%s: '%s'", message, beg);
 }
 
@@ -757,5 +772,6 @@
 
   if (i == 0)
-    fatal (reading_file, _("first argument to `word' function must be greater than 0"));
+    fatal (*expanding_var,
+           _("first argument to `word' function must be greater than 0"));
 
 
@@ -784,5 +800,5 @@
   start = atoi (argv[0]);
   if (start < 1)
-    fatal (reading_file,
+    fatal (*expanding_var,
            "invalid first argument to `wordlist' function: `%d'", start);
 
@@ -1108,8 +1124,9 @@
     case 'i':
       printf ("%s\n", msg);
+      fflush(stdout);
       break;
 
     default:
-      fatal (reading_file, "Internal error: func_error: '%s'", funcname);
+      fatal (*expanding_var, "Internal error: func_error: '%s'", funcname);
   }
 
@@ -1225,4 +1242,108 @@
 }
 
+/*
+  $(or condition1[,condition2[,condition3[...]]])
+
+  A CONDITION is false iff it evaluates to an empty string.  White
+  space before and after CONDITION are stripped before evaluation.
+
+  CONDITION1 is evaluated.  If it's true, then this is the result of
+  expansion.  If it's false, CONDITION2 is evaluated, and so on.  If none of
+  the conditions are true, the expansion is the empty string.
+
+  Once a CONDITION is true no further conditions are evaluated
+  (short-circuiting).
+*/
+
+static char *
+func_or (char *o, char **argv, const char *funcname UNUSED)
+{
+  for ( ; *argv ; ++argv)
+    {
+      const char *begp = *argv;
+      const char *endp = begp + strlen (*argv) - 1;
+      char *expansion;
+      int result = 0;
+
+      /* Find the result of the condition: if it's false keep going.  */
+
+      strip_whitespace (&begp, &endp);
+
+      if (begp > endp)
+        continue;
+
+      expansion = expand_argument (begp, endp+1);
+      result = strlen (expansion);
+
+      /* If the result is false keep going.  */
+      if (!result)
+        {
+          free (expansion);
+          continue;
+        }
+
+      /* It's true!  Keep this result and return.  */
+      o = variable_buffer_output (o, expansion, result);
+      free (expansion);
+      break;
+    }
+
+  return o;
+}
+
+/*
+  $(and condition1[,condition2[,condition3[...]]])
+
+  A CONDITION is false iff it evaluates to an empty string.  White
+  space before and after CONDITION are stripped before evaluation.
+
+  CONDITION1 is evaluated.  If it's false, then this is the result of
+  expansion.  If it's true, CONDITION2 is evaluated, and so on.  If all of
+  the conditions are true, the expansion is the result of the last condition.
+
+  Once a CONDITION is false no further conditions are evaluated
+  (short-circuiting).
+*/
+
+static char *
+func_and (char *o, char **argv, const char *funcname UNUSED)
+{
+  char *expansion;
+  int result;
+
+  while (1)
+    {
+      const char *begp = *argv;
+      const char *endp = begp + strlen (*argv) - 1;
+
+      /* An empty condition is always false.  */
+      strip_whitespace (&begp, &endp);
+      if (begp > endp)
+        return o;
+
+      expansion = expand_argument (begp, endp+1);
+      result = strlen (expansion);
+
+      /* If the result is false, stop here: we're done.  */
+      if (!result)
+        break;
+
+      /* Otherwise the result is true.  If this is the last one, keep this
+         result and quit.  Otherwise go on to the next one!  */
+
+      if (*(++argv))
+        free (expansion);
+      else
+        {
+          o = variable_buffer_output (o, expansion, result);
+          break;
+        }
+    }
+
+  free (expansion);
+
+  return o;
+}
+
 static char *
 func_wildcard (char *o, char **argv, const char *funcname UNUSED)
@@ -1281,6 +1402,6 @@
   \r  is replaced on UNIX as well. Is this desirable?
  */
-void
-fold_newlines (char *buffer, int *length)
+static void
+fold_newlines (char *buffer, unsigned int *length)
 {
   char *dst = buffer;
@@ -1341,5 +1462,5 @@
 		      TRUE,
 		      DUPLICATE_SAME_ACCESS) == FALSE) {
-    fatal (NILF, _("create_child_process: DuplicateHandle(In) failed (e=%d)\n"),
+    fatal (NILF, _("create_child_process: DuplicateHandle(In) failed (e=%ld)\n"),
 	   GetLastError());
 
@@ -1352,10 +1473,10 @@
 		      TRUE,
 		      DUPLICATE_SAME_ACCESS) == FALSE) {
-    fatal (NILF, _("create_child_process: DuplicateHandle(Err) failed (e=%d)\n"),
+    fatal (NILF, _("create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"),
 	   GetLastError());
   }
 
   if (!CreatePipe(&hChildOutRd, &hChildOutWr, &saAttr, 0))
-    fatal (NILF, _("CreatePipe() failed (e=%d)\n"), GetLastError());
+    fatal (NILF, _("CreatePipe() failed (e=%ld)\n"), GetLastError());
 
   hProcess = process_init_fd(hIn, hChildOutWr, hErr);
@@ -1469,5 +1590,4 @@
 {
   char* batch_filename = NULL;
-  unsigned int i;
 
 #ifdef __MSDOS__
@@ -1494,5 +1614,8 @@
      to put it in the environment.  This is even more confusing when
      var was not explicitly exported, but just appeared in the
-     calling environment.  */
+     calling environment.
+
+  envp = target_environment (NILF);
+  */
 
   envp = environ;
@@ -1560,7 +1683,6 @@
     {
       /* We are the parent.  */
-
       char *buffer;
-      unsigned int maxlen;
+      unsigned int maxlen, i;
       int cc;
 
@@ -1625,7 +1747,6 @@
       if (shell_function_completed == -1)
 	{
-	  /* This most likely means that the execvp failed,
-	     so we should just write out the error message
-	     that came in over the pipe from the child.  */
+	  /* This likely means that the execvp failed, so we should just
+	     write the error message in the pipe from the child.  */
 	  fputs (buffer, stderr);
 	  fflush (stderr);
@@ -1633,7 +1754,6 @@
       else
 	{
-	  /* The child finished normally.  Replace all
-	     newlines in its output with spaces, and put
-	     that in the variable output buffer.  */
+	  /* The child finished normally.  Replace all newlines in its output
+	     with spaces, and put that in the variable output buffer.  */
 	  fold_newlines (buffer, &i);
 	  o = variable_buffer_output (o, buffer, i);
@@ -1667,6 +1787,6 @@
   BPTR child_stdout;
   char tmp_output[FILENAME_MAX];
-  unsigned int maxlen = 200;
-  int cc, i;
+  unsigned int maxlen = 200, i;
+  int cc;
   char * buffer, * ptr;
   char ** aptr;
@@ -2011,4 +2131,5 @@
   { STRING_SIZE_TUPLE("findstring"),    2,  2,  1,  func_findstring},
   { STRING_SIZE_TUPLE("firstword"),     0,  1,  1,  func_firstword},
+  { STRING_SIZE_TUPLE("flavor"),        0,  1,  1,  func_flavor},
   { STRING_SIZE_TUPLE("join"),          2,  2,  1,  func_join},
   { STRING_SIZE_TUPLE("lastword"),      0,  1,  1,  func_lastword},
@@ -2029,4 +2150,6 @@
   { STRING_SIZE_TUPLE("warning"),       0,  1,  1,  func_error},
   { STRING_SIZE_TUPLE("if"),            2,  3,  0,  func_if},
+  { STRING_SIZE_TUPLE("or"),            1,  0,  0,  func_or},
+  { STRING_SIZE_TUPLE("and"),           1,  0,  0,  func_and},
   { STRING_SIZE_TUPLE("value"),         0,  1,  1,  func_value},
   { STRING_SIZE_TUPLE("eval"),          0,  1,  1,  func_eval},
@@ -2052,6 +2175,6 @@
 {
   if (argc < (int)entry_p->minimum_args)
-    fatal (reading_file,
-           _("Insufficient number of arguments (%d) to function `%s'"),
+    fatal (*expanding_var,
+           _("insufficient number of arguments (%d) to function `%s'"),
            argc, entry_p->name);
 
@@ -2064,6 +2187,6 @@
 
   if (!entry_p->func_ptr)
-    fatal (reading_file, _("Unimplemented on this platform: function `%s'"),
-           entry_p->name);
+    fatal (*expanding_var,
+           _("unimplemented on this platform: function `%s'"), entry_p->name);
 
   return entry_p->func_ptr (o, argv, entry_p->name);
@@ -2114,5 +2237,5 @@
 
   if (count >= 0)
-    fatal (reading_file,
+    fatal (*expanding_var,
 	   _("unterminated call to function `%s': missing `%c'"),
 	   entry_p->name, closeparen);
Index: trunk/src/gmake/getloadavg.c
===================================================================
--- trunk/src/gmake/getloadavg.c	(revision 466)
+++ trunk/src/gmake/getloadavg.c	(revision 503)
@@ -1,20 +1,20 @@
 /* Get the system load averages.
-   Copyright (C) 1985, 86, 87, 88, 89, 91, 92, 93, 1994, 1995, 1997
-   	Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-   USA.  */
+Copyright (C) 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
+Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* Compile-time symbols that this file uses:
Index: trunk/src/gmake/getopt.c
===================================================================
--- trunk/src/gmake/getopt.c	(revision 466)
+++ trunk/src/gmake/getopt.c	(revision 503)
@@ -1,28 +1,27 @@
 /* Getopt for GNU.
-   NOTE: getopt is now part of the C library, so if you don't know what
-   "Keep this file name-space clean" means, talk to drepper@gnu.org
-   before changing it!
-
-   Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
-   	Free Software Foundation, Inc.
-
-   NOTE: The canonical source of this file is maintained with the GNU C Library.
-   Bugs can be reported to bug-glibc@gnu.org.
-
-   This program is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by the
-   Free Software Foundation; either version 2, or (at your option) any
-   later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-   USA.  */
-
+NOTE: getopt is now part of the C library, so if you don't know what
+"Keep this file name-space clean" means, talk to drepper@gnu.org
+before changing it!
+
+Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@gnu.org.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Index: trunk/src/gmake/getopt.h
===================================================================
--- trunk/src/gmake/getopt.h	(revision 466)
+++ trunk/src/gmake/getopt.h	(revision 503)
@@ -1,22 +1,22 @@
 /* Declarations for getopt.
-   Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
-   NOTE: The canonical source of this file is maintained with the GNU C Library.
-   Bugs can be reported to bug-glibc@gnu.org.
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@gnu.org.
 
-   This program is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by the
-   Free Software Foundation; either version 2, or (at your option) any
-   later version.
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-   USA.  */
+You should have received a copy of the GNU General Public License along with
+this program; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #ifndef _GETOPT_H
Index: trunk/src/gmake/getopt1.c
===================================================================
--- trunk/src/gmake/getopt1.c	(revision 466)
+++ trunk/src/gmake/getopt1.c	(revision 503)
@@ -1,23 +1,23 @@
 /* getopt_long and getopt_long_only entry points for GNU getopt.
-   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
-     Free Software Foundation, Inc.
+Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 
-   NOTE: The canonical source of this file is maintained with the GNU C Library.
-   Bugs can be reported to bug-glibc@gnu.org.
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@gnu.org.
 
-   This program is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by the
-   Free Software Foundation; either version 2, or (at your option) any
-   later version.
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-   USA.  */
+You should have received a copy of the GNU General Public License along with
+this program; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 
Index: trunk/src/gmake/gettext.h
===================================================================
--- trunk/src/gmake/gettext.h	(revision 466)
+++ trunk/src/gmake/gettext.h	(revision 503)
@@ -1,19 +1,18 @@
 /* Convenience header for conditional use of GNU <libintl.h>.
-   Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
 
-   This program is free software; you can redistribute it and/or modify it
-   under the terms of the GNU Library General Public License as published
-   by the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-   USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #ifndef _LIBGETTEXT_H
Index: trunk/src/gmake/glob/.cvsignore
===================================================================
--- trunk/src/gmake/glob/.cvsignore	(revision 466)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Makefile Makefile.in
-.deps
Index: trunk/src/gmake/glob/ChangeLog
===================================================================
--- trunk/src/gmake/glob/ChangeLog	(revision 466)
+++ trunk/src/gmake/glob/ChangeLog	(revision 503)
@@ -1,2 +1,12 @@
+2006-02-24  Eli Zaretskii  <eliz@gnu.org>
+
+	* glob.c (my_malloc) [WINDOWS32]: Provide a full ISO C prototype,
+        to avoid compiler warnings.
+
+2005-06-25  Paul D. Smith  <psmith@gnu.org>
+
+	* fnmatch.h, glob.h [WINDOWS32]: Fix ifdefs in headers.
+	Fixes Savannah bug #13477.
+
 2005-03-11  Paul D. Smith  <psmith@gnu.org>
 
@@ -146,2 +156,20 @@
  	only for ?s, not for *s.  Fix from Chet Ramey.
 
+
+
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/glob/Makefile.am
===================================================================
--- trunk/src/gmake/glob/Makefile.am	(revision 466)
+++ trunk/src/gmake/glob/Makefile.am	(revision 503)
@@ -1,3 +1,18 @@
 # -*-Makefile-*-, or close enough
+# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 AUTOMAKE_OPTIONS =	foreign
Index: trunk/src/gmake/glob/Makefile.ami
===================================================================
--- trunk/src/gmake/glob/Makefile.ami	(revision 466)
+++ trunk/src/gmake/glob/Makefile.ami	(revision 503)
@@ -1,21 +1,18 @@
-# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-
-# Copyright (C) 1991, 92, 93, 94, 95, 97, 98 Free Software Foundation, Inc.
-# This file is part of the GNU C Library.
-
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public License
-# as published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the GNU
-# Library General Public License for more details.
-
-# You should have received a copy of the GNU Library General Public
-# License along with this library; see the file COPYING.LIB.  If
-# not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Makefile for standalone libglob.a (fnmatch, glob).             -*-Makefile-*-
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 # Ultrix 2.2 make doesn't expand the value of VPATH.
Index: trunk/src/gmake/glob/Makefile.in
===================================================================
--- trunk/src/gmake/glob/Makefile.in	(revision 466)
+++ trunk/src/gmake/glob/Makefile.in	(revision 503)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,6 +16,19 @@
 
 # -*-Makefile-*-, or close enough
-
-SOURCES = $(libglob_a_SOURCES)
+# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 srcdir = @srcdir@
@@ -39,4 +52,5 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = glob
@@ -44,6 +58,11 @@
 	ChangeLog
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
+	$(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
+	$(top_srcdir)/config/lib-ld.m4 \
+	$(top_srcdir)/config/lib-link.m4 \
+	$(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
+	$(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -51,6 +70,6 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
 ARFLAGS = cru
-LIBRARIES = $(noinst_LIBRARIES)
 libglob_a_AR = $(AR) $(ARFLAGS)
 libglob_a_LIBADD =
@@ -60,5 +79,4 @@
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/fnmatch.Po ./$(DEPDIR)/glob.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -139,4 +157,6 @@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+WINDOWSENV_FALSE = @WINDOWSENV_FALSE@
+WINDOWSENV_TRUE = @WINDOWSENV_TRUE@
 XGETTEXT = @XGETTEXT@
 ac_ct_CC = @ac_ct_CC@
@@ -148,4 +168,6 @@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
@@ -238,6 +260,5 @@
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
@@ -246,6 +267,5 @@
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 uninstall-info-am:
@@ -271,7 +291,9 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
@@ -347,5 +369,5 @@
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
Index: trunk/src/gmake/glob/SMakefile
===================================================================
--- trunk/src/gmake/glob/SMakefile	(revision 466)
+++ trunk/src/gmake/glob/SMakefile	(revision 503)
@@ -1,21 +1,18 @@
 # Makefile for standalone distribution of libglob.a (fnmatch, glob).
-
-# Copyright (C) 1991, 92, 93, 94, 95, 97, 98 Free Software Foundation, Inc.
-# This file is part of the GNU C Library.
-
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public License
-# as published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the GNU
-# Library General Public License for more details.
-
-# You should have received a copy of the GNU Library General Public
-# License along with this library; see the file COPYING.LIB.  If
-# not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 # Ultrix 2.2 make doesn't expand the value of VPATH.
Index: trunk/src/gmake/glob/configure.bat
===================================================================
--- trunk/src/gmake/glob/configure.bat	(revision 466)
+++ trunk/src/gmake/glob/configure.bat	(revision 503)
@@ -1,3 +1,21 @@
 @echo off
+rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+rem 2004, 2005, 2006 Free Software Foundation, Inc.
+rem This file is part of GNU Make.
+
+rem GNU Make is free software; you can redistribute it and/or modify it under
+rem the terms of the GNU General Public License as published by the Free
+rem Software Foundation; either version 2, or (at your option) any later
+rem version.
+
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+rem more details.
+
+rem You should have received a copy of the GNU General Public License along
+rem with GNU Make; see the file COPYING.  If not, write to the Free Software
+rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 echo Configuring glob for DJGPP
 rem This batch file assumes a unix-type "sed" program
Index: trunk/src/gmake/glob/fnmatch.c
===================================================================
--- trunk/src/gmake/glob/fnmatch.c	(revision 466)
+++ trunk/src/gmake/glob/fnmatch.c	(revision 503)
@@ -1,19 +1,19 @@
 /* Copyright (C) 1991, 92, 93, 96, 97, 98, 99 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with this library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+This file is part of the GNU C Library.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public License
+along with this library; see the file COPYING.LIB.  If not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+USA.  */
 
 #if HAVE_CONFIG_H
Index: trunk/src/gmake/glob/fnmatch.h
===================================================================
--- trunk/src/gmake/glob/fnmatch.h	(revision 466)
+++ trunk/src/gmake/glob/fnmatch.h	(revision 503)
@@ -1,19 +1,19 @@
 /* Copyright (C) 1991, 92, 93, 96, 97, 98, 99 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
+This file is part of the GNU C Library.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
 
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+You should have received a copy of the GNU Library General Public License
+along with this library; see the file COPYING.LIB.  If not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+USA.  */
 
 #ifndef	_FNMATCH_H
@@ -25,5 +25,5 @@
 
 #if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32
-# if !defined __GLIBC__ || !defined __P
+# if !defined __GLIBC__
 #  undef	__P
 #  define __P(protos)	protos
@@ -38,5 +38,5 @@
 
 #ifndef const
-# if (defined __STDC__ && __STDC__) || defined __cplusplus
+# if (defined __STDC__ && __STDC__) || defined __cplusplus || defined WINDOWS32
 #  define __const	const
 # else
Index: trunk/src/gmake/glob/glob.c
===================================================================
--- trunk/src/gmake/glob/glob.c	(revision 466)
+++ trunk/src/gmake/glob/glob.c	(revision 503)
@@ -1,18 +1,18 @@
 /* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
 
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with this library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public License
+along with this library; see the file COPYING.LIB.  If not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+USA.  */
 
 /* AIX requires this to be the first thing in the file.  */
@@ -189,10 +189,11 @@
 #  ifdef WINDOWS32
 static void *
+my_realloc (void *p, unsigned int n)
 #  else
 static char *
-# endif
 my_realloc (p, n)
      char *p;
      unsigned int n;
+# endif
 {
   /* These casts are the for sake of the broken Ultrix compiler,
@@ -301,9 +302,6 @@
 static int collated_compare __P ((const __ptr_t, const __ptr_t));
 
-#ifdef VMS
-/* these compilers like prototypes */
 #if !defined _LIBC || !defined NO_GLOB_PATTERN_P
-int __glob_pattern_p (const char *pattern, int quote);
-#endif
+int __glob_pattern_p __P ((const char *pattern, int quote));
 #endif
 
Index: trunk/src/gmake/glob/glob.h
===================================================================
--- trunk/src/gmake/glob/glob.h	(revision 466)
+++ trunk/src/gmake/glob/glob.h	(revision 503)
@@ -1,18 +1,18 @@
 /* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public License
+along with this library; see the file COPYING.LIB.  If not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+USA.  */
 
 #ifndef	_GLOB_H
@@ -25,5 +25,5 @@
 #undef	__ptr_t
 #if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32
-# if !defined __GLIBC__ || !defined __P
+# if !defined __GLIBC__
 #  undef __P
 #  undef __PMT
Index: trunk/src/gmake/hash.c
===================================================================
--- trunk/src/gmake/hash.c	(revision 466)
+++ trunk/src/gmake/hash.c	(revision 503)
@@ -3,18 +3,17 @@
    Written by Greg McGary <gkm@gnu.org> <greg@mcgary.org>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -127,16 +126,16 @@
 
 void *
-hash_insert (struct hash_table *ht, void *item)
+hash_insert (struct hash_table *ht, const void *item)
 {
   void **slot = hash_find_slot (ht, item);
-  void *old_item = slot ? *slot : 0;
+  const void *old_item = slot ? *slot : 0;
   hash_insert_at (ht, item, slot);
-  return ((HASH_VACANT (old_item)) ? 0 : old_item);
-}
-
-void *
-hash_insert_at (struct hash_table *ht, void *item, const void *slot)
-{
-  void *old_item = *(void **) slot;
+  return (void *)((HASH_VACANT (old_item)) ? 0 : old_item);
+}
+
+void *
+hash_insert_at (struct hash_table *ht, const void *item, const void *slot)
+{
+  const void *old_item = *(void **) slot;
   if (HASH_VACANT (old_item))
     {
Index: trunk/src/gmake/hash.h
===================================================================
--- trunk/src/gmake/hash.h	(revision 466)
+++ trunk/src/gmake/hash.h	(revision 503)
@@ -1,19 +1,19 @@
 /* hash.h -- decls for hash table
-   Copyright (C) 1995, 1999, 2002 Free Software Foundation, Inc.
-   Written by Greg McGary <gkm@gnu.org> <greg@mcgary.org>
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+Copyright (C) 1995, 1999, 2002 Free Software Foundation, Inc.
+Written by Greg McGary <gkm@gnu.org> <greg@mcgary.org>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #ifndef _hash_h_
@@ -64,6 +64,6 @@
 void **hash_find_slot __P((struct hash_table *ht, void const *key));
 void *hash_find_item __P((struct hash_table *ht, void const *key));
-void *hash_insert __P((struct hash_table *ht, void *item));
-void *hash_insert_at __P((struct hash_table *ht, void *item, void const *slot));
+void *hash_insert __P((struct hash_table *ht, const void *item));
+void *hash_insert_at __P((struct hash_table *ht, const void *item, void const *slot));
 void *hash_delete __P((struct hash_table *ht, void const *item));
 void *hash_delete_at __P((struct hash_table *ht, void const *slot));
Index: trunk/src/gmake/implicit.c
===================================================================
--- trunk/src/gmake/implicit.c	(revision 466)
+++ trunk/src/gmake/implicit.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Implicit rule searching for GNU Make.
-Copyright (C) 1988,1989,1990,1991,1992,1993,1994,1997,2000,2004,2005 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -81,8 +80,7 @@
 
 static void
-free_idep_chain (struct idep* p)
+free_idep_chain (struct idep *p)
 {
-  register struct idep* n;
-  register struct file *f;
+  struct idep *n;
 
   for (; p != 0; p = n)
@@ -92,12 +90,11 @@
       if (p->name)
         {
+          struct file *f = p->intermediate_file;
+
+          if (f != 0
+              && (f->stem < f->name || f->stem > f->name + strlen (f->name)))
+            free (f->stem);
+
           free (p->name);
-
-          f = p->intermediate_file;
-
-          if (f != 0
-              && (f->stem < f->name
-                  || f->stem > f->name + strlen (f->name)))
-            free (f->stem);
         }
 
@@ -264,7 +261,7 @@
   int specific_rule_matched = 0;
 
-  register unsigned int i = 0;  /* uninit checks OK */
-  register struct rule *rule;
-  register struct dep *dep, *expl_d;
+  unsigned int i = 0;  /* uninit checks OK */
+  struct rule *rule;
+  struct dep *dep, *expl_d;
 
   char *p, *vname;
@@ -350,15 +347,25 @@
 	     prefix and the target pattern does not contain a slash.  */
 
+          check_lastslash = 0;
+          if (lastslash)
+            {
 #ifdef VMS
-	  check_lastslash = lastslash != 0
-			    && ((strchr (target, ']') == 0)
-			        && (strchr (target, ':') == 0));
+              check_lastslash = (strchr (target, ']') == 0
+                                 && strchr (target, ':') == 0);
 #else
-	  check_lastslash = lastslash != 0 && strchr (target, '/') == 0;
+              check_lastslash = strchr (target, '/') == 0;
+#ifdef HAVE_DOS_PATHS
+              /* Didn't find it yet: check for DOS-type directories.  */
+              if (check_lastslash)
+                {
+                  char *b = strchr (target, '\\');
+                  check_lastslash = !(b || (target[0] && target[1] == ':'));
+                }
 #endif
+#endif
+            }
 	  if (check_lastslash)
 	    {
-	      /* In that case, don't include the
-		 directory prefix in STEM here.  */
+	      /* If so, don't include the directory prefix in STEM here.  */
 	      unsigned int difference = lastslash - filename + 1;
 	      if (difference > stemlen)
@@ -437,4 +444,5 @@
           unsigned int failed = 0;
 	  int check_lastslash;
+          int file_variables_set = 0;
 
 	  rule = tryrules[i];
@@ -474,15 +482,9 @@
           stem_str[stemlen] = '\0';
 
-          /* Temporary assign STEM to file->stem and set file variables. */
+          /* Temporary assign STEM to file->stem (needed to set file
+             variables below).   */
           file->stem = stem_str;
-          set_file_variables (file);
 
 	  /* Try each dependency; see if it "exists".  */
-
-          /* @@ There is always only one dep line for any given implicit
-                rule. So the loop is not necessary. Can rule->deps be 0?
-
-                Watch out for conversion of suffix rules to implicit rules.
-          */
 
 	  for (dep = rule->deps; dep != 0; dep = dep->next)
@@ -493,11 +495,11 @@
 
               /* In an ideal world we would take the dependency line,
-                 substitute the stem, re-expand the whole line and
-                 chop it into individual prerequisites. Unfortunately
-                 this won't work because of the "check_lastslash" twist.
-                 Instead, we will have to go word by word, taking $()'s
-                 into account, for each word we will substitute the stem,
-                 re-expand, chop it up, and, if check_lastslash != 0,
-                 add the directory part to each resulting prerequisite.  */
+                 substitute the stem, re-expand the whole line and chop it
+                 into individual prerequisites. Unfortunately this won't work
+                 because of the "check_lastslash" twist.  Instead, we will
+                 have to go word by word, taking $()'s into account, for each
+                 word we will substitute the stem, re-expand, chop it up, and,
+                 if check_lastslash != 0, add the directory part to each
+                 resulting prerequisite.  */
 
               p = get_next_word (dep->name, &len);
@@ -511,39 +513,78 @@
                     break; /* No more words */
 
-                  /* If the dependency name has %, substitute the stem.
-                     Watch out, we are going to do something tricky here. If
-                     we just replace % with the stem value, later, when we do
-                     the second expansion, we will re-expand this stem value
-                     once again. This is not good especially if you have
-                     certain characters in your setm (like $).
-
-                     Instead, we will replace % with $* and allow the second
-                     expansion to take care of it for us. This way (since $*
-                     is a simple variable) there won't be additional
-                     re-expansion of the stem.  */
+                  /* Is there a pattern in this prerequisite?  */
 
                   for (p2 = p; p2 < p + len && *p2 != '%'; ++p2)
                     ;
 
-                  if (p2 < p + len)
+                  if (dep->need_2nd_expansion)
                     {
-                      register unsigned int i = p2 - p;
-                      bcopy (p, depname, i);
-                      bcopy ("$*", depname + i, 2);
-                      bcopy (p2 + 1, depname + i + 2, len - i - 1);
-                      depname[len + 2 - 1] = '\0';
-
-                      if (check_lastslash)
-                        add_dir = 1;
-
-                      had_stem = 1;
+                      /* If the dependency name has %, substitute the stem.
+
+                         Watch out, we are going to do something tricky
+                         here. If we just replace % with the stem value,
+                         later, when we do the second expansion, we will
+                         re-expand this stem value once again. This is not
+                         good especially if you have certain characters in
+                         your stem (like $).
+
+                         Instead, we will replace % with $* and allow the
+                         second expansion to take care of it for us. This way
+                         (since $* is a simple variable) there won't be
+                         additional re-expansion of the stem.  */
+
+                      if (p2 < p + len)
+                        {
+                          register unsigned int i = p2 - p;
+                          bcopy (p, depname, i);
+                          bcopy ("$*", depname + i, 2);
+                          bcopy (p2 + 1, depname + i + 2, len - i - 1);
+                          depname[len + 2 - 1] = '\0';
+
+                          if (check_lastslash)
+                            add_dir = 1;
+
+                          had_stem = 1;
+                        }
+                      else
+                        {
+                          bcopy (p, depname, len);
+                          depname[len] = '\0';
+                        }
+
+                      /* Set file variables. Note that we cannot do it once
+                         at the beginning of the function because of the stem
+                         value.  */
+                      if (!file_variables_set)
+                        {
+                          set_file_variables (file);
+                          file_variables_set = 1;
+                        }
+
+                      p2 = variable_expand_for_file (depname, file);
                     }
                   else
                     {
-                      bcopy (p, depname, len);
-                      depname[len] = '\0';
+                       if (p2 < p + len)
+                        {
+                          register unsigned int i = p2 - p;
+                          bcopy (p, depname, i);
+                          bcopy (stem_str, depname + i, stemlen);
+                          bcopy (p2 + 1, depname + i + stemlen, len - i - 1);
+                          depname[len + stemlen - 1] = '\0';
+
+                          if (check_lastslash)
+                            add_dir = 1;
+
+                          had_stem = 1;
+                        }
+                      else
+                        {
+                          bcopy (p, depname, len);
+                          depname[len] = '\0';
+                        }
+
+                       p2 = depname;
                     }
-
-                  p2 = variable_expand_for_file (depname, file);
 
                   /* Parse the dependencies. */
@@ -564,6 +605,6 @@
 
                       /* @@ It would be nice to teach parse_file_seq or
-                         multi_glob to add prefix. This would save us
-                         some reallocations. */
+                         multi_glob to add prefix. This would save us some
+                         reallocations. */
 
                       if (order_only || add_dir || had_stem)
@@ -621,8 +662,7 @@
               if (file_impossible_p (name))
                 {
-                  /* If this dependency has already been ruled
-                     "impossible", then the rule fails and don't
-                     bother trying it on the second pass either
-                     since we know that will fail too.  */
+                  /* If this dependency has already been ruled "impossible",
+                     then the rule fails and don't bother trying it on the
+                     second pass either since we know that will fail too.  */
                   DBS (DB_IMPLICIT,
                        (d->had_stem
@@ -641,16 +681,13 @@
                     : _("Trying rule prerequisite `%s'.\n"), name));
 
-              /* If this prerequisite also happened to be explicitly
-                 mentioned for FILE skip all the test below since it
-                 it has to be built anyway, no matter which implicit
-                 rule we choose. */
+              /* If this prerequisite also happened to be explicitly mentioned
+                 for FILE skip all the test below since it it has to be built
+                 anyway, no matter which implicit rule we choose. */
 
               for (expl_d = file->deps; expl_d != 0; expl_d = expl_d->next)
-                if (strcmp (dep_name (expl_d), name) == 0) break;
-
+                if (streq (dep_name (expl_d), name))
+                  break;
               if (expl_d != 0)
                 continue;
-
-
 
               /* The DEP->changed flag says that this dependency resides in a
@@ -665,7 +702,5 @@
                   /*|| ((!dep->changed || check_lastslash) && */
                   || file_exists_p (name))
-                {
-                  continue;
-                }
+                continue;
 
               /* This code, given FILENAME = "lib/foo.o", dependency name
@@ -684,7 +719,7 @@
 
 
-              /* We could not find the file in any place we should look.
-                 Try to make this dependency as an intermediate file,
-                 but only on the second pass.  */
+              /* We could not find the file in any place we should look.  Try
+                 to make this dependency as an intermediate file, but only on
+                 the second pass.  */
 
               if (intermed_ok)
@@ -717,4 +752,6 @@
                      file and failed, mark that name as impossible
                      so we won't go through the search again later.  */
+                  if (intermediate_file->variables)
+                    free_variable_set (intermediate_file->variables);
                   file_impossible (name);
                 }
@@ -777,6 +814,5 @@
         {
           struct dep *next = dep->next;
-          free (dep->name);
-          free ((char *)dep);
+          free_dep (dep);
           dep = next;
         }
@@ -837,12 +873,10 @@
 	}
 
-      dep = (struct dep *) xmalloc (sizeof (struct dep));
+      dep = alloc_dep ();
       dep->ignore_mtime = d->ignore_mtime;
-      dep->need_2nd_expansion = 0;
       s = d->name; /* Hijacking the name. */
       d->name = 0;
       if (recursions == 0)
 	{
-	  dep->name = 0;
 	  dep->file = lookup_file (s);
 	  if (dep->file == 0)
@@ -857,7 +891,6 @@
 	{
 	  dep->name = s;
-	  dep->file = 0;
-	  dep->changed = 0;
 	}
+
       if (d->intermediate_file == 0 && tryrules[foundrule]->terminal)
 	{
@@ -902,4 +935,11 @@
   file->is_target = 1;
 
+  /* Set precious flag. */
+  {
+    struct file *f = lookup_file (rule->targets[matches[foundrule]]);
+    if (f && f->precious)
+      file->precious = 1;
+  }
+
   /* If this rule builds other targets, too, put the others into FILE's
      `also_make' member.  */
@@ -909,8 +949,8 @@
       if (i != matches[foundrule])
 	{
-	  struct dep *new = (struct dep *) xmalloc (sizeof (struct dep));
+	  struct file *f;
+	  struct dep *new = alloc_dep ();
+
 	  /* GKM FIMXE: handle '|' here too */
-	  new->ignore_mtime = 0;
-	  new->need_2nd_expansion = 0;
 	  new->name = p = (char *) xmalloc (rule->lens[i] + fullstemlen + 1);
 	  bcopy (rule->targets[i], p,
@@ -923,4 +963,15 @@
 	  new->file = enter_file (new->name);
 	  new->next = file->also_make;
+
+	  /* Set precious flag. */
+	  f = lookup_file (rule->targets[i]);
+	  if (f && f->precious)
+            new->file->precious = 1;
+
+          /* Set the is_target flag so that this file is not treated
+             as intermediate by the pattern rule search algorithm and
+             file_exists_p cannot pick it up yet.  */
+          new->file->is_target = 1;
+
 	  file->also_make = new;
 	}
Index: trunk/src/gmake/job.c
===================================================================
--- trunk/src/gmake/job.c	(revision 466)
+++ trunk/src/gmake/job.c	(revision 503)
@@ -1,21 +1,19 @@
 /* Job execution and handling for GNU Make.
-Copyright (C) 1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1999,
-2000,2001,2002,2003,2004,2005 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -42,8 +40,10 @@
 /* Default shell to use.  */
 #ifdef WINDOWS32
+#include <windows.h>
 
 char *default_shell = "sh.exe";
 int no_default_sh_exe = 1;
 int batch_mode_shell = 1;
+HANDLE main_thread;
 
 #elif defined (_AMIGA)
@@ -107,4 +107,5 @@
 # include <starlet.h>
 # include <lib$routines.h>
+static void vmsWaitForChildren PARAMS ((int *));
 #endif
 
@@ -253,9 +254,10 @@
 }
 
-/* This function creates a temporary file name with the given extension
- * the unixy param controls both the extension and the path separator
- * return an xmalloc'ed string of a newly created temp file or die.  */
+/* This function creates a temporary file name with an extension specified
+ * by the unixy arg.
+ * Return an xmalloc'ed string of a newly created temp file and its
+ * file descriptor, or die.  */
 static char *
-create_batch_filename(char const *base, int unixy)
+create_batch_file (char const *base, int unixy, int *fd)
 {
   const char *const ext = unixy ? "sh" : "bat";
@@ -315,5 +317,5 @@
           char *const path = (char *) xmalloc (final_size);
           memcpy (path, temp_path, final_size);
-          CloseHandle (h);
+          *fd = _open_osfhandle ((long)h, 0);
           if (unixy)
             {
@@ -328,4 +330,5 @@
     }
 
+  *fd = -1;
   if (error == NULL)
     error = _("Cannot create a temporary file\n");
@@ -459,7 +462,9 @@
 reap_children (int block, int err)
 {
+#ifndef WINDOWS32
   WAIT_T status;
   /* Initially, assume we have some.  */
   int reap_more = 1;
+#endif
 
 #ifdef WAIT_NOHANG
@@ -486,4 +491,5 @@
       int child_failed;
       int any_remote, any_local;
+      int dontcare;
 #if defined(CONFIG_WITH_KMK_BUILTIN) || defined(MAKE_DLLSHELL)
       struct child *completed_child = 0;
@@ -492,7 +498,12 @@
       if (err && block)
 	{
-	  /* We might block for a while, so let the user know why.  */
+          static int printed = 0;
+
+	  /* We might block for a while, so let the user know why.
+             Only print this message once no matter how many jobs are left.  */
 	  fflush (stdout);
-	  error (NILF, _("*** Waiting for unfinished jobs...."));
+          if (!printed)
+            error (NILF, _("*** Waiting for unfinished jobs...."));
+          printed = 1;
 	}
 
@@ -565,5 +576,4 @@
 	    {
 #ifdef VMS
-              static void vmsWaitForChildren PARAMS ((int *));
 	      vmsWaitForChildren (&status);
 	      pid = c->pid;
@@ -640,8 +650,28 @@
           {
             HANDLE hPID;
-            int err;
+            int werr;
+            HANDLE hcTID, hcPID;
             exit_code = 0;
             exit_sig = 0;
             coredump = 0;
+
+            /* Record the thread ID of the main process, so that we
+               could suspend it in the signal handler.  */
+            if (!main_thread)
+              {
+                hcTID = GetCurrentThread ();
+                hcPID = GetCurrentProcess ();
+                if (!DuplicateHandle (hcPID, hcTID, hcPID, &main_thread, 0,
+                                      FALSE, DUPLICATE_SAME_ACCESS))
+                  {
+                    DWORD e = GetLastError ();
+                    fprintf (stderr,
+                             "Determine main thread ID (Error %ld: %s)\n",
+                             e, map_windows32_error_to_string(e));
+                  }
+                else
+                  DB (DB_VERBOSE, ("Main thread handle = 0x%08lx\n",
+                                   (unsigned long)main_thread));
+              }
 
             /* wait for anything to finish */
@@ -651,10 +681,10 @@
 
                 /* was an error found on this process? */
-                err = process_last_err(hPID);
+                werr = process_last_err(hPID);
 
                 /* get exit data */
                 exit_code = process_exit_code(hPID);
 
-                if (err)
+                if (werr)
                   fprintf(stderr, "make (e=%d): %s",
                           exit_code, map_windows32_error_to_string(exit_code));
@@ -719,4 +749,6 @@
         good_stdin_used = 0;
 
+      dontcare = c->dontcare;
+
       if (child_failed && !c->noerror && !ignore_errors_flag)
         {
@@ -724,5 +756,8 @@
              delete non-precious targets, and abort.  */
           static int delete_on_error = -1;
-          child_error (c->file->name, exit_code, exit_sig, coredump, 0);
+
+          if (!dontcare)
+            child_error (c->file->name, exit_code, exit_sig, coredump, 0);
+
           c->file->update_status = 2;
           if (delete_on_error == -1)
@@ -824,5 +859,5 @@
       /* If the job failed, and the -k flag was not given, die,
          unless we are already in the process of dying.  */
-      if (!err && child_failed && !keep_going_flag &&
+      if (!err && child_failed && !dontcare && !keep_going_flag &&
           /* fatal_error_signal will die with the right signal.  */
           !handling_fatal_signal)
@@ -966,5 +1001,5 @@
 start_job_command (struct child *child)
 {
-#ifndef _AMIGA
+#if !defined(_AMIGA) && !defined(WINDOWS32)
   static int bad_stdin = -1;
 #endif
@@ -987,5 +1022,5 @@
 
   p = child->command_ptr;
-  child->noerror = flags & COMMANDS_NOERROR;
+  child->noerror = ((flags & COMMANDS_NOERROR) != 0);
 
   while (*p != '\0')
@@ -1424,9 +1459,10 @@
         unblock_sigs();
         fprintf(stderr,
-          _("process_easy() failed failed to launch process (e=%d)\n"),
-          process_last_err(hPID));
-               for (i = 0; argv[i]; i++)
-                 fprintf(stderr, "%s ", argv[i]);
-               fprintf(stderr, _("\nCounted %d args in failed launch\n"), i);
+                _("process_easy() failed to launch process (e=%ld)\n"),
+                process_last_err(hPID));
+        for (i = 0; argv[i]; i++)
+          fprintf(stderr, "%s ", argv[i]);
+        fprintf(stderr, _("\nCounted %d args in failed launch\n"), i);
+        goto error;
       }
   }
@@ -1474,6 +1510,10 @@
   /* If we are running at least one job already and the load average
      is too high, make this one wait.  */
-  if (!c->remote && job_slots_used > 0 &&
-      (not_parallel || (c->file->command_flags & COMMANDS_NOTPARALLEL) || load_too_high ()))
+  if (!c->remote 
+      && ((job_slots_used > 0 && (not_parallel || (c->file->command_flags & COMMANDS_NOTPARALLEL) || load_too_high ()))
+#ifdef WINDOWS32
+	  || (process_used_slots () >= MAXIMUM_WAIT_OBJECTS)
+#endif
+	  ))
     {
       /* Put this child on the chain of children waiting for the load average
@@ -1667,4 +1707,8 @@
   c->command_lines = lines;
   c->sh_batch_file = NULL;
+
+  /* Cache dontcare flag because file->dontcare can be changed once we
+     return. Check dontcare inheritance mechanism for details.  */
+  c->dontcare = file->dontcare;
 
   /* Fetch the first command line to be run.  */
@@ -1864,4 +1908,10 @@
   time_t now;
 
+#ifdef WINDOWS32
+  /* sub_proc.c cannot wait for more than MAXIMUM_WAIT_OBJECTS children */
+  if (process_used_slots () >= MAXIMUM_WAIT_OBJECTS)
+    return 1;
+#endif
+
   if (max_load_average < 0)
     return 0;
@@ -2011,5 +2061,5 @@
 }
 
-#elif !defined (_AMIGA) && !defined (__MSDOS__)
+#elif !defined (_AMIGA) && !defined (__MSDOS__) && !defined (VMS)
 
 /* UNIX:
@@ -2032,5 +2082,5 @@
   exec_command (argv, envp);
 }
-#endif /* !AMIGA && !__MSDOS__ */
+#endif /* !AMIGA && !__MSDOS__ && !VMS */
 #endif /* !WINDOWS32 */
 
@@ -2195,5 +2245,5 @@
       int i;
       fprintf(stderr,
-              _("process_easy() failed failed to launch process (e=%d)\n"),
+              _("process_easy() failed failed to launch process (e=%ld)\n"),
               process_last_err(hPID));
       for (i = 0; argv[i]; i++)
@@ -2225,6 +2275,6 @@
       else
           fprintf(stderr,
-                  _("make reaped child pid %d, still waiting for pid %d\n"),
-                  hWaitPID, hPID);
+                  _("make reaped child pid %ld, still waiting for pid %ld\n"),
+                  (DWORD)hWaitPID, (DWORD)hPID);
     }
 
@@ -2497,8 +2547,9 @@
   int instring, word_has_equals, seen_nonequals, last_argument_was_empty;
   char **new_argv = 0;
+  char *argstr = 0;
 #ifdef WINDOWS32
   int slow_flag = 0;
 
-  if (no_default_sh_exe) {
+  if (!unixy_shell) {
     sh_cmds = sh_cmds_dos;
     sh_chars = sh_chars_dos;
@@ -2589,5 +2640,5 @@
 
   /* All the args can fit in a buffer as big as LINE is.   */
-  ap = new_argv[0] = (char *) xmalloc (i);
+  ap = new_argv[0] = argstr = (char *) xmalloc (i);
   end = ap + i;
 
@@ -2597,10 +2648,8 @@
   for (p = line; *p != '\0'; ++p)
     {
-      if (ap > end)
-	abort ();
+      assert (ap <= end);
 
       if (instring)
 	{
-	string_char:
 	  /* Inside a string, just copy any char except a closing quote
 	     or a backslash-newline combination.  */
@@ -2612,5 +2661,26 @@
 	    }
 	  else if (*p == '\\' && p[1] == '\n')
-	    goto swallow_escaped_newline;
+            {
+              /* Backslash-newline is handled differently depending on what
+                 kind of string we're in: inside single-quoted strings you
+                 keep them; in double-quoted strings they disappear.
+	         For DOS/Windows/OS2, if we don't have a POSIX shell,
+		 we keep the pre-POSIX behavior of removing the
+		 backslash-newline.  */
+              if (instring == '"'
+#if defined (__MSDOS__) || defined (__EMX__) || defined (WINDOWS32)
+		  || !unixy_shell
+#endif
+		  )
+                ++p;
+              else
+                {
+                  *(ap++) = *(p++);
+                  *(ap++) = *p;
+                }
+              /* If there's a TAB here, skip it.  */
+              if (p[1] == '\t')
+                ++p;
+            }
 	  else if (*p == '\n' && restp != NULL)
 	    {
@@ -2652,45 +2722,28 @@
 
 	  case '\\':
-	    /* Backslash-newline combinations are eaten.  */
+	    /* Backslash-newline has special case handling, ref POSIX.
+               We're in the fastpath, so emulate what the shell would do.  */
 	    if (p[1] == '\n')
 	      {
-	      swallow_escaped_newline:
-
-		/* Eat the backslash, the newline, and following whitespace,
-		   replacing it all with a single space.  */
-		p += 2;
-
-		/* If there is a tab after a backslash-newline,
-		   remove it from the source line which will be echoed,
-		   since it was most likely used to line
-		   up the continued line with the previous one.  */
-		if (*p == '\t')
-                  /* Note these overlap and strcpy() is undefined for
-                     overlapping objects in ANSI C.  The strlen() _IS_ right,
-                     since we need to copy the nul byte too.  */
-		  bcopy (p + 1, p, strlen (p));
-
-		if (instring)
-		  goto string_char;
-		else
-		  {
-		    if (ap != new_argv[i])
-		      /* Treat this as a space, ending the arg.
-			 But if it's at the beginning of the arg, it should
-			 just get eaten, rather than becoming an empty arg. */
-		      goto end_of_arg;
-		    else
-		      p = next_token (p) - 1;
-		  }
+		/* Throw out the backslash and newline.  */
+                ++p;
+
+		/* If there is a tab after a backslash-newline, remove it.  */
+		if (p[1] == '\t')
+                  ++p;
+
+                /* If there's nothing in this argument yet, skip any
+                   whitespace before the start of the next word.  */
+                if (ap == new_argv[i])
+                  p = next_token (p + 1) - 1;
 	      }
 	    else if (p[1] != '\0')
               {
 #ifdef HAVE_DOS_PATHS
-                /* Only remove backslashes before characters special
-                   to Unixy shells.  All other backslashes are copied
-                   verbatim, since they are probably DOS-style
-                   directory separators.  This still leaves a small
-                   window for problems, but at least it should work
-                   for the vast majority of naive users.  */
+                /* Only remove backslashes before characters special to Unixy
+                   shells.  All other backslashes are copied verbatim, since
+                   they are probably DOS-style directory separators.  This
+                   still leaves a small window for problems, but at least it
+                   should work for the vast majority of naive users.  */
 
 #ifdef __MSDOS__
@@ -2707,5 +2760,5 @@
                   if (p[1] != '\\' && p[1] != '\''
                       && !isspace ((unsigned char)p[1])
-                      && (strchr (sh_chars_sh, p[1]) == 0))
+                      && strchr (sh_chars_sh, p[1]) == 0)
                     /* back up one notch, to copy the backslash */
                     --p;
@@ -2736,5 +2789,4 @@
 	  case ' ':
 	  case '\t':
-	  end_of_arg:
 	    /* We have the end of an argument.
 	       Terminate the text of the argument.  */
@@ -2772,7 +2824,5 @@
 
 	    /* Ignore multiple whitespace chars.  */
-	    p = next_token (p);
-	    /* Next iteration should examine the first nonwhite char.  */
-	    --p;
+	    p = next_token (p) - 1;
 	    break;
 
@@ -2804,6 +2854,10 @@
 
   if (new_argv[0] == 0)
-    /* Line was empty.  */
-    return 0;
+    {
+      /* Line was empty.  */
+      free (argstr);
+      free ((char *)new_argv);
+      return 0;
+    }
 
   return new_argv;
@@ -2815,6 +2869,6 @@
     {
       /* Free the old argument list we were working on.  */
-      free (new_argv[0]);
-      free ((void *)new_argv);
+      free (argstr);
+      free ((char *)new_argv);
     }
 
@@ -2906,21 +2960,24 @@
 	else if (*p == '\\' && p[1] == '\n')
 	  {
-	    /* Eat the backslash, the newline, and following whitespace,
-	       replacing it all with a single space (which is escaped
-	       from the shell).  */
-	    p += 2;
-
-	    /* If there is a tab after a backslash-newline,
-	       remove it from the source line which will be echoed,
-	       since it was most likely used to line
-	       up the continued line with the previous one.  */
-	    if (*p == '\t')
-	      bcopy (p + 1, p, strlen (p));
-
-	    p = next_token (p);
-	    --p;
-            if (unixy_shell && !batch_mode_shell)
-              *ap++ = '\\';
-	    *ap++ = ' ';
+	    /* POSIX says we keep the backslash-newline, but throw out
+               the next char if it's a TAB.  If we don't have a POSIX
+               shell on DOS/Windows/OS2, mimic the pre-POSIX behavior
+               and remove the backslash/newline.  */
+#if defined (__MSDOS__) || defined (__EMX__) || defined (WINDOWS32)
+# define PRESERVE_BSNL  unixy_shell
+#else
+# define PRESERVE_BSNL  1
+#endif
+	    if (PRESERVE_BSNL)
+	      {
+		*(ap++) = '\\';
+		*(ap++) = '\\';
+		*(ap++) = '\n';
+	      }
+
+	    ++p;
+	    if (p[1] == '\t')
+	      ++p;
+
 	    continue;
 	  }
@@ -2952,5 +3009,12 @@
        command line (e.g. Cygnus GNUWIN32 sh.exe on WIN32 systems).  In these
        cases, run commands via a script file.  */
-    if ((no_default_sh_exe || batch_mode_shell) && batch_filename_ptr) {
+    if (just_print_flag) {
+      /* Need to allocate new_argv, although it's unused, because
+        start_job_command will want to free it and its 0'th element.  */
+      new_argv = (char **) xmalloc(2 * sizeof (char *));
+      new_argv[0] = xstrdup ("");
+      new_argv[1] = NULL;
+    } else if ((no_default_sh_exe || batch_mode_shell) && batch_filename_ptr) {
+      int temp_fd;
       FILE* batch = NULL;
       int id = GetCurrentProcessId();
@@ -2959,11 +3023,13 @@
       /* create a file name */
       sprintf(fbuf, "make%d", id);
-      *batch_filename_ptr = create_batch_filename (fbuf, unixy_shell);
+      *batch_filename_ptr = create_batch_file (fbuf, unixy_shell, &temp_fd);
 
       DB (DB_JOBS, (_("Creating temporary batch file %s\n"),
                     *batch_filename_ptr));
 
-      /* create batch file to execute command */
-      batch = fopen (*batch_filename_ptr, "w");
+      /* Create a FILE object for the batch file, and write to it the
+	 commands to be executed.  Put the batch file in TEXT mode.  */
+      _setmode (temp_fd, _O_TEXT);
+      batch = _fdopen (temp_fd, "wt");
       if (!unixy_shell)
         fputs ("@echo off\n", batch);
Index: trunk/src/gmake/job.h
===================================================================
--- trunk/src/gmake/job.h	(revision 466)
+++ trunk/src/gmake/job.h	(revision 503)
@@ -1,20 +1,18 @@
 /* Definitions for managing subprocesses in GNU Make.
-Copyright (C) 1992, 1993, 1996, 1999 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #ifndef SEEN_JOB_H
@@ -71,4 +69,5 @@
     unsigned int good_stdin:1;	/* Nonzero if this child has a good stdin.  */
     unsigned int deleted:1;	/* Nonzero if targets have been deleted.  */
+    unsigned int dontcare:1;    /* Saved dontcare flag.  */
   };
 
Index: trunk/src/gmake/main.c
===================================================================
--- trunk/src/gmake/main.c	(revision 466)
+++ trunk/src/gmake/main.c	(revision 503)
@@ -1,21 +1,19 @@
 /* Argument parsing and main program of GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1994, 1995, 1996, 1997, 1998, 1999,
-2002, 2003, 2005 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -84,4 +82,5 @@
 #endif
 
+static void clean_jobserver PARAMS ((int status));
 static void print_data_base PARAMS ((void));
 static void print_version PARAMS ((void));
@@ -273,4 +272,5 @@
    they appear out of date or not.  */
 
+static int always_make_set = 0;
 int always_make_flag = 0;
 
@@ -365,5 +365,5 @@
   {
     { 'b', ignore, 0, 0, 0, 0, 0, 0, 0 },
-    { 'B', flag, (char *) &always_make_flag, 1, 1, 0, 0, 0, "always-make" },
+    { 'B', flag, (char *) &always_make_set, 1, 1, 0, 0, 0, "always-make" },
     { 'C', string, (char *) &directories, 0, 0, 0, 0, 0, "directory" },
     { 'd', flag, (char *) &debug_flag, 1, 1, 0, 0, 0, 0 },
@@ -419,5 +419,5 @@
     { CHAR_MAX+4, flag, (char *) &warn_undefined_variables_flag, 1, 1, 0, 0, 0,
       "warn-undefined-variables" },
-    { 0 }
+    { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
   };
 
@@ -488,4 +488,9 @@
 
 int posix_pedantic;
+
+/* Nonzero if we have seen the '.SECONDEXPANSION' target.
+   This turns on secondary expansion of prerequisites.  */
+
+int second_expansion;
 
 /* Negative if we have seen the `.NOTPARALLEL' target with empty dependency list.
@@ -538,4 +543,5 @@
 {
   init_hash_global_variable_set ();
+  strcache_init ();
   init_hash_files ();
   hash_init_directories ();
@@ -671,6 +677,6 @@
     {
       sprintf(errmsg,
-              _("%s: Interrupt/Exception caught (code = 0x%x, addr = 0x%x)\n"),
-              prg, exrec->ExceptionCode, exrec->ExceptionAddress);
+              _("%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"),
+              prg, exrec->ExceptionCode, (DWORD)exrec->ExceptionAddress);
       fprintf(stderr, errmsg);
       exit(255);
@@ -678,7 +684,7 @@
 
   sprintf(errmsg,
-          _("\nUnhandled exception filter called from program %s\nExceptionCode = %x\nExceptionFlags = %x\nExceptionAddress = %x\n"),
+          _("\nUnhandled exception filter called from program %s\nExceptionCode = %lx\nExceptionFlags = %lx\nExceptionAddress = %lx\n"),
           prg, exrec->ExceptionCode, exrec->ExceptionFlags,
-          exrec->ExceptionAddress);
+          (DWORD)exrec->ExceptionAddress);
 
   if (exrec->ExceptionCode == EXCEPTION_ACCESS_VIOLATION
@@ -686,6 +692,6 @@
     sprintf(&errmsg[strlen(errmsg)],
             (exrec->ExceptionInformation[0]
-             ? _("Access violation: write operation at address %x\n")
-             : _("Access violation: read operation at address %x\n")),
+             ? _("Access violation: write operation at address %lx\n")
+             : _("Access violation: read operation at address %lx\n")),
             exrec->ExceptionInformation[1]);
 
@@ -760,5 +766,9 @@
     batch_mode_shell = 1;
     unixy_shell = 0;
-    sh_found = 0;
+    sprintf (sh_path, "%s", search_token);
+    default_shell = xstrdup (w32ify (sh_path, 0));
+    DB (DB_VERBOSE,
+        (_("find_and_set_shell setting default_shell = %s\n"), default_shell));
+    sh_found = 1;
   } else if (!no_default_sh_exe &&
              (token == NULL || !strcmp (search_token, default_shell))) {
@@ -774,5 +784,5 @@
   } else {
     char *p;
-    struct variable *v = lookup_variable ("PATH", 4);
+    struct variable *v = lookup_variable (STRING_SIZE_TUPLE ("PATH"));
 
     /* Search Path for shell */
@@ -847,5 +857,7 @@
 open_tmpfile(char **name, const char *template)
 {
+#ifdef HAVE_FDOPEN
   int fd;
+#endif
 
 #if defined HAVE_MKSTEMP || defined HAVE_MKTEMP
@@ -899,4 +911,5 @@
   struct dep *read_makefiles;
   PATH_VAR (current_directory);
+  unsigned int restarts = 0;
 #ifdef WINDOWS32
   char *unix_path = NULL;
@@ -922,4 +935,8 @@
       }
   }
+#endif
+
+#ifdef HAVE_ATEXIT
+  atexit (close_stdout);
 #endif
 
@@ -1052,15 +1069,11 @@
           /* Extract program from full path */
           int argv0_len;
-          char *p = strrchr (argv[0], '\\');
-          if (!p)
-            p = argv[0];
-          argv0_len = strlen(p);
-          if (argv0_len > 4
-              && streq (&p[argv0_len - 4], ".exe"))
+          program = strrchr (argv[0], '\\');
+          if (program)
             {
-              /* Remove .exe extension */
-              p[argv0_len - 4] = '\0';
-              /* Increment past the initial '\' */
-              program = p + 1;
+              argv0_len = strlen(program);
+              if (argv0_len > 4 && streq (&program[argv0_len - 4], ".exe"))
+                /* Remove .exe extension */
+                program[argv0_len - 4] = '\0';
             }
         }
@@ -1106,6 +1119,10 @@
   /* Set up .FEATURES */
   define_variable (".FEATURES", 9,
-                   "target-specific order-only second-expansion",
+                   "target-specific order-only second-expansion else-if",
                    o_default, 0);
+#ifndef NO_ARCHIVES
+  do_variable_definition (NILF, ".FEATURES", "archives",
+                          o_default, f_append, 0);
+#endif
 #ifdef MAKE_JOBSERVER
   do_variable_definition (NILF, ".FEATURES", "jobserver",
@@ -1155,7 +1172,6 @@
 
           /* Another wrinkle is that POSIX says the value of SHELL set in the
-             makefile should not change the value of SHELL given to
-             subprocesses, which seems silly to me but...  */
-          if (strncmp (envp[i], "SHELL=", 6) == 0)
+             makefile won't change the value of SHELL given to subprocesses  */
+          if (streq (v->name, "SHELL"))
             {
 #ifndef __MSDOS__
@@ -1164,4 +1180,11 @@
               shell_var.name = "SHELL";
               shell_var.value = xstrdup (ep + 1);
+            }
+
+          /* If MAKE_RESTARTS is set, remember it but don't export it.  */
+          if (streq (v->name, "MAKE_RESTARTS"))
+            {
+              v->export = v_noexport;
+              restarts = (unsigned int) atoi (ep + 1);
             }
         }
@@ -1209,15 +1232,15 @@
   /* Decode the switches.  */
 
-  decode_env_switches ("MAKEFLAGS", 9);
+  decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS"));
 #if 0
   /* People write things like:
      	MFLAGS="CC=gcc -pipe" "CFLAGS=-g"
      and we set the -p, -i and -e switches.  Doesn't seem quite right.  */
-  decode_env_switches ("MFLAGS", 6);
+  decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
 #endif
   decode_switches (argc, argv, 0);
 #ifdef WINDOWS32
   if (suspend_flag) {
-        fprintf(stderr, "%s (pid = %d)\n", argv[0], GetCurrentProcessId());
+        fprintf(stderr, "%s (pid = %ld)\n", argv[0], GetCurrentProcessId());
         fprintf(stderr, _("%s is suspending for 30 seconds..."), argv[0]);
         Sleep(30 * 1000);
@@ -1228,12 +1251,16 @@
   decode_debug_flags ();
 
+  /* Set always_make_flag if -B was given and we've not restarted already.  */
+  always_make_flag = always_make_set && (restarts == 0);
+
   /* Print version information.  */
-
   if (print_version_flag || print_data_base_flag || db_level)
-    print_version ();
-
-  /* `make --version' is supposed to just print the version and exit.  */
-  if (print_version_flag)
-    die (0);
+    {
+      print_version ();
+
+      /* `make --version' is supposed to just print the version and exit.  */
+      if (print_version_flag)
+        die (0);
+    }
 
 #ifndef VMS
@@ -1382,5 +1409,5 @@
   /* Figure out the level of recursion.  */
   {
-    struct variable *v = lookup_variable (MAKELEVEL_NAME, MAKELEVEL_LENGTH);
+    struct variable *v = lookup_variable (STRING_SIZE_TUPLE (MAKELEVEL_NAME));
     if (v != 0 && v->value[0] != '\0' && v->value[0] != '-')
       makelevel = (unsigned int) atoi (v->value);
@@ -1429,5 +1456,5 @@
     }
 
-  (void) define_variable ("CURDIR", 6, current_directory, o_default, 0);
+  (void) define_variable ("CURDIR", 6, current_directory, o_file, 0);
 
   /* Read any stdin makefiles into temporary files.  */
@@ -1582,10 +1609,4 @@
   if (no_default_sh_exe)
     no_default_sh_exe = !find_and_set_default_shell(NULL);
-
-  if (no_default_sh_exe && job_slots != 1) {
-    error (NILF, _("Do not specify -j or --jobs if sh.exe is not available."));
-    error (NILF, _("Resetting make for single job mode."));
-    job_slots = 1;
-  }
 #endif /* WINDOWS32 */
 
@@ -1594,5 +1615,5 @@
   {
     extern int _is_unixy_shell (const char *_path);
-    struct variable *shv = lookup_variable ("SHELL", 5);
+    struct variable *shv = lookup_variable (STRING_SIZE_TUPLE ("SHELL"));
     extern int unixy_shell;
     extern char *default_shell;
@@ -1613,7 +1634,7 @@
 
   /* Decode switches again, in case the variables were set by the makefile.  */
-  decode_env_switches ("MAKEFLAGS", 9);
+  decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS"));
 #if 0
-  decode_env_switches ("MFLAGS", 6);
+  decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
 #endif
 
@@ -1766,7 +1787,7 @@
   build_vpath_lists ();
 
-  /* Mark files given with -o flags as very old
-     and as having been updated already, and files given with -W flags as
-     brand new (time-stamp as far as possible into the future).  */
+  /* Mark files given with -o flags as very old and as having been updated
+     already, and files given with -W flags as brand new (time-stamp as far
+     as possible into the future).  If restarts is set we'll do -W later.  */
 
   if (old_files != 0)
@@ -1780,5 +1801,5 @@
       }
 
-  if (new_files != 0)
+  if (!restarts && new_files != 0)
     {
       for (p = new_files->list; *p != 0; ++p)
@@ -1840,5 +1861,5 @@
 
 		      /* Free the storage.  */
-		      free ((char *) d);
+                      free_dep (d);
 
 		      d = last == 0 ? read_makefiles : last->next;
@@ -1959,4 +1980,6 @@
 	  log_working_directory (0);
 
+          clean_jobserver (0);
+
 	  if (makefiles != 0)
 	    {
@@ -2003,41 +2026,58 @@
 	    }
 
-#ifndef _AMIGA
-	  for (p = environ; *p != 0; ++p)
-	    if (strneq (*p, MAKELEVEL_NAME, MAKELEVEL_LENGTH)
-		&& (*p)[MAKELEVEL_LENGTH] == '=')
-	      {
-		/* The SGI compiler apparently can't understand
-		   the concept of storing the result of a function
-		   in something other than a local variable.  */
-		char *sgi_loses;
-		sgi_loses = (char *) alloca (40);
-		*p = sgi_loses;
-		sprintf (*p, "%s=%u", MAKELEVEL_NAME, makelevel);
-		break;
-	      }
-#else /* AMIGA */
-	  {
-	    char buffer[256];
-	    int len;
-
-	    len = GetVar (MAKELEVEL_NAME, buffer, sizeof (buffer), GVF_GLOBAL_ONLY);
-
-	    if (len != -1)
-	    {
-	    sprintf (buffer, "%u", makelevel);
-	      SetVar (MAKELEVEL_NAME, buffer, -1, GVF_GLOBAL_ONLY);
-	    }
-	  }
-#endif
+          ++restarts;
 
 	  if (ISDB (DB_BASIC))
 	    {
 	      char **p;
-	      fputs (_("Re-executing:"), stdout);
+	      printf (_("Re-executing[%u]:"), restarts);
 	      for (p = nargv; *p != 0; ++p)
 		printf (" %s", *p);
 	      putchar ('\n');
 	    }
+
+#ifndef _AMIGA
+	  for (p = environ; *p != 0; ++p)
+            {
+              if (strneq (*p, MAKELEVEL_NAME, MAKELEVEL_LENGTH)
+                  && (*p)[MAKELEVEL_LENGTH] == '=')
+                {
+                  /* The SGI compiler apparently can't understand
+                     the concept of storing the result of a function
+                     in something other than a local variable.  */
+                  char *sgi_loses;
+                  sgi_loses = (char *) alloca (40);
+                  *p = sgi_loses;
+                  sprintf (*p, "%s=%u", MAKELEVEL_NAME, makelevel);
+                }
+              if (strneq (*p, "MAKE_RESTARTS=", 14))
+                {
+                  char *sgi_loses;
+                  sgi_loses = (char *) alloca (40);
+                  *p = sgi_loses;
+                  sprintf (*p, "MAKE_RESTARTS=%u", restarts);
+                  restarts = 0;
+                }
+            }
+#else /* AMIGA */
+	  {
+	    char buffer[256];
+
+            sprintf (buffer, "%u", makelevel);
+            SetVar (MAKELEVEL_NAME, buffer, -1, GVF_GLOBAL_ONLY);
+
+            sprintf (buffer, "%u", restarts);
+            SetVar ("MAKE_RESTARTS", buffer, -1, GVF_GLOBAL_ONLY);
+            restarts = 0;
+	  }
+#endif
+
+          /* If we didn't set the restarts variable yet, add it.  */
+          if (restarts)
+            {
+              char *b = alloca (40);
+              sprintf (b, "MAKE_RESTARTS=%u", restarts);
+              putenv (b);
+            }
 
 	  fflush (stdout);
@@ -2091,4 +2131,17 @@
   define_makeflags (1, 0);
 
+  /* Set always_make_flag if -B was given.  */
+  always_make_flag = always_make_set;
+
+  /* If restarts is set we haven't set up -W files yet, so do that now.  */
+  if (restarts && new_files != 0)
+    {
+      for (p = new_files->list; *p != 0; ++p)
+	{
+	  f = enter_command_line_file (*p);
+	  f->last_mtime = f->mtime_before_update = NEW_MTIME;
+	}
+    }
+
   /* If there is a temp file from reading a makefile from stdin, get rid of
      it now.  */
@@ -2132,9 +2185,5 @@
               }
 
-            goals = (struct dep *) xmalloc (sizeof (struct dep));
-            goals->next = 0;
-            goals->name = 0;
-            goals->ignore_mtime = 0;
-            goals->need_2nd_expansion = 0;
+            goals = alloc_dep ();
             goals->file = default_goal_file;
           }
@@ -2186,4 +2235,5 @@
   }
 
+  /* NOTREACHED */
   return 0;
 }
@@ -2292,16 +2342,14 @@
       if (goals == 0)
 	{
-	  goals = (struct dep *) xmalloc (sizeof (struct dep));
+	  goals = alloc_dep ();
 	  lastgoal = goals;
 	}
       else
 	{
-	  lastgoal->next = (struct dep *) xmalloc (sizeof (struct dep));
+	  lastgoal->next = alloc_dep ();
 	  lastgoal = lastgoal->next;
 	}
-      lastgoal->name = 0;
+
       lastgoal->file = f;
-      lastgoal->ignore_mtime = 0;
-      lastgoal->need_2nd_expansion = 0;
 
       {
@@ -2310,5 +2358,5 @@
         char *value;
 
-        v = lookup_variable ("MAKECMDGOALS", 12);
+        v = lookup_variable (STRING_SIZE_TUPLE ("MAKECMDGOALS"));
         if (v == 0)
           value = f->name;
@@ -2903,5 +2951,5 @@
 
   printf ("%sGNU Make %s\n\
-%sCopyright (C) 2003  Free Software Foundation, Inc.\n",
+%sCopyright (C) 2006  Free Software Foundation, Inc.\n",
           precede, version_string, precede);
 
@@ -2927,5 +2975,5 @@
 
 static void
-print_data_base (void)
+print_data_base ()
 {
   time_t when;
@@ -2939,7 +2987,58 @@
   print_file_data_base ();
   print_vpath_data_base ();
+  strcache_print_stats ("#");
 
   when = time ((time_t *) 0);
   printf (_("\n# Finished Make data base on %s\n"), ctime (&when));
+}
+
+static void
+clean_jobserver (int status)
+{
+  char token = '+';
+
+  /* Sanity: have we written all our jobserver tokens back?  If our
+     exit status is 2 that means some kind of syntax error; we might not
+     have written all our tokens so do that now.  If tokens are left
+     after any other error code, that's bad.  */
+
+  if (job_fds[0] != -1 && jobserver_tokens)
+    {
+      if (status != 2)
+        error (NILF,
+               "INTERNAL: Exiting with %u jobserver tokens (should be 0)!",
+               jobserver_tokens);
+      else
+        while (jobserver_tokens--)
+          {
+            int r;
+
+            EINTRLOOP (r, write (job_fds[1], &token, 1));
+            if (r != 1)
+              perror_with_name ("write", "");
+          }
+    }
+
+
+  /* Sanity: If we're the master, were all the tokens written back?  */
+
+  if (master_job_slots)
+    {
+      /* We didn't write one for ourself, so start at 1.  */
+      unsigned int tcnt = 1;
+
+      /* Close the write side, so the read() won't hang.  */
+      close (job_fds[1]);
+
+      while (read (job_fds[0], &token, 1) == 1)
+        ++tcnt;
+
+      if (tcnt != master_job_slots)
+        error (NILF,
+               "INTERNAL: Exiting with %u jobserver tokens available; should be %u!",
+               tcnt, master_job_slots);
+
+      close (job_fds[0]);
+    }
 }
 
@@ -2954,5 +3053,4 @@
   if (!dying)
     {
-      char token = '+';
       int err;
 
@@ -2963,5 +3061,6 @@
 
       /* Wait for children to die.  */
-      for (err = (status != 0); job_slots_used > 0; err = 0)
+      err = (status != 0);
+      while (job_slots_used > 0)
 	reap_children (1, err);
 
@@ -2975,45 +3074,5 @@
 	print_data_base ();
 
-      /* Sanity: have we written all our jobserver tokens back?  If our
-         exit status is 2 that means some kind of syntax error; we might not
-         have written all our tokens so do that now.  If tokens are left
-         after any other error code, that's bad.  */
-
-      if (job_fds[0] != -1 && jobserver_tokens)
-        {
-          if (status != 2)
-            error (NILF,
-                   "INTERNAL: Exiting with %u jobserver tokens (should be 0)!",
-                   jobserver_tokens);
-          else
-            while (jobserver_tokens--)
-              {
-                int r;
-
-                EINTRLOOP (r, write (job_fds[1], &token, 1));
-                if (r != 1)
-                  perror_with_name ("write", "");
-              }
-        }
-
-
-      /* Sanity: If we're the master, were all the tokens written back?  */
-
-      if (master_job_slots)
-        {
-          /* We didn't write one for ourself, so start at 1.  */
-          unsigned int tcnt = 1;
-
-          /* Close the write side, so the read() won't hang.  */
-          close (job_fds[1]);
-
-          while ((err = read (job_fds[0], &token, 1)) == 1)
-            ++tcnt;
-
-          if (tcnt != master_job_slots)
-            error (NILF,
-                   "INTERNAL: Exiting with %u jobserver tokens available; should be %u!",
-                   tcnt, master_job_slots);
-        }
+      clean_jobserver (status);
 
       /* Try to move back to the original directory.  This is essential on
Index: trunk/src/gmake/make.1
===================================================================
--- trunk/src/gmake/make.1	(revision 466)
+++ trunk/src/gmake/make.1	(revision 503)
@@ -1,3 +1,3 @@
-.TH MAKE 1L "22 August 1989" "GNU" "LOCAL USER COMMANDS"
+.TH MAKE 1 "22 August 1989" "GNU" "LOCAL USER COMMANDS"
 .SH NAME
 make \- GNU make utility to maintain groups of programs
@@ -7,14 +7,13 @@
 .B \-f
 .I makefile
-] [ option ] ...
-target ...
+] [ options ] ... [ targets ] ...
 .SH WARNING
-This man page is an extract of the documentation of
-.I GNU make .
+This man page is an extract of the documentation of GNU
+.IR make .
 It is updated only occasionally, because the GNU project does not use nroff.
 For complete, current documentation, refer to the Info file
 .B make.info
 which is made from the Texinfo source file
-.BR make.texinfo .
+.BR make.texi .
 .SH DESCRIPTION
 .LP
@@ -26,5 +25,6 @@
 The manual describes the GNU implementation of
 .IR make ,
-which was written by Richard Stallman and Roland McGrath.
+which was written by Richard Stallman and Roland McGrath, and is
+currently maintained by Paul Smith.
 Our examples show C programs, since they are most common, but you can use
 .I make
@@ -107,11 +107,12 @@
 .sp 1
 .TP 0.5i
-.B \-b
-.TP 0.5i
-.B \-m
+.BR \-b , " \-m"
 These options are ignored for compatibility with other versions of
 .IR make .
 .TP 0.5i
-.BI "\-C " dir
+.BR \-B , " \-\-always\-make"
+Unconditionally make all targets.
+.TP 0.5i
+\fB\-C\fR \fIdir\fR, \fB\-\-directory\fR=\fIdir\fR
 Change to directory
 .I dir
@@ -137,17 +138,40 @@
 decides what to do.
 .TP 0.5i
-.B \-e
+.BI \-\-debug "[=FLAGS]"
+Print debugging information in addition to normal processing.
+If the
+.I FLAGS
+are omitted, then the behavior is the same as if
+.B \-d
+was specified.
+.I FLAGS
+may be
+.I a
+for all debugging output (same as using
+.BR \-d ),
+.I b
+for basic debugging,
+.I v
+for more verbose basic debugging,
+.I i
+for showing implicit rules,
+.I j
+for details on invocation of commands, and
+.I m
+for debugging while remaking makefiles.
+.TP 0.5i
+.BR \-e , " \-\-environment\-overrides"
 Give variables taken from the environment precedence
 over variables from makefiles.
 .TP 0.5i
-.BI "\-f " file
++\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
 Use
 .I file
 as a makefile.
 .TP 0.5i
-.B \-i
+.BR \-i , " \-\-ignore\-errors"
 Ignore all errors in commands executed to remake files.
 .TP 0.5i
-.BI "\-I " dir
+\fB\-I\fR \fIdir\fR, \fB\-\-include\-dir\fR=\fIdir\fR
 Specifies a directory
 .I dir
@@ -170,6 +194,8 @@
 flag.
 .TP 0.5i
-.BI "\-j " jobs
-Specifies the number of jobs (commands) to run simultaneously.
+\fB\-j\fR [\fIjobs\fR], \fB\-\-jobs\fR[=\fIjobs\fR]
+Specifies the number of
+.I jobs
+(commands) to run simultaneously.
 If there is more than one
 .B \-j
@@ -181,5 +207,5 @@
 will not limit the number of jobs that can run simultaneously.
 .TP 0.5i
-.B \-k
+.BR \-k , " \-\-keep\-going"
 Continue as much as possible after an error.
 While the target that failed, and those that depend on it, cannot
@@ -187,7 +213,5 @@
 all the same.
 .TP 0.5i
-.B \-l
-.TP 0.5i
-.BI "\-l " load
+\fB\-l\fR [\fIload\fR], \fB\-\-load\-average\fR[=\fIload\fR]
 Specifies that no new jobs (commands) should be started if there are
 others jobs running and the load average is at least
@@ -196,8 +220,11 @@
 With no argument, removes a previous load limit.
 .TP 0.5i
-.B \-n
+.BR \-L , " \-\-check\-symlink\-times"
+Use the latest mtime between symlinks and target.
+.TP 0.5i
+.BR \-n , " \-\-just\-print" , " \-\-dry\-run" , " \-\-recon"
 Print the commands that would be executed, but do not execute them.
 .TP 0.5i
-.BI "\-o " file
+\fB\-o\fR \fIfile\fR, \fB\-\-old\-file\fR=\fIfile\fR, \fB\-\-assume\-old\fR=\fIfile\fR
 Do not remake the file
 .I file
@@ -207,5 +234,5 @@
 Essentially the file is treated as very old and its rules are ignored.
 .TP 0.5i
-.B \-p
+.BR \-p , " \-\-print\-data\-base"
 Print the data base (rules and variable values) that results from
 reading the makefiles; then execute as usual or as otherwise
@@ -219,5 +246,5 @@
 .BI \-f /dev/null.
 .TP 0.5i
-.B \-q
+.BR \-q , " \-\-question"
 ``Question mode''.
 Do not run any commands, or print anything; just return an exit status
@@ -225,12 +252,15 @@
 otherwise.
 .TP 0.5i
-.B \-r
-Eliminate use of the built-in implicit rules.
+.BR \-r , " \-\-no\-builtin\-rules"
+Eliminate use of the built\-in implicit rules.
 Also clear out the default list of suffixes for suffix rules.
 .TP 0.5i
-.B \-s
+.BR \-R , " \-\-no\-builtin\-variables"
+Don't define any built\-in variables.
+.TP 0.5i
+.BR \-s , " \-\-silent" , " \-\-quiet"
 Silent operation; do not print the commands as they are executed.
 .TP 0.5i
-.B \-S
+.BR \-S , " \-\-no\-keep\-going" , " \-\-stop"
 Cancel the effect of the
 .B \-k
@@ -246,5 +276,5 @@
 in MAKEFLAGS in your environment.
 .TP 0.5i
-.B \-t
+.BR \-t , " \-\-touch"
 Touch files (mark them up to date without really changing them)
 instead of running their commands.
@@ -253,5 +283,5 @@
 .IR make .
 .TP 0.5i
-.B \-v
+.BR \-v , " \-\-version"
 Print the version of the
 .I make
@@ -259,5 +289,5 @@
 is no warranty.
 .TP 0.5i
-.B \-w
+.BR \-w , " \-\-print\-directory"
 Print a message containing the working directory
 before and after other processing.
@@ -267,5 +297,10 @@
 commands.
 .TP 0.5i
-.BI "\-W " file
+.B \-\-no\-print\-directory
+Turn off
+.BR \-w ,
+even if it was turned on implicitly.
+.TP 0.5i
+\fB\-W\fR \fIfile\fR, \fB\-\-what\-if\fR=\fIfile\fR, \fB\-\-new\-file\fR=\fIfile\fR, \fB\-\-assume\-new\fR=\fIfile\fR
 Pretend that the target
 .I file
@@ -282,10 +317,49 @@
 except that the modification time is changed only in the imagination of
 .IR make .
+.TP 0.5i
+.B \-\-warn\-undefined\-variables
+Warn when an undefined variable is referenced.
+.SH "EXIT STATUS"
+GNU
+.I make
+exits with a status of zero if all makefiles were successfully parsed
+and no targets that were built failed.  A status of one will be returned
+if the
+.B \-q
+flag was used and
+.I make
+determines that a target needs to be rebuilt.  A status of two will be
+returned if any errors were encountered.
 .SH "SEE ALSO"
 .I "The GNU Make Manual"
 .SH BUGS
 See the chapter `Problems and Bugs' in
-.I "The GNU Make Manual" .
+.IR "The GNU Make Manual" .
 .SH AUTHOR
 This manual page contributed by Dennis Morse of Stanford University.
-It has been reworked by Roland McGrath.
+It has been reworked by Roland McGrath.  Further updates contributed by
+Mike Frysinger.
+.SH "COPYRIGHT"
+Copyright (C) 1992, 1993, 1996, 1999 Free Software Foundation, Inc.
+This file is part of GNU
+.IR make .
+.LP
+GNU
+.I make
+is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+.LP
+GNU
+.I make
+is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+.LP
+You should have received a copy of the GNU General Public License
+along with GNU
+.IR make ;
+see the file COPYING.  If not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
Index: trunk/src/gmake/make.h
===================================================================
--- trunk/src/gmake/make.h	(revision 466)
+++ trunk/src/gmake/make.h	(revision 503)
@@ -1,21 +1,19 @@
 /* Miscellaneous global declarations and portability cruft for GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999,
-2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* We use <config.h> instead of "config.h" so that a compilation
@@ -43,5 +41,5 @@
 
 /* Use prototypes if available.  */
-#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
+#if defined (__cplusplus) || defined (__STDC__)
 # undef  PARAMS
 # define PARAMS(protos)  protos
@@ -277,13 +275,12 @@
 # endif
 
-#endif  /* ANSI_STRING.  */
-#undef  ANSI_STRING
-
 /* SCO Xenix has a buggy macro definition in <string.h>.  */
 #undef  strerror
-
-#if !defined(ANSI_STRING) && !defined(__DECC)
+#if !defined(__DECC)
 extern char *strerror PARAMS ((int errnum));
 #endif
+
+#endif  /* !ANSI_STRING.  */
+#undef  ANSI_STRING
 
 #if HAVE_INTTYPES_H
@@ -359,4 +356,9 @@
 #endif
 
+/* This is needed for getcwd() and chdir().  */
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+# include <direct.h>
+#endif
+
 #ifdef WINDOWS32
 # include <fcntl.h>
@@ -379,5 +381,5 @@
 struct floc
   {
-    char *filenm;
+    const char *filenm;
     unsigned long lineno;
   };
@@ -423,5 +425,4 @@
 extern char *end_of_token PARAMS ((const char *));
 extern void collapse_continuations PARAMS ((char *));
-extern void remove_comments PARAMS((char *));
 #ifdef KMK
 #define lindex(s, limit, c) ((char *)memchr((s), (c), (limit) - (s)))
@@ -431,5 +432,4 @@
 extern int alpha_compare PARAMS ((const void *, const void *));
 extern void print_spaces PARAMS ((unsigned int));
-extern char *find_char_unquote PARAMS ((char *, int, int, int));
 extern char *find_percent PARAMS ((char *));
 extern FILE *open_tmpfile PARAMS ((char **, const char *));
@@ -465,7 +465,15 @@
 extern void child_access PARAMS ((void));
 
-extern char *
-strip_whitespace PARAMS ((const char **begpp, const char **endpp));
-
+extern void close_stdout PARAMS ((void));
+
+extern char *strip_whitespace PARAMS ((const char **begpp, const char **endpp));
+
+/* String caching  */
+extern void strcache_init PARAMS ((void));
+extern void strcache_print_stats PARAMS ((const char *prefix));
+extern int strcache_iscached PARAMS ((const char *str));
+extern const char *strcache_add PARAMS ((const char *str));
+extern const char *strcache_add_len PARAMS ((const char *str, int len));
+extern int strcache_setbufsize PARAMS ((int size));
 
 #ifdef  HAVE_VFORK_H
@@ -488,5 +496,5 @@
 # if !defined(VMS) && !defined(__DECC)
 extern char *getcwd ();
-#endif
+# endif
 #else
 extern char *getwd ();
@@ -495,4 +503,5 @@
 
 extern const struct floc *reading_file;
+extern const struct floc **expanding_var;
 
 extern char **environ;
@@ -503,5 +512,5 @@
 extern int print_version_flag, print_directory_flag, check_symlink_flag;
 extern int warn_undefined_variables_flag, posix_pedantic, not_parallel;
-extern int clock_skew_detected, rebuilding_makefiles;
+extern int second_expansion, clock_skew_detected, rebuilding_makefiles;
 
 /* can we run commands via 'sh -c xxx' or must we use batch files? */
Index: trunk/src/gmake/make.lnk
===================================================================
--- trunk/src/gmake/make.lnk	(revision 466)
+++ trunk/src/gmake/make.lnk	(revision 503)
@@ -1,3 +1,3 @@
-FROM LIB:cres.o "commands.o"+"job.o"+"dir.o"+"file.o"+"misc.o"+"main.o"+"read.o"+"remake.o"+"rule.o"+"implicit.o"+"default.o"+"variable.o"+"expand.o"+"function.o"+"vpath.o"+"version.o"+"ar.o"+"arscan.o"+"signame.o"+"remote-stub.o"+"getopt.o"+"getopt1.o"+"alloca.o"+"amiga.o"
+FROM LIB:cres.o "commands.o"+"job.o"+"dir.o"+"file.o"+"misc.o"+"main.o"+"read.o"+"remake.o"+"rule.o"+"implicit.o"+"default.o"+"variable.o"+"expand.o"+"function.o"+"vpath.o"+"version.o"+"ar.o"+"arscan.o"+"signame.o"+"remote-stub.o"+"getopt.o"+"getopt1.o"+"alloca.o"+"amiga.o"+"hash.o"+"strcache.o"
 TO "make.new"
 LIB glob/glob.lib LIB:sc.lib LIB:amiga.lib
Index: trunk/src/gmake/make_msvc_net2003.sln
===================================================================
--- trunk/src/gmake/make_msvc_net2003.sln	(revision 503)
+++ trunk/src/gmake/make_msvc_net2003.sln	(revision 503)
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_msvc.net2003", "make_msvc_net2003.vcproj", "{E96B5060-3240-4723-91C9-E64F1C877A04}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{E96B5060-3240-4723-91C9-E64F1C877A04}.Debug.ActiveCfg = Debug|Win32
+		{E96B5060-3240-4723-91C9-E64F1C877A04}.Debug.Build.0 = Debug|Win32
+		{E96B5060-3240-4723-91C9-E64F1C877A04}.Release.ActiveCfg = Release|Win32
+		{E96B5060-3240-4723-91C9-E64F1C877A04}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: trunk/src/gmake/make_msvc_net2003.vcproj
===================================================================
--- trunk/src/gmake/make_msvc_net2003.vcproj	(revision 503)
+++ trunk/src/gmake/make_msvc_net2003.vcproj	(revision 503)
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="make_msvc.net2003"
+	ProjectGUID="{E96B5060-3240-4723-91C9-E64F1C877A04}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories=".;w32/include;glob"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H=1;WINDOWS32=1"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				ForceConformanceInForLoopScope="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				SuppressStartupBanner="TRUE"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/make_msvc.net2003.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/make_msvc.net2003.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"
+				Description="Copying config.h.W32 to config.h"
+				CommandLine="if not exist config.h copy config.h.W32 config.h"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories=".;w32/include;glob"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H=1;WINDOWS32=1"
+				RuntimeLibrary="0"
+				ForceConformanceInForLoopScope="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/make_msvc.net2003.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"
+				Description="Copying config.h.W32 to config.h"
+				CommandLine="if not exist config.h copy config.h.W32 config.h"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="src"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath=".\ar.c">
+			</File>
+			<File
+				RelativePath=".\arscan.c">
+			</File>
+			<File
+				RelativePath=".\commands.c">
+			</File>
+			<File
+				RelativePath=".\default.c">
+			</File>
+			<File
+				RelativePath=".\dir.c">
+			</File>
+			<File
+				RelativePath=".\expand.c">
+			</File>
+			<File
+				RelativePath=".\file.c">
+			</File>
+			<File
+				RelativePath=".\function.c">
+			</File>
+			<File
+				RelativePath=".\getloadavg.c">
+			</File>
+			<File
+				RelativePath=".\getopt.c">
+			</File>
+			<File
+				RelativePath=".\getopt1.c">
+			</File>
+			<File
+				RelativePath=".\hash.c">
+			</File>
+			<File
+				RelativePath=".\strcache.c">
+			</File>
+			<File
+				RelativePath=".\implicit.c">
+			</File>
+			<File
+				RelativePath=".\job.c">
+			</File>
+			<File
+				RelativePath=".\main.c">
+			</File>
+			<File
+				RelativePath=".\misc.c">
+			</File>
+			<File
+				RelativePath=".\read.c">
+			</File>
+			<File
+				RelativePath=".\remake.c">
+			</File>
+			<File
+				RelativePath=".\remote-stub.c">
+			</File>
+			<File
+				RelativePath=".\rule.c">
+			</File>
+			<File
+				RelativePath=".\signame.c">
+			</File>
+			<File
+				RelativePath=".\variable.c">
+			</File>
+			<File
+				RelativePath=".\version.c">
+			</File>
+			<File
+				RelativePath=".\vpath.c">
+			</File>
+			<Filter
+				Name="w32"
+				Filter="">
+				<File
+					RelativePath=".\w32\compat\dirent.c">
+				</File>
+				<File
+					RelativePath=".\w32\subproc\misc.c">
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							ObjectFile="$(IntDir)/$(InputName)1.obj"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							ObjectFile="$(IntDir)/$(InputName)1.obj"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath=".\w32\pathstuff.c">
+				</File>
+				<File
+					RelativePath=".\w32\subproc\sub_proc.c">
+				</File>
+				<File
+					RelativePath=".\w32\subproc\w32err.c">
+				</File>
+			</Filter>
+			<Filter
+				Name="glob"
+				Filter="">
+				<File
+					RelativePath=".\glob\fnmatch.c">
+				</File>
+				<File
+					RelativePath=".\glob\glob.c">
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="include"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath=".\commands.h">
+			</File>
+			<File
+				RelativePath=".\config.h">
+			</File>
+			<File
+				RelativePath=".\debug.h">
+			</File>
+			<File
+				RelativePath=".\dep.h">
+			</File>
+			<File
+				RelativePath=".\filedef.h">
+			</File>
+			<File
+				RelativePath=".\getopt.h">
+			</File>
+			<File
+				RelativePath=".\gettext.h">
+			</File>
+			<File
+				RelativePath=".\hash.h">
+			</File>
+			<File
+				RelativePath=".\job.h">
+			</File>
+			<File
+				RelativePath=".\make.h">
+			</File>
+			<File
+				RelativePath=".\rule.h">
+			</File>
+			<File
+				RelativePath=".\variable.h">
+			</File>
+			<File
+				RelativePath=".\vmsdir.h">
+			</File>
+			<Filter
+				Name="w32"
+				Filter="">
+				<File
+					RelativePath=".\w32\include\dirent.h">
+				</File>
+				<File
+					RelativePath=".\w32\include\pathstuff.h">
+				</File>
+				<File
+					RelativePath=".\w32\subproc\proc.h">
+				</File>
+				<File
+					RelativePath=".\w32\include\sub_proc.h">
+				</File>
+				<File
+					RelativePath=".\w32\include\w32err.h">
+				</File>
+			</Filter>
+			<Filter
+				Name="glob"
+				Filter="">
+				<File
+					RelativePath=".\glob\fnmatch.h">
+				</File>
+				<File
+					RelativePath=".\glob\glob.h">
+				</File>
+			</Filter>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: trunk/src/gmake/makefile.com
===================================================================
--- trunk/src/gmake/makefile.com	(revision 466)
+++ trunk/src/gmake/makefile.com	(revision 503)
@@ -13,5 +13,5 @@
 $! hb
 $! But don't ask Martin Zinser about the lines, I added/changed.
-$! In case of an error do some cleanup 
+$! In case of an error do some cleanup
 $ on error then $ goto cleanup
 $! in case somebody set up her/his own symbol for cc
@@ -34,5 +34,5 @@
 $   ccopt = ""
 $  else
-$   ccopt = "/decc/prefix=all"
+$   ccopt = "/decc/prefix=(all,except=(globfree,glob))"
 $   if f$trnlnm("SYS").eqs.""
 $    then
@@ -69,6 +69,6 @@
 $ filelist = "alloca ar arscan commands default dir expand file function " + -
              "hash implicit job main misc read remake remote-stub rule " + -
-	     "signame variable version vmsfunctions vmsify vpath " + - 
-	     "[.glob]glob [.glob]fnmatch getopt1 getopt"
+	     "signame variable version vmsfunctions vmsify vpath " + -
+	     "[.glob]glob [.glob]fnmatch getopt1 getopt strcache"
 $ copy config.h-vms config.h
 $ n=0
@@ -96,5 +96,5 @@
 $ exit
 $!
-$!------------------------------------------------------------------------------
+$!-----------------------------------------------------------------------------
 $!
 $! Check if this is a define relating to the properties of the C/C++
@@ -102,15 +102,15 @@
 $!
 $CHECK_CC_QUAL:
-$ open/write tmpc 'tc 
+$ open/write tmpc 'tc
 $ ccqual = "/warn=(disable=questcompare)"
 $ write tmpc "#include <stdio.h>"
 $ write tmpc "unsigned int i = 1;"
 $ write tmpc "int main(){"
-$ write tmpc "if (i < 0){printf(""Mission impossible\n"");}}"  
+$ write tmpc "if (i < 0){printf(""Mission impossible\n"");}}"
 $ close tmpc
 $ gosub cc_qual_check
 $ return
 $!
-$!------------------------------------------------------------------------------
+$!-----------------------------------------------------------------------------
 $!
 $! Check for properties of C/C++ compiler
@@ -123,7 +123,7 @@
 $ set message/fac/ident/sever/text
 $ delete/nolog 'tmpnam'.*;*
-$ if cc_qual then ccopt = ccopt + ccqual 
+$ if cc_qual then ccopt = ccopt + ccqual
 $ return
-$!------------------------------------------------------------------------------
+$!-----------------------------------------------------------------------------
 $!
 $ compileit : subroutine
@@ -132,7 +132,24 @@
 $ if ploc .lt. f$length(p1) then filnam=f$extract(ploc+1,100,p1)
 $ write optf "''filnam'"
-$ cc'ccopt'/include=([],[.glob]) - 
-  /define=("allocated_variable_expand_for_file=alloc_var_expand_for_file","unlink=remove","HAVE_CONFIG_H","VMS") - 
+$ cc'ccopt'/include=([],[.glob]) -
+  /define=("allocated_variable_expand_for_file=alloc_var_expand_for_file","unlink=remove","HAVE_CONFIG_H","VMS") -
   'p1'
 $ exit
 $ endsubroutine : compileit
+$!
+$!-----------------------------------------------------------------------------
+$!Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+$!2006 Free Software Foundation, Inc.
+$!This file is part of GNU Make.
+$!
+$!GNU Make is free software; you can redistribute it and/or modify it under the
+$!terms of the GNU General Public License as published by the Free Software
+$!Foundation; either version 2, or (at your option) any later version.
+$!
+$!GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+$!WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+$!A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+$!
+$!You should have received a copy of the GNU General Public License along with
+$!GNU Make; see the file COPYING.  If not, write to the Free Software
+$!Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/makefile.vms
===================================================================
--- trunk/src/gmake/makefile.vms	(revision 466)
+++ trunk/src/gmake/makefile.vms	(revision 503)
@@ -1,5 +1,20 @@
-# Copyright (C) 1988, 1989, 1996, 1997 Free Software Foundation, Inc.
+# -*-Makefile-*- to build GNU make on VMS
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+# 2006 Free Software Foundation, Inc.
 # This file is part of GNU Make.
 #
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 # VMS extensions from GNU Make 3.60 imported by
 #  Klaus Kämpf (kkaempf@rmi.de)
@@ -7,19 +22,4 @@
 # Modified for version 3.80 by zinser@decus.de
 # Modified for version 3.81 by Hartmut Becker
-#
-# GNU Make is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU Make is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Make; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
 
 CC = cc
@@ -33,5 +33,5 @@
 
 ifeq ($(CC),cc)
-CFLAGS = $(defines) /include=([],[.glob])/prefix=(all,except=(glob,globfree))/standard=relaxed
+CFLAGS = $(defines) /include=([],[.glob])/prefix=(all,except=(glob,globfree))/standard=relaxed/warn=(disable=questcompare)
 else
 CFLAGS = $(defines) /include=([],[.glob])
@@ -91,9 +91,9 @@
 objs = commands.obj,job.obj,dir.obj,file.obj,misc.obj,hash.obj,\
        main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
-       default.obj,variable.obj,expand.obj,function.obj,\
+       default.obj,variable.obj,expand.obj,function.obj,strcache.obj,\
        vpath.obj,version.obj$(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob)
-srcs = commands.c job.c dir.c file.c misc.c  hash.c\
+srcs = commands.c job.c dir.c file.c misc.c  hash.c \
 	main.c read.c remake.c rule.c implicit.c \
-	default.c variable.c expand.c function.c \
+	default.c variable.c expand.c function.c strcache.c \
 	vpath.c version.c vmsfunctions.c vmsify.c $(ARCHIVES_SRC) $(ALLOCASRC) \
 	commands.h dep.h filedef.h job.h make.h rule.h variable.h
@@ -117,9 +117,10 @@
 # Automatically generated dependencies.
 commands.obj: commands.c make.h dep.h commands.h filedef.h variable.h job.h
-job.obj: job.c make.h commands.h job.h filedef.h variable.h
+job.obj: job.c vmsjobs.c make.h commands.h job.h filedef.h variable.h
 dir.obj: dir.c make.h
 file.obj: file.c make.h commands.h dep.h filedef.h variable.h
 misc.obj: misc.c make.h dep.h
 hash.obj: hash.c make.h hash.h
+strcache.obj: strcache.c make.h hash.h
 main.obj: main.c make.h commands.h dep.h filedef.h variable.h job.h
 read.obj: read.c make.h commands.h dep.h filedef.h variable.h
Index: trunk/src/gmake/misc.c
===================================================================
--- trunk/src/gmake/misc.c	(revision 466)
+++ trunk/src/gmake/misc.c	(revision 503)
@@ -1,21 +1,19 @@
 /* Miscellaneous generic support functions for GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
-2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -157,20 +155,4 @@
 
 
-/* Remove comments from LINE.
-   This is done by copying the text at LINE onto itself.  */
-
-void
-remove_comments (char *line)
-{
-  char *comment;
-
-  comment = find_char_unquote (line, '#', 0, 0);
-
-  if (comment != 0)
-    /* Cut off the line at the #.  */
-    *comment = '\0';
-}
-
-
 /* Print N spaces (used in debug for target-depth).  */
 
@@ -512,9 +494,35 @@
 
 
+
+/* Allocate a new `struct dep' with all fields initialized to 0.   */
+
+struct dep *
+alloc_dep ()
+{
+  struct dep *d = (struct dep *) xmalloc (sizeof (struct dep));
+  bzero ((char *) d, sizeof (struct dep));
+  return d;
+}
+
+
+/* Free `struct dep' along with `name' and `stem'.   */
+
+void
+free_dep (struct dep *d)
+{
+  if (d->name != 0)
+    free (d->name);
+
+  if (d->stem != 0)
+    free (d->stem);
+
+  free ((char *)d);
+}
+
 /* Copy a chain of `struct dep', making a new chain
    with the same contents as the old one.  */
 
 struct dep *
-copy_dep_chain (struct dep *d)
+copy_dep_chain (const struct dep *d)
 {
   register struct dep *c;
@@ -526,6 +534,10 @@
       c = (struct dep *) xmalloc (sizeof (struct dep));
       bcopy ((char *) d, (char *) c, sizeof (struct dep));
+
       if (c->name != 0)
 	c->name = xstrdup (c->name);
+      if (c->stem != 0)
+	c->stem = xstrdup (c->stem);
+
       c->next = 0;
       if (firstnew == 0)
@@ -540,7 +552,20 @@
 }
 
+/* Free a chain of 'struct dep'.  */
+
+void
+free_dep_chain (struct dep *d)
+{
+  while (d != 0)
+    {
+      struct dep *df = d;
+      d = d->next;
+      free_dep (df);
+    }
+}
+
 
 /* Free a chain of `struct nameseq'. Each nameseq->name is freed
-   as well.  Can be used on `struct dep' chains.*/
+   as well.  For `struct dep' chains use free_dep_chain.  */
 
 void
@@ -627,5 +652,5 @@
 
 static void
-log_access (char *flavor)
+log_access (const char *flavor)
 {
   if (! ISDB (DB_JOBS))
@@ -842,2 +867,50 @@
 }
 #endif
+
+
+
+/* This code is stolen from gnulib.
+   If/when we abandon the requirement to work with K&R compilers, we can
+   remove this (and perhaps other parts of GNU make!) and migrate to using
+   gnulib directly.
+
+   This is called only through atexit(), which means die() has already been
+   invoked.  So, call exit() here directly.  Apparently that works...?
+*/
+
+/* Close standard output, exiting with status 'exit_failure' on failure.
+   If a program writes *anything* to stdout, that program should close
+   stdout and make sure that it succeeds before exiting.  Otherwise,
+   suppose that you go to the extreme of checking the return status
+   of every function that does an explicit write to stdout.  The last
+   printf can succeed in writing to the internal stream buffer, and yet
+   the fclose(stdout) could still fail (due e.g., to a disk full error)
+   when it tries to write out that buffered data.  Thus, you would be
+   left with an incomplete output file and the offending program would
+   exit successfully.  Even calling fflush is not always sufficient,
+   since some file systems (NFS and CODA) buffer written/flushed data
+   until an actual close call.
+
+   Besides, it's wasteful to check the return value from every call
+   that writes to stdout -- just let the internal stream state record
+   the failure.  That's what the ferror test is checking below.
+
+   It's important to detect such failures and exit nonzero because many
+   tools (most notably `make' and other build-management systems) depend
+   on being able to detect failure in other tools via their exit status.  */
+
+void
+close_stdout (void)
+{
+  int prev_fail = ferror (stdout);
+  int fclose_fail = fclose (stdout);
+
+  if (prev_fail || fclose_fail)
+    {
+      if (fclose_fail)
+        error (NILF, _("write error: %s"), strerror (errno));
+      else
+        error (NILF, _("write error"));
+      exit (EXIT_FAILURE);
+    }
+}
Index: trunk/src/gmake/po/.cvsignore
===================================================================
--- trunk/src/gmake/po/.cvsignore	(revision 466)
+++ 	(revision )
@@ -1,6 +1,0 @@
-*.gmo *.mo *.pot *.po
-
-Makefile Makefile.in Makefile.in.in Makevars.template
-Rules-quot stamp-po
-*.sed *.sin *.header
-POTFILES
Index: trunk/src/gmake/po/ChangeLog
===================================================================
--- trunk/src/gmake/po/ChangeLog	(revision 466)
+++ trunk/src/gmake/po/ChangeLog	(revision 503)
@@ -1,2 +1,10 @@
+2006-01-28  Paul D. Smith  <psmith@gnu.org>
+
+	* LINGUAS: Added new translation for Vietnamese (vi).
+
+2005-07-14  Paul D. Smith  <psmith@gnu.org>
+
+	* LINGUAS: Added new translation for Indonesian (id).
+
 2005-05-09  Paul D. Smith  <psmith@gnu.org>
 
@@ -44,2 +52,18 @@
 
 	* POTFILES.in, LINGUAS, Makevars: Created.
+
+
+Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/po/LINGUAS
===================================================================
--- trunk/src/gmake/po/LINGUAS	(revision 466)
+++ trunk/src/gmake/po/LINGUAS	(revision 503)
@@ -1,5 +1,5 @@
-# Set of available languages: 20 languages
+# Set of available languages: 23 languages
 
-be da de es fi fr ga gl he hr ja ko nl pl pt_BR ru rw sv tr uk zh_CN
+be da de es fi fr ga gl he hr id ja ko nl pl pt_BR ru rw sv tr uk vi zh_CN
 
 # Can't seem to get en@quot and en@boldquot to build properly?
Index: trunk/src/gmake/po/Makevars
===================================================================
--- trunk/src/gmake/po/Makevars	(revision 466)
+++ trunk/src/gmake/po/Makevars	(revision 503)
@@ -1,2 +1,19 @@
+# This is a -*-Makefile-*-
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
 # Makefile variables for PO directory in any package using GNU gettext.
 
Index: trunk/src/gmake/po/POTFILES.in
===================================================================
--- trunk/src/gmake/po/POTFILES.in	(revision 466)
+++ trunk/src/gmake/po/POTFILES.in	(revision 503)
@@ -1,4 +1,18 @@
 # List of source files containing translatable strings.
-# Copyright (C) 2002 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 ar.c
@@ -20,4 +34,5 @@
 rule.c
 signame.c
+strcache.c
 variable.c
 variable.h
Index: trunk/src/gmake/po/fi.po
===================================================================
--- trunk/src/gmake/po/fi.po	(revision 503)
+++ trunk/src/gmake/po/fi.po	(revision 503)
@@ -0,0 +1,2005 @@
+# Finnish messages for make.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Lauri Nurmi <lanurmi@iki.fi>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: make 3.81-b3\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"PO-Revision-Date: 2005-07-06 21:36+0300\n"
+"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ar.c:53
+#, c-format
+msgid "attempt to use unsupported feature: `%s'"
+msgstr "yritettiin kÃ€yttÃ€Ã€ ominaisuutta, jolle ei ole tukea: \"%s\""
+
+#: ar.c:137
+msgid "touch archive member is not available on VMS"
+msgstr "arkistojÃ€senten kosketus ei ole mahdollista VMS:ssÃ€"
+
+#: ar.c:168
+#, c-format
+msgid "touch: Archive `%s' does not exist"
+msgstr "touch: Arkistoa \"%s\" ei ole olemassa"
+
+#: ar.c:171
+#, c-format
+msgid "touch: `%s' is not a valid archive"
+msgstr "touch: \"%s\" ei ole kelvollinen arkisto"
+
+#: ar.c:178
+#, c-format
+msgid "touch: Member `%s' does not exist in `%s'"
+msgstr "touch: Arkistossa \"%1$s\" ei ole jÃ€sentÃ€ \"%2$s\""
+
+#: ar.c:185
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgstr "touch: ar_member_touch antoi virheellisen paluuarvon kohteesta \"%s\""
+
+#: arscan.c:69
+#, c-format
+msgid "lbr$set_module failed to extract module info, status = %d"
+msgstr "lbr$set_module epÃ€onnistui moduulitietojen noutamisessa, tila = %d"
+
+#: arscan.c:154
+#, c-format
+msgid "lbr$ini_control failed with status = %d"
+msgstr "lbr$ini_control epÃ€onnistui, tila = %d"
+
+#: arscan.c:165
+#, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr "kirjastoa \"%s\" ei voi avata jÃ€senen \"%s\" etsimiseksi"
+
+#: arscan.c:825
+#, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "JÃ€sen \"%s\"%s: %ld tavua kohdassa %ld (%ld).\n"
+
+#: arscan.c:826
+msgid " (name might be truncated)"
+msgstr " (nimi voi olla typistynyt)"
+
+#: arscan.c:828
+#, c-format
+msgid "  Date %s"
+msgstr "  PÃ€ivÃ€ys %s"
+
+#: arscan.c:829
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr "  uid = %d, gid = %d, oikeudet = 0%o.\n"
+
+#: commands.c:422
+msgid "*** Break.\n"
+msgstr "*** Katkaisu.\n"
+
+#: commands.c:545
+#, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr "*** [%s] ArkistojÃ€sen \"%s\" voi olla viallinen - ei poisteta"
+
+#: commands.c:548
+#, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr "*** ArkistojÃ€sen \"%s\" voi olla viallinen - ei poisteta"
+
+#: commands.c:561
+#, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "*** [%s] Poistetaan tiedosto \"%s\""
+
+#: commands.c:563
+#, c-format
+msgid "*** Deleting file `%s'"
+msgstr "*** Poistetaan tiedosto \"%s\""
+
+#: commands.c:599
+msgid "#  commands to execute"
+msgstr "#  kÃ€ynnisetttÃ€vÃ€t komennot"
+
+#: commands.c:602
+msgid " (built-in):"
+msgstr " (sisÃ€Ã€nrakennettu):"
+
+#: commands.c:604
+#, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr " (tiedostosta \"%s\", rivi %lu):\n"
+
+#: dir.c:983
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Hakemistot\n"
+
+#: dir.c:995
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: tilaa ei voitu lukea.\n"
+
+#: dir.c:999
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (avain %s, maika %d): ei voitu avata.\n"
+
+#: dir.c:1003
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): ei voitu avata.\n"
+
+#: dir.c:1008
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (laite %ld, i-solmu %ld): ei voitu avata.\n"
+
+#: dir.c:1035
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "# %s (avain %s, maika %d: "
+
+#: dir.c:1039
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): "
+
+#: dir.c:1044
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (laite %ld, i-solmu %ld): "
+
+#: dir.c:1050 dir.c:1071
+msgid "No"
+msgstr "Ei"
+
+# Juuri nÃ€in, muodostetaan kÃ€Ã€nnÃ¶slause yksittÃ€isistÃ€ sanoista...
+#: dir.c:1053 dir.c:1074
+msgid " files, "
+msgstr " tiedostoa, "
+
+#: dir.c:1055 dir.c:1076
+msgid "no"
+msgstr "ei"
+
+#: dir.c:1058
+msgid " impossibilities"
+msgstr " mahdottomuutta"
+
+#: dir.c:1062
+msgid " so far."
+msgstr " tÃ€hÃ€n mennessÃ€."
+
+#: dir.c:1079
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " mahdottomuutta %lu hakemistossa.\n"
+
+#: expand.c:128
+#, c-format
+msgid "Recursive variable `%s' references itself (eventually)"
+msgstr "Rekursiivinen muuttuja \"%s\" viittaa (lopulta) itseensÃ€"
+
+#: expand.c:266
+msgid "unterminated variable reference"
+msgstr "pÃ€Ã€ttÃ€mÃ€tÃ¶n muuttujaviittaus"
+
+#: file.c:270
+#, c-format
+msgid "Commands were specified for file `%s' at %s:%lu,"
+msgstr "Tiedostolle \"%s\" mÃ€Ã€riteltiin komentoja paikassa %s:%lu,"
+
+#: file.c:275
+#, c-format
+msgid "Commands for file `%s' were found by implicit rule search,"
+msgstr "Tiedostolle \"%s\" lÃ¶ytyi komentoja oletussÃ€Ã€ntÃ¶haussa,"
+
+#: file.c:278
+#, c-format
+msgid "but `%s' is now considered the same file as `%s'."
+msgstr "mutta \"%s\":n katsotaan nyt olevan sama tiedosto kuin \"%s\"."
+
+#: file.c:281
+#, c-format
+msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgstr ""
+"Tiedoston \"%s\" komentoja ei huomioida, vaan kÃ€ytetÃ€Ã€n komentoja "
+"tiedostosta \"%s\"."
+
+#: file.c:301
+#, c-format
+msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgstr ""
+
+#: file.c:306
+#, c-format
+msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgstr ""
+
+#: file.c:381
+#, c-format
+msgid "*** Deleting intermediate file `%s'"
+msgstr "*** Poistetaan aputiedosto \"%s\""
+
+#: file.c:385
+msgid "Removing intermediate files...\n"
+msgstr "Poistetaan aputiedostot...\n"
+
+#: file.c:781
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: Aikaleima ei ole sallitulla vÃ€lillÃ€, korvataan %s"
+
+#: file.c:782
+msgid "Current time"
+msgstr "TÃ€mÃ€nhetkinen aika"
+
+#: file.c:881
+msgid "# Not a target:"
+msgstr "# Ei kohde:"
+
+#: file.c:903
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "#  Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)."
+
+#: file.c:905
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "#  Valekohde (ennakkoehto .PHONY:lle)."
+
+#: file.c:907
+msgid "#  Command-line target."
+msgstr "#  Komentorivikohde."
+
+#: file.c:909
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "#  Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto."
+
+#: file.c:911
+msgid "#  Implicit rule search has been done."
+msgstr "#  OletussÃ€Ã€ntÃ¶haku on suoritettu."
+
+#: file.c:912
+msgid "#  Implicit rule search has not been done."
+msgstr "#  OletussÃ€Ã€ntÃ¶hakua ei ole suoritettu."
+
+#: file.c:914
+#, c-format
+msgid "#  Implicit/static pattern stem: `%s'\n"
+msgstr ""
+
+#: file.c:916
+msgid "#  File is an intermediate prerequisite."
+msgstr "#  Tiedosto on vÃ€litason ennakkoehto."
+
+#: file.c:919
+msgid "#  Also makes:"
+msgstr "#  Tuotetaan myÃ¶s:"
+
+#: file.c:925
+msgid "#  Modification time never checked."
+msgstr "#  Muutosaikaa ei koskaan tarkastettu."
+
+#: file.c:927
+msgid "#  File does not exist."
+msgstr "#  Tiedosto ei ole olemassa."
+
+#: file.c:929
+msgid "#  File is very old."
+msgstr "#  Tiedosto on hyvin vanha."
+
+#: file.c:934
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "#  Viimeksi muutettu %s\n"
+
+#: file.c:937
+msgid "#  File has been updated."
+msgstr "#  Tiedosto on pÃ€ivitetty."
+
+#: file.c:937
+msgid "#  File has not been updated."
+msgstr "#  Tiedostoa ei ole pÃ€ivitetty."
+
+#: file.c:941
+msgid "#  Commands currently running (THIS IS A BUG)."
+msgstr "#  Ajossa olevat komennot (TÃMÃ ON OHJELMISTOVIKA)."
+
+#: file.c:944
+msgid "#  Dependencies commands running (THIS IS A BUG)."
+msgstr "#  Ajossa olevat riippuvuuskomennot (TÃMÃ ON OHJELMISTOVIKA)."
+
+#: file.c:953
+msgid "#  Successfully updated."
+msgstr "#  PÃ€ivitetty onnistuneesti."
+
+#: file.c:957
+msgid "#  Needs to be updated (-q is set)."
+msgstr "#  Vaatii pÃ€ivitystÃ€ (-q on asetettu)."
+
+#: file.c:960
+msgid "#  Failed to be updated."
+msgstr "#  PÃ€ivitys epÃ€onnistui."
+
+#: file.c:963
+msgid "#  Invalid value in `update_status' member!"
+msgstr "#  Virheellinen arvo \"update_status\"-jÃ€senessÃ€!"
+
+#: file.c:970
+msgid "#  Invalid value in `command_state' member!"
+msgstr "#  Virheellinen arvo \"command_state\"-jÃ€senessÃ€!"
+
+#: file.c:989
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Tiedostot"
+
+#: file.c:993
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# tilasto tiedostojen hajautustaulusta:\n"
+"# "
+
+#: function.c:759
+msgid "non-numeric first argument to `word' function"
+msgstr "ei-numeerinen ensimmÃ€inen argumentti \"word\"-funktiolle"
+
+#: function.c:764
+msgid "first argument to `word' function must be greater than 0"
+msgstr "\"word\"-funktion ensimmÃ€isen argumentin on oltava suurempi kuin 0"
+
+#: function.c:785
+msgid "non-numeric first argument to `wordlist' function"
+msgstr "ei-numeerinen ensimmÃ€inen argumentti \"wordlist\"-funktiolle"
+
+#: function.c:787
+msgid "non-numeric second argument to `wordlist' function"
+msgstr "ei-numeerinen toinen argumentti \"wordlist\"-funktiolle"
+
+#: function.c:1453
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(In) epÃ€onnistui (v=%d)\n"
+
+#: function.c:1464
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(Err) epÃ€onnistui (v=%d)\n"
+
+#: function.c:1469
+#, fuzzy, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() epÃ€onnistui (v=%d)\n"
+
+#: function.c:1474
+msgid "windows32_openpipe (): process_init_fd() failed\n"
+msgstr "windows32_openpipe (): process_init_fd() epÃ€onnistui\n"
+
+#: function.c:1725
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Siivotaan vÃ€liaikainen komentotiedosto %s\n"
+
+#: function.c:2101
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr "Liian vÃ€hÃ€n (%d) argumenttejeja funktiolle \"%s\""
+
+#: function.c:2113
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr "Ei toteutettu tÃ€llÃ€ alustalla: funktio \"%s\""
+
+#: function.c:2163
+#, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr "pÃ€Ã€ttÃ€mÃ€tÃ¶n kutsu funktioon \"%s\": puuttuva \"%c\""
+
+#: getopt.c:663
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: valitsin \"%s\" on moniselitteinen\n"
+
+#: getopt.c:687
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: valitsin \"--%s\" ei salli argumenttia\n"
+
+#: getopt.c:692
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: valitsin \"%c%s\" ei salli argumenttia\n"
+
+#: getopt.c:709 getopt.c:882
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: valitsin \"%s\" vaatii argumentin\n"
+
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: tunnistamaton valitsin \"--%s\"\n"
+
+#: getopt.c:742
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: tunnistamaton valitsin \"%c%s\"\n"
+
+#: getopt.c:768
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: virheellinen valitsin -- %c\n"
+
+#: getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: virheellinen valitsin -- %c\n"
+
+#: getopt.c:801 getopt.c:931
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: valitsin vaatii argumentin -- %c\n"
+
+#: getopt.c:848
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: valitsin \"-W %s\" on moniselitteinen\n"
+
+#: getopt.c:866
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: valitsin \"-W %s\" ei salli argumenttia\n"
+
+#: hash.c:51
+#, c-format
+msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgstr "ei voida varata %ld tavua hajautustaululle: muisti lopussa"
+
+#: hash.c:282
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr "Kuormitus=%ld/%ld=%.0f%%, "
+
+#: hash.c:284
+#, c-format
+msgid "Rehash=%d, "
+msgstr "Uudelleenhajautus=%d, "
+
+#: hash.c:285
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr "TÃ¶rmÃ€ykset=%ld/%ld=%.0f%%"
+
+#: implicit.c:41
+#, c-format
+msgid "Looking for an implicit rule for `%s'.\n"
+msgstr "EtsitÃ€Ã€n oletussÃ€Ã€ntÃ¶Ã€ kohteelle \"%s\".\n"
+
+#: implicit.c:57
+#, c-format
+msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgstr "EtsitÃ€Ã€n arkistojÃ€senen oletussÃ€Ã€ntÃ¶Ã€ kohteelle \"%s\".\n"
+
+#: implicit.c:319
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "VÃ€ltetÃ€Ã€n oletussÃ€Ã€ntÃ¶rekursio.\n"
+
+#: implicit.c:476
+#, c-format
+msgid "Trying pattern rule with stem `%.*s'.\n"
+msgstr "Kokeillaan hahmosÃ€Ã€ntÃ¶Ã€ rungolla \"%.*s\".\n"
+
+#: implicit.c:667
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "HylÃ€tÃ€Ã€n mahdoton oletusennakkoehto \"%s\".\n"
+
+#: implicit.c:668
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr "HylÃ€tÃ€Ã€n mahdoton sÃ€Ã€nnÃ¶n ennakkoehto \"%s\".\n"
+
+#: implicit.c:678
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "YritetÃ€Ã€n kÃ€yttÃ€Ã€ oletusennakkoehtoa \"%s\".\n"
+
+#: implicit.c:679
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr "YritetÃ€Ã€n kÃ€yttÃ€Ã€ sÃ€Ã€nnÃ¶n ennakkoehtoa \"%s\".\n"
+
+#: implicit.c:710
+#, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr "LÃ¶ydettiin ennakkoehto \"%s\", joka on VPATH \"%s\"\n"
+
+#: implicit.c:730
+#, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr "EtsitÃ€Ã€n sÃ€Ã€ntÃ¶Ã€ aputiedostolla \"%s\".\n"
+
+#: job.c:321
+msgid "Cannot create a temporary file\n"
+msgstr "VÃ€liaikaistiedoston luominen ei onnistu\n"
+
+#: job.c:388
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr "*** [%s] Virhe 0x%x (ei huomioida)"
+
+#: job.c:389
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr "*** [%s] Virhe 0x%x"
+
+#: job.c:393
+#, c-format
+msgid "[%s] Error %d (ignored)"
+msgstr "[%s] Virhe %d (ei huomioida)"
+
+#: job.c:394
+#, c-format
+msgid "*** [%s] Error %d"
+msgstr "*** [%s] Virhe %d"
+
+#: job.c:399
+msgid " (core dumped)"
+msgstr " (muisti vedostettu)"
+
+#: job.c:488
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Odotetaan keskenerÃ€isiÃ€ tÃ¶itÃ€...."
+
+#: job.c:518
+#, c-format
+msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgstr ""
+
+#: job.c:520 job.c:701 job.c:804 job.c:1457
+msgid " (remote)"
+msgstr " (etÃ€)"
+
+#: job.c:698
+#, c-format
+msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgstr ""
+
+#: job.c:699
+#, c-format
+msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgstr ""
+
+#: job.c:704
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Siivotaan vÃ€liaikainen komentotiedosto %s\n"
+
+#: job.c:802
+#, c-format
+msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgstr "Poistetaan ketjusta lapsiprosessi 0x%08lx PID %ld%s.\n"
+
+#: job.c:862
+msgid "write jobserver"
+msgstr "tyÃ¶palvelimen kirjoitus"
+
+#: job.c:864
+#, c-format
+msgid "Released token for child 0x%08lx (%s).\n"
+msgstr ""
+
+#: job.c:1383
+#, fuzzy, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "process_easy() epÃ€onnistui prosessin kÃ€ynnistÃ€misessÃ€ (v=%d)\n"
+
+#: job.c:1387 job.c:2020
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"Laskettiin %d argumenttia epÃ€onnistuneessa kÃ€ynnistyksessÃ€\n"
+
+#: job.c:1455
+#, c-format
+msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgstr "LisÃ€tÃ€Ã€n ketjuun lapsiprosessi 0x%08lx (%s) PID %ld%s.\n"
+
+#: job.c:1709
+#, c-format
+msgid "Obtained token for child 0x%08lx (%s).\n"
+msgstr ""
+
+#: job.c:1718
+msgid "read jobs pipe"
+msgstr "tyÃ¶putken luku"
+
+#: job.c:1832
+msgid "cannot enforce load limits on this operating system"
+msgstr "kuormarajoja ei voi ottaa kÃ€yttÃ¶Ã¶n tÃ€ssÃ€ kÃ€yttÃ¶jÃ€rjestelmÃ€ssÃ€"
+
+#: job.c:1834
+msgid "cannot enforce load limit: "
+msgstr "kuormarajaa ei voi ottaa kÃ€yttÃ¶Ã¶n: "
+
+#: job.c:1907
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr ""
+"tiedostokahvoja ei ole enempÃ€Ã€: vakiosyÃ¶tteen kahdentaminen ei onnistunut\n"
+
+#: job.c:1909
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr ""
+"tiedostokahvoja ei ole enempÃ€Ã€: vakiotulosteen kahdentaminen epÃ€onnistui\n"
+
+#: job.c:1937
+msgid "Could not restore stdin\n"
+msgstr "VakiosyÃ¶tettÃ€ ei voitu palauttaa\n"
+
+#: job.c:1945
+msgid "Could not restore stdout\n"
+msgstr "Vakiotulostetta ei voitu palauttaa\n"
+
+#: job.c:2016
+#, fuzzy, c-format
+msgid "process_easy() failed failed to launch process (e=%ld)\n"
+msgstr "process_easy() epÃ€onnistui prosessin kÃ€ynnistÃ€misessÃ€ (v=%d)\n"
+
+#: job.c:2046
+#, c-format
+msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgstr ""
+
+#: job.c:2085
+#, c-format
+msgid "%s: Command not found"
+msgstr "%s: Komentoa ei lÃ¶ytynyt"
+
+#: job.c:2145
+#, c-format
+msgid "%s: Shell program not found"
+msgstr "%s: Kuoriohjelmaa ei lÃ¶ytynyt"
+
+#: job.c:2154
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: ympÃ€ristÃ¶tila saattaa olla lopussa"
+
+#: job.c:2363
+#, c-format
+msgid "$SHELL changed (was `%s', now `%s')\n"
+msgstr "$SHELL muuttunut (oli \"%s\", nyt \"%s\")\n"
+
+#: job.c:2789
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Luodaan vÃ€liaikainen komentotiedosto %s\n"
+
+#: job.c:2902
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (rivi %d) VÃ€Ã€rÃ€ kuoriympÃ€ristÃ¶ (!unixy && !batch_mode_shell)\n"
+
+#: main.c:291
+msgid "Options:\n"
+msgstr "Valitsimet:\n"
+
+#: main.c:292
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr ""
+"  -b, -m                      Yhteensopivuuden vuoksi jÃ€tetÃ€Ã€n huomiotta.\n"
+
+#: main.c:294
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr "  -B, --always-make           Tuota kaikki kohteet ehdoitta.\n"
+
+#: main.c:296
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr ""
+"  -C HAKEMISTO, --directory=HAKEMISTO\n"
+"                              Siirry HAKEMISTOon ennen jatkamista.\n"
+
+#: main.c:299
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr "  -d                          NÃ€ytÃ€ runsaasti vianetsintÃ€tietoja.\n"
+
+#: main.c:301
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr "  --debug[=LIPUT]             NÃ€ytÃ€ monenlaisia vianetsintÃ€tietoja.\n"
+
+#: main.c:303
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr ""
+"  -e, --environment-overrides\n"
+"                              YmpÃ€ristÃ¶muuttujat kumoavat makefile-"
+"tiedostot.\n"
+
+#: main.c:306
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr ""
+"  -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n"
+"                              KÃ€ytÃ€ TIEDOSTOa makefile-tiedostona.\n"
+
+#: main.c:309
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr "  -h, --help                  NÃ€ytÃ€ tÃ€mÃ€ viesti ja poistu.\n"
+
+#: main.c:311
+msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+msgstr ""
+"  -i, --ignore-errors         ÃlÃ€ huomioi suoritettujen komentojen "
+"virheitÃ€.\n"
+
+#: main.c:313
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr ""
+"  -I HAKEMISTO, --include-dir=HAKEMISTO\n"
+"                              Etsi sisÃ€llytettÃ€viÃ€ makefile:ja "
+"HAKEMISTOsta.\n"
+
+#: main.c:316
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+"  -j [N], --jobs[=N]          Salli N yhtÃ€aikaista tyÃ¶tÃ€; ilman N:Ã€Ã€ "
+"Ã€Ã€retÃ¶n.\n"
+
+#: main.c:318
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr ""
+"  -k, --keep-going            Jatka vaikka joidenkin kohteiden tuottaminen\n"
+"                                epÃ€onnistuisi.\n"
+
+#: main.c:320
+msgid ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              ÃlÃ€ aloita useita tÃ¶itÃ€ ellei kuormitus alle "
+"N.\n"
+
+#: main.c:323
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+"  -L, --check-symlink-times   KÃ€ytÃ€ uusinta mtime-aikaa symlinkkien ja\n"
+"                                kohteen vÃ€lillÃ€.\n"
+
+#: main.c:325
+msgid ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Don't actually run any commands; just print "
+"them.\n"
+msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              NÃ€ytÃ€ ajettavat komennot, Ã€lÃ€ kÃ€ynnistÃ€ "
+"niitÃ€.\n"
+
+#: main.c:328
+msgid ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+"  -o TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n"
+"                              KÃ€sittele TIEDOSTO vanhana, Ã€lÃ€ tuota sitÃ€.\n"
+
+#: main.c:331
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr "  -p, --print-data-base       NÃ€ytÃ€ make:in sisÃ€inen tietokanta.\n"
+
+#: main.c:333
+msgid ""
+"  -q, --question              Run no commands; exit status says if up to "
+"date.\n"
+msgstr ""
+"  -q, --question              ÃlÃ€ aja komentoja; paluuarvo kertoo ajan-\n"
+"                                tasaisuuden.\n"
+
+#: main.c:335
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr ""
+"  -r, --no-builtin-rules      Poista kÃ€ytÃ¶stÃ€ sisÃ€iset oletussÃ€Ã€nnÃ¶t.\n"
+
+#: main.c:337
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr ""
+"  -R, --no-builtin-variables  Poista kÃ€ytÃ¶stÃ€ sisÃ€iset muuttuja-asetukset.\n"
+
+#: main.c:339
+msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+msgstr "  -s, --silent, --quiet       ÃlÃ€ kaiuta komentoja.\n"
+
+#: main.c:341
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              Kumoaa valitsimen -k.\n"
+
+#: main.c:344
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr "  -t, --touch                 Kosketa kohteita tuottamisen sijaan.\n"
+
+#: main.c:346
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr "  -v, --version               NÃ€ytÃ€ make:in versionumero ja poistu.\n"
+
+#: main.c:348
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr "  -w, --print-directory       NÃ€ytÃ€ nykyinen hakemisto.\n"
+
+#: main.c:350
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+"  --no-print-directory        Kumoa -w, vaikka se olisi kÃ€ytÃ¶ssÃ€ "
+"oletuksena.\n"
+
+#: main.c:352
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr ""
+"  -W TIEDOSTO, --what-if=TIEDOSTO, --new-file=TIEDOSTO, --assume-"
+"new=TIEDOSTO\n"
+"                              KÃ€sittele TIEDOSTO aina uutena.\n"
+
+#: main.c:355
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+"  --warn-undefined-variables  Varoita viittauksista mÃ€Ã€rittelemÃ€ttÃ¶miin\n"
+"                                muuttujiin.\n"
+
+#: main.c:549
+msgid "empty string invalid as file name"
+msgstr "tyhjÃ€ merkkijono ei kelpaa tiedostonimeksi"
+
+#: main.c:630
+#, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "tuntematon vianetsintÃ€tason mÃ€Ã€ritys \"%s\""
+
+#: main.c:670
+#, fuzzy, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgstr "%s: Keskeytys/poikkeus siepattu (koodi = 0x%x, osoite = 0x%x)\n"
+
+#: main.c:677
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
+msgstr ""
+"\n"
+"Ohjelmasta %s kutsuttiin kÃ€sittelemÃ€tÃ¶ntÃ€ poikkeussuodinta\n"
+"Poikkeuskoodi = %x\n"
+"Poikkeusliput = %x\n"
+"Poikkeusosoite = %x\n"
+
+#: main.c:685
+#, fuzzy, c-format
+msgid "Access violation: write operation at address %lx\n"
+msgstr "Suojausvirhe: kirjoitusoperaatio osoitteeseen %x\n"
+
+#: main.c:686
+#, fuzzy, c-format
+msgid "Access violation: read operation at address %lx\n"
+msgstr "Suojausvirhe: lukuoperaatio osoitteeseen %x\n"
+
+#: main.c:762 main.c:773
+#, c-format
+msgid "find_and_set_shell setting default_shell = %s\n"
+msgstr "find_and_set_shell asettaa default_shell = %s\n"
+
+#: main.c:814
+#, c-format
+msgid "find_and_set_shell path search set default_shell = %s\n"
+msgstr "find_and_set_shell: polkuhaku asetti default_shell = %s\n"
+
+#: main.c:1236
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "%s keskeytyy 30 sekunniksi..."
+
+#: main.c:1238
+#, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr "sleep(30) valmis. Jatketaan.\n"
+
+#: main.c:1466
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile-tiedosto vakiosyÃ¶tteestÃ€ mÃ€Ã€ritelty kahdesti."
+
+#: main.c:1505 vmsjobs.c:486
+msgid "fopen (temporary file)"
+msgstr "fopen (vÃ€liaikaistiedosto)"
+
+#: main.c:1511
+msgid "fwrite (temporary file)"
+msgstr "fwrite (vÃ€liaikaistiedosto)"
+
+#: main.c:1640
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Rinnakkaiset tyÃ¶t (-j) eivÃ€t ole tuettuja tÃ€llÃ€ alustalla."
+
+#: main.c:1641
+msgid "Resetting to single job (-j1) mode."
+msgstr "Palataan yhden tyÃ¶n (-j1) tilaan."
+
+#: main.c:1656
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "sisÃ€inen virhe: useitan --jobserver-fds -valitsimia"
+
+#: main.c:1664
+#, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr "sisÃ€inen virhe: virheellinen --jobserver-fds -merkkijono \"%s\""
+
+#: main.c:1674
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan tyÃ¶palvelin kÃ€ytÃ¶stÃ€."
+
+#: main.c:1684
+msgid "dup jobserver"
+msgstr "kaksinkertainen tyÃ¶palvelin"
+
+#: main.c:1687
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr ""
+"varoitus: tyÃ¶palvelin ei kÃ€ytettÃ€vissÃ€: kÃ€ytetÃ€Ã€n -j1. LisÃ€Ã€ \"+\" ylemmÃ€n "
+"tason make-sÃ€Ã€ntÃ¶Ã¶n."
+
+#: main.c:1710
+msgid "creating jobs pipe"
+msgstr "luodaan tyÃ¶putki"
+
+#: main.c:1725
+msgid "init jobserver pipe"
+msgstr "alustetaan tyÃ¶palvelimen putki"
+
+#: main.c:1744
+msgid "Symbolic links not supported: disabling -L."
+msgstr "Ei tukea symbolisille linkeille: poistetaan -L kÃ€ytÃ¶stÃ€."
+
+#: main.c:1820
+msgid "Updating makefiles....\n"
+msgstr "PÃ€ivitetÃ€Ã€n makefile-tiedostoja....\n"
+
+#: main.c:1845
+#, c-format
+msgid "Makefile `%s' might loop; not remaking it.\n"
+msgstr ""
+"Ei uudelleentuoteta makefile-tiedostoa \"%s\" - vÃ€ltetÃ€Ã€n mahdollinen "
+"ikuinen silmukka.\n"
+
+#: main.c:1924
+#, c-format
+msgid "Failed to remake makefile `%s'."
+msgstr "Makefile-tiedoston \"%s\" uudelleentuottaminen epÃ€onnistui."
+
+#: main.c:1941
+#, c-format
+msgid "Included makefile `%s' was not found."
+msgstr "SisÃ€llytettyÃ€ makefile-tiedostoa \"%s\" ei lÃ¶ytynyt."
+
+#: main.c:1946
+#, c-format
+msgid "Makefile `%s' was not found"
+msgstr "Makefile-tiedostoa \"%s\" ei lÃ¶ytynyt"
+
+#: main.c:2016
+msgid "Couldn't change back to original directory."
+msgstr "Ei voitu siirtyÃ€ takaisin alkuperÃ€iseen hakemistoon."
+
+#: main.c:2024
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "UudelleenkÃ€ynnistetÃ€Ã€n[%u]:"
+
+#: main.c:2140
+msgid "unlink (temporary file): "
+msgstr "unlink (vÃ€liaikaistiedosto): "
+
+#: main.c:2169
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ".DEFAULT_GOAL sisÃ€ltÃ€Ã€ yli yhden kohteen"
+
+#: main.c:2189
+msgid "No targets specified and no makefile found"
+msgstr "Kohteita ei ole annettu, eikÃ€ makefileÃ€ lÃ¶ytynyt"
+
+#: main.c:2191
+msgid "No targets"
+msgstr "Ei kohteita"
+
+#: main.c:2196
+msgid "Updating goal targets....\n"
+msgstr ""
+
+#: main.c:2222
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr ""
+"varoitus: Havaittu vÃ€Ã€rÃ€ kellonaika. KÃ€Ã€nnÃ¶sversio saattaa olla "
+"epÃ€tÃ€ydellinen."
+
+#: main.c:2383
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "KÃ€yttÃ¶: %s [valitsimet] [kohde] ...\n"
+
+#: main.c:2389
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"TÃ€mÃ€ ohjelma on kÃ€Ã€nnetty jÃ€rjestelmÃ€lle %s.\n"
+
+#: main.c:2391
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"TÃ€mÃ€ ohjelma on kÃ€Ã€nnetty jÃ€rjestelmÃ€lle %s (%s).\n"
+
+#: main.c:2394
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr ""
+"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen <bug-make@gnu.org>.\n"
+
+#: main.c:2466
+#, c-format
+msgid "the `-%c' option requires a non-empty string argument"
+msgstr "valitsin \"-%c\" vaatii ei-tyhjÃ€n merkkijonoargumentin"
+
+#: main.c:2518
+#, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "valitsin \"-%c\" vaatii positiivisen kokonaislukuargumentin"
+
+#: main.c:2942
+#, c-format
+msgid ""
+"%sThis is free software; see the source for copying conditions.\n"
+"%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
+"%sPARTICULAR PURPOSE.\n"
+msgstr ""
+"%sTÃ€mÃ€ on vapaa ohjelmisto; katso kopiointiehdot lÃ€hdekoodista.\n"
+"%sTakuuta EI ole, ei edes KAUPALLISESTI HYVÃKSYTTÃVÃSTÃ LAADUSTA tai\n"
+"%sSOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n"
+
+#: main.c:2948
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s\n"
+msgstr ""
+"\n"
+"%sTÃ€mÃ€ ohjelma on kÃ€Ã€nnetty jÃ€rjestelmÃ€lle %s.\n"
+
+#: main.c:2950
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s (%s)\n"
+msgstr ""
+"\n"
+"%sTÃ€mÃ€ ohjelma on kÃ€Ã€nnetty jÃ€rjestelmÃ€lle %s (%s).\n"
+
+#: main.c:2968
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Make-tietokanta, tulostettu %s"
+
+#: main.c:2978
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Make-tietokanta saatu valmiiksi %s\n"
+
+#: main.c:3101
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: SiirrytÃ€Ã€n tuntemattomaan hakemistoon\n"
+
+#: main.c:3103
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Poistutaan tuntemattomasta hakemistosta\n"
+
+#: main.c:3106
+#, c-format
+msgid "%s: Entering directory `%s'\n"
+msgstr "%s: SiirrytÃ€Ã€n hakemistoon \"%s\"\n"
+
+#: main.c:3109
+#, c-format
+msgid "%s: Leaving directory `%s'\n"
+msgstr "%s: Poistutaan hakemistosta \"%s\"\n"
+
+#: main.c:3114
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: SiirrytÃ€Ã€n tuntemattomaan hakemistoon\n"
+
+#: main.c:3117
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Poistutaan tuntemattomasta hakemistosta\n"
+
+#: main.c:3121
+#, c-format
+msgid "%s[%u]: Entering directory `%s'\n"
+msgstr "%s[%u]: SiirrytÃ€Ã€n hakemistoon \"%s\"\n"
+
+#: main.c:3124
+#, c-format
+msgid "%s[%u]: Leaving directory `%s'\n"
+msgstr "%s[%u]: Poistutaan hakemistosta \"%s\"\n"
+
+#: misc.c:285
+msgid ".  Stop.\n"
+msgstr ". Seis.\n"
+
+#: misc.c:306
+#, c-format
+msgid "Unknown error %d"
+msgstr "Tuntematon virhe %d"
+
+#: misc.c:316
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: misc.c:324
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+msgid "virtual memory exhausted"
+msgstr "virtuaalimuisti lopussa"
+
+#: misc.c:646
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: kÃ€yttÃ€jÃ€ %lu (todellinen %lu), ryhmÃ€ %lu (todellinen %lu)\n"
+
+#: misc.c:667
+msgid "Initialized access"
+msgstr "AlkuperÃ€iset kÃ€yttÃ¶oikeudet"
+
+#: misc.c:746
+msgid "User access"
+msgstr "KÃ€yttÃ€jÃ€n kÃ€yttÃ¶oikeudet"
+
+#: misc.c:794
+msgid "Make access"
+msgstr "Make-prosessin kÃ€yttÃ¶oikeudet"
+
+#: misc.c:828
+msgid "Child access"
+msgstr "Lapsiprosessin kÃ€yttÃ¶oikeudet"
+
+#: misc.c:892
+#, c-format
+msgid "write error: %s"
+msgstr "kirjoitusvirhe: %s"
+
+#: misc.c:894
+msgid "write error"
+msgstr "kirjoitusvirhe"
+
+#: read.c:160
+msgid "Reading makefiles...\n"
+msgstr "Luetaan makefile-tiedostoja...\n"
+
+#: read.c:315
+#, c-format
+msgid "Reading makefile `%s'"
+msgstr "Luetaan makefile-tiedosto \"%s\""
+
+#: read.c:317
+#, c-format
+msgid " (no default goal)"
+msgstr ""
+
+#: read.c:319
+#, c-format
+msgid " (search path)"
+msgstr " (hakupolku)"
+
+#: read.c:321
+#, c-format
+msgid " (don't care)"
+msgstr " (ei vÃ€litetÃ€)"
+
+#: read.c:323
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (ei ~-laajennusta)"
+
+#: read.c:623
+msgid "invalid syntax in conditional"
+msgstr "virheellinen syntaksi ehtolauseessa"
+
+#: read.c:633
+msgid "extraneous `endef'"
+msgstr "ylimÃ€Ã€rÃ€inen \"endef\""
+
+#: read.c:645 read.c:673 variable.c:1316
+msgid "empty variable name"
+msgstr "tyhjÃ€ muuttujan nimi"
+
+#: read.c:662
+msgid "empty `override' directive"
+msgstr "tyhjÃ€ \"override\"-toimintaohje"
+
+#: read.c:687
+msgid "invalid `override' directive"
+msgstr "virheellinen \"override\"-toimintaohje"
+
+#: read.c:854
+msgid "commands commence before first target"
+msgstr "komennot alkavat ennen ensimmÃ€istÃ€ kohdetta"
+
+#: read.c:905
+msgid "missing rule before commands"
+msgstr "puuttuva sÃ€Ã€ntÃ¶ ennen komentoja"
+
+#: read.c:992
+#, c-format
+msgid "missing separator%s"
+msgstr "puuttuva erotin%s"
+
+#: read.c:994
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr " (ehkÃ€ tarkoitit sarkainta eikÃ€ kahdeksaa vÃ€lilyÃ¶ntiÃ€?)"
+
+#: read.c:1152
+msgid "missing target pattern"
+msgstr "puuttuva kohdehahmo"
+
+#: read.c:1154
+msgid "multiple target patterns"
+msgstr "useita kohdehahmoja"
+
+#: read.c:1158
+#, c-format
+msgid "target pattern contains no `%%'"
+msgstr "kohdehahmo ei sisÃ€llÃ€ %%-merkkiÃ€"
+
+#: read.c:1286
+msgid "missing `endif'"
+msgstr "puuttuva \"endif\""
+
+#: read.c:1377
+msgid "Extraneous text after `endef' directive"
+msgstr "YlimÃ€Ã€rÃ€istÃ€ tekstiÃ€ \"endef\"-toimintaohjeen jÃ€lkeen"
+
+#: read.c:1411
+msgid "missing `endef', unterminated `define'"
+msgstr "puuttuva \"endef\", pÃ€Ã€ttÃ€mÃ€tÃ¶n \"define\""
+
+#: read.c:1454
+#, c-format
+msgid "Extraneous text after `%s' directive"
+msgstr "YlimÃ€Ã€rÃ€istÃ€ tekstiÃ€ \"%s\"-toimintaohjeen jÃ€lkeen"
+
+#: read.c:1463 read.c:1477
+#, c-format
+msgid "extraneous `%s'"
+msgstr "ylimÃ€Ã€rÃ€inen \"%s\""
+
+#: read.c:1482
+msgid "only one `else' per conditional"
+msgstr "vain yksi \"else\" ehtolausetta kohden"
+
+#: read.c:1824
+msgid "Malformed target-specific variable definition"
+msgstr "VÃ€Ã€rin muotoiltu kohdekohtainen muuttujamÃ€Ã€rittely"
+
+# skripti?
+#: read.c:1886
+msgid "prerequisites cannot be defined in command scripts"
+msgstr "ennakkoehtoja ei voi mÃ€Ã€ritellÃ€ komentoskripteissÃ€"
+
+#: read.c:1921
+msgid "mixed implicit and static pattern rules"
+msgstr ""
+
+#: read.c:1924
+msgid "mixed implicit and normal rules"
+msgstr ""
+
+#: read.c:1954
+#, c-format
+msgid "target `%s' doesn't match the target pattern"
+msgstr "kohde \"%s\" ei tÃ€smÃ€Ã€ kohdehahmon kanssa"
+
+#: read.c:1973 read.c:2074
+#, c-format
+msgid "target file `%s' has both : and :: entries"
+msgstr "kohdetiedostolla \"%s\" on sekÃ€ :- ettÃ€ ::-merkinnÃ€t"
+
+#: read.c:1979
+#, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr "kohde \"%s\" annettu yli yhden kerran samassa sÃ€Ã€nnÃ¶ssÃ€."
+
+#: read.c:1988
+#, c-format
+msgid "warning: overriding commands for target `%s'"
+msgstr "varoitus: syrjÃ€ytetÃ€Ã€n kohteen \"%s\" komennot"
+
+#: read.c:1991
+#, c-format
+msgid "warning: ignoring old commands for target `%s'"
+msgstr "varoitus: ei huomioida vanhoja komentoja kohteelle \"%s\""
+
+#: read.c:2575
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "varoitus: havaittu NUL-merkki, rivin loppuosaa ei huomioida"
+
+#: remake.c:229
+#, c-format
+msgid "Nothing to be done for `%s'."
+msgstr "Kohteelle \"%s\" ei tarvitse tehdÃ€ mitÃ€Ã€n."
+
+#: remake.c:230
+#, c-format
+msgid "`%s' is up to date."
+msgstr "\"%s\" on ajan tasalla."
+
+#: remake.c:297
+#, c-format
+msgid "Pruning file `%s'.\n"
+msgstr "Karsitaan tiedosto \"%s\".\n"
+
+#: remake.c:349
+#, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr "%sKohteen \"%s\" tuottamiseen ei ole sÃ€Ã€ntÃ¶Ã€%s"
+
+#: remake.c:351
+#, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr ""
+"%1$s\"%3$s\"-kohteen tarvitseman kohteen \"%2$s\" tuottamiseen ei ole sÃ€Ã€ntÃ¶Ã€"
+"%4$s"
+
+#: remake.c:378
+#, c-format
+msgid "Considering target file `%s'.\n"
+msgstr "Tarkastellaan tiedostoa \"%s\".\n"
+
+#: remake.c:385
+#, c-format
+msgid "Recently tried and failed to update file `%s'.\n"
+msgstr "Tiedoston \"%s\" pÃ€ivitysyritys epÃ€onnistui Ã€skettÃ€in.\n"
+
+#: remake.c:400
+#, c-format
+msgid "File `%s' was considered already.\n"
+msgstr "Tiedostoa \"%s\" on jo tarkasteltu.\n"
+
+#: remake.c:410
+#, c-format
+msgid "Still updating file `%s'.\n"
+msgstr "PÃ€ivitetÃ€Ã€n edelleen tiedostoa \"%s\".\n"
+
+#: remake.c:413
+#, c-format
+msgid "Finished updating file `%s'.\n"
+msgstr "Tiedosto \"%s\" pÃ€ivitetty.\n"
+
+#: remake.c:434
+#, c-format
+msgid "File `%s' does not exist.\n"
+msgstr "Tiedosto \"%s\" ei ole olemassa.\n"
+
+#: remake.c:441
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+msgstr ""
+"*** Varoitus: .LOW_RESOLUTION_TIME-tiedostolla \"%s\" on "
+"korkearesoluutioinen aikaleima"
+
+#: remake.c:454 remake.c:962
+#, c-format
+msgid "Found an implicit rule for `%s'.\n"
+msgstr "Kohteelle \"%s\" lÃ¶ytyi oletussÃ€Ã€ntÃ¶.\n"
+
+#: remake.c:456 remake.c:964
+#, c-format
+msgid "No implicit rule found for `%s'.\n"
+msgstr "Kohteelle \"%s\" ei lÃ¶ytynyt oletussÃ€Ã€ntÃ¶Ã€.\n"
+
+#: remake.c:462 remake.c:970
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "KÃ€ytetÃ€Ã€n oletuskomentoja kohteelle \"%s\".\n"
+
+#: remake.c:484 remake.c:996
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "KehÃ€riippuvuus %s <- %s hylÃ€tty."
+
+#: remake.c:601
+#, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
+msgstr "Kohdetiedoston \"%s\" ennakkoehdot tÃ€ytetty.\n"
+
+#: remake.c:607
+#, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr "Kohteen \"%s\" ennakkoehtoja tÃ€ytetÃ€Ã€n.\n"
+
+#: remake.c:620
+#, c-format
+msgid "Giving up on target file `%s'.\n"
+msgstr "Luovutaan kohdetiedostosta \"%s\".\n"
+
+#: remake.c:625
+#, c-format
+msgid "Target `%s' not remade because of errors."
+msgstr "Kohdetta \"%s\" ei tuotettu uudelleen virheiden vuoksi."
+
+#: remake.c:677
+#, c-format
+msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgstr ""
+
+#: remake.c:682
+#, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr "Kohteen \"%2$s\" ennakkoehto \"%1$s\" ei ole olemassa.\n"
+
+#: remake.c:687
+#, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr "Ennakkoehto \"%s\" on uudempi kuin kohde \"%s\".\n"
+
+#: remake.c:690
+#, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr "Ennakkoehto \"%s\" on vanhempi kuin kohde \"%s\".\n"
+
+#: remake.c:708
+#, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgstr ""
+
+#: remake.c:715
+#, c-format
+msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgstr ""
+
+#: remake.c:720
+#, c-format
+msgid "Making `%s' due to always-make flag.\n"
+msgstr "Tuotetaan \"%s\", koska --always-make -valitsin on kÃ€ytÃ¶ssÃ€.\n"
+
+#: remake.c:728
+#, c-format
+msgid "No need to remake target `%s'"
+msgstr "Ei tarvetta uudelleentuottaa kohdetta \"%s\""
+
+#: remake.c:730
+#, c-format
+msgid "; using VPATH name `%s'"
+msgstr "; kÃ€ytetÃ€Ã€n VPATH-nimeÃ€ \"%s\""
+
+#: remake.c:750
+#, c-format
+msgid "Must remake target `%s'.\n"
+msgstr "Kohde \"%s\" on tuotettava uudelleen.\n"
+
+#: remake.c:756
+#, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr "  Ei huomioida VPATH-nimeÃ€ \"%s\".\n"
+
+#: remake.c:765
+#, c-format
+msgid "Commands of `%s' are being run.\n"
+msgstr ""
+
+#: remake.c:772
+#, c-format
+msgid "Failed to remake target file `%s'.\n"
+msgstr "Kohdetiedoston \"%s\" uudelleentuottaminen epÃ€onnistui.\n"
+
+#: remake.c:775
+#, c-format
+msgid "Successfully remade target file `%s'.\n"
+msgstr "Kohdetiedosto \"%s\" uudelleentuotettiin onnistuneesti.\n"
+
+#: remake.c:778
+#, c-format
+msgid "Target file `%s' needs remade under -q.\n"
+msgstr ""
+
+#: remake.c:1306
+#, c-format
+msgid "Warning: File `%s' has modification time in the future"
+msgstr "Varoitus: Tiedoston \"%s\" muutosaika on tulevaisuudessa"
+
+#: remake.c:1313
+#, c-format
+msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgstr "Varoitus: Tiedoston \"%s\" muutosaika on %.2g sekuntia tulevaisuudessa"
+
+#: remake.c:1511
+#, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr ".LIBPATTERNS-elementti \"%s\" ei ole hahmo"
+
+#: remote-cstms.c:125
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr ""
+
+#: rule.c:548
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# OletussÃ€Ã€nnÃ¶t"
+
+#: rule.c:563
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Ei oletussÃ€Ã€ntÃ¶jÃ€."
+
+#: rule.c:566
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+"\n"
+"# %u oletussÃ€Ã€ntÃ¶Ã€, %u"
+
+#: rule.c:575
+msgid " terminal."
+msgstr ""
+
+#: rule.c:583
+#, c-format
+msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgstr "VIKA: num_pattern_rules vÃ€Ã€rÃ€! %u != %u"
+
+#: signame.c:85
+msgid "unknown signal"
+msgstr "tuntematon signaali"
+
+#: signame.c:93
+msgid "Hangup"
+msgstr "Linjankatkaisu"
+
+#: signame.c:96
+msgid "Interrupt"
+msgstr "Keskeytys"
+
+#: signame.c:99
+msgid "Quit"
+msgstr "Lopetettu"
+
+#: signame.c:102
+msgid "Illegal Instruction"
+msgstr "Virheellinen kÃ€sky"
+
+#: signame.c:105
+msgid "Trace/breakpoint trap"
+msgstr "JÃ€ljitys/katkaisupisteansa"
+
+#: signame.c:110
+msgid "Aborted"
+msgstr "Keskeytetty"
+
+#: signame.c:113
+msgid "IOT trap"
+msgstr "IOT-ansa"
+
+#: signame.c:116
+msgid "EMT trap"
+msgstr "EMT-ansa"
+
+#: signame.c:119
+msgid "Floating point exception"
+msgstr "Liukulukupoikkeus"
+
+#: signame.c:122
+msgid "Killed"
+msgstr "Tapettu"
+
+#: signame.c:125
+msgid "Bus error"
+msgstr "VÃ€ylÃ€virhe"
+
+#: signame.c:128
+msgid "Segmentation fault"
+msgstr "Muistialueen ylitys"
+
+#: signame.c:131
+msgid "Bad system call"
+msgstr "Virheellinen jÃ€rjestelmÃ€kutsu"
+
+#: signame.c:134
+msgid "Broken pipe"
+msgstr "Katkennut putki"
+
+#: signame.c:137
+msgid "Alarm clock"
+msgstr "HerÃ€tyskello"
+
+#: signame.c:140
+msgid "Terminated"
+msgstr "PÃ€Ã€tetty"
+
+#: signame.c:143
+msgid "User defined signal 1"
+msgstr "KÃ€yttÃ€jÃ€n mÃ€Ã€rittelemÃ€ signaali 1"
+
+#: signame.c:146
+msgid "User defined signal 2"
+msgstr "KÃ€yttÃ€jÃ€n mÃ€Ã€rittelemÃ€ signaali 2"
+
+#: signame.c:151 signame.c:154
+msgid "Child exited"
+msgstr "Lapsi lopetti"
+
+#: signame.c:157
+msgid "Power failure"
+msgstr "SÃ€hkÃ¶katko"
+
+#: signame.c:160
+msgid "Stopped"
+msgstr "PysÃ€ytetty"
+
+#: signame.c:163
+msgid "Stopped (tty input)"
+msgstr "PysÃ€ytetty (pÃ€Ã€tteen syÃ¶te)"
+
+#: signame.c:166
+msgid "Stopped (tty output)"
+msgstr "PysÃ€ytetty (pÃ€Ã€tteen tuloste)"
+
+#: signame.c:169
+msgid "Stopped (signal)"
+msgstr "PysÃ€ytetty (signaali)"
+
+#: signame.c:172
+msgid "CPU time limit exceeded"
+msgstr "Suoritinaikaraja ylittynyt"
+
+#: signame.c:175
+msgid "File size limit exceeded"
+msgstr "Tiedoston kokoraja ylitetty"
+
+#: signame.c:178
+msgid "Virtual timer expired"
+msgstr "Virtuaaliajastin vanhentunut"
+
+#: signame.c:181
+msgid "Profiling timer expired"
+msgstr "Profilointiajastin vanhentunut"
+
+#: signame.c:187
+msgid "Window changed"
+msgstr "Ikkuna vaihtunut"
+
+#: signame.c:190
+msgid "Continued"
+msgstr "Jatkettu"
+
+#: signame.c:193
+msgid "Urgent I/O condition"
+msgstr "Kiireellinen I/O-tilanne"
+
+#: signame.c:200 signame.c:209
+msgid "I/O possible"
+msgstr "I/O mahdollista"
+
+#: signame.c:203
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+#: signame.c:206
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: signame.c:212
+msgid "Resource lost"
+msgstr "Resurssi menetetty"
+
+#: signame.c:215
+msgid "Danger signal"
+msgstr "Vaarasignaali"
+
+#: signame.c:218
+msgid "Information request"
+msgstr "TietopyyntÃ¶"
+
+#: signame.c:221
+msgid "Floating point co-processor not available"
+msgstr "KÃ€ytettÃ€vissÃ€ ei ole liukulukusuoritinta"
+
+#: strcache.c:210
+#, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d\n"
+msgstr ""
+
+#: strcache.c:211
+#, c-format
+msgid "%s # of strcache buffers: %d\n"
+msgstr ""
+
+#: strcache.c:212
+#, c-format
+msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:214
+#, c-format
+msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: variable.c:1369
+msgid "default"
+msgstr "oletus"
+
+#: variable.c:1372
+msgid "environment"
+msgstr "ympÃ€ristÃ¶"
+
+#: variable.c:1375
+msgid "makefile"
+msgstr "makefile"
+
+#: variable.c:1378
+msgid "environment under -e"
+msgstr "-e:n alainen ympÃ€ristÃ¶"
+
+#: variable.c:1381
+msgid "command line"
+msgstr "komentorivi"
+
+#: variable.c:1384
+msgid "`override' directive"
+msgstr "\"override\"-toimintaohje"
+
+#: variable.c:1387
+msgid "automatic"
+msgstr "automaattinen"
+
+#: variable.c:1396
+#, c-format
+msgid " (from `%s', line %lu)"
+msgstr " (tiedostosta \"%s\", rivi %lu)"
+
+#: variable.c:1438
+msgid "# variable set hash-table stats:\n"
+msgstr "# muuttujajoukon hajautustaulutilastot:\n"
+
+#: variable.c:1449
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Muuttujat\n"
+
+#: variable.c:1453
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# Hahmokohtaisia muuttujien arvoja"
+
+#: variable.c:1467
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# Ei hahmokohtaisia muuttuja-arvoja."
+
+#: variable.c:1469
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u hahmokohtaista muuttuja-arvoa"
+
+#: variable.h:189
+#, c-format
+msgid "warning: undefined variable `%.*s'"
+msgstr "varoitus: mÃ€Ã€rittelemÃ€tÃ¶n muuttuja \"%.*s\""
+
+#: vmsfunctions.c:94
+#, c-format
+msgid "sys$search failed with %d\n"
+msgstr "sys$search epÃ€onnistui, arvo %d\n"
+
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr "Varoitus: TyhjÃ€ uudelleenohjaus\n"
+
+#: vmsjobs.c:175
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr "sisÃ€inen virhe: \"%s\" command_state"
+
+#: vmsjobs.c:268
+#, c-format
+msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+msgstr "-varoitus, Ctrl-Y jÃ€ttÃ€Ã€ aliprosessi(n/t) kÃ€yntiin.\n"
+
+#: vmsjobs.c:284
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+"-varoitus, Ctrl-Y-kÃ€sittely on ehkÃ€ otettava uudelleen kÃ€yttÃ¶Ã¶n DCL:stÃ€.\n"
+
+#: vmsjobs.c:407
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr "SISÃÃNRAKENNETTU [%s][%s]\n"
+
+#: vmsjobs.c:418
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "SISÃÃNRAKENNETTU CD %s\n"
+
+#: vmsjobs.c:436
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr "SISÃÃNRAKENNETTU RM %s\n"
+
+#: vmsjobs.c:457
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "Tuntematon sisÃ€Ã€nrakennettu komento \"%s\"\n"
+
+#: vmsjobs.c:479
+#, c-format
+msgid "Error, empty command\n"
+msgstr "Virhe, tyhjÃ€ komento\n"
+
+#: vmsjobs.c:491
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr "SyÃ¶te uudelleenohjattu kohteesta %s\n"
+
+#: vmsjobs.c:498
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr "Virhetuloste uudelleenohjattu kohteeseen %s\n"
+
+#: vmsjobs.c:505
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr "Tuloste uudelleenohjattu kohteeseen %s\n"
+
+#: vmsjobs.c:568
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "KÃ€ynnistetÃ€Ã€n sen sijaan %s\n"
+
+#: vmsjobs.c:668
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr "Virhe kÃ€ynnistyksessÃ€, %d\n"
+
+#: vpath.c:571
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# VPATH-hakupolut\n"
+
+#: vpath.c:588
+msgid "# No `vpath' search paths."
+msgstr "# Ei \"vpath\"-hakupolkuja."
+
+#: vpath.c:590
+#, c-format
+msgid ""
+"\n"
+"# %u `vpath' search paths.\n"
+msgstr ""
+"\n"
+"# %u \"vpath\"-hakupolkua.\n"
+
+#: vpath.c:593
+msgid ""
+"\n"
+"# No general (`VPATH' variable) search path."
+msgstr ""
+"\n"
+"# Ei yleistÃ€ (\"VPATH\"-muuttuja) hakupolkua."
+
+#: vpath.c:599
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Yleinen (\"VPATH\"-muuttuja) hakupolku:\n"
+"# "
+
+#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
+#~ msgstr "ÃlÃ€ anna -j tai --jobs -valitsinta jos sh.exe ei ole kÃ€ytettÃ€vissÃ€."
+
+#~ msgid "Resetting make for single job mode."
+#~ msgstr "Palautetaan make yhden tyÃ¶n tilaan."
+
+#~ msgid "Syntax error, still inside '\"'\n"
+#~ msgstr "Syntaksivirhe, edelleen \":n sisÃ€llÃ€\n"
Index: trunk/src/gmake/po/ga.po
===================================================================
--- trunk/src/gmake/po/ga.po	(revision 503)
+++ trunk/src/gmake/po/ga.po	(revision 503)
@@ -0,0 +1,2023 @@
+# Irish translations for make.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Kevin Patrick Scannell <scannell@SLU.EDU>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: make 3.81-b3\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"PO-Revision-Date: 2005-06-28 10:16-0500\n"
+"Last-Translator: Kevin Patrick Scannell <scannell@SLU.EDU>\n"
+"Language-Team: Irish <ga@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ar.c:53
+#, c-format
+msgid "attempt to use unsupported feature: `%s'"
+msgstr "rinneadh iarracht ar ghné gan tacaíocht a úsáid: `%s'"
+
+#: ar.c:137
+msgid "touch archive member is not available on VMS"
+msgstr "ní féidir ball cartlainne a `touch'áil ar VMS"
+
+#: ar.c:168
+#, c-format
+msgid "touch: Archive `%s' does not exist"
+msgstr "touch: Níl an chartlann `%s' ann"
+
+#: ar.c:171
+#, c-format
+msgid "touch: `%s' is not a valid archive"
+msgstr "touch: Níl `%s' ina cartlann bhailí"
+
+#: ar.c:178
+#, c-format
+msgid "touch: Member `%s' does not exist in `%s'"
+msgstr "touch: Níl a leithéid de bhall `%s' i `%s'"
+
+#: ar.c:185
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgstr "touch: Droch-chód aisfhillidh ó ar_member_touch ar `%s'"
+
+#: arscan.c:69
+#, c-format
+msgid "lbr$set_module failed to extract module info, status = %d"
+msgstr ""
+"níorbh fhéidir le lbr$set_module an t-eolas modúil a bhaint amach, stádas = %"
+"d"
+
+#: arscan.c:154
+#, c-format
+msgid "lbr$ini_control failed with status = %d"
+msgstr "theip ar lbr$ini_control le stádas = %d"
+
+#: arscan.c:165
+#, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr ""
+"ní féidir leabharlann `%s' a oscailt chun cuardach a dhéanamh ar an mball `%"
+"s'"
+
+#: arscan.c:825
+#, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Ball `%s'%s: %ld beart ag %ld (%ld).\n"
+
+#: arscan.c:826
+msgid " (name might be truncated)"
+msgstr " (is féidir go bhfuil an t-ainm teasctha)"
+
+#: arscan.c:828
+#, c-format
+msgid "  Date %s"
+msgstr "  Dáta %s"
+
+#: arscan.c:829
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr "  uid = %d, gid = %d, mód = 0%o.\n"
+
+#: commands.c:422
+msgid "*** Break.\n"
+msgstr "*** Briseadh.\n"
+
+#: commands.c:545
+#, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr "*** [%s] Is féidir gur ball bréige é `%s'; ní scriosadh"
+
+#: commands.c:548
+#, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr "*** Is féidir gur ball bréige é `%s'; ní scriosadh"
+
+#: commands.c:561
+#, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "*** [%s] Comhad `%s' á scriosadh"
+
+#: commands.c:563
+#, c-format
+msgid "*** Deleting file `%s'"
+msgstr "*** Comhad `%s' á scriosadh"
+
+#: commands.c:599
+msgid "#  commands to execute"
+msgstr "#  orduithe le rith"
+
+#: commands.c:602
+msgid " (built-in):"
+msgstr " (insuite):"
+
+#: commands.c:604
+#, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr " (ó `%s', líne %lu):\n"
+
+#: dir.c:983
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Comhadlanna\n"
+
+#: dir.c:995
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: níorbh fhéidir é a stat.\n"
+
+#: dir.c:999
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (eochair %s, am-m %d): ní féidir é a oscailt.\n"
+
+#: dir.c:1003
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): ní féidir é a oscailt.\n"
+
+#: dir.c:1008
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (gléas %ld, i-nód %ld): níorbh fhéidir é a oscailt.\n"
+
+#: dir.c:1035
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "# %s (eochair %s, am-m %d): "
+
+#: dir.c:1039
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): "
+
+#: dir.c:1044
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (gléas %ld, i-nód %ld): "
+
+#: dir.c:1050 dir.c:1071
+msgid "No"
+msgstr "Níl"
+
+#: dir.c:1053 dir.c:1074
+msgid " files, "
+msgstr " comhad, "
+
+#: dir.c:1055 dir.c:1076
+msgid "no"
+msgstr "níl"
+
+#: dir.c:1058
+msgid " impossibilities"
+msgstr " rudaí neamhfhéideartha"
+
+#: dir.c:1062
+msgid " so far."
+msgstr " go dtí seo."
+
+#: dir.c:1079
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n"
+
+#: expand.c:128
+#, c-format
+msgid "Recursive variable `%s' references itself (eventually)"
+msgstr "Déanann an athróg athchúrsach `%s' tagairt dó féin (sa deireadh)"
+
+#: expand.c:266
+msgid "unterminated variable reference"
+msgstr "tagairt athróige gan chríochnú"
+
+#: file.c:270
+#, c-format
+msgid "Commands were specified for file `%s' at %s:%lu,"
+msgstr "Sonraíodh orduithe le haghaidh comhaid `%s' ag %s:%lu,"
+
+#: file.c:275
+#, c-format
+msgid "Commands for file `%s' were found by implicit rule search,"
+msgstr ""
+"Aimsíodh orduithe le haghaidh `%s' trí chuardach ar rialacha intuigthe,"
+
+#: file.c:278
+#, c-format
+msgid "but `%s' is now considered the same file as `%s'."
+msgstr "ach anois is ionann iad na comhaid `%s' agus `%s'."
+
+#: file.c:281
+#, c-format
+msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgstr ""
+"Déanfar neamhshuim ar orduithe le haghaidh `%s'; úsáidfear na cinn le "
+"haghaidh `%s' ina n-ionad."
+
+#: file.c:301
+#, c-format
+msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgstr ""
+"ní féidir idirstad aonair `%s' a athainmnigh le hidirstad dúbailte `%s'"
+
+#: file.c:306
+#, c-format
+msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgstr "ní féidir idirstad dúbailte `%s' a athainmniú le hidirstad aonair `%s'"
+
+#: file.c:381
+#, c-format
+msgid "*** Deleting intermediate file `%s'"
+msgstr "*** Comhad idirmheánach `%s' á scriosadh"
+
+#: file.c:385
+msgid "Removing intermediate files...\n"
+msgstr "Comhaid idirmheánacha á mbaint...\n"
+
+#: file.c:781
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad"
+
+#: file.c:782
+msgid "Current time"
+msgstr "An t-am anois"
+
+#: file.c:881
+msgid "# Not a target:"
+msgstr "# Ní sprioc é:"
+
+#: file.c:903
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "#  Comhad luachmhar (réamhriachtanas de .PRECIOUS)."
+
+#: file.c:905
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "#  Sprioc bhréige (réamhriachtanas de .PHONY)."
+
+#: file.c:907
+msgid "#  Command-line target."
+msgstr "#  Sprioc líne na n-orduithe."
+
+#: file.c:909
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "#  Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude."
+
+#: file.c:911
+msgid "#  Implicit rule search has been done."
+msgstr "#  Rinneadh cuardach ar rialacha intuigthe."
+
+#: file.c:912
+msgid "#  Implicit rule search has not been done."
+msgstr "#  Ní dhearna cuardach ar rialacha intuigthe."
+
+#: file.c:914
+#, c-format
+msgid "#  Implicit/static pattern stem: `%s'\n"
+msgstr "#  Stoc patrúin intuigthe/statach: `%s'\n"
+
+#: file.c:916
+msgid "#  File is an intermediate prerequisite."
+msgstr "#  Tá an comhad ina réamhriachtanas idirmheánach."
+
+#: file.c:919
+msgid "#  Also makes:"
+msgstr "#  Déantar fosta:"
+
+#: file.c:925
+msgid "#  Modification time never checked."
+msgstr "#  Níor seiceáladh an t-am mionathraithe riamh."
+
+#: file.c:927
+msgid "#  File does not exist."
+msgstr "#  Níl a leithéid de chomhad ann."
+
+#: file.c:929
+msgid "#  File is very old."
+msgstr "#  Is cianaosta an comhad seo."
+
+#: file.c:934
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "#  Athraithe %s\n"
+
+#: file.c:937
+msgid "#  File has been updated."
+msgstr "#  Nuashonraíodh an comhad."
+
+#: file.c:937
+msgid "#  File has not been updated."
+msgstr "#  Níor nuashonraíodh an comhad."
+
+#: file.c:941
+msgid "#  Commands currently running (THIS IS A BUG)."
+msgstr "#  Tá orduithe ann atá ag rith faoi láthair (IS FABHT É SEO)."
+
+#: file.c:944
+msgid "#  Dependencies commands running (THIS IS A BUG)."
+msgstr "#  Tá orduithe spleáchais ag rith (IS FABHT É SEO)."
+
+#: file.c:953
+msgid "#  Successfully updated."
+msgstr "#  D'éirigh leis an nuashonrú."
+
+#: file.c:957
+msgid "#  Needs to be updated (-q is set)."
+msgstr "#  Tá gá le nuashonrú (-q ceaptha)."
+
+#: file.c:960
+msgid "#  Failed to be updated."
+msgstr "#  Theip ar nuashonrú."
+
+#: file.c:963
+msgid "#  Invalid value in `update_status' member!"
+msgstr "#  Luach neamhbhailí sa bhall `update_status'!"
+
+#: file.c:970
+msgid "#  Invalid value in `command_state' member!"
+msgstr "#  Luach neamhbhailí sa bhall `command_state'!"
+
+#: file.c:989
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Comhaid"
+
+#: file.c:993
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# comhaid hais-tábla stait:\n"
+"# "
+
+#: function.c:759
+msgid "non-numeric first argument to `word' function"
+msgstr "tá an chéad argóint neamhuimhriúil leis an fheidhm `word'"
+
+#: function.c:764
+msgid "first argument to `word' function must be greater than 0"
+msgstr "caithfidh an chéad argóint leis an fheidhm `word' a bheith deimhneach"
+
+#: function.c:785
+msgid "non-numeric first argument to `wordlist' function"
+msgstr "is neamhuimhriúil í an chéad argóint leis an fheidhm `wordlist'"
+
+#: function.c:787
+msgid "non-numeric second argument to `wordlist' function"
+msgstr "is neamhuimhriúil í an dara hargóint leis an fheidhm `wordlist'"
+
+#: function.c:1453
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: theip ar DuplicateHandle(In) (e=%d)\n"
+
+#: function.c:1464
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: theip ar DuplicateHandle(Err) (e=%d)\n"
+
+#: function.c:1469
+#, fuzzy, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "Theip ar CreatePipe() (e=%d)\n"
+
+#: function.c:1474
+msgid "windows32_openpipe (): process_init_fd() failed\n"
+msgstr "windows32_openpipe (): theip ar process_init_fd()\n"
+
+#: function.c:1725
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
+
+#: function.c:2101
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr "Easpa argóintí (%d) d'fheidhm `%s'"
+
+#: function.c:2113
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr "Níl an fheidhm `%s' ar fáil ar an chóras seo"
+
+#: function.c:2163
+#, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr "glao ar fheidhm `%s' gan chríochnú: `%c' ar iarraidh"
+
+#: getopt.c:663
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Tá an rogha `%s' débhríoch\n"
+
+#: getopt.c:687
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `--%s'\n"
+
+#: getopt.c:692
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `%c%s'\n"
+
+#: getopt.c:709 getopt.c:882
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ní foláir argóint don rogha `%s'\n"
+
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: rogha anaithnid `--%s'\n"
+
+#: getopt.c:742
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: rogha anaithnid `%c%s'\n"
+
+#: getopt.c:768
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: rogha neamhcheadaithe -- %c\n"
+
+#: getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: rogha neamhbhailí -- %c\n"
+
+#: getopt.c:801 getopt.c:931
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ní foláir argóint don rogha -- %c\n"
+
+#: getopt.c:848
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
+
+#: getopt.c:866
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `-W %s'\n"
+
+#: hash.c:51
+#, c-format
+msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgstr "ní féidir %ld beart a dháileadh le haghaidh hais-tábla: cuimhne ídithe"
+
+#: hash.c:282
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr "Lód=%ld/%ld=%.0f%%, "
+
+#: hash.c:284
+#, c-format
+msgid "Rehash=%d, "
+msgstr "Ath-haiseáil=%d, "
+
+#: hash.c:285
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%"
+
+#: implicit.c:41
+#, c-format
+msgid "Looking for an implicit rule for `%s'.\n"
+msgstr "Ag déanamh cuardach ar riail intuigthe le haghaidh `%s'.\n"
+
+#: implicit.c:57
+#, c-format
+msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgstr ""
+"Ag déanamh cuardach ar riail intuigthe le haghaidh bhall cartlainne `%s'.\n"
+
+#: implicit.c:319
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n"
+
+#: implicit.c:476
+#, c-format
+msgid "Trying pattern rule with stem `%.*s'.\n"
+msgstr "Ag baint triail as riail phatrúin le stoc `%.*s'.\n"
+
+#: implicit.c:667
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Réamhriachtanas intuigthe neamhfhéideartha `%s' á dhiúltú.\n"
+
+#: implicit.c:668
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr "Réamhriachtanas neamhfhéideartha rialach `%s' á dhiúltú.\n"
+
+#: implicit.c:678
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Ag baint triail as an réamhriachtanas intuigthe `%s'.\n"
+
+#: implicit.c:679
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr "Ag baint triail as an réamhriachtanas rialach `%s'.\n"
+
+#: implicit.c:710
+#, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr "Aimsíodh réamhriachtanas `%s' mar VPATH `%s'\n"
+
+#: implicit.c:730
+#, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr "Ag déanamh cuardach ar riail le comhad idirmheánach `%s'.\n"
+
+#: job.c:321
+msgid "Cannot create a temporary file\n"
+msgstr "Ní féidir comhad sealadach a chruthú\n"
+
+#: job.c:388
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)"
+
+#: job.c:389
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr "*** [%s] Earráid 0x%x"
+
+#: job.c:393
+#, c-format
+msgid "[%s] Error %d (ignored)"
+msgstr "[%s] Earráid %d (rinneadh neamhshuim)"
+
+#: job.c:394
+#, c-format
+msgid "*** [%s] Error %d"
+msgstr "*** [%s] Earráid %d"
+
+#: job.c:399
+msgid " (core dumped)"
+msgstr " (córdhumpa)"
+
+#: job.c:488
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..."
+
+#: job.c:518
+#, c-format
+msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgstr "Mac beo 0x%08lx (%s) PID %ld %s\n"
+
+#: job.c:520 job.c:701 job.c:804 job.c:1457
+msgid " (remote)"
+msgstr " (cianda)"
+
+#: job.c:698
+#, c-format
+msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgstr "Mac caillteach á bhaint: 0x%08lx PID %ld %s\n"
+
+#: job.c:699
+#, c-format
+msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgstr "Mac buaiteach á bhaint: 0x%08lx PID %ld %s\n"
+
+#: job.c:704
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
+
+#: job.c:802
+#, c-format
+msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgstr "Mac 0x%08lx PID %ld%s á dhealú ón slabhra.\n"
+
+#: job.c:862
+msgid "write jobserver"
+msgstr "scríobh jabfhreastalaí"
+
+#: job.c:864
+#, c-format
+msgid "Released token for child 0x%08lx (%s).\n"
+msgstr "Saoradh ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
+
+#: job.c:1383
+#, fuzzy, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%d)\n"
+
+#: job.c:1387 job.c:2020
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"%d argóint sa tosú theipthe\n"
+
+#: job.c:1455
+#, c-format
+msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgstr "Ag cur mac 0x%08lx (%s) PID %ld%s ar an slabhra.\n"
+
+#: job.c:1709
+#, c-format
+msgid "Obtained token for child 0x%08lx (%s).\n"
+msgstr "Fuarthas ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
+
+#: job.c:1718
+msgid "read jobs pipe"
+msgstr "léadh píopa na jabanna"
+
+#: job.c:1832
+msgid "cannot enforce load limits on this operating system"
+msgstr "ní féidir srianta lóid a chur i bhfeidhm ar an chóras oibriúcháin seo"
+
+#: job.c:1834
+msgid "cannot enforce load limit: "
+msgstr "ní féidir srian lóid a chur i bhfeidhm: "
+
+#: job.c:1907
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n"
+
+#: job.c:1909
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdout a chóipeáil\n"
+
+#: job.c:1937
+msgid "Could not restore stdin\n"
+msgstr "Níorbh fhéidir stdin a athchóiriú\n"
+
+#: job.c:1945
+msgid "Could not restore stdout\n"
+msgstr "Níorbh fhéidir stdout a athchóiriú\n"
+
+#: job.c:2016
+#, fuzzy, c-format
+msgid "process_easy() failed failed to launch process (e=%ld)\n"
+msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%d)\n"
+
+#: job.c:2046
+#, fuzzy, c-format
+msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgstr "ghin make mac le pid %d, ag fanacht le pid %d fós\n"
+
+#: job.c:2085
+#, c-format
+msgid "%s: Command not found"
+msgstr "%s: Ní bhfuarthas an t-ordú"
+
+#: job.c:2145
+#, c-format
+msgid "%s: Shell program not found"
+msgstr "%s: Ní bhfuarthas an clár blaoisce"
+
+#: job.c:2154
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: is féidir gur ídithe í cuimhne na timpeallachta"
+
+#: job.c:2363
+#, c-format
+msgid "$SHELL changed (was `%s', now `%s')\n"
+msgstr "Athraíodh $SHELL (ba `%s' é, agus is `%s' é anois)\n"
+
+#: job.c:2789
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Baisc-chomhad sealadach %s á chruthú\n"
+
+#: job.c:2902
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr ""
+"%s (líne %d) Droch-chomhthéacs blaoisce (!unixy && !batch_mode_shell)\n"
+
+#: main.c:291
+msgid "Options:\n"
+msgstr "Roghanna:\n"
+
+#: main.c:292
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr "  -b, -m                      Déan neamhshuim (comhoiriúnacht)\n"
+
+#: main.c:294
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr "  -B, --always-make           Déan gach sprioc, gan choinníollacha.\n"
+
+#: main.c:296
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr ""
+"  -C COMHADLANN, --directory=COMHADLANN\n"
+"                              Téigh go COMHADLANN roimh dhéanamh aon rud.\n"
+
+#: main.c:299
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr "  -d                          Taispeáin go leor eolas dífhabhtaithe.\n"
+
+#: main.c:301
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr ""
+"  --debug[=BRATACHA]          Taispeáin eolas fabhtaithe de chineálacha "
+"éagsúla.\n"
+
+#: main.c:303
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr ""
+"  -e, --environment-overrides\n"
+"                              Sáraíonn athróga timpeallachta makefileanna.\n"
+
+#: main.c:306
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr ""
+"  -f COMHAD, --file=COMHAD, --makefile=COMHAD\n"
+"                              Léigh COMHAD mar makefile.\n"
+
+#: main.c:309
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr "  -h, --help                  Taispeáin an chabhair seo agus scoir.\n"
+
+#: main.c:311
+msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+msgstr ""
+"  -i, --ignore-errors         Déan neamhshuim ar earráidí ó orduithe.\n"
+
+#: main.c:313
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr ""
+"  -I COMHADLANN, --include-dir=COMHADLANN\n"
+"                              Cuardaigh i gCOMHADLANN ar makefileanna "
+"breise.\n"
+
+#: main.c:316
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+"  -j [N], --jobs[=N]          Ceadaigh N jab le chéile; éigríoch mura "
+"gceaptar arg.\n"
+
+#: main.c:318
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr ""
+"  -k, --keep-going            Lean ar aghaidh fiú nach féidir sprioc a "
+"dhéanamh.\n"
+
+#: main.c:320
+msgid ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              Ná tosaigh jabanna iomadúla mura bhfuil an lód "
+"níos lú ná N.\n"
+
+#: main.c:323
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+"  -L, --check-symlink-times   Úsáid an t-am modhnaithe is déanaí, ar an "
+"nasc\n"
+"                                 siombalach nó ar an sprioc.\n"
+
+#: main.c:325
+msgid ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Don't actually run any commands; just print "
+"them.\n"
+msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Ná rith aon ordú; taispeáin torthaí mar dhea "
+"amháin.\n"
+
+#: main.c:328
+msgid ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+"  -o COMHAD, --old-file=COMHAD, --assume-old=COMHAD\n"
+"                              Caith le COMHAD mar cheann cianaosta; ná "
+"hathdhéan é.\n"
+
+#: main.c:331
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr ""
+"  -p, --print-data-base       Taispeáin an bunachar sonraí inmheánach.\n"
+
+#: main.c:333
+msgid ""
+"  -q, --question              Run no commands; exit status says if up to "
+"date.\n"
+msgstr ""
+"  -q, --question              Ná rith aon ordú; stádas scortha = 0 mura gá "
+"le nuashonrú.\n"
+
+#: main.c:335
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr ""
+"  -r, --no-builtin-rules      Díchumasaigh na rialacha intuigthe insuite.\n"
+
+#: main.c:337
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr "  -R, --no-builtin-variables  Díchumasaigh na hathróga insuite.\n"
+
+#: main.c:339
+msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+msgstr "  -s, --silent, --quiet       Ná déan macalla ar orduithe.\n"
+
+#: main.c:341
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              Múch -k.\n"
+
+#: main.c:344
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr ""
+"  -t, --touch                 Teagmhaigh spriocanna in ionad iad a "
+"athdhéanamh.\n"
+
+#: main.c:346
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr ""
+"  -v, --version               Taispeáin eolas faoin leagan agus scoir.\n"
+
+#: main.c:348
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr "  -w, --print-directory       Taispeáin an chomhadlann reatha.\n"
+
+#: main.c:350
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+"  --no-print-directory        Múch -w, fiú má tá sé i bhfeidhm go "
+"hintuigthe.\n"
+
+#: main.c:352
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr ""
+"  -W COMHAD, --what-if=COMHAD, --new-file=COMHAD, --assume-new=COMHAD\n"
+"                              Caith le COMHAD mar cheann úrnua (go "
+"héigríoch).\n"
+
+#: main.c:355
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+"  --warn-undefined-variables  Tabhair rabhadh má dhéantar tagairt d'athróg "
+"gan sainmhíniú.\n"
+
+#: main.c:549
+msgid "empty string invalid as file name"
+msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid"
+
+#: main.c:630
+#, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "sonrú anaithnid `%s' ar an leibhéal dífhabhtaithe"
+
+#: main.c:670
+#, fuzzy, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%x, seoladh = 0x%x)\n"
+
+#: main.c:677
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
+msgstr ""
+"\n"
+"Glaodh scagaire eisceachta gan láimhseáil ón chlár %s\n"
+"CódEisceachta = %x\n"
+"BratachaEisceachta = %x\n"
+"SeoladhEisceachta = %x\n"
+
+#: main.c:685
+#, fuzzy, c-format
+msgid "Access violation: write operation at address %lx\n"
+msgstr "Sárú rochtana: oibríocht scríofa ag seoladh %x\n"
+
+#: main.c:686
+#, fuzzy, c-format
+msgid "Access violation: read operation at address %lx\n"
+msgstr "Sárú rochtana: oibríocht léimh ag seoladh %x\n"
+
+#: main.c:762 main.c:773
+#, c-format
+msgid "find_and_set_shell setting default_shell = %s\n"
+msgstr "tá find_and_set_shell ag socrú default_shell = %s\n"
+
+#: main.c:814
+#, c-format
+msgid "find_and_set_shell path search set default_shell = %s\n"
+msgstr "shocraigh find_and_set_shell conair chuardaigh default_shell = %s\n"
+
+#: main.c:1236
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..."
+
+#: main.c:1238
+#, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr "sleep(30) críochnaithe. Ag gabháil ar aghaidh.\n"
+
+#: main.c:1466
+msgid "Makefile from standard input specified twice."
+msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó."
+
+#: main.c:1505 vmsjobs.c:486
+msgid "fopen (temporary file)"
+msgstr "fopen (comhad sealadach)"
+
+#: main.c:1511
+msgid "fwrite (temporary file)"
+msgstr "fwrite (comhad sealadach)"
+
+#: main.c:1640
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo."
+
+#: main.c:1641
+msgid "Resetting to single job (-j1) mode."
+msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)."
+
+#: main.c:1656
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla"
+
+#: main.c:1664
+#, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-fds `%s'"
+
+#: main.c:1674
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú."
+
+#: main.c:1684
+msgid "dup jobserver"
+msgstr "jabfhreastalaí dup"
+
+#: main.c:1687
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr ""
+"rabhadh: níl jabfhreastalaí ar fáil: ag baint úsáid as -j1.  Cuir `+' leis "
+"an máthair-riail."
+
+#: main.c:1710
+msgid "creating jobs pipe"
+msgstr "píopa na jabanna á chruthú"
+
+#: main.c:1725
+msgid "init jobserver pipe"
+msgstr "píopa an jabfhreastalaí á thúsú"
+
+#: main.c:1744
+msgid "Symbolic links not supported: disabling -L."
+msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú."
+
+#: main.c:1820
+msgid "Updating makefiles....\n"
+msgstr "Makefileanna á nuashonrú....\n"
+
+#: main.c:1845
+#, c-format
+msgid "Makefile `%s' might loop; not remaking it.\n"
+msgstr "is féidir go lúbfar an Makefile `%s'; ní athdhéanfar é.\n"
+
+#: main.c:1924
+#, c-format
+msgid "Failed to remake makefile `%s'."
+msgstr "Theip ar athdhéanamh an makefile `%s'."
+
+#: main.c:1941
+#, c-format
+msgid "Included makefile `%s' was not found."
+msgstr "Níor aimsíodh an makefile `%s' san áireamh."
+
+#: main.c:1946
+#, c-format
+msgid "Makefile `%s' was not found"
+msgstr "Níor aimsíodh an makefile `%s'"
+
+#: main.c:2016
+msgid "Couldn't change back to original directory."
+msgstr "Níorbh fhéidir an chomhadlann oibre a athrú ar ais."
+
+#: main.c:2024
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "Á rith arís[%u]:"
+
+#: main.c:2140
+msgid "unlink (temporary file): "
+msgstr "unlink (comhad sealadach): "
+
+#: main.c:2169
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL"
+
+#: main.c:2189
+msgid "No targets specified and no makefile found"
+msgstr "Níor sonraíodh aon sprioc agus níor aimsíodh aon makefile"
+
+#: main.c:2191
+msgid "No targets"
+msgstr "Níl aon sprioc ann"
+
+#: main.c:2196
+msgid "Updating goal targets....\n"
+msgstr "Cinn sprice á nuashonrú....\n"
+
+#: main.c:2222
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr "rabhadh:  Clog ar sceabha.  Is féidir go bhfuil an tógáil neamhiomlán."
+
+#: main.c:2383
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Úsáid: %s [roghanna] [sprioc] ...\n"
+
+#: main.c:2389
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"Tógadh an clár seo le haghaidh %s\n"
+
+#: main.c:2391
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"Tógadh an clár seo le haghaidh %s (%s)\n"
+
+#: main.c:2394
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "Seol tuairiscí fabhtanna chuig <bug-make@gnu.org>\n"
+
+#: main.c:2466
+#, c-format
+msgid "the `-%c' option requires a non-empty string argument"
+msgstr "caithfidh tú teaghrán nach folamh a thabhairt mar argóint le `-%c'"
+
+#: main.c:2518
+#, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "caithfidh tú slánuimhir dheimhneach a thabhairt mar argóint le `-%c'"
+
+#: main.c:2942
+#, c-format
+msgid ""
+"%sThis is free software; see the source for copying conditions.\n"
+"%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
+"%sPARTICULAR PURPOSE.\n"
+msgstr ""
+"%sIs saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh\n"
+"%scoinníollacha cóipeála.  Níl baránta ar bith ann; go fiú níl baránta ann\n"
+"%sd'INDÍOLTACHT nó FEILIÚNACHT DO FHEIDHM AR LEITH.\n"
+
+#: main.c:2948
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s\n"
+msgstr ""
+"\n"
+"%sTógadh an clár seo le haghaidh %s\n"
+
+#: main.c:2950
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s (%s)\n"
+msgstr ""
+"\n"
+"%sTógadh an clár seo le haghaidh %s (%s)\n"
+
+#: main.c:2968
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Bunachar sonraí Make, priontáilte ar %s"
+
+#: main.c:2978
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Críochnaíodh an bunachar sonraí Make seo ar %s\n"
+
+#: main.c:3101
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Ag dul isteach i gcomhadlann anaithnid\n"
+
+#: main.c:3103
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Ag dul amach as comhadlann anaithnid\n"
+
+#: main.c:3106
+#, c-format
+msgid "%s: Entering directory `%s'\n"
+msgstr "%s: Ag dul isteach sa chomhadlann `%s'\n"
+
+#: main.c:3109
+#, c-format
+msgid "%s: Leaving directory `%s'\n"
+msgstr "%s: Ag dul amach as an gcomhadlann `%s'\n"
+
+#: main.c:3114
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Ag dul isteach i gcomhadlann anaithnid\n"
+
+#: main.c:3117
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Ag dul amach as comhadlann anaithnid\n"
+
+#: main.c:3121
+#, c-format
+msgid "%s[%u]: Entering directory `%s'\n"
+msgstr "%s[%u]: Ag dul isteach sa chomhadlann `%s'\n"
+
+#: main.c:3124
+#, c-format
+msgid "%s[%u]: Leaving directory `%s'\n"
+msgstr "%s[%u]: Ag dul amach as an gcomhadlann `%s'\n"
+
+#: misc.c:285
+msgid ".  Stop.\n"
+msgstr ".  Stop.\n"
+
+#: misc.c:306
+#, c-format
+msgid "Unknown error %d"
+msgstr "Earráid anaithnid %d"
+
+#: misc.c:316
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: misc.c:324
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+msgid "virtual memory exhausted"
+msgstr "cuimhne fhíorúil ídithe"
+
+#: misc.c:646
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: úsáideoir %lu (fíor %lu), grúpa %lu (fíor %lu)\n"
+
+#: misc.c:667
+msgid "Initialized access"
+msgstr "Rochtain túsaithe"
+
+#: misc.c:746
+msgid "User access"
+msgstr "Rochtain úsáideora"
+
+#: misc.c:794
+msgid "Make access"
+msgstr "Rochtain make"
+
+#: misc.c:828
+msgid "Child access"
+msgstr "Rochtain mic"
+
+#: misc.c:892
+#, c-format
+msgid "write error: %s"
+msgstr "earráid sa scríobh: %s"
+
+#: misc.c:894
+msgid "write error"
+msgstr "earráid sa scríobh"
+
+#: read.c:160
+msgid "Reading makefiles...\n"
+msgstr "Makefileanna á léamh...\n"
+
+#: read.c:315
+#, c-format
+msgid "Reading makefile `%s'"
+msgstr "Makefile `%s' á léamh"
+
+#: read.c:317
+#, c-format
+msgid " (no default goal)"
+msgstr " (gan ceann sprice réamhshocraithe)"
+
+#: read.c:319
+#, c-format
+msgid " (search path)"
+msgstr " (conair chuardaigh)"
+
+#: read.c:321
+#, c-format
+msgid " (don't care)"
+msgstr " (is cuma)"
+
+#: read.c:323
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (ná fairsing ~)"
+
+#: read.c:623
+msgid "invalid syntax in conditional"
+msgstr "comhréir neamhbhailí i gcoinníollach"
+
+#: read.c:633
+msgid "extraneous `endef'"
+msgstr "`endef' breise"
+
+#: read.c:645 read.c:673 variable.c:1316
+msgid "empty variable name"
+msgstr "ainm folamh athróige"
+
+#: read.c:662
+msgid "empty `override' directive"
+msgstr "treoir `override' folamh"
+
+#: read.c:687
+msgid "invalid `override' directive"
+msgstr "treoir neamhbhailí `override'"
+
+#: read.c:854
+msgid "commands commence before first target"
+msgstr "tá orduithe ann roimh an chéad sprioc"
+
+#: read.c:905
+msgid "missing rule before commands"
+msgstr "riail ar iarraidh roimh orduithe"
+
+#: read.c:992
+#, c-format
+msgid "missing separator%s"
+msgstr "deighilteoir%s ar iarraidh"
+
+#: read.c:994
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr " (Ar mhian leat TÁB in ionad ocht spás?)"
+
+#: read.c:1152
+msgid "missing target pattern"
+msgstr "patrún sprice ar iarraidh"
+
+#: read.c:1154
+msgid "multiple target patterns"
+msgstr "patrúin iomadúla sprice"
+
+#: read.c:1158
+#, c-format
+msgid "target pattern contains no `%%'"
+msgstr "níl aon `%%' sa phatrún sprice"
+
+#: read.c:1286
+msgid "missing `endif'"
+msgstr "`endif' ar iarraidh"
+
+#: read.c:1377
+msgid "Extraneous text after `endef' directive"
+msgstr "Téacs gan mhaith i ndiaidh treorach `endef'"
+
+#: read.c:1411
+msgid "missing `endef', unterminated `define'"
+msgstr "`endef' ar iarraidh, `define' gan chríochnú"
+
+#: read.c:1454
+#, c-format
+msgid "Extraneous text after `%s' directive"
+msgstr "Téacs gan mhaith i ndiaidh treorach `%s'"
+
+#: read.c:1463 read.c:1477
+#, c-format
+msgid "extraneous `%s'"
+msgstr "`%s' breise"
+
+#: read.c:1482
+msgid "only one `else' per conditional"
+msgstr "ní cheadaítear ach aon `else' amháin le gach coinníollach"
+
+#: read.c:1824
+msgid "Malformed target-specific variable definition"
+msgstr "Is míchumtha é an sainmhíniú athróige (le haghaidh aon sprioc amháin)"
+
+#: read.c:1886
+msgid "prerequisites cannot be defined in command scripts"
+msgstr "ní féidir réamhriachtanais a shonrú i scripteanna ordaithe"
+
+#: read.c:1921
+msgid "mixed implicit and static pattern rules"
+msgstr "rialacha intuigthe agus rialacha statacha measctha le chéile"
+
+#: read.c:1924
+msgid "mixed implicit and normal rules"
+msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile"
+
+#: read.c:1954
+#, c-format
+msgid "target `%s' doesn't match the target pattern"
+msgstr "níl an sprioc `%s' comhoiriúnach leis an phatrún sprice"
+
+#: read.c:1973 read.c:2074
+#, c-format
+msgid "target file `%s' has both : and :: entries"
+msgstr "tá iontrálacha : agus :: araon ann don chomhad sprice `%s'"
+
+#: read.c:1979
+#, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr "tá an sprioc `%s' i riail amháin níos mó ná uair amháin."
+
+#: read.c:1988
+#, c-format
+msgid "warning: overriding commands for target `%s'"
+msgstr "rabhadh: ag sárú na n-orduithe le haghaidh na sprice `%s'"
+
+#: read.c:1991
+#, c-format
+msgid "warning: ignoring old commands for target `%s'"
+msgstr ""
+"rabhadh: ag déanamh neamhshuim ar sheanorduithe le haghaidh sprice `%s'"
+
+#: read.c:2575
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr ""
+"rabhadh: chonacthas carachtar NUL; ag déanamh neamhshuim ar an chuid eile "
+"den líne"
+
+#: remake.c:229
+#, c-format
+msgid "Nothing to be done for `%s'."
+msgstr "Níl faic le déanamh i gcomhair `%s'."
+
+#: remake.c:230
+#, c-format
+msgid "`%s' is up to date."
+msgstr "Ní gá le `%s' a nuashonrú."
+
+#: remake.c:297
+#, c-format
+msgid "Pruning file `%s'.\n"
+msgstr "Comhad `%s' á bhearradh.\n"
+
+#: remake.c:349
+#, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr "%sNíl aon riail chun an sprioc `%s' a dhéanamh%s"
+
+#: remake.c:351
+#, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr ""
+"%sNíl aon riail chun an sprioc `%s' a dhéanamh, riachtanach le haghaidh `%s'%"
+"s"
+
+#: remake.c:378
+#, c-format
+msgid "Considering target file `%s'.\n"
+msgstr "Comhad sprice `%s' idir lámha.\n"
+
+#: remake.c:385
+#, c-format
+msgid "Recently tried and failed to update file `%s'.\n"
+msgstr ""
+"Rinneadh iarracht ar an chomhad `%s' a nuashonrú le déanaí, agus theip air.\n"
+
+#: remake.c:400
+#, c-format
+msgid "File `%s' was considered already.\n"
+msgstr "Rinneadh scrúdú ar an chomhad `%s' cheana.\n"
+
+#: remake.c:410
+#, c-format
+msgid "Still updating file `%s'.\n"
+msgstr "Comhad `%s' á nuashonrú fós.\n"
+
+#: remake.c:413
+#, c-format
+msgid "Finished updating file `%s'.\n"
+msgstr "Nuashonraíodh an comhad `%s'.\n"
+
+#: remake.c:434
+#, c-format
+msgid "File `%s' does not exist.\n"
+msgstr "Níl a leithéid de chomhad `%s' ann.\n"
+
+#: remake.c:441
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+msgstr ""
+"*** Warning: comhad .LOW_RESOLUTION_TIME `%s' le stampa ama ardtaifeach"
+
+#: remake.c:454 remake.c:962
+#, c-format
+msgid "Found an implicit rule for `%s'.\n"
+msgstr "Aimsíodh riail intuigthe le haghaidh `%s'.\n"
+
+#: remake.c:456 remake.c:964
+#, c-format
+msgid "No implicit rule found for `%s'.\n"
+msgstr "Níor aimsíodh aon riail intuigthe le haghaidh `%s'.\n"
+
+#: remake.c:462 remake.c:970
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh `%s'.\n"
+
+#: remake.c:484 remake.c:996
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "Tréigeadh an spleáchas ciorclach %s <- %s."
+
+#: remake.c:601
+#, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
+msgstr "Críochnaíodh na réamhriachtanais den chomhad sprice `%s'.\n"
+
+#: remake.c:607
+#, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr "Réamhriachtanais de `%s' á ndéanamh anois.\n"
+
+#: remake.c:620
+#, c-format
+msgid "Giving up on target file `%s'.\n"
+msgstr "Ag tréigean an chomhaid sprice `%s'.\n"
+
+#: remake.c:625
+#, c-format
+msgid "Target `%s' not remade because of errors."
+msgstr "Ní dhearna an sprioc `%s' arís ós rud é go bhfuil earráidí ann."
+
+#: remake.c:677
+#, c-format
+msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgstr ""
+"Sonraíonn an réamhriachtanas `%s' ord rite amháin le haghaidh sprice `%s'.\n"
+
+#: remake.c:682
+#, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr "Níl an réamhriachtanas `%s' den sprioc `%s' ann.\n"
+
+#: remake.c:687
+#, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr "Tá an réamhriachtanas `%s' níos nuaí ná an sprioc `%s'.\n"
+
+#: remake.c:690
+#, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr "Tá an réamhriachtanas `%s' níos sine ná an sprioc `%s'.\n"
+
+#: remake.c:708
+#, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgstr "Tá dhá idirstad ag an sprioc `%s' agus níl aon réamhriachtanas aice.\n"
+
+#: remake.c:715
+#, c-format
+msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgstr ""
+"Níl aon ordú le haghaidh `%s' agus níor athraigh aon réamhriachtanas.\n"
+
+#: remake.c:720
+#, c-format
+msgid "Making `%s' due to always-make flag.\n"
+msgstr "`%s' á dhéanamh de bharr bratach --always-make.\n"
+
+#: remake.c:728
+#, c-format
+msgid "No need to remake target `%s'"
+msgstr "Ní gá leis an sprioc `%s' a athdhéanamh"
+
+#: remake.c:730
+#, c-format
+msgid "; using VPATH name `%s'"
+msgstr "; ag baint úsáid as ainm VPATH `%s'"
+
+#: remake.c:750
+#, c-format
+msgid "Must remake target `%s'.\n"
+msgstr "Caithfidh an sprioc `%s' a athdhéanamh.\n"
+
+#: remake.c:756
+#, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr "  Ag déanamh neamhshuim ar ainm VPATH `%s'.\n"
+
+#: remake.c:765
+#, c-format
+msgid "Commands of `%s' are being run.\n"
+msgstr "Orduithe de `%s' á rith.\n"
+
+#: remake.c:772
+#, c-format
+msgid "Failed to remake target file `%s'.\n"
+msgstr "Theip ar athdhéanamh an sprioc-chomhaid `%s'.\n"
+
+#: remake.c:775
+#, c-format
+msgid "Successfully remade target file `%s'.\n"
+msgstr "D'éirigh le hathdhéanamh an sprioc-chomhaid `%s'.\n"
+
+#: remake.c:778
+#, c-format
+msgid "Target file `%s' needs remade under -q.\n"
+msgstr "Tá gá leis an chomhad sprice `%s' a athdhéanamh leis an rogha -q.\n"
+
+#: remake.c:1306
+#, c-format
+msgid "Warning: File `%s' has modification time in the future"
+msgstr "Rabhadh: Tá an t-am mionathraithe den chomhad `%s' sa todhchaí"
+
+#: remake.c:1313
+#, c-format
+msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgstr ""
+"Rabhadh: Tá an t-am mionathraithe den chomhad `%s' %.2g soicind sa todhchaí"
+
+#: remake.c:1511
+#, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr "Níl eilimint .LIBPATTERNS `%s' ina patrún"
+
+#: remote-cstms.c:125
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Ní easpórtálfar Customs: %s\n"
+
+#: rule.c:548
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Rialacha Intuigthe"
+
+#: rule.c:563
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Níl aon riail intuigthe."
+
+#: rule.c:566
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+"\n"
+"# %u riail intuigthe, %u"
+
+#: rule.c:575
+msgid " terminal."
+msgstr " teirminéal."
+
+#: rule.c:583
+#, c-format
+msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgstr "FABHT: num_pattern_rules mícheart!  %u != %u"
+
+#: signame.c:85
+msgid "unknown signal"
+msgstr "comhartha anaithnid"
+
+#: signame.c:93
+msgid "Hangup"
+msgstr "Croch suas"
+
+#: signame.c:96
+msgid "Interrupt"
+msgstr "Idirbhriseadh"
+
+#: signame.c:99
+msgid "Quit"
+msgstr "Scoir"
+
+#: signame.c:102
+msgid "Illegal Instruction"
+msgstr "Treoir Neamhcheadaithe"
+
+#: signame.c:105
+msgid "Trace/breakpoint trap"
+msgstr "Rianaigh/brisphointe"
+
+#: signame.c:110
+msgid "Aborted"
+msgstr "Tobscortha"
+
+#: signame.c:113
+msgid "IOT trap"
+msgstr "Gaiste IOT"
+
+#: signame.c:116
+msgid "EMT trap"
+msgstr "Gaiste EMT"
+
+#: signame.c:119
+msgid "Floating point exception"
+msgstr "Eisceacht snámhphointe"
+
+#: signame.c:122
+msgid "Killed"
+msgstr "Maraithe"
+
+#: signame.c:125
+msgid "Bus error"
+msgstr "Busearráid"
+
+#: signame.c:128
+msgid "Segmentation fault"
+msgstr "Fabht deighilte"
+
+#: signame.c:131
+msgid "Bad system call"
+msgstr "Drochghlao ar an gcóras"
+
+#: signame.c:134
+msgid "Broken pipe"
+msgstr "Píopa briste"
+
+#: signame.c:137
+msgid "Alarm clock"
+msgstr "Clog aláraim"
+
+#: signame.c:140
+msgid "Terminated"
+msgstr "Scortha"
+
+#: signame.c:143
+msgid "User defined signal 1"
+msgstr "Comhartha saincheaptha 1"
+
+#: signame.c:146
+msgid "User defined signal 2"
+msgstr "Comhartha saincheaptha 2"
+
+#: signame.c:151 signame.c:154
+msgid "Child exited"
+msgstr "Scoir an mhacphróiseas"
+
+#: signame.c:157
+msgid "Power failure"
+msgstr "Cliseadh cumhachta"
+
+#: signame.c:160
+msgid "Stopped"
+msgstr "Stoptha"
+
+#: signame.c:163
+msgid "Stopped (tty input)"
+msgstr "Stoptha (ionchur tty)"
+
+#: signame.c:166
+msgid "Stopped (tty output)"
+msgstr "Stoptha (aschur tty)"
+
+#: signame.c:169
+msgid "Stopped (signal)"
+msgstr "Stoptha (comhartha)"
+
+#: signame.c:172
+msgid "CPU time limit exceeded"
+msgstr "Teorainn ama LAP sáraithe"
+
+#: signame.c:175
+msgid "File size limit exceeded"
+msgstr "Uasmhéid na gcomhad sáraithe"
+
+#: signame.c:178
+msgid "Virtual timer expired"
+msgstr "Am fíorúil caite"
+
+#: signame.c:181
+msgid "Profiling timer expired"
+msgstr "Am próifíle caite"
+
+#: signame.c:187
+msgid "Window changed"
+msgstr "Athraíodh an fhuinneog"
+
+#: signame.c:190
+msgid "Continued"
+msgstr "Leanta"
+
+#: signame.c:193
+msgid "Urgent I/O condition"
+msgstr "Staid phráinneach A/I"
+
+#: signame.c:200 signame.c:209
+msgid "I/O possible"
+msgstr "A/I indéanta"
+
+#: signame.c:203
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+#: signame.c:206
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: signame.c:212
+msgid "Resource lost"
+msgstr "Acmhainn caillte"
+
+#: signame.c:215
+msgid "Danger signal"
+msgstr "Comhartha guaise"
+
+#: signame.c:218
+msgid "Information request"
+msgstr "Iarratas ar eolas"
+
+#: signame.c:221
+msgid "Floating point co-processor not available"
+msgstr "Níl comhphróiseálaí snámhphointe ar fáil"
+
+#: strcache.c:210
+#, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d\n"
+msgstr ""
+
+#: strcache.c:211
+#, c-format
+msgid "%s # of strcache buffers: %d\n"
+msgstr ""
+
+#: strcache.c:212
+#, c-format
+msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:214
+#, c-format
+msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: variable.c:1369
+msgid "default"
+msgstr "réamhshocraithe"
+
+#: variable.c:1372
+msgid "environment"
+msgstr "timpeallacht"
+
+#: variable.c:1375
+msgid "makefile"
+msgstr "makefile"
+
+#: variable.c:1378
+msgid "environment under -e"
+msgstr "timpeallacht le -e"
+
+#: variable.c:1381
+msgid "command line"
+msgstr "líne na n-orduithe"
+
+#: variable.c:1384
+msgid "`override' directive"
+msgstr "treoir `override'"
+
+#: variable.c:1387
+msgid "automatic"
+msgstr "uathoibríoch"
+
+#: variable.c:1396
+#, c-format
+msgid " (from `%s', line %lu)"
+msgstr " (ó `%s', líne %lu)"
+
+#: variable.c:1438
+msgid "# variable set hash-table stats:\n"
+msgstr "# athróg tacar hais-tábla stait:\n"
+
+#: variable.c:1449
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Athróga\n"
+
+#: variable.c:1453
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# Luachanna Athróige sainiúil don phatrún"
+
+#: variable.c:1467
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# Níl aon luach athróige atá sainiúil don phatrún."
+
+#: variable.c:1469
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u luach athróige atá sainiúil don phatrún"
+
+#: variable.h:189
+#, c-format
+msgid "warning: undefined variable `%.*s'"
+msgstr "rabhadh: athróg gan sainmhíniú: `%.*s'"
+
+#: vmsfunctions.c:94
+#, c-format
+msgid "sys$search failed with %d\n"
+msgstr "Theip ar sys$cuardach le %d\n"
+
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr "Rabhadh: Atreorú folamh\n"
+
+#: vmsjobs.c:175
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr "earráid inmheánach: `%s' command_state"
+
+#: vmsjobs.c:268
+#, c-format
+msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+msgstr "-rabhadh, fágfaidh CTRL-Y fo-phróisis gan ghlanadh.\n"
+
+#: vmsjobs.c:284
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+"-rabhadh, is féidir gur gá duit ionramháil CTRL-Y a athchumasú ó DCL.\n"
+
+#: vmsjobs.c:407
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr "INSUITE [%s][%s]\n"
+
+#: vmsjobs.c:418
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "CD INSUITE %s\n"
+
+#: vmsjobs.c:436
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr "RM INSUITE %s\n"
+
+#: vmsjobs.c:457
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "Ordú anaithnid insuite '%s'\n"
+
+#: vmsjobs.c:479
+#, c-format
+msgid "Error, empty command\n"
+msgstr "Earráid, ordú folamh\n"
+
+#: vmsjobs.c:491
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr "Atreoraíodh ionchur ó %s\n"
+
+#: vmsjobs.c:498
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr "Atreoraíodh earráidí go %s\n"
+
+#: vmsjobs.c:505
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr "Atreoraíodh aschur go %s\n"
+
+#: vmsjobs.c:568
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "%s á rith ina áit\n"
+
+#: vmsjobs.c:668
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr "Earráid le linn sceitheadh, %d\n"
+
+#: vpath.c:571
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# VPATH Conairí Cuardaigh\n"
+
+#: vpath.c:588
+msgid "# No `vpath' search paths."
+msgstr "# Níl aon chonair chuardaigh `vpath'."
+
+#: vpath.c:590
+#, c-format
+msgid ""
+"\n"
+"# %u `vpath' search paths.\n"
+msgstr ""
+"\n"
+"# %u conair chuardaigh `vpath'.\n"
+
+#: vpath.c:593
+msgid ""
+"\n"
+"# No general (`VPATH' variable) search path."
+msgstr ""
+"\n"
+"# Níl aon chonair ghinearálta cuardaigh (athróg `VPATH')."
+
+#: vpath.c:599
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Conair ghinearálta cuardaigh (athróg `VPATH'):\n"
+"# "
+
+#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
+#~ msgstr "Ná sonraigh -j ná --jobs mura bhfuil sh.exe le fáil."
+
+#~ msgid "Resetting make for single job mode."
+#~ msgstr "make á athshocrú le haghaidh jabanna aonair."
+
+#~ msgid "Syntax error, still inside '\"'\n"
+#~ msgstr "Earráid chomhréire, isteach i '\"' fós\n"
+
+#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
+#~ msgstr "Fuarthas SIGCHLD; %u mac gan bhaint.\n"
+
+#~ msgid "no file name for `%sinclude'"
+#~ msgstr "níl aon ainm comhaid do `%sinclude'"
+
+#~ msgid "target `%s' leaves prerequisite pattern empty"
+#~ msgstr "fágann an sprioc `%s' an patrún réamhriachtanais folamh"
Index: trunk/src/gmake/po/id.po
===================================================================
--- trunk/src/gmake/po/id.po	(revision 503)
+++ trunk/src/gmake/po/id.po	(revision 503)
@@ -0,0 +1,2079 @@
+# Pesan Bahasa Indonesia untuk GNU make
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU make package.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU make 3.79\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"PO-Revision-Date: 2005-07-17 22:00+0700\n"
+"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ar.c:53
+#, c-format
+msgid "attempt to use unsupported feature: `%s'"
+msgstr "usaha untuk menggunakan feature yang tidak disupport: `%s'"
+
+#: ar.c:137
+msgid "touch archive member is not available on VMS"
+msgstr "tidak dapat memodifikasi tanggal pada anggota archive pada VMS"
+
+#: ar.c:168
+#, c-format
+msgid "touch: Archive `%s' does not exist"
+msgstr "touch: Archive `%s' tidak ada"
+
+#: ar.c:171
+#, c-format
+msgid "touch: `%s' is not a valid archive"
+msgstr "touch: `%s' bukan archive yang valid"
+
+#: ar.c:178
+#, c-format
+msgid "touch: Member `%s' does not exist in `%s'"
+msgstr "touch: Anggota `%s' tidak terdapat dalam `%s'"
+
+#: ar.c:185
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgstr "touch: Kode balik tidak baik dari ar_member_touch pada `%s'"
+
+#: arscan.c:69
+#, c-format
+msgid "lbr$set_module failed to extract module info, status = %d"
+msgstr "lbr$set_module gagal untuk mengekstrak info module, status = %d"
+
+#: arscan.c:154
+#, c-format
+msgid "lbr$ini_control failed with status = %d"
+msgstr "lbr$ini_control gagal dengan status = %d"
+
+#: arscan.c:165
+#, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr "tidak dapat membuka library `%s' untuk melihat anggota `%s'"
+
+#: arscan.c:825
+#, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Anggota `%s'%s: %ld bytes pada %ld (%ld).\n"
+
+#: arscan.c:826
+msgid " (name might be truncated)"
+msgstr " (nama mungkin akan di potong)"
+
+#: arscan.c:828
+#, c-format
+msgid "  Date %s"
+msgstr " Tanggal %s"
+
+#: arscan.c:829
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr " uid = %d, gid = %d, mode = 0%o.\n"
+
+#: commands.c:422
+msgid "*** Break.\n"
+msgstr "*** Berhenti.\n"
+
+#: commands.c:545
+#, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr "*** [%s] Anggota archive `%s' mungkin berupa bogus: tidak dihapus"
+
+#: commands.c:548
+#, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr "*** Anggota archive `%s' mungkin berupa bogus; tidak dihapus"
+
+#: commands.c:561
+#, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "*** [%s] Menghapus file `%s'"
+
+#: commands.c:563
+#, c-format
+msgid "*** Deleting file `%s'"
+msgstr "*** Menghapus file `%s'"
+
+#: commands.c:599
+msgid "#  commands to execute"
+msgstr "# perintah dijalankan"
+
+#: commands.c:602
+msgid " (built-in):"
+msgstr " (built-in):"
+
+#: commands.c:604
+#, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr " (dari `%s', baris %lu):\n"
+
+#: dir.c:983
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Direktori\n"
+
+#: dir.c:995
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: tidak dapat melihat statistik.\n"
+
+#: dir.c:999
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (key %s, mtime %d): tidak dapat dibuka.\n"
+
+#: dir.c:1003
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (device %d, inode [%d,%d,%d]): tidak dapat dibuka.\n"
+
+#: dir.c:1008
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (device %ld, inode %ld): tidak dapat dibuka.\n"
+
+#: dir.c:1035
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "# %s (key %s, mtime %d): "
+
+#: dir.c:1039
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (device %d, inode [%d,%d,%d]): "
+
+#: dir.c:1044
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (device %ld, inode %ld): "
+
+#: dir.c:1050 dir.c:1071
+msgid "No"
+msgstr "Tidak"
+
+#: dir.c:1053 dir.c:1074
+msgid " files, "
+msgstr " files, "
+
+#: dir.c:1055 dir.c:1076
+msgid "no"
+msgstr "tidak"
+
+#: dir.c:1058
+msgid " impossibilities"
+msgstr " tidak mungkin"
+
+#: dir.c:1062
+msgid " so far."
+msgstr " sejauh ini."
+
+#: dir.c:1079
+#, fuzzy, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " tidak mungkin dalam direktori %u.\n"
+
+#: expand.c:128
+#, c-format
+msgid "Recursive variable `%s' references itself (eventually)"
+msgstr "Variabel rekursif `%s' menunjuk pada dirinya sendiri"
+
+#: expand.c:266
+msgid "unterminated variable reference"
+msgstr "referensi variabel tidak diselesaikan"
+
+#: file.c:270
+#, c-format
+msgid "Commands were specified for file `%s' at %s:%lu,"
+msgstr "Perintah di spesifikasikan untuk file `%s' pada %s:%lu,"
+
+#: file.c:275
+#, c-format
+msgid "Commands for file `%s' were found by implicit rule search,"
+msgstr "Perintah untuk file `%s' ditemukan dalam pencarian aturan implisit,"
+
+#: file.c:278
+#, c-format
+msgid "but `%s' is now considered the same file as `%s'."
+msgstr ""
+"tetapi `%s' sekarang dipertimbangkan sebagai file yang sama dengan `%s'."
+
+#: file.c:281
+#, c-format
+msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgstr "Perintah untuk `%s' akan diabaikan untuk menghargai `%s'."
+
+#: file.c:301
+#, c-format
+msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgstr "tidak dapat mengubah nama dari satu-colon `%s' ke double-colon `%s'"
+
+#: file.c:306
+#, c-format
+msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgstr "tidak dapat mengubah nama dua-colon `%s' menjadi satu-colon `%s'"
+
+#: file.c:381
+#, c-format
+msgid "*** Deleting intermediate file `%s'"
+msgstr "*** Menghapus file intermediate `%s'"
+
+#: file.c:385
+#, fuzzy
+msgid "Removing intermediate files...\n"
+msgstr "*** Menghapus file intermediate `%s'"
+
+#: file.c:781
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr ""
+
+#: file.c:782
+msgid "Current time"
+msgstr ""
+
+#: file.c:881
+msgid "# Not a target:"
+msgstr "# Bukan sebuah target:"
+
+#: file.c:903
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "#  File sebelumnya (dibutuhkan oleh .PRECIOUS)."
+
+#: file.c:905
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "#  Phony target (dibutuhkan oleh .PHONY)."
+
+#: file.c:907
+msgid "#  Command-line target."
+msgstr "#  Command-line target."
+
+#: file.c:909
+#, fuzzy
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "# merupakan sebuah default atau MAKEFILES makefile."
+
+#: file.c:911
+msgid "#  Implicit rule search has been done."
+msgstr "#  Pencarian aturan implisit sudah selesai."
+
+#: file.c:912
+msgid "#  Implicit rule search has not been done."
+msgstr "#  Pencarian aturan implisit belum selesai."
+
+#: file.c:914
+#, c-format
+msgid "#  Implicit/static pattern stem: `%s'\n"
+msgstr "#  Pola implisit atau statis stem: `%s'\n"
+
+#: file.c:916
+msgid "#  File is an intermediate prerequisite."
+msgstr "#  File merupakan persyaratan perantara (intermediate)."
+
+#: file.c:919
+msgid "#  Also makes:"
+msgstr "#  Juga membuat:"
+
+#: file.c:925
+msgid "#  Modification time never checked."
+msgstr "#  Waktu ubah sudah di check."
+
+#: file.c:927
+msgid "#  File does not exist."
+msgstr "#  File tidak ada."
+
+#: file.c:929
+#, fuzzy
+msgid "#  File is very old."
+msgstr "#  File sudah diupdate."
+
+#: file.c:934
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "#  Terakhir dimodifikasi pada %s\n"
+
+#: file.c:937
+msgid "#  File has been updated."
+msgstr "#  File sudah diupdate."
+
+#: file.c:937
+msgid "#  File has not been updated."
+msgstr "#  File belum di-update."
+
+#: file.c:941
+msgid "#  Commands currently running (THIS IS A BUG)."
+msgstr "#  Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)."
+
+#: file.c:944
+msgid "#  Dependencies commands running (THIS IS A BUG)."
+msgstr "#  Perintah dependensi sedang berjalan (INI MERUPAKAN SEBUAH BUG)."
+
+#: file.c:953
+msgid "#  Successfully updated."
+msgstr "#  Sukses mengupdate."
+
+#: file.c:957
+msgid "#  Needs to be updated (-q is set)."
+msgstr "#  Perlu untuk diupdate (-q diset)."
+
+#: file.c:960
+msgid "#  Failed to be updated."
+msgstr "#  Gagal untuk mengupdate."
+
+#: file.c:963
+msgid "#  Invalid value in `update_status' member!"
+msgstr "#  Nilai yang salah dalam anggota `update_status' !"
+
+#: file.c:970
+msgid "#  Invalid value in `command_state' member!"
+msgstr "#  Nilai yang salah dalam anggota `command_state' !"
+
+#: file.c:989
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Files"
+
+#: file.c:993
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+
+#: function.c:759
+msgid "non-numeric first argument to `word' function"
+msgstr "argumen pertama untuk fungsi `word' bukan numerik"
+
+#: function.c:764
+#, fuzzy
+msgid "first argument to `word' function must be greater than 0"
+msgstr "argumen pertama untuk fungsi `word' bukan numerik"
+
+#: function.c:785
+msgid "non-numeric first argument to `wordlist' function"
+msgstr "argumen pertama untuk fungsi `wordlist' bukan numerik"
+
+#: function.c:787
+msgid "non-numeric second argument to `wordlist' function"
+msgstr "argumen kedua dari fungsi `wordlist' bukan numerik"
+
+#: function.c:1453
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(In) gagal (e=%d)\n"
+
+#: function.c:1464
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(Err) gagal (e=%d)\n"
+
+#: function.c:1469
+#, fuzzy, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() gagal (e=%d)\n"
+
+#: function.c:1474
+msgid "windows32_openpipe (): process_init_fd() failed\n"
+msgstr "windows32_openpipe (): process_init_fd() gagal\n"
+
+#: function.c:1725
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Membersihkan file batch sementara %s\n"
+
+#: function.c:2101
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr "Argumen kurang (%d) untuk fungsi `%s'"
+
+#: function.c:2113
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr "Tidak terimplementasi dalam platform ini: fungsi `%s'"
+
+#: function.c:2163
+#, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr "fungsi `%s' tidak diselesaikan: hilang `%c'"
+
+#: getopt.c:663
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opsi `%s' merupakan ambigu\n"
+
+#: getopt.c:687
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opsi `--%s' tidak memperbolehkan argumen\n"
+
+#: getopt.c:692
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opsi `%c%s' tidak memperbolehkan argumen\n"
+
+#: getopt.c:709 getopt.c:882
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opsi `%s' membutuhkan sebuah argumen\n"
+
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opsi tidak dikenali `--%s'\n"
+
+#: getopt.c:742
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opsi tidak dikenali `%c%s'\n"
+
+#: getopt.c:768
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opsi illegal -- %c\n"
+
+#: getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opsi tidak valid -- %c\n"
+
+#: getopt.c:801 getopt.c:931
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n"
+
+#: getopt.c:848
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opsi `-W %s' merupakan opsi ambigu\n"
+
+#: getopt.c:866
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opsi `-W %s' tidak memperbolehkan sebuah argumen\n"
+
+#: hash.c:51
+#, c-format
+msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgstr ""
+
+#: hash.c:282
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr ""
+
+#: hash.c:284
+#, c-format
+msgid "Rehash=%d, "
+msgstr ""
+
+#: hash.c:285
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr ""
+
+#: implicit.c:41
+#, c-format
+msgid "Looking for an implicit rule for `%s'.\n"
+msgstr "Mencari aturan implisit untuk `%s'.\n"
+
+#: implicit.c:57
+#, c-format
+msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgstr "Mencari aturan implisit untuk anggota-archive pada `%s'.\n"
+
+#: implicit.c:319
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Menghindari aturan implisit rekursi.\n"
+
+#: implicit.c:476
+#, c-format
+msgid "Trying pattern rule with stem `%.*s'.\n"
+msgstr "Mencoba aturan pola dengan stem `%.*s'.\n"
+
+#: implicit.c:667
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Menolak persyaratan implisit yang tidak mungkin `%s'.\n"
+
+#: implicit.c:668
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr "Menolak persyaratan aturan yang tidak mungkin `%s'.\n"
+
+#: implicit.c:678
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Mencoba persyaratan implisit `%s'.\n"
+
+#: implicit.c:679
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr "Mencoba persyaratan dari aturan `%s'.\n"
+
+#: implicit.c:710
+#, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr "Menemukan persyaratan `%s' sebagai VPATH `%s'\n"
+
+#: implicit.c:730
+#, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr "Mencari aturan dengan file antara `%s'.\n"
+
+#: job.c:321
+#, fuzzy
+msgid "Cannot create a temporary file\n"
+msgstr "fwrite (file sementara)"
+
+#: job.c:388
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr "*** [%s] Error 0x%x (diabaikan)"
+
+#: job.c:389
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr "*** [%s] Error 0x%x"
+
+#: job.c:393
+#, c-format
+msgid "[%s] Error %d (ignored)"
+msgstr "[%s] Error %d (diabaikan)"
+
+#: job.c:394
+#, c-format
+msgid "*** [%s] Error %d"
+msgstr "*** [%s] Error %d"
+
+#: job.c:399
+msgid " (core dumped)"
+msgstr " (core di-dump)"
+
+#: job.c:488
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Menunggu jobs yang belum selesai...."
+
+#: job.c:518
+#, c-format
+msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgstr "Proses anak yang masih berjalan 0x%08lx (%s) PID %ld %s\n"
+
+#: job.c:520 job.c:701 job.c:804 job.c:1457
+msgid " (remote)"
+msgstr " (remote)"
+
+#: job.c:698
+#, c-format
+msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgstr "Reaping losing child 0x%08lx PID %ld %s\n"
+
+#: job.c:699
+#, c-format
+msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgstr "Reaping winning child 0x%08lx PID %ld %s\n"
+
+#: job.c:704
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Membersihkan file batch sementara %s\n"
+
+#: job.c:802
+#, fuzzy, c-format
+msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgstr "Menghilangkan proses anak 0x%08lx PID %ld%s dari rantai.\n"
+
+#: job.c:862
+msgid "write jobserver"
+msgstr "menulis jobserver"
+
+#: job.c:864
+#, c-format
+msgid "Released token for child 0x%08lx (%s).\n"
+msgstr "Melepaskan token dari proses anak 0x%08lx (%s).\n"
+
+#: job.c:1383
+#, fuzzy, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "process_easy() gagal untuk menjalankan proses (e=%d)\n"
+
+#: job.c:1387 job.c:2020
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"Terhitung %d argumen gagal untuk dijalankan\n"
+
+#: job.c:1455
+#, c-format
+msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgstr "Meletakkan proses anak 0x%08lx (%s) PID %ld%s pada rantai proses.\n"
+
+#: job.c:1709
+#, c-format
+msgid "Obtained token for child 0x%08lx (%s).\n"
+msgstr "Memperoleh token untuk proses anak 0x%08lx (%s).\n"
+
+#: job.c:1718
+msgid "read jobs pipe"
+msgstr "membaca jobs pipe"
+
+#: job.c:1832
+msgid "cannot enforce load limits on this operating system"
+msgstr "tidak dapat memaksa mencapai batas beban pada sistem operasi ini"
+
+#: job.c:1834
+msgid "cannot enforce load limit: "
+msgstr "tidak dapat memaksa mencapai batas beban: "
+
+#: job.c:1907
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr ""
+
+#: job.c:1909
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr ""
+
+#: job.c:1937
+msgid "Could not restore stdin\n"
+msgstr ""
+
+#: job.c:1945
+msgid "Could not restore stdout\n"
+msgstr ""
+
+#: job.c:2016
+#, fuzzy, c-format
+msgid "process_easy() failed failed to launch process (e=%ld)\n"
+msgstr "process_easy() gagal untuk menjalankan proses (e=%d)\n"
+
+#: job.c:2046
+#, fuzzy, c-format
+msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgstr "make reaped child pid %d, tetap menunggu untuk pid %d\n"
+
+#: job.c:2085
+#, c-format
+msgid "%s: Command not found"
+msgstr "%s: Perintah tidak ada"
+
+#: job.c:2145
+#, c-format
+msgid "%s: Shell program not found"
+msgstr "%s: Shell program tidak ditemukan"
+
+#: job.c:2154
+msgid "spawnvpe: environment space might be exhausted"
+msgstr ""
+
+#: job.c:2363
+#, fuzzy, c-format
+msgid "$SHELL changed (was `%s', now `%s')\n"
+msgstr "$SHELL berubah (sebelumnya `%s', sekarang `%s')"
+
+#: job.c:2789
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Membuat file batch sementara %s\n"
+
+#: job.c:2902
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (baris %d) shell context tidak baik (!unixy && !batch_mode_shell)\n"
+
+#: main.c:291
+msgid "Options:\n"
+msgstr "Opsi:\n"
+
+#: main.c:292
+#, fuzzy
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr "Diabaikan untuk kompatibilitas."
+
+#: main.c:294
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr ""
+
+#: main.c:296
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr ""
+
+#: main.c:299
+#, fuzzy
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr "Menampilkan banyak informasi debug"
+
+#: main.c:301
+#, fuzzy
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr "Menampilkan berbagai tipe informasi debug."
+
+#: main.c:303
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr ""
+
+#: main.c:306
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr ""
+
+#: main.c:309
+#, fuzzy
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr "Tampilkan pesan ini dan keluar"
+
+#: main.c:311
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+msgstr "Abaikan kesalahan dari perintah yang dijalankan"
+
+#: main.c:313
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr ""
+
+#: main.c:316
+#, fuzzy
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+"Melakukan N jobs secara bersamaan. Jobs tidak terhingga jika tidak diberikan "
+"argumen."
+
+#: main.c:318
+#, fuzzy
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr "Tetap jalan ketika target tidak dapat dibuat."
+
+#: main.c:320
+msgid ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+
+#: main.c:323
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+
+#: main.c:325
+msgid ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Don't actually run any commands; just print "
+"them.\n"
+msgstr ""
+
+#: main.c:328
+msgid ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+
+#: main.c:331
+#, fuzzy
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr "Tampilkan make's internal database"
+
+#: main.c:333
+#, fuzzy
+msgid ""
+"  -q, --question              Run no commands; exit status says if up to "
+"date.\n"
+msgstr ""
+"Tidak menjalankan perintah. Mengeluarkan status saja dan mengatakan up to "
+"date"
+
+#: main.c:335
+#, fuzzy
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr "Aturan implisit builtin tidak digunakan."
+
+#: main.c:337
+#, fuzzy
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr "Builtin variabel seting tidak digunakan"
+
+#: main.c:339
+msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+msgstr ""
+
+#: main.c:341
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr ""
+
+#: main.c:344
+#, fuzzy
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr "Touch target dari pada membuat kembali"
+
+#: main.c:346
+#, fuzzy
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr "Tampilkan versi dari make dan keluar"
+
+#: main.c:348
+#, fuzzy
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr "Tampilkan directory saat ini"
+
+#: main.c:350
+#, fuzzy
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr "Matikan opsi -w, walaupun opsi ini diaktifkan secara implisit"
+
+#: main.c:352
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr ""
+
+#: main.c:355
+#, fuzzy
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr "Peringatkan akan adanya variabel yang tidak terdefinisi."
+
+#: main.c:549
+msgid "empty string invalid as file name"
+msgstr "`string' kosong tidak valid sebagai nama file"
+
+#: main.c:630
+#, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "spesifikasi level debug tidak diketahui `%s'"
+
+#: main.c:670
+#, fuzzy, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgstr "%s: Interupsi/Exception diterima (kode = 0x%x, alamat = 0x%x)\n"
+
+#: main.c:677
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
+msgstr ""
+"\n"
+"Exception filter tidak dapat diatasi dari program %s\n"
+"ExceptionCode = %x\n"
+"ExceptionFlags = %x\n"
+"ExceptionAddress = %x\n"
+
+#: main.c:685
+#, fuzzy, c-format
+msgid "Access violation: write operation at address %lx\n"
+msgstr "Akses dilanggar: operasi tulis pada alamat %x\n"
+
+#: main.c:686
+#, fuzzy, c-format
+msgid "Access violation: read operation at address %lx\n"
+msgstr "Akses dilanggar: operasi baca pada alamat %x\n"
+
+#: main.c:762 main.c:773
+#, c-format
+msgid "find_and_set_shell setting default_shell = %s\n"
+msgstr "find_and_set_shell diset pada default_shell = %s\n"
+
+#: main.c:814
+#, c-format
+msgid "find_and_set_shell path search set default_shell = %s\n"
+msgstr "find_and_set_shell jalur pencarian di set pada default_shell = %s\n"
+
+#: main.c:1236
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "%s dihentikan selama 30 detik..."
+
+#: main.c:1238
+#, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr "selesai tidur(30). Melanjutkan.\n"
+
+#: main.c:1466
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile dari standard input dispesifikasikan dua kali."
+
+#: main.c:1505 vmsjobs.c:486
+msgid "fopen (temporary file)"
+msgstr "fopen (file sementara)"
+
+#: main.c:1511
+msgid "fwrite (temporary file)"
+msgstr "fwrite (file sementara)"
+
+#: main.c:1640
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Parallel jobs (-j) tidak disupport dalam platform ini."
+
+#: main.c:1641
+msgid "Resetting to single job (-j1) mode."
+msgstr "Mereset kembali ke mode satu job (-j1)."
+
+#: main.c:1656
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "internal error: opsi --jobserver-fds lebih dari satu"
+
+#: main.c:1664
+#, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr "internal error: invalid --jobserver-fds string `%s'"
+
+#: main.c:1674
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "Peringatan: -jN dipaksakan dalam submake: disabling jobserver mode."
+
+#: main.c:1684
+msgid "dup jobserver"
+msgstr "dup jobserver"
+
+#: main.c:1687
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr ""
+"Peringatan: jobserver tidak ada: menggunakan -j1. Tambahkan `+' pada aturan "
+"make paling atas."
+
+#: main.c:1710
+msgid "creating jobs pipe"
+msgstr "membuat jobs pipe"
+
+#: main.c:1725
+msgid "init jobserver pipe"
+msgstr "inisiasi jobserver pipe"
+
+#: main.c:1744
+msgid "Symbolic links not supported: disabling -L."
+msgstr ""
+
+#: main.c:1820
+msgid "Updating makefiles....\n"
+msgstr "Meng-update makefiles....\n"
+
+#: main.c:1845
+#, c-format
+msgid "Makefile `%s' might loop; not remaking it.\n"
+msgstr "Makefile `%s' mungkin berupa loop; tidak membuat lagi.\n"
+
+#: main.c:1924
+#, c-format
+msgid "Failed to remake makefile `%s'."
+msgstr "Gagal membuat lagi target file `%s'."
+
+#: main.c:1941
+#, c-format
+msgid "Included makefile `%s' was not found."
+msgstr "Included makefile `%s' tidak ditemukan."
+
+#: main.c:1946
+#, c-format
+msgid "Makefile `%s' was not found"
+msgstr "Makefile `%s' tidak ditemukan"
+
+#: main.c:2016
+msgid "Couldn't change back to original directory."
+msgstr "Tidak dapat kembali ke direktori asal."
+
+#: main.c:2024
+#, fuzzy, c-format
+msgid "Re-executing[%u]:"
+msgstr "Menjalankan kembali:"
+
+#: main.c:2140
+msgid "unlink (temporary file): "
+msgstr "unlink (file sementara): "
+
+#: main.c:2169
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ""
+
+#: main.c:2189
+msgid "No targets specified and no makefile found"
+msgstr "Tidak diberikan target dan tidak ditemukan makefile"
+
+#: main.c:2191
+msgid "No targets"
+msgstr "Tidak terdapat targets"
+
+#: main.c:2196
+msgid "Updating goal targets....\n"
+msgstr "Men-update target akhir....\n"
+
+#: main.c:2222
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr ""
+"Peringatan: Clock skew terdeteksi. Pembuatan anda mungkin tidak sempurna"
+
+#: main.c:2383
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Penggunaan: %s [opsi] [target] ...\n"
+
+#: main.c:2389
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+
+#: main.c:2391
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+
+#: main.c:2394
+#, fuzzy, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr ""
+"\n"
+"Laporkan bugs kepada <bug-make@gnu.org>\n"
+
+#: main.c:2466
+#, fuzzy, c-format
+msgid "the `-%c' option requires a non-empty string argument"
+msgstr "opsi `-%c' membutuhkan sebuah argument `string' yang tidak kosong"
+
+#: main.c:2518
+#, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "opsi `-%c' membutuhkan sebuah argument `string' yang tidak kosong"
+
+#: main.c:2942
+#, fuzzy, c-format
+msgid ""
+"%sThis is free software; see the source for copying conditions.\n"
+"%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
+"%sPARTICULAR PURPOSE.\n"
+msgstr ""
+", oleh Richard Stallman dan Roland McGrath.\n"
+"%sDibuat untuk %s\n"
+"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99\n"
+"%s\tFree Software Foundation, Inc.\n"
+"%sIni adalah free software; lihat kode program untuk syarat mengkopinya.\n"
+"%sTIDAK TERDAPAT GARANSI; bahkan untuk PENJUALAN atau \n"
+"%sKESESUAIAN UNTUK TUJUAN TERTENTU.\n"
+"\n"
+"%sLaporkan bugs kepada <bug-make@gnu.org>\n"
+"\n"
+
+#: main.c:2948
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s\n"
+msgstr ""
+
+#: main.c:2950
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s (%s)\n"
+msgstr ""
+
+#: main.c:2968
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Make data base, di tampilkan pada %s"
+
+#: main.c:2978
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Selesai membuat Make data base pada %s\n"
+
+#: main.c:3101
+#, fuzzy, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "sebuah direktori yang tidak diketahui"
+
+#: main.c:3103
+#, fuzzy, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "sebuah direktori yang tidak diketahui"
+
+#: main.c:3106
+#, fuzzy, c-format
+msgid "%s: Entering directory `%s'\n"
+msgstr "direktori `%s'\n"
+
+#: main.c:3109
+#, fuzzy, c-format
+msgid "%s: Leaving directory `%s'\n"
+msgstr "direktori `%s'\n"
+
+#: main.c:3114
+#, fuzzy, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "sebuah direktori yang tidak diketahui"
+
+#: main.c:3117
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "sebuah direktori yang tidak diketahui"
+
+#: main.c:3121
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory `%s'\n"
+msgstr "direktori `%s'\n"
+
+#: main.c:3124
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory `%s'\n"
+msgstr "direktori `%s'\n"
+
+#: misc.c:285
+msgid ".  Stop.\n"
+msgstr ". Berhenti.\n"
+
+#: misc.c:306
+#, c-format
+msgid "Unknown error %d"
+msgstr "Tidak diketahui kesalahan %d"
+
+#: misc.c:316
+#, c-format
+msgid "%s%s: %s"
+msgstr ""
+
+#: misc.c:324
+#, c-format
+msgid "%s: %s"
+msgstr ""
+
+#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+msgid "virtual memory exhausted"
+msgstr "Kehabisan memori virtual"
+
+#: misc.c:646
+#, fuzzy, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: pengguna %lu (nyata %lu), grup %lu (nyata %lu)\n"
+
+#: misc.c:667
+#, fuzzy
+msgid "Initialized access"
+msgstr "Terinisialisasi"
+
+#: misc.c:746
+msgid "User access"
+msgstr ""
+
+#: misc.c:794
+msgid "Make access"
+msgstr ""
+
+#: misc.c:828
+msgid "Child access"
+msgstr ""
+
+#: misc.c:892
+#, fuzzy, c-format
+msgid "write error: %s"
+msgstr "Meneruskan error menuju %s\n"
+
+#: misc.c:894
+#, fuzzy
+msgid "write error"
+msgstr "menulis jobserver"
+
+#: read.c:160
+msgid "Reading makefiles...\n"
+msgstr "Membaca makefiles...\n"
+
+#: read.c:315
+#, c-format
+msgid "Reading makefile `%s'"
+msgstr "Membaca makefile `%s'"
+
+#: read.c:317
+#, c-format
+msgid " (no default goal)"
+msgstr " (tidak terdapat goal default)"
+
+#: read.c:319
+#, c-format
+msgid " (search path)"
+msgstr " (jalur pencarian)"
+
+#: read.c:321
+#, c-format
+msgid " (don't care)"
+msgstr " (tidak peduli)"
+
+#: read.c:323
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (tidak terdapat ekspansi tilde ~)"
+
+#: read.c:623
+msgid "invalid syntax in conditional"
+msgstr "sintak salah dalam kondisional"
+
+#: read.c:633
+msgid "extraneous `endef'"
+msgstr "kelebihan `endef'"
+
+#: read.c:645 read.c:673 variable.c:1316
+msgid "empty variable name"
+msgstr "nama variabel kosong"
+
+#: read.c:662
+msgid "empty `override' directive"
+msgstr "directive `override' kosong"
+
+#: read.c:687
+msgid "invalid `override' directive"
+msgstr "directive `override' tidak valid"
+
+#: read.c:854
+msgid "commands commence before first target"
+msgstr "perintah dijalankan sebelum target pertama"
+
+#: read.c:905
+msgid "missing rule before commands"
+msgstr "hilang aturan sebelum menjalankan perintah"
+
+#: read.c:992
+#, c-format
+msgid "missing separator%s"
+msgstr "pemisah %s hilang"
+
+#: read.c:994
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr " (apakah yang anda maksud TAB dari pada 8 buah spasi?)"
+
+#: read.c:1152
+msgid "missing target pattern"
+msgstr "pola target hilang"
+
+#: read.c:1154
+msgid "multiple target patterns"
+msgstr "pola target banyak"
+
+#: read.c:1158
+#, c-format
+msgid "target pattern contains no `%%'"
+msgstr "pola target tidak memiliki `%%'"
+
+#: read.c:1286
+msgid "missing `endif'"
+msgstr "hilang `endif'"
+
+#: read.c:1377
+msgid "Extraneous text after `endef' directive"
+msgstr "Kelebihan text sesudah `endef' directive"
+
+#: read.c:1411
+msgid "missing `endef', unterminated `define'"
+msgstr "hilang syntak `endef', tidak diselesaikan `define'"
+
+#: read.c:1454
+#, c-format
+msgid "Extraneous text after `%s' directive"
+msgstr "Kelebihan text sesudah `%s' directive"
+
+#: read.c:1463 read.c:1477
+#, c-format
+msgid "extraneous `%s'"
+msgstr "kelebihan `%s'"
+
+#: read.c:1482
+msgid "only one `else' per conditional"
+msgstr "hanya satu `else' dalam setiap kondisi"
+
+#: read.c:1824
+#, fuzzy
+msgid "Malformed target-specific variable definition"
+msgstr "Definisi variable target-specific memiliki format salah"
+
+#: read.c:1886
+msgid "prerequisites cannot be defined in command scripts"
+msgstr ""
+
+#: read.c:1921
+msgid "mixed implicit and static pattern rules"
+msgstr "aturan pola implisit dan static tercampur"
+
+#: read.c:1924
+msgid "mixed implicit and normal rules"
+msgstr "aturan implisit dan aturan normal tercampur"
+
+#: read.c:1954
+#, c-format
+msgid "target `%s' doesn't match the target pattern"
+msgstr "target `%s' tidak cocok dengan pola target"
+
+#: read.c:1973 read.c:2074
+#, c-format
+msgid "target file `%s' has both : and :: entries"
+msgstr "target file `%s' keduanya memiliki : dan :: entries"
+
+#: read.c:1979
+#, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr "target `%s' diberikan lebih dari sekali dalam satu aturan."
+
+#: read.c:1988
+#, c-format
+msgid "warning: overriding commands for target `%s'"
+msgstr "Peringatan: overriding perintah untuk target `%s'"
+
+#: read.c:1991
+#, c-format
+msgid "warning: ignoring old commands for target `%s'"
+msgstr "Peringatan: menghiraukan perintah lama untuk target `%s'"
+
+#: read.c:2575
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "Peringatan: karakter NUL terlihat; baris selanjutnya dihiraukan"
+
+#: remake.c:229
+#, c-format
+msgid "Nothing to be done for `%s'."
+msgstr "Tidak ada yang harus dilakukan untuk membuat `%s'."
+
+#: remake.c:230
+#, c-format
+msgid "`%s' is up to date."
+msgstr "`%s' sudah up to date."
+
+#: remake.c:297
+#, c-format
+msgid "Pruning file `%s'.\n"
+msgstr "Pruning file `%s'.\n"
+
+#: remake.c:349
+#, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr "%sTidak terdapat aturan untuk membuat target `%s'%s"
+
+#: remake.c:351
+#, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr ""
+"%sTidak terdapat aturan untuk membuat target `%s', dibutuhkan oleh `%s'%s"
+
+#: remake.c:378
+#, c-format
+msgid "Considering target file `%s'.\n"
+msgstr "Mempertimbangkan target file `%s'.\n"
+
+#: remake.c:385
+#, c-format
+msgid "Recently tried and failed to update file `%s'.\n"
+msgstr "Baru saja dicoba dan gagal untuk meng-update file `%s'.\n"
+
+#: remake.c:400
+#, c-format
+msgid "File `%s' was considered already.\n"
+msgstr "File `%s' baru saja dipertimbangkan.\n"
+
+#: remake.c:410
+#, c-format
+msgid "Still updating file `%s'.\n"
+msgstr "Sedang meng-update file `%s'.\n"
+
+#: remake.c:413
+#, c-format
+msgid "Finished updating file `%s'.\n"
+msgstr "Selesai meng-update file `%s'.\n"
+
+#: remake.c:434
+#, c-format
+msgid "File `%s' does not exist.\n"
+msgstr "File `%s' tidak ada.\n"
+
+#: remake.c:441
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+msgstr ""
+
+#: remake.c:454 remake.c:962
+#, c-format
+msgid "Found an implicit rule for `%s'.\n"
+msgstr "Ditemukan sebuah aturan implisit untuk `%s'.\n"
+
+#: remake.c:456 remake.c:964
+#, c-format
+msgid "No implicit rule found for `%s'.\n"
+msgstr "Tidak terdapat aturan implisit untuk membuat `%s'.\n"
+
+#: remake.c:462 remake.c:970
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Menggunakan perintah default untuk `%s'.\n"
+
+#: remake.c:484 remake.c:996
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "Circular %s <- %s ketergantungan dijatuhkan."
+
+#: remake.c:601
+#, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
+msgstr "Selesai melakukan semua persyaratan dari target file `%s'.\n"
+
+#: remake.c:607
+#, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr "Persyaratan untuk membuat `%s' sedang dibuat.\n"
+
+#: remake.c:620
+#, c-format
+msgid "Giving up on target file `%s'.\n"
+msgstr "Menyerah untuk membuat target file `%s'.\n"
+
+#: remake.c:625
+#, c-format
+msgid "Target `%s' not remade because of errors."
+msgstr "Target `%s' tidak dibuat lagi karena ada kesalahan (errors)."
+
+#: remake.c:677
+#, fuzzy, c-format
+msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgstr "Persyaratan untuk `%s' lebih tua dari pada target `%s'.\n"
+
+#: remake.c:682
+#, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr "Persyaratan untuk `%s' untuk target `%s' tidak ada.\n"
+
+#: remake.c:687
+#, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr "Persyaratan untuk `%s' lebih baru dari pada target `%s'.\n"
+
+#: remake.c:690
+#, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr "Persyaratan untuk `%s' lebih tua dari pada target `%s'.\n"
+
+#: remake.c:708
+#, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgstr "Target `%s' merupakan double-colon dan tidak memiliki syarat.\n"
+
+#: remake.c:715
+#, c-format
+msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgstr "Tidak ada perintah untuk `%s' dan persyaratan tidak berubah.\n"
+
+#: remake.c:720
+#, c-format
+msgid "Making `%s' due to always-make flag.\n"
+msgstr ""
+
+#: remake.c:728
+#, c-format
+msgid "No need to remake target `%s'"
+msgstr "Tidak perlu membuat lagi target `%s'"
+
+#: remake.c:730
+#, c-format
+msgid "; using VPATH name `%s'"
+msgstr "; menggunakan nama VPATH `%s'"
+
+#: remake.c:750
+#, c-format
+msgid "Must remake target `%s'.\n"
+msgstr "Harus membuat lagi target `%s'.\n"
+
+#: remake.c:756
+#, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr " Mengabaikan nama VPATH `%s'.\n"
+
+#: remake.c:765
+#, c-format
+msgid "Commands of `%s' are being run.\n"
+msgstr "Perintah dari `%s' sedang dijalankan.\n"
+
+#: remake.c:772
+#, c-format
+msgid "Failed to remake target file `%s'.\n"
+msgstr "Gagal membuat lagi target file `%s'.\n"
+
+#: remake.c:775
+#, c-format
+msgid "Successfully remade target file `%s'.\n"
+msgstr "Sukses membuat kembali target file `%s'.\n"
+
+#: remake.c:778
+#, c-format
+msgid "Target file `%s' needs remade under -q.\n"
+msgstr "Target file `%s' dibutuhkan untuk membuat kembali dengan opsi -q.\n"
+
+#: remake.c:1306
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time in the future"
+msgstr ""
+"*** Peringatan: File `%s' memiliki waktu modifikasi lebih baru (%s > %s)"
+
+#: remake.c:1313
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgstr ""
+"*** Peringatan: File `%s' memiliki waktu modifikasi lebih baru (%s > %s)"
+
+#: remake.c:1511
+#, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr ".LIBPATTERNS elemen `%s' bukan merupakan sebuah pattern"
+
+#: remote-cstms.c:125
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Custom tidak akan men-export: %s\n"
+
+#: rule.c:548
+#, fuzzy
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Tidak ada aturan implisit."
+
+#: rule.c:563
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Tidak ada aturan implisit."
+
+#: rule.c:566
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+"\n"
+"# %u aturan implisit, %u"
+
+#: rule.c:575
+msgid " terminal."
+msgstr " terminal."
+
+#: rule.c:583
+#, c-format
+msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgstr "BUG: num_pattern_rules salah! %u != %u"
+
+#: signame.c:85
+msgid "unknown signal"
+msgstr "sinyal tidak diketahui"
+
+#: signame.c:93
+msgid "Hangup"
+msgstr "Hangup"
+
+#: signame.c:96
+msgid "Interrupt"
+msgstr "Interupsi"
+
+#: signame.c:99
+msgid "Quit"
+msgstr "Berhenti"
+
+#: signame.c:102
+msgid "Illegal Instruction"
+msgstr "Instruksi Ilegal"
+
+#: signame.c:105
+msgid "Trace/breakpoint trap"
+msgstr "Trace/breakpoint trap"
+
+#: signame.c:110
+msgid "Aborted"
+msgstr "Dibatalkan"
+
+#: signame.c:113
+msgid "IOT trap"
+msgstr "IOT trap"
+
+#: signame.c:116
+msgid "EMT trap"
+msgstr "EMT trap"
+
+#: signame.c:119
+msgid "Floating point exception"
+msgstr "Floating point exception"
+
+#: signame.c:122
+msgid "Killed"
+msgstr "Dimatikan"
+
+#: signame.c:125
+msgid "Bus error"
+msgstr "Bus error"
+
+#: signame.c:128
+msgid "Segmentation fault"
+msgstr "Kesalahan segmentasi memory"
+
+#: signame.c:131
+msgid "Bad system call"
+msgstr "system call jelek"
+
+#: signame.c:134
+msgid "Broken pipe"
+msgstr "`pipe' rusak"
+
+#: signame.c:137
+msgid "Alarm clock"
+msgstr "Jam alarm"
+
+#: signame.c:140
+msgid "Terminated"
+msgstr "Dimatikan"
+
+#: signame.c:143
+msgid "User defined signal 1"
+msgstr "Sinyal definisi pengguna 1"
+
+#: signame.c:146
+msgid "User defined signal 2"
+msgstr "Sinyal definisi pengguna 2"
+
+#: signame.c:151 signame.c:154
+msgid "Child exited"
+msgstr "Proses anak berakhir"
+
+#: signame.c:157
+msgid "Power failure"
+msgstr "Listrik mati"
+
+#: signame.c:160
+msgid "Stopped"
+msgstr "Dihentikkan"
+
+#: signame.c:163
+msgid "Stopped (tty input)"
+msgstr "Dihentikan (masukkan tty)"
+
+#: signame.c:166
+msgid "Stopped (tty output)"
+msgstr "Dihentikan (keluaran tty)"
+
+#: signame.c:169
+msgid "Stopped (signal)"
+msgstr "Dihentikan oleh sinyal"
+
+#: signame.c:172
+msgid "CPU time limit exceeded"
+msgstr "Batas waktu CPU telah terlampaui"
+
+#: signame.c:175
+msgid "File size limit exceeded"
+msgstr "Batas maksimal ukuran file sudah dilampaui"
+
+#: signame.c:178
+msgid "Virtual timer expired"
+msgstr "Virtual timer sudah lewat"
+
+#: signame.c:181
+msgid "Profiling timer expired"
+msgstr "Profiling timer sudah lewat"
+
+#: signame.c:187
+msgid "Window changed"
+msgstr "Window berubah"
+
+#: signame.c:190
+msgid "Continued"
+msgstr "Dilanjutkan"
+
+#: signame.c:193
+msgid "Urgent I/O condition"
+msgstr "Kondisi I/O penting"
+
+#: signame.c:200 signame.c:209
+msgid "I/O possible"
+msgstr "I/O mungkin"
+
+#: signame.c:203
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+#: signame.c:206
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: signame.c:212
+msgid "Resource lost"
+msgstr "Resource hilang"
+
+#: signame.c:215
+msgid "Danger signal"
+msgstr "Sinyal bahaya"
+
+#: signame.c:218
+msgid "Information request"
+msgstr "Permintaan informasi"
+
+#: signame.c:221
+msgid "Floating point co-processor not available"
+msgstr "Floating point co-processor tidak ada"
+
+#: strcache.c:210
+#, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d\n"
+msgstr ""
+
+#: strcache.c:211
+#, c-format
+msgid "%s # of strcache buffers: %d\n"
+msgstr ""
+
+#: strcache.c:212
+#, c-format
+msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:214
+#, c-format
+msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: variable.c:1369
+msgid "default"
+msgstr "default"
+
+#: variable.c:1372
+msgid "environment"
+msgstr "environment"
+
+#: variable.c:1375
+msgid "makefile"
+msgstr "makefile"
+
+#: variable.c:1378
+msgid "environment under -e"
+msgstr "envirenment dibawah opsi -e"
+
+#: variable.c:1381
+msgid "command line"
+msgstr "command line"
+
+#: variable.c:1384
+msgid "`override' directive"
+msgstr "`override' directive"
+
+#: variable.c:1387
+msgid "automatic"
+msgstr "otomatis"
+
+#: variable.c:1396
+#, fuzzy, c-format
+msgid " (from `%s', line %lu)"
+msgstr " (dari `%s', baris %lu):\n"
+
+#: variable.c:1438
+#, fuzzy
+msgid "# variable set hash-table stats:\n"
+msgstr "# %u variabel dalam %u hash buckets.\n"
+
+#: variable.c:1449
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Variabel\n"
+
+#: variable.c:1453
+#, fuzzy
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# Nilai Variabel Pattern-specific"
+
+#: variable.c:1467
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# Tidak terdapat nilai variabel pattern-specific"
+
+#: variable.c:1469
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u Nilai Variabel Pattern-specific"
+
+#: variable.h:189
+#, c-format
+msgid "warning: undefined variable `%.*s'"
+msgstr "peringatan: variabel `%.*s' tidak terdefinisi"
+
+#: vmsfunctions.c:94
+#, c-format
+msgid "sys$search failed with %d\n"
+msgstr "sys$search gagal dengan kode %d\n"
+
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr "Peringatan: redirection kosong\n"
+
+#: vmsjobs.c:175
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr "kesalahan internal: `%s' command_state"
+
+#: vmsjobs.c:268
+#, c-format
+msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+msgstr "-warning, CTRL-Y akan meninggalkan sub-process(es).\n"
+
+#: vmsjobs.c:284
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+"-warning, kamu mungkin telah mengaktifkan pengontrolan CTRL-Y dari DCL.\n"
+
+#: vmsjobs.c:407
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr "BUILTIN [%s][%s]\n"
+
+#: vmsjobs.c:418
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "BUILTIN CD %s\n"
+
+#: vmsjobs.c:436
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr "BUILTIN RM %s\n"
+
+#: vmsjobs.c:457
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "Perintah builtin '%s' tidak diketahui\n"
+
+#: vmsjobs.c:479
+#, c-format
+msgid "Error, empty command\n"
+msgstr "Error, tidak ada perintah\n"
+
+#: vmsjobs.c:491
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr "Meneruskan input dari %s\n"
+
+#: vmsjobs.c:498
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr "Meneruskan error menuju %s\n"
+
+#: vmsjobs.c:505
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr "Meneruskan output menuju %s\n"
+
+#: vmsjobs.c:568
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "Menjalankan perintah %s\n"
+
+#: vmsjobs.c:668
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr "Gagal spawning, %d\n"
+
+#: vpath.c:571
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# VPATH Jalur Pencarian\n"
+
+#: vpath.c:588
+msgid "# No `vpath' search paths."
+msgstr "# Tidak ada `vpath' dalam jalur pencarian."
+
+#: vpath.c:590
+#, c-format
+msgid ""
+"\n"
+"# %u `vpath' search paths.\n"
+msgstr ""
+"\n"
+"# %u `vpath' jalur pencarian.\n"
+
+#: vpath.c:593
+msgid ""
+"\n"
+"# No general (`VPATH' variable) search path."
+msgstr ""
+"\n"
+"# Tidak ada (`VPATH' variabel) yang umum dalam jalur pencarian."
+
+#: vpath.c:599
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Jalur pencarian yang umum untuk variabel `VPATH':\n"
+"# "
+
+#~ msgid ""
+#~ "\n"
+#~ "# No files."
+#~ msgstr ""
+#~ "\n"
+#~ "# Tidak terdapat files."
+
+#~ msgid ""
+#~ "\n"
+#~ "# %u files in %u hash buckets.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "# %u files dalam %u hash buckets.\n"
+
+#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
+#~ msgstr ""
+#~ "# rata - rata %.3f files per bucket, maksimal %u files dalam satu "
+#~ "bucket.\n"
+
+#~ msgid "the `word' function takes a positive index argument"
+#~ msgstr "fungsi `word' mengambil sebuah argumen index yang positif"
+
+#~ msgid "Syntax error, still inside '\"'\n"
+#~ msgstr "Sintak error, masih didalam '\"'\n"
+
+#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
+#~ msgstr "Mendapat sinyal SIGCHLD; %u unreaped childern.\n"
+
+#~ msgid "DIRECTORY"
+#~ msgstr "DIREKTORI"
+
+#~ msgid "Change to DIRECTORY before doing anything"
+#~ msgstr "Pindah ke DIRECTORY sebelum melakukan sesuatu."
+
+#~ msgid "FLAGS"
+#~ msgstr "FLAGS"
+
+#~ msgid "Suspend process to allow a debugger to attach"
+#~ msgstr "Proses dihentikan untuk memberikan kesempatan debugger"
+
+#~ msgid "Environment variables override makefiles"
+#~ msgstr "Variabel environment digunakan dalam makefiles"
+
+#~ msgid "FILE"
+#~ msgstr "FILE"
+
+#~ msgid "Read FILE as a makefile"
+#~ msgstr "Baca FILE sebagai sebuah makefile"
+
+#~ msgid "Search DIRECTORY for included makefiles"
+#~ msgstr "Cari DIREKTORI untuk makefiles yang dibutuhkan"
+
+#~ msgid "Don't start multiple jobs unless load is below N"
+#~ msgstr "Tidak melakukan banyak jobs jika beban lebih dari N."
+
+#~ msgid "Don't actually run any commands; just print them"
+#~ msgstr ""
+#~ "Jangan menjalankan perintah apapun. Hanya tampilkan saja apa yang akan "
+#~ "dilakukan"
+
+#~ msgid "Consider FILE to be very old and don't remake it"
+#~ msgstr ""
+#~ "Anggap FILE sudah sangat tua dan jangan dibuat kembali file tersebut"
+
+#~ msgid "Don't echo commands"
+#~ msgstr "Jangan menampilkan perintah yang dijalankan"
+
+#~ msgid "Turns off -k"
+#~ msgstr "Matikan opsi -k"
+
+#~ msgid "Consider FILE to be infinitely new"
+#~ msgstr "Pertimbangkan FILE sebagai file yang baru."
+
+#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
+#~ msgstr "Jangan menspesifikasi -j atau --jobs jika sh.exe tidak ada."
+
+#~ msgid "Resetting make for single job mode."
+#~ msgstr "Mereset kembali make pada mode job tunggal."
+
+#~ msgid "Entering"
+#~ msgstr "Memasuki"
+
+#~ msgid "Leaving"
+#~ msgstr "Meninggalkan"
+
+#~ msgid "no file name for `%sinclude'"
+#~ msgstr "tidak terdapat nama file untuk `%s include'"
+
+#~ msgid "target `%s' leaves prerequisite pattern empty"
+#~ msgstr "target `%s' meninggalkan persyaratan pola kosong"
+
+#~ msgid "# No variables."
+#~ msgstr "# Tidak ada variabel."
+
+#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
+#~ msgstr ""
+#~ "# rata - rata dari %.1f variabel per bucket, maksimal %u dalam satu "
+#~ "bucket.\n"
+
+#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
+#~ msgstr ""
+#~ "# rata - rata dari %d.%d variabel per bucket, maksimal %u dalam satu "
+#~ "bucket.\n"
Index: trunk/src/gmake/po/make.pot
===================================================================
--- trunk/src/gmake/po/make.pot	(revision 466)
+++ trunk/src/gmake/po/make.pot	(revision 503)
@@ -9,5 +9,5 @@
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2004-03-06 03:08-0500\n"
+"POT-Creation-Date: 2006-04-01 01:40-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
@@ -17,29 +17,29 @@
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:55
+#: ar.c:53
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr ""
 
-#: ar.c:139
+#: ar.c:137
 msgid "touch archive member is not available on VMS"
 msgstr ""
 
-#: ar.c:170
+#: ar.c:168
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr ""
 
-#: ar.c:173
+#: ar.c:171
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr ""
 
-#: ar.c:180
+#: ar.c:178
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr ""
 
-#: ar.c:187
+#: ar.c:185
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
@@ -80,42 +80,42 @@
 msgstr ""
 
-#: commands.c:415
+#: commands.c:422
 msgid "*** Break.\n"
 msgstr ""
 
-#: commands.c:509
+#: commands.c:545
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:512
+#: commands.c:548
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:525
+#: commands.c:561
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr ""
 
-#: commands.c:527
+#: commands.c:563
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr ""
 
-#: commands.c:563
+#: commands.c:599
 msgid "#  commands to execute"
 msgstr ""
 
-#: commands.c:566
+#: commands.c:602
 msgid " (built-in):"
 msgstr ""
 
-#: commands.c:568
+#: commands.c:604
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr ""
 
-#: dir.c:967
+#: dir.c:983
 msgid ""
 "\n"
@@ -123,216 +123,216 @@
 msgstr ""
 
-#: dir.c:979
+#: dir.c:995
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr ""
 
-#: dir.c:983
+#: dir.c:999
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr ""
 
-#: dir.c:987
+#: dir.c:1003
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
 
-#: dir.c:992
+#: dir.c:1008
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1019
+#: dir.c:1035
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr ""
 
-#: dir.c:1023
+#: dir.c:1039
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr ""
 
-#: dir.c:1028
+#: dir.c:1044
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr ""
 
-#: dir.c:1034 dir.c:1055
+#: dir.c:1050 dir.c:1071
 msgid "No"
 msgstr ""
 
-#: dir.c:1037 dir.c:1058
+#: dir.c:1053 dir.c:1074
 msgid " files, "
 msgstr ""
 
-#: dir.c:1039 dir.c:1060
+#: dir.c:1055 dir.c:1076
 msgid "no"
 msgstr ""
 
-#: dir.c:1042
+#: dir.c:1058
 msgid " impossibilities"
 msgstr ""
 
-#: dir.c:1046
+#: dir.c:1062
 msgid " so far."
 msgstr ""
 
-#: dir.c:1063
+#: dir.c:1079
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr ""
 
-#: expand.c:107
+#: expand.c:128
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr ""
 
-#: expand.c:248
+#: expand.c:266
 msgid "unterminated variable reference"
 msgstr ""
 
-#: file.c:257
+#: file.c:270
 #, c-format
 msgid "Commands were specified for file `%s' at %s:%lu,"
 msgstr ""
 
-#: file.c:262
+#: file.c:275
 #, c-format
 msgid "Commands for file `%s' were found by implicit rule search,"
 msgstr ""
 
-#: file.c:265
+#: file.c:278
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr ""
 
-#: file.c:268
+#: file.c:281
 #, c-format
 msgid "Commands for `%s' will be ignored in favor of those for `%s'."
 msgstr ""
 
-#: file.c:288
+#: file.c:301
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
 
-#: file.c:293
+#: file.c:306
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
 
-#: file.c:364
+#: file.c:381
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr ""
 
-#: file.c:368
+#: file.c:385
 msgid "Removing intermediate files...\n"
 msgstr ""
 
-#: file.c:554
+#: file.c:781
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr ""
 
-#: file.c:555
+#: file.c:782
 msgid "Current time"
 msgstr ""
 
-#: file.c:654
+#: file.c:881
 msgid "# Not a target:"
 msgstr ""
 
-#: file.c:676
+#: file.c:903
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr ""
 
-#: file.c:678
+#: file.c:905
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr ""
 
-#: file.c:680
+#: file.c:907
 msgid "#  Command-line target."
 msgstr ""
 
-#: file.c:682
-msgid "#  A default or MAKEFILES makefile."
-msgstr ""
-
-#: file.c:684
+#: file.c:909
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr ""
+
+#: file.c:911
 msgid "#  Implicit rule search has been done."
 msgstr ""
 
-#: file.c:685
+#: file.c:912
 msgid "#  Implicit rule search has not been done."
 msgstr ""
 
-#: file.c:687
+#: file.c:914
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr ""
 
-#: file.c:689
+#: file.c:916
 msgid "#  File is an intermediate prerequisite."
 msgstr ""
 
-#: file.c:692
+#: file.c:919
 msgid "#  Also makes:"
 msgstr ""
 
-#: file.c:698
+#: file.c:925
 msgid "#  Modification time never checked."
 msgstr ""
 
-#: file.c:700
+#: file.c:927
 msgid "#  File does not exist."
 msgstr ""
 
-#: file.c:702
+#: file.c:929
 msgid "#  File is very old."
 msgstr ""
 
-#: file.c:707
+#: file.c:934
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr ""
 
-#: file.c:710
+#: file.c:937
 msgid "#  File has been updated."
 msgstr ""
 
-#: file.c:710
+#: file.c:937
 msgid "#  File has not been updated."
 msgstr ""
 
-#: file.c:714
+#: file.c:941
 msgid "#  Commands currently running (THIS IS A BUG)."
 msgstr ""
 
-#: file.c:717
+#: file.c:944
 msgid "#  Dependencies commands running (THIS IS A BUG)."
 msgstr ""
 
-#: file.c:726
+#: file.c:953
 msgid "#  Successfully updated."
 msgstr ""
 
-#: file.c:730
+#: file.c:957
 msgid "#  Needs to be updated (-q is set)."
 msgstr ""
 
-#: file.c:733
+#: file.c:960
 msgid "#  Failed to be updated."
 msgstr ""
 
-#: file.c:736
+#: file.c:963
 msgid "#  Invalid value in `update_status' member!"
 msgstr ""
 
-#: file.c:743
+#: file.c:970
 msgid "#  Invalid value in `command_state' member!"
 msgstr ""
 
-#: file.c:762
+#: file.c:989
 msgid ""
 "\n"
@@ -340,5 +340,5 @@
 msgstr ""
 
-#: file.c:766
+#: file.c:993
 msgid ""
 "\n"
@@ -347,55 +347,55 @@
 msgstr ""
 
-#: function.c:721
+#: function.c:759
 msgid "non-numeric first argument to `word' function"
 msgstr ""
 
-#: function.c:725
+#: function.c:764
 msgid "first argument to `word' function must be greater than 0"
 msgstr ""
 
-#: function.c:746
+#: function.c:785
 msgid "non-numeric first argument to `wordlist' function"
 msgstr ""
 
-#: function.c:748
+#: function.c:787
 msgid "non-numeric second argument to `wordlist' function"
 msgstr ""
 
-#: function.c:1295
-#, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%d)\n"
-msgstr ""
-
-#: function.c:1306
-#, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%d)\n"
-msgstr ""
-
-#: function.c:1311
-#, c-format
-msgid "CreatePipe() failed (e=%d)\n"
-msgstr ""
-
-#: function.c:1316
+#: function.c:1453
+#, c-format
+msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr ""
+
+#: function.c:1464
+#, c-format
+msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr ""
+
+#: function.c:1469
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr ""
+
+#: function.c:1474
 msgid "windows32_openpipe (): process_init_fd() failed\n"
 msgstr ""
 
-#: function.c:1566
+#: function.c:1725
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr ""
 
-#: function.c:1784
-#, c-format
-msgid "Insufficient number of arguments (%d) to function `%s'"
-msgstr ""
-
-#: function.c:1795
-#, c-format
-msgid "Unimplemented on this platform: function `%s'"
-msgstr ""
-
-#: function.c:1846
+#: function.c:2101
+#, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr ""
+
+#: function.c:2113
+#, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr ""
+
+#: function.c:2163
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
@@ -457,150 +457,149 @@
 msgstr ""
 
-#: hash.c:52
+#: hash.c:51
 #, c-format
 msgid "can't allocate %ld bytes for hash table: memory exhausted"
 msgstr ""
 
-#: hash.c:283
+#: hash.c:282
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr ""
 
+#: hash.c:284
+#, c-format
+msgid "Rehash=%d, "
+msgstr ""
+
 #: hash.c:285
 #, c-format
-msgid "Rehash=%d, "
-msgstr ""
-
-#: hash.c:286
-#, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:38
+#: implicit.c:41
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr ""
 
-#: implicit.c:54
+#: implicit.c:57
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr ""
 
-#: implicit.c:199
+#: implicit.c:319
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ""
 
-#: implicit.c:337
+#: implicit.c:476
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr ""
 
-#: implicit.c:378
+#: implicit.c:667
 #, c-format
 msgid "Rejecting impossible implicit prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:379
+#: implicit.c:668
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:389
+#: implicit.c:678
 #, c-format
 msgid "Trying implicit prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:390
+#: implicit.c:679
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:412
+#: implicit.c:710
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr ""
 
-#: implicit.c:430
+#: implicit.c:730
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr ""
 
-#: job.c:300
+#: job.c:321
+msgid "Cannot create a temporary file\n"
+msgstr ""
+
+#: job.c:388
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr ""
 
-#: job.c:301
+#: job.c:389
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr ""
 
-#: job.c:305
+#: job.c:393
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr ""
 
-#: job.c:306
+#: job.c:394
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr ""
 
-#: job.c:311
+#: job.c:399
 msgid " (core dumped)"
 msgstr ""
 
-#: job.c:360
-#, c-format
-msgid "Warning: Empty redirection\n"
-msgstr ""
-
-#: job.c:482
+#: job.c:488
 msgid "*** Waiting for unfinished jobs...."
 msgstr ""
 
-#: job.c:511
+#: job.c:518
 #, c-format
 msgid "Live child 0x%08lx (%s) PID %ld %s\n"
 msgstr ""
 
-#: job.c:513 job.c:669 job.c:767 job.c:1388
+#: job.c:520 job.c:701 job.c:804 job.c:1457
 msgid " (remote)"
 msgstr ""
 
-#: job.c:666
+#: job.c:698
 #, c-format
 msgid "Reaping losing child 0x%08lx PID %ld %s\n"
 msgstr ""
 
-#: job.c:667
+#: job.c:699
 #, c-format
 msgid "Reaping winning child 0x%08lx PID %ld %s\n"
 msgstr ""
 
-#: job.c:672
+#: job.c:704
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr ""
 
-#: job.c:765
+#: job.c:802
 #, c-format
 msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
 msgstr ""
 
-#: job.c:822
+#: job.c:862
 msgid "write jobserver"
 msgstr ""
 
-#: job.c:824
+#: job.c:864
 #, c-format
 msgid "Released token for child 0x%08lx (%s).\n"
 msgstr ""
 
-#: job.c:1320 job.c:2476
-#, c-format
-msgid "process_easy() failed failed to launch process (e=%d)\n"
-msgstr ""
-
-#: job.c:1324 job.c:2480
+#: job.c:1383
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr ""
+
+#: job.c:1387 job.c:2020
 #, c-format
 msgid ""
@@ -609,158 +608,94 @@
 msgstr ""
 
-#: job.c:1386
+#: job.c:1455
 #, c-format
 msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
 msgstr ""
 
-#: job.c:1630
+#: job.c:1709
 #, c-format
 msgid "Obtained token for child 0x%08lx (%s).\n"
 msgstr ""
 
-#: job.c:1639
+#: job.c:1718
 msgid "read jobs pipe"
 msgstr ""
 
-#: job.c:1745
+#: job.c:1832
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 
-#: job.c:1747
+#: job.c:1834
 msgid "cannot enforce load limit: "
 msgstr ""
 
-#: job.c:1870
-#, c-format
-msgid "internal error: `%s' command_state"
-msgstr ""
-
-#: job.c:1955
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr ""
-
-#: job.c:1972
-#, c-format
-msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
-msgstr ""
-
-#: job.c:2083
-#, c-format
-msgid "BUILTIN [%s][%s]\n"
-msgstr ""
-
-#: job.c:2094
-#, c-format
-msgid "BUILTIN CD %s\n"
-msgstr ""
-
-#: job.c:2112
-#, c-format
-msgid "BUILTIN RM %s\n"
-msgstr ""
-
-#: job.c:2133
-#, c-format
-msgid "Unknown builtin command '%s'\n"
-msgstr ""
-
-#: job.c:2155
-#, c-format
-msgid "Error, empty command\n"
-msgstr ""
-
-#: job.c:2162 main.c:1365
-msgid "fopen (temporary file)"
-msgstr ""
-
-#: job.c:2167
-#, c-format
-msgid "Redirected input from %s\n"
-msgstr ""
-
-#: job.c:2174
-#, c-format
-msgid "Redirected error to %s\n"
-msgstr ""
-
-#: job.c:2181
-#, c-format
-msgid "Redirected output to %s\n"
-msgstr ""
-
-#: job.c:2244
-#, c-format
-msgid "Executing %s instead\n"
-msgstr ""
-
-#: job.c:2344
-#, c-format
-msgid "Error spawning, %d\n"
-msgstr ""
-
-#: job.c:2377
+#: job.c:1907
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:2379
+#: job.c:1909
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2405
-msgid "restoring of stdin failed\n"
-msgstr ""
-
-#: job.c:2407
-msgid "restoring of stdout failed\n"
-msgstr ""
-
-#: job.c:2505
-#, c-format
-msgid "make reaped child pid %d, still waiting for pid %d\n"
-msgstr ""
-
-#: job.c:2544
+#: job.c:1937
+msgid "Could not restore stdin\n"
+msgstr ""
+
+#: job.c:1945
+msgid "Could not restore stdout\n"
+msgstr ""
+
+#: job.c:2016
+#, c-format
+msgid "process_easy() failed failed to launch process (e=%ld)\n"
+msgstr ""
+
+#: job.c:2046
+#, c-format
+msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgstr ""
+
+#: job.c:2085
 #, c-format
 msgid "%s: Command not found"
 msgstr ""
 
-#: job.c:2588
+#: job.c:2145
 #, c-format
 msgid "%s: Shell program not found"
 msgstr ""
 
-#: job.c:2597
+#: job.c:2154
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2802
+#: job.c:2363
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr ""
 
-#: job.c:3223
+#: job.c:2789
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr ""
 
-#: job.c:3363
+#: job.c:2902
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 
-#: main.c:268
+#: main.c:291
 msgid "Options:\n"
 msgstr ""
 
-#: main.c:269
+#: main.c:292
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 
-#: main.c:271
+#: main.c:294
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:273
+#: main.c:296
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
@@ -768,14 +703,14 @@
 msgstr ""
 
-#: main.c:276
+#: main.c:299
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 
-#: main.c:278
+#: main.c:301
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 
-#: main.c:280
+#: main.c:303
 msgid ""
 "  -e, --environment-overrides\n"
@@ -783,5 +718,5 @@
 msgstr ""
 
-#: main.c:283
+#: main.c:306
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
@@ -789,13 +724,13 @@
 msgstr ""
 
-#: main.c:286
+#: main.c:309
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 
-#: main.c:288
+#: main.c:311
 msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
 msgstr ""
 
-#: main.c:290
+#: main.c:313
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
@@ -803,5 +738,5 @@
 msgstr ""
 
-#: main.c:293
+#: main.c:316
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
@@ -809,10 +744,10 @@
 msgstr ""
 
-#: main.c:295
+#: main.c:318
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 
-#: main.c:297
+#: main.c:320
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
@@ -821,5 +756,11 @@
 msgstr ""
 
-#: main.c:300
+#: main.c:323
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+
+#: main.c:325
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
@@ -828,5 +769,5 @@
 msgstr ""
 
-#: main.c:303
+#: main.c:328
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
@@ -835,9 +776,9 @@
 msgstr ""
 
-#: main.c:306
+#: main.c:331
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 
-#: main.c:308
+#: main.c:333
 msgid ""
 "  -q, --question              Run no commands; exit status says if up to "
@@ -845,17 +786,17 @@
 msgstr ""
 
-#: main.c:310
+#: main.c:335
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 
-#: main.c:312
+#: main.c:337
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 
-#: main.c:314
+#: main.c:339
 msgid "  -s, --silent, --quiet       Don't echo commands.\n"
 msgstr ""
 
-#: main.c:316
+#: main.c:341
 msgid ""
 "  -S, --no-keep-going, --stop\n"
@@ -863,18 +804,18 @@
 msgstr ""
 
-#: main.c:319
+#: main.c:344
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 
-#: main.c:321
+#: main.c:346
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 
-#: main.c:323
+#: main.c:348
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:350
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
@@ -882,5 +823,5 @@
 msgstr ""
 
-#: main.c:327
+#: main.c:352
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
@@ -888,5 +829,5 @@
 msgstr ""
 
-#: main.c:330
+#: main.c:355
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
@@ -894,170 +835,175 @@
 msgstr ""
 
-#: main.c:512
+#: main.c:549
 msgid "empty string invalid as file name"
 msgstr ""
 
-#: main.c:591
+#: main.c:630
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr ""
 
-#: main.c:631
-#, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%x, addr = 0x%x)\n"
-msgstr ""
-
-#: main.c:638
+#: main.c:670
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgstr ""
+
+#: main.c:677
 #, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
-msgstr ""
-
-#: main.c:646
-#, c-format
-msgid "Access violation: write operation at address %x\n"
-msgstr ""
-
-#: main.c:647
-#, c-format
-msgid "Access violation: read operation at address %x\n"
-msgstr ""
-
-#: main.c:712
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
+msgstr ""
+
+#: main.c:685
+#, c-format
+msgid "Access violation: write operation at address %lx\n"
+msgstr ""
+
+#: main.c:686
+#, c-format
+msgid "Access violation: read operation at address %lx\n"
+msgstr ""
+
+#: main.c:762 main.c:773
 #, c-format
 msgid "find_and_set_shell setting default_shell = %s\n"
 msgstr ""
 
-#: main.c:755
+#: main.c:814
 #, c-format
 msgid "find_and_set_shell path search set default_shell = %s\n"
 msgstr ""
 
-#: main.c:1111
+#: main.c:1236
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr ""
 
-#: main.c:1113
+#: main.c:1238
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr ""
 
-#: main.c:1326
+#: main.c:1466
 msgid "Makefile from standard input specified twice."
 msgstr ""
 
-#: main.c:1371
+#: main.c:1505 vmsjobs.c:486
+msgid "fopen (temporary file)"
+msgstr ""
+
+#: main.c:1511
 msgid "fwrite (temporary file)"
 msgstr ""
 
-#: main.c:1459
-msgid "Do not specify -j or --jobs if sh.exe is not available."
-msgstr ""
-
-#: main.c:1460
-msgid "Resetting make for single job mode."
-msgstr ""
-
-#: main.c:1501
+#: main.c:1640
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
 
-#: main.c:1502
+#: main.c:1641
 msgid "Resetting to single job (-j1) mode."
 msgstr ""
 
-#: main.c:1517
+#: main.c:1656
 msgid "internal error: multiple --jobserver-fds options"
 msgstr ""
 
-#: main.c:1525
+#: main.c:1664
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr ""
 
-#: main.c:1535
+#: main.c:1674
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 
-#: main.c:1545
+#: main.c:1684
 msgid "dup jobserver"
 msgstr ""
 
-#: main.c:1548
+#: main.c:1687
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 
-#: main.c:1571
+#: main.c:1710
 msgid "creating jobs pipe"
 msgstr ""
 
-#: main.c:1584
+#: main.c:1725
 msgid "init jobserver pipe"
 msgstr ""
 
-#: main.c:1670
+#: main.c:1744
+msgid "Symbolic links not supported: disabling -L."
+msgstr ""
+
+#: main.c:1820
 msgid "Updating makefiles....\n"
 msgstr ""
 
-#: main.c:1695
+#: main.c:1845
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr ""
 
-#: main.c:1770
+#: main.c:1924
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr ""
 
-#: main.c:1786
+#: main.c:1941
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr ""
 
-#: main.c:1791
+#: main.c:1946
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr ""
 
-#: main.c:1859
+#: main.c:2016
 msgid "Couldn't change back to original directory."
 msgstr ""
 
-#: main.c:1894
-msgid "Re-executing:"
-msgstr ""
-
-#: main.c:1949
+#: main.c:2024
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr ""
+
+#: main.c:2140
 msgid "unlink (temporary file): "
 msgstr ""
 
-#: main.c:1972
+#: main.c:2169
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ""
+
+#: main.c:2189
 msgid "No targets specified and no makefile found"
 msgstr ""
 
-#: main.c:1974
+#: main.c:2191
 msgid "No targets"
 msgstr ""
 
-#: main.c:1979
+#: main.c:2196
 msgid "Updating goal targets....\n"
 msgstr ""
 
-#: main.c:2005
+#: main.c:2222
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 
-#: main.c:2158
+#: main.c:2383
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr ""
 
-#: main.c:2164
+#: main.c:2389
 #, c-format
 msgid ""
@@ -1066,5 +1012,5 @@
 msgstr ""
 
-#: main.c:2166
+#: main.c:2391
 #, c-format
 msgid ""
@@ -1073,20 +1019,20 @@
 msgstr ""
 
-#: main.c:2169
+#: main.c:2394
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 
-#: main.c:2241
+#: main.c:2466
 #, c-format
 msgid "the `-%c' option requires a non-empty string argument"
 msgstr ""
 
-#: main.c:2293
+#: main.c:2518
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr ""
 
-#: main.c:2717
+#: main.c:2942
 #, c-format
 msgid ""
@@ -1096,5 +1042,5 @@
 msgstr ""
 
-#: main.c:2723
+#: main.c:2948
 #, c-format
 msgid ""
@@ -1103,5 +1049,5 @@
 msgstr ""
 
-#: main.c:2725
+#: main.c:2950
 #, c-format
 msgid ""
@@ -1110,5 +1056,5 @@
 msgstr ""
 
-#: main.c:2743
+#: main.c:2968
 #, c-format
 msgid ""
@@ -1117,5 +1063,5 @@
 msgstr ""
 
-#: main.c:2752
+#: main.c:2978
 #, c-format
 msgid ""
@@ -1124,113 +1070,122 @@
 msgstr ""
 
-#: main.c:2822
+#: main.c:3101
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr ""
 
-#: main.c:2824
+#: main.c:3103
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr ""
 
-#: main.c:2827
+#: main.c:3106
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr ""
 
-#: main.c:2830
+#: main.c:3109
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr ""
 
-#: main.c:2835
+#: main.c:3114
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr ""
 
-#: main.c:2838
+#: main.c:3117
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr ""
 
-#: main.c:2842
+#: main.c:3121
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr ""
 
-#: main.c:2845
+#: main.c:3124
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr ""
 
-#: misc.c:303
+#: misc.c:285
 msgid ".  Stop.\n"
 msgstr ""
 
+#: misc.c:306
+#, c-format
+msgid "Unknown error %d"
+msgstr ""
+
+#: misc.c:316
+#, c-format
+msgid "%s%s: %s"
+msgstr ""
+
 #: misc.c:324
 #, c-format
-msgid "Unknown error %d"
-msgstr ""
-
-#: misc.c:334
-#, c-format
-msgid "%s%s: %s"
-msgstr ""
-
-#: misc.c:342
-#, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: misc.c:362 misc.c:377 misc.c:394 read.c:3104
+#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
 msgid "virtual memory exhausted"
 msgstr ""
 
-#: misc.c:628
+#: misc.c:646
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr ""
 
-#: misc.c:649
+#: misc.c:667
 msgid "Initialized access"
 msgstr ""
 
-#: misc.c:728
+#: misc.c:746
 msgid "User access"
 msgstr ""
 
-#: misc.c:776
+#: misc.c:794
 msgid "Make access"
 msgstr ""
 
-#: misc.c:810
+#: misc.c:828
 msgid "Child access"
 msgstr ""
 
-#: read.c:158
+#: misc.c:892
+#, c-format
+msgid "write error: %s"
+msgstr ""
+
+#: misc.c:894
+msgid "write error"
+msgstr ""
+
+#: read.c:160
 msgid "Reading makefiles...\n"
 msgstr ""
 
-#: read.c:316
+#: read.c:315
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr ""
 
-#: read.c:318
+#: read.c:317
 #, c-format
 msgid " (no default goal)"
 msgstr ""
 
-#: read.c:320
+#: read.c:319
 #, c-format
 msgid " (search path)"
 msgstr ""
 
-#: read.c:322
+#: read.c:321
 #, c-format
 msgid " (don't care)"
 msgstr ""
 
-#: read.c:324
+#: read.c:323
 #, c-format
 msgid " (no ~ expansion)"
@@ -1241,128 +1196,118 @@
 msgstr ""
 
-#: read.c:632
+#: read.c:633
 msgid "extraneous `endef'"
 msgstr ""
 
-#: read.c:644 read.c:672 variable.c:1229
+#: read.c:645 read.c:673 variable.c:1316
 msgid "empty variable name"
 msgstr ""
 
-#: read.c:661
+#: read.c:662
 msgid "empty `override' directive"
 msgstr ""
 
-#: read.c:686
+#: read.c:687
 msgid "invalid `override' directive"
 msgstr ""
 
-#: read.c:801
-#, c-format
-msgid "no file name for `%sinclude'"
-msgstr ""
-
-#: read.c:864
+#: read.c:854
 msgid "commands commence before first target"
 msgstr ""
 
-#: read.c:915
+#: read.c:905
 msgid "missing rule before commands"
 msgstr ""
 
-#: read.c:1001
+#: read.c:992
 #, c-format
 msgid "missing separator%s"
 msgstr ""
 
-#: read.c:1003
+#: read.c:994
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr ""
 
-#: read.c:1173
+#: read.c:1152
 msgid "missing target pattern"
 msgstr ""
 
-#: read.c:1175
+#: read.c:1154
 msgid "multiple target patterns"
 msgstr ""
 
-#: read.c:1179
+#: read.c:1158
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr ""
 
-#: read.c:1238
+#: read.c:1286
 msgid "missing `endif'"
 msgstr ""
 
-#: read.c:1314
+#: read.c:1377
 msgid "Extraneous text after `endef' directive"
 msgstr ""
 
-#: read.c:1348
+#: read.c:1411
 msgid "missing `endef', unterminated `define'"
 msgstr ""
 
-#: read.c:1400 read.c:1568
+#: read.c:1454
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr ""
 
-#: read.c:1403
+#: read.c:1463 read.c:1477
 #, c-format
 msgid "extraneous `%s'"
 msgstr ""
 
-#: read.c:1408
+#: read.c:1482
 msgid "only one `else' per conditional"
 msgstr ""
 
-#: read.c:1691
-msgid "Malformed pattern-specific variable definition"
-msgstr ""
-
-#: read.c:1714
+#: read.c:1824
 msgid "Malformed target-specific variable definition"
 msgstr ""
 
-#: read.c:1805
+#: read.c:1886
+msgid "prerequisites cannot be defined in command scripts"
+msgstr ""
+
+#: read.c:1921
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1808
+#: read.c:1924
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1849
+#: read.c:1954
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr ""
 
-#: read.c:1871
-#, c-format
-msgid "target `%s' leaves prerequisite pattern empty"
-msgstr ""
-
-#: read.c:1985 read.c:2085
+#: read.c:1973 read.c:2074
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr ""
 
+#: read.c:1979
+#, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr ""
+
+#: read.c:1988
+#, c-format
+msgid "warning: overriding commands for target `%s'"
+msgstr ""
+
 #: read.c:1991
 #, c-format
-msgid "target `%s' given more than once in the same rule."
-msgstr ""
-
-#: read.c:2000
-#, c-format
-msgid "warning: overriding commands for target `%s'"
-msgstr ""
-
-#: read.c:2003
-#, c-format
 msgid "warning: ignoring old commands for target `%s'"
 msgstr ""
 
-#: read.c:2557
+#: read.c:2575
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
@@ -1378,40 +1323,50 @@
 msgstr ""
 
-#: remake.c:296
+#: remake.c:297
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr ""
 
-#: remake.c:348
+#: remake.c:349
+#, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr ""
+
+#: remake.c:351
+#, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr ""
+
+#: remake.c:378
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr ""
 
-#: remake.c:355
+#: remake.c:385
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr ""
 
-#: remake.c:359
+#: remake.c:400
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr ""
 
-#: remake.c:369
+#: remake.c:410
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr ""
 
-#: remake.c:372
+#: remake.c:413
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr ""
 
-#: remake.c:393
+#: remake.c:434
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr ""
 
-#: remake.c:400
+#: remake.c:441
 #, c-format
 msgid ""
@@ -1419,150 +1374,140 @@
 msgstr ""
 
-#: remake.c:413 remake.c:863
+#: remake.c:454 remake.c:962
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr ""
 
-#: remake.c:415 remake.c:865
+#: remake.c:456 remake.c:964
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr ""
 
-#: remake.c:421 remake.c:871
+#: remake.c:462 remake.c:970
 #, c-format
 msgid "Using default commands for `%s'.\n"
 msgstr ""
 
-#: remake.c:442 remake.c:897
+#: remake.c:484 remake.c:996
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr ""
 
-#: remake.c:524
+#: remake.c:601
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr ""
 
-#: remake.c:530
+#: remake.c:607
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr ""
 
-#: remake.c:543
+#: remake.c:620
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr ""
 
-#: remake.c:548
+#: remake.c:625
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr ""
 
-#: remake.c:600
+#: remake.c:677
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr ""
 
-#: remake.c:605
+#: remake.c:682
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr ""
 
-#: remake.c:610
+#: remake.c:687
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr ""
 
-#: remake.c:613
+#: remake.c:690
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr ""
 
-#: remake.c:631
+#: remake.c:708
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:638
+#: remake.c:715
 #, c-format
 msgid "No commands for `%s' and no prerequisites actually changed.\n"
 msgstr ""
 
-#: remake.c:643
+#: remake.c:720
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:651
+#: remake.c:728
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr ""
 
-#: remake.c:653
+#: remake.c:730
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr ""
 
-#: remake.c:673
+#: remake.c:750
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr ""
 
-#: remake.c:679
+#: remake.c:756
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr ""
 
-#: remake.c:688
+#: remake.c:765
 #, c-format
 msgid "Commands of `%s' are being run.\n"
 msgstr ""
 
-#: remake.c:695
+#: remake.c:772
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr ""
 
-#: remake.c:698
+#: remake.c:775
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr ""
 
-#: remake.c:701
+#: remake.c:778
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr ""
 
-#: remake.c:1012
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr ""
-
-#: remake.c:1014
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr ""
-
-#: remake.c:1224
+#: remake.c:1306
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr ""
 
-#: remake.c:1231
+#: remake.c:1313
 #, c-format
 msgid "Warning: File `%s' has modification time %.2g s in the future"
 msgstr ""
 
-#: remake.c:1351
+#: remake.c:1511
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ""
 
-#: remote-cstms.c:126
+#: remote-cstms.c:125
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:565
+#: rule.c:548
 msgid ""
 "\n"
@@ -1570,5 +1515,5 @@
 msgstr ""
 
-#: rule.c:580
+#: rule.c:563
 msgid ""
 "\n"
@@ -1576,214 +1521,236 @@
 msgstr ""
 
+#: rule.c:566
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+
+#: rule.c:575
+msgid " terminal."
+msgstr ""
+
 #: rule.c:583
 #, c-format
-msgid ""
-"\n"
-"# %u implicit rules, %u"
-msgstr ""
-
-#: rule.c:592
-msgid " terminal."
-msgstr ""
-
-#: rule.c:600
-#, c-format
 msgid "BUG: num_pattern_rules wrong!  %u != %u"
 msgstr ""
 
-#: signame.c:87
+#: signame.c:85
 msgid "unknown signal"
 msgstr ""
 
-#: signame.c:95
+#: signame.c:93
 msgid "Hangup"
 msgstr ""
 
-#: signame.c:98
+#: signame.c:96
 msgid "Interrupt"
 msgstr ""
 
-#: signame.c:101
+#: signame.c:99
 msgid "Quit"
 msgstr ""
 
-#: signame.c:104
+#: signame.c:102
 msgid "Illegal Instruction"
 msgstr ""
 
-#: signame.c:107
+#: signame.c:105
 msgid "Trace/breakpoint trap"
 msgstr ""
 
-#: signame.c:112
+#: signame.c:110
 msgid "Aborted"
 msgstr ""
 
-#: signame.c:115
+#: signame.c:113
 msgid "IOT trap"
 msgstr ""
 
-#: signame.c:118
+#: signame.c:116
 msgid "EMT trap"
 msgstr ""
 
-#: signame.c:121
+#: signame.c:119
 msgid "Floating point exception"
 msgstr ""
 
-#: signame.c:124
+#: signame.c:122
 msgid "Killed"
 msgstr ""
 
-#: signame.c:127
+#: signame.c:125
 msgid "Bus error"
 msgstr ""
 
-#: signame.c:130
+#: signame.c:128
 msgid "Segmentation fault"
 msgstr ""
 
-#: signame.c:133
+#: signame.c:131
 msgid "Bad system call"
 msgstr ""
 
-#: signame.c:136
+#: signame.c:134
 msgid "Broken pipe"
 msgstr ""
 
-#: signame.c:139
+#: signame.c:137
 msgid "Alarm clock"
 msgstr ""
 
-#: signame.c:142
+#: signame.c:140
 msgid "Terminated"
 msgstr ""
 
-#: signame.c:145
+#: signame.c:143
 msgid "User defined signal 1"
 msgstr ""
 
-#: signame.c:148
+#: signame.c:146
 msgid "User defined signal 2"
 msgstr ""
 
-#: signame.c:153 signame.c:156
+#: signame.c:151 signame.c:154
 msgid "Child exited"
 msgstr ""
 
-#: signame.c:159
+#: signame.c:157
 msgid "Power failure"
 msgstr ""
 
-#: signame.c:162
+#: signame.c:160
 msgid "Stopped"
 msgstr ""
 
-#: signame.c:165
+#: signame.c:163
 msgid "Stopped (tty input)"
 msgstr ""
 
-#: signame.c:168
+#: signame.c:166
 msgid "Stopped (tty output)"
 msgstr ""
 
-#: signame.c:171
+#: signame.c:169
 msgid "Stopped (signal)"
 msgstr ""
 
-#: signame.c:174
+#: signame.c:172
 msgid "CPU time limit exceeded"
 msgstr ""
 
-#: signame.c:177
+#: signame.c:175
 msgid "File size limit exceeded"
 msgstr ""
 
-#: signame.c:180
+#: signame.c:178
 msgid "Virtual timer expired"
 msgstr ""
 
-#: signame.c:183
+#: signame.c:181
 msgid "Profiling timer expired"
 msgstr ""
 
-#: signame.c:189
+#: signame.c:187
 msgid "Window changed"
 msgstr ""
 
-#: signame.c:192
+#: signame.c:190
 msgid "Continued"
 msgstr ""
 
-#: signame.c:195
+#: signame.c:193
 msgid "Urgent I/O condition"
 msgstr ""
 
-#: signame.c:202 signame.c:211
+#: signame.c:200 signame.c:209
 msgid "I/O possible"
 msgstr ""
 
-#: signame.c:205
+#: signame.c:203
 msgid "SIGWIND"
 msgstr ""
 
-#: signame.c:208
+#: signame.c:206
 msgid "SIGPHONE"
 msgstr ""
 
-#: signame.c:214
+#: signame.c:212
 msgid "Resource lost"
 msgstr ""
 
-#: signame.c:217
+#: signame.c:215
 msgid "Danger signal"
 msgstr ""
 
-#: signame.c:220
+#: signame.c:218
 msgid "Information request"
 msgstr ""
 
-#: signame.c:223
+#: signame.c:221
 msgid "Floating point co-processor not available"
 msgstr ""
 
-#: variable.c:1282
+#: strcache.c:210
+#, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d\n"
+msgstr ""
+
+#: strcache.c:211
+#, c-format
+msgid "%s # of strcache buffers: %d\n"
+msgstr ""
+
+#: strcache.c:212
+#, c-format
+msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:214
+#, c-format
+msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: variable.c:1369
 msgid "default"
 msgstr ""
 
-#: variable.c:1285
+#: variable.c:1372
 msgid "environment"
 msgstr ""
 
-#: variable.c:1288
+#: variable.c:1375
 msgid "makefile"
 msgstr ""
 
-#: variable.c:1291
+#: variable.c:1378
 msgid "environment under -e"
 msgstr ""
 
-#: variable.c:1294
+#: variable.c:1381
 msgid "command line"
 msgstr ""
 
-#: variable.c:1297
+#: variable.c:1384
 msgid "`override' directive"
 msgstr ""
 
-#: variable.c:1300
+#: variable.c:1387
 msgid "automatic"
 msgstr ""
 
-#: variable.c:1309
+#: variable.c:1396
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr ""
 
-#: variable.c:1351
+#: variable.c:1438
 msgid "# variable set hash-table stats:\n"
 msgstr ""
 
-#: variable.c:1362
+#: variable.c:1449
 msgid ""
 "\n"
@@ -1791,5 +1758,5 @@
 msgstr ""
 
-#: variable.c:1366
+#: variable.c:1453
 msgid ""
 "\n"
@@ -1797,5 +1764,5 @@
 msgstr ""
 
-#: variable.c:1380
+#: variable.c:1467
 msgid ""
 "\n"
@@ -1803,5 +1770,5 @@
 msgstr ""
 
-#: variable.c:1382
+#: variable.c:1469
 #, c-format
 msgid ""
@@ -1810,15 +1777,85 @@
 msgstr ""
 
-#: variable.h:188
+#: variable.h:189
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr ""
 
-#: vmsfunctions.c:78
+#: vmsfunctions.c:94
 #, c-format
 msgid "sys$search failed with %d\n"
 msgstr ""
 
-#: vpath.c:552
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr ""
+
+#: vmsjobs.c:175
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr ""
+
+#: vmsjobs.c:268
+#, c-format
+msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+msgstr ""
+
+#: vmsjobs.c:284
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+
+#: vmsjobs.c:407
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr ""
+
+#: vmsjobs.c:418
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr ""
+
+#: vmsjobs.c:436
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr ""
+
+#: vmsjobs.c:457
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr ""
+
+#: vmsjobs.c:479
+#, c-format
+msgid "Error, empty command\n"
+msgstr ""
+
+#: vmsjobs.c:491
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr ""
+
+#: vmsjobs.c:498
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr ""
+
+#: vmsjobs.c:505
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr ""
+
+#: vmsjobs.c:568
+#, c-format
+msgid "Executing %s instead\n"
+msgstr ""
+
+#: vmsjobs.c:668
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr ""
+
+#: vpath.c:571
 msgid ""
 "\n"
@@ -1826,9 +1863,9 @@
 msgstr ""
 
-#: vpath.c:569
+#: vpath.c:588
 msgid "# No `vpath' search paths."
 msgstr ""
 
-#: vpath.c:571
+#: vpath.c:590
 #, c-format
 msgid ""
@@ -1837,5 +1874,5 @@
 msgstr ""
 
-#: vpath.c:574
+#: vpath.c:593
 msgid ""
 "\n"
@@ -1843,5 +1880,5 @@
 msgstr ""
 
-#: vpath.c:580
+#: vpath.c:599
 msgid ""
 "\n"
Index: trunk/src/gmake/po/rw.po
===================================================================
--- trunk/src/gmake/po/rw.po	(revision 503)
+++ trunk/src/gmake/po/rw.po	(revision 503)
@@ -0,0 +1,2067 @@
+# Kinyarwanda translations for make package.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Steve Murphy <murf@e-tools.com>, 2005.
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali  <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# NoÃ«lla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA  <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: make 3.80\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"PO-Revision-Date: 2005-04-04 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ar.c:53
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: `%s'"
+msgstr "Kuri Gukoresha"
+
+#: ar.c:137
+#, fuzzy
+msgid "touch archive member is not available on VMS"
+msgstr "ni OYA Bihari ku"
+
+#: ar.c:168
+#, fuzzy, c-format
+msgid "touch: Archive `%s' does not exist"
+msgstr "OYA"
+
+#: ar.c:171
+#, fuzzy, c-format
+msgid "touch: `%s' is not a valid archive"
+msgstr "ni OYA a Byemewe"
+
+#: ar.c:178
+#, fuzzy, c-format
+msgid "touch: Member `%s' does not exist in `%s'"
+msgstr "OYA in"
+
+#: ar.c:185
+#, fuzzy, c-format
+msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgstr "Garuka ITEGEKONGENGA Bivuye ku"
+
+#: arscan.c:69
+#, fuzzy, c-format
+msgid "lbr$set_module failed to extract module info, status = %d"
+msgstr "Byanze Kuri Modire Ibisobanuro Imimerere"
+
+#: arscan.c:154
+#, fuzzy, c-format
+msgid "lbr$ini_control failed with status = %d"
+msgstr "Byanze Na: Imimerere"
+
+#: arscan.c:165
+#, fuzzy, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr "Kuri Gufungura Isomero Kuri GUSHAKISHA"
+
+#: arscan.c:825
+#, fuzzy, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Bayite ku"
+
+#: arscan.c:826
+#, fuzzy
+msgid " (name might be truncated)"
+msgstr "(Izina:"
+
+# svx/source\items\svxitems.src:RID_SVXITEMS_DATE_COMPLETE.text
+#: arscan.c:828
+#, fuzzy, c-format
+msgid "  Date %s"
+msgstr "Itariki:"
+
+#: arscan.c:829
+#, fuzzy, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr "UID Ubwoko 0"
+
+#: commands.c:422
+msgid "*** Break.\n"
+msgstr ""
+
+#: commands.c:545
+#, fuzzy, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr "***[%s]Gicurasi OYA Cyasibwe"
+
+#: commands.c:548
+#, fuzzy, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr "***Gicurasi OYA Cyasibwe"
+
+#: commands.c:561
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "***[%s]IDOSIYE"
+
+#: commands.c:563
+#, fuzzy, c-format
+msgid "*** Deleting file `%s'"
+msgstr "***IDOSIYE"
+
+#: commands.c:599
+#, fuzzy
+msgid "#  commands to execute"
+msgstr "#Amabwiriza Kuri Gukora"
+
+#: commands.c:602
+#, fuzzy
+msgid " (built-in):"
+msgstr "(in"
+
+#: commands.c:604
+#, fuzzy, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr "(Bivuye Umurongo"
+
+#: dir.c:983
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+
+#: dir.c:995
+#, fuzzy, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "#%s:OYA"
+
+#: dir.c:999
+#, fuzzy, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "#%s(Urufunguzo OYA"
+
+#: dir.c:1003
+#, fuzzy, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "#%s(APAREYE OYA"
+
+#: dir.c:1008
+#, fuzzy, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "#%s(APAREYE OYA"
+
+#: dir.c:1035
+#, fuzzy, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "#%s(Urufunguzo"
+
+#: dir.c:1039
+#, fuzzy, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "#%s(APAREYE"
+
+#: dir.c:1044
+#, fuzzy, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "#%s(APAREYE"
+
+#: dir.c:1050 dir.c:1071
+msgid "No"
+msgstr "Oya"
+
+# scp/source\office\dir.lng:STR_DIR_DATEIEN.text
+#: dir.c:1053 dir.c:1074
+#, fuzzy
+msgid " files, "
+msgstr "Idosiye"
+
+#: dir.c:1055 dir.c:1076
+#, fuzzy
+msgid "no"
+msgstr "Oya"
+
+#: dir.c:1058
+msgid " impossibilities"
+msgstr ""
+
+#: dir.c:1062
+msgid " so far."
+msgstr ""
+
+#: dir.c:1079
+#, fuzzy, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr "in ububiko bw'amaderese"
+
+#: expand.c:128
+#, fuzzy, c-format
+msgid "Recursive variable `%s' references itself (eventually)"
+msgstr "IMPINDURAGACIRO Indango"
+
+#: expand.c:266
+#, fuzzy
+msgid "unterminated variable reference"
+msgstr "IMPINDURAGACIRO Indango"
+
+#: file.c:270
+#, fuzzy, c-format
+msgid "Commands were specified for file `%s' at %s:%lu,"
+msgstr "kugirango IDOSIYE ku"
+
+#: file.c:275
+#, fuzzy, c-format
+msgid "Commands for file `%s' were found by implicit rule search,"
+msgstr "kugirango IDOSIYE Byabonetse ku Gushaka"
+
+#: file.c:278
+#, fuzzy, c-format
+msgid "but `%s' is now considered the same file as `%s'."
+msgstr "ni NONEAHA i IDOSIYE Nka"
+
+#: file.c:281
+#, fuzzy, c-format
+msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgstr "kugirango in Bya kugirango"
+
+#: file.c:301
+#, fuzzy, c-format
+msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgstr "Guhindura izina UMWE Kuri MAHARAKUBIRI"
+
+#: file.c:306
+#, fuzzy, c-format
+msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgstr "Guhindura izina MAHARAKUBIRI Kuri UMWE"
+
+#: file.c:381
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file `%s'"
+msgstr "***IDOSIYE"
+
+#: file.c:385
+#, fuzzy
+msgid "Removing intermediate files...\n"
+msgstr "Idosiye"
+
+#: file.c:781
+#, fuzzy, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s:Inyuma Bya Urutonde"
+
+# sfx2/sdi\sfxslots.src:SID_CURRENTTIME.text
+#: file.c:782
+#, fuzzy
+msgid "Current time"
+msgstr "Iki Gihe"
+
+#: file.c:881
+#, fuzzy
+msgid "# Not a target:"
+msgstr "#a Intego"
+
+#: file.c:903
+#, fuzzy
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "#IDOSIYE Bya"
+
+#: file.c:905
+#, fuzzy
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "#Intego Bya"
+
+#: file.c:907
+#, fuzzy
+msgid "#  Command-line target."
+msgstr "#Umurongo Intego"
+
+#: file.c:909
+#, fuzzy
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "#A Mburabuzi Cyangwa"
+
+#: file.c:911
+#, fuzzy
+msgid "#  Implicit rule search has been done."
+msgstr "#Gushaka Byakozwe"
+
+#: file.c:912
+#, fuzzy
+msgid "#  Implicit rule search has not been done."
+msgstr "#Gushaka OYA Byakozwe"
+
+#: file.c:914
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: `%s'\n"
+msgstr "#Ishusho"
+
+#: file.c:916
+#, fuzzy
+msgid "#  File is an intermediate prerequisite."
+msgstr "#Idosiye ni"
+
+#: file.c:919
+msgid "#  Also makes:"
+msgstr ""
+
+#: file.c:925
+#, fuzzy
+msgid "#  Modification time never checked."
+msgstr "#Igihe Nta narimwe Ivivuwe"
+
+#: file.c:927
+#, fuzzy
+msgid "#  File does not exist."
+msgstr "#Idosiye OYA"
+
+#: file.c:929
+#, fuzzy
+msgid "#  File is very old."
+msgstr "#Idosiye ni ki/ bishaje"
+
+#: file.c:934
+#, fuzzy, c-format
+msgid "#  Last modified %s\n"
+msgstr "#Byahinduwe"
+
+#: file.c:937
+#, fuzzy
+msgid "#  File has been updated."
+msgstr "#Idosiye"
+
+#: file.c:937
+#, fuzzy
+msgid "#  File has not been updated."
+msgstr "#Idosiye OYA"
+
+#: file.c:941
+#, fuzzy
+msgid "#  Commands currently running (THIS IS A BUG)."
+msgstr "#A"
+
+#: file.c:944
+#, fuzzy
+msgid "#  Dependencies commands running (THIS IS A BUG)."
+msgstr "#Amabwiriza A"
+
+#: file.c:953
+msgid "#  Successfully updated."
+msgstr ""
+
+#: file.c:957
+#, fuzzy
+msgid "#  Needs to be updated (-q is set)."
+msgstr "#Kuri Q ni Gushyiraho"
+
+#: file.c:960
+#, fuzzy
+msgid "#  Failed to be updated."
+msgstr "#Kuri"
+
+#: file.c:963
+#, fuzzy
+msgid "#  Invalid value in `update_status' member!"
+msgstr "#Agaciro in"
+
+#: file.c:970
+#, fuzzy
+msgid "#  Invalid value in `command_state' member!"
+msgstr "#Agaciro in"
+
+# LOCALIZATION NOTE (filesFolder):
+#    This is the name of the folder that is created parallel to a HTML file
+#    when it is saved "With Images". The %S section is replaced with the
+#    leaf name of the file being saved (minus extension).
+#: file.c:989
+#, fuzzy
+msgid ""
+"\n"
+"# Files"
+msgstr "#files"
+
+#: file.c:993
+#, fuzzy
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr "#Idosiye imbonerahamwe# stats"
+
+#: function.c:759
+#, fuzzy
+msgid "non-numeric first argument to `word' function"
+msgstr "Bikurikije umubare Itangira Kuri Umumaro"
+
+#: function.c:764
+#, fuzzy
+msgid "first argument to `word' function must be greater than 0"
+msgstr "Itangira Kuri Umumaro Biruta 0"
+
+#: function.c:785
+#, fuzzy
+msgid "non-numeric first argument to `wordlist' function"
+msgstr "Bikurikije umubare Itangira Kuri Umumaro"
+
+#: function.c:787
+#, fuzzy
+msgid "non-numeric second argument to `wordlist' function"
+msgstr "Bikurikije umubare ISEGONDA Kuri Umumaro"
+
+#: function.c:1453
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "Byanze E"
+
+#: function.c:1464
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "Byanze E"
+
+#: function.c:1469
+#, fuzzy, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "Byanze E"
+
+#: function.c:1474
+msgid "windows32_openpipe (): process_init_fd() failed\n"
+msgstr ""
+
+#: function.c:1725
+#, fuzzy, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Hejuru By'igihe gito IDOSIYE"
+
+#: function.c:2101
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr "Umubare Bya ingingo Kuri Umumaro"
+
+#: function.c:2113
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr "ku iyi Umumaro"
+
+#: function.c:2163
+#, fuzzy, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr "Kuri Umumaro Ibuze"
+
+#: getopt.c:663
+#, fuzzy, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: getopt.c:687
+#, fuzzy, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: getopt.c:692
+#, fuzzy, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: getopt.c:709 getopt.c:882
+#, fuzzy, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:742
+#, fuzzy, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:768
+#, fuzzy, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:771
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:Sibyo Ihitamo"
+
+#: getopt.c:801 getopt.c:931
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:848
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: getopt.c:866
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: hash.c:51
+#, fuzzy, c-format
+msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgstr "Bayite kugirango imbonerahamwe# Ububiko"
+
+#: hash.c:282
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr ""
+
+#: hash.c:284
+#, c-format
+msgid "Rehash=%d, "
+msgstr ""
+
+#: hash.c:285
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr ""
+
+#: implicit.c:41
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for `%s'.\n"
+msgstr "kugirango kugirango"
+
+#: implicit.c:57
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgstr "kugirango kugirango"
+
+#: implicit.c:319
+msgid "Avoiding implicit rule recursion.\n"
+msgstr ""
+
+#: implicit.c:476
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem `%.*s'.\n"
+msgstr "Ishusho Na:"
+
+#: implicit.c:667
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:668
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:678
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:679
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:710
+#, fuzzy, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr "Nka"
+
+#: implicit.c:730
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr "kugirango a Na: IDOSIYE"
+
+#: job.c:321
+#, fuzzy
+msgid "Cannot create a temporary file\n"
+msgstr "By'igihe gito IDOSIYE"
+
+#: job.c:388
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr ""
+
+#: job.c:389
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr ""
+
+#: job.c:393
+#, c-format
+msgid "[%s] Error %d (ignored)"
+msgstr ""
+
+# sw/source\ui\utlui\initui.src:RID_SW_SHELLRES.STR_CALC_DEFAULT.text
+#: job.c:394
+#, fuzzy, c-format
+msgid "*** [%s] Error %d"
+msgstr "***[%s]Ikosa**"
+
+#: job.c:399
+msgid " (core dumped)"
+msgstr ""
+
+#: job.c:488
+#, fuzzy
+msgid "*** Waiting for unfinished jobs...."
+msgstr "***kugirango"
+
+#: job.c:518
+#, c-format
+msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgstr ""
+
+#: job.c:520 job.c:701 job.c:804 job.c:1457
+msgid " (remote)"
+msgstr ""
+
+#: job.c:698
+#, c-format
+msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgstr ""
+
+#: job.c:699
+#, c-format
+msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgstr ""
+
+#: job.c:704
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Hejuru IDOSIYE"
+
+#: job.c:802
+#, fuzzy, c-format
+msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgstr "Bivuye"
+
+#: job.c:862
+#, fuzzy
+msgid "write jobserver"
+msgstr "Kwandika"
+
+#: job.c:864
+#, fuzzy, c-format
+msgid "Released token for child 0x%08lx (%s).\n"
+msgstr "kugirango"
+
+#: job.c:1383
+#, fuzzy, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "Byanze Byanze Kuri E"
+
+#: job.c:1387 job.c:2020
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr "in Byanze"
+
+#: job.c:1455
+#, fuzzy, c-format
+msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgstr "ku i"
+
+#: job.c:1709
+#, fuzzy, c-format
+msgid "Obtained token for child 0x%08lx (%s).\n"
+msgstr "kugirango"
+
+#: job.c:1718
+#, fuzzy
+msgid "read jobs pipe"
+msgstr "Gusoma"
+
+#: job.c:1832
+#, fuzzy
+msgid "cannot enforce load limits on this operating system"
+msgstr "Ibirimo Imbibi ku iyi Sisitemu"
+
+#: job.c:1834
+#, fuzzy
+msgid "cannot enforce load limit: "
+msgstr "Ibirimo"
+
+#: job.c:1907
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr ""
+
+#: job.c:1909
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr ""
+
+#: job.c:1937
+msgid "Could not restore stdin\n"
+msgstr ""
+
+#: job.c:1945
+msgid "Could not restore stdout\n"
+msgstr ""
+
+#: job.c:2016
+#, fuzzy, c-format
+msgid "process_easy() failed failed to launch process (e=%ld)\n"
+msgstr "Byanze Byanze Kuri E"
+
+#: job.c:2046
+#, fuzzy, c-format
+msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgstr "Ubwoko Tegereza kugirango"
+
+#: job.c:2085
+#, fuzzy, c-format
+msgid "%s: Command not found"
+msgstr "%s:OYA Byabonetse"
+
+#: job.c:2145
+#, fuzzy, c-format
+msgid "%s: Shell program not found"
+msgstr "%s:Porogaramu OYA Byabonetse"
+
+#: job.c:2154
+msgid "spawnvpe: environment space might be exhausted"
+msgstr ""
+
+#: job.c:2363
+#, fuzzy, c-format
+msgid "$SHELL changed (was `%s', now `%s')\n"
+msgstr "$Byahinduwe NONEAHA"
+
+#: job.c:2789
+#, fuzzy, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "By'igihe gito IDOSIYE"
+
+#: job.c:2902
+#, fuzzy, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s(Umurongo Igikonoshwa Imvugiro"
+
+# crashrep/source\all\crashrep.lng:%OPTIONS_BUTTON%.text
+#: main.c:291
+#, fuzzy
+msgid "Options:\n"
+msgstr "Amahitamo..."
+
+#: main.c:292
+#, fuzzy
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr "-B M kugirango Bihuye neza"
+
+#: main.c:294
+#, fuzzy
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr "-Buri gihe Ubwoko Ubwoko Byose"
+
+#: main.c:296
+#, fuzzy
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr "-C bushyinguro Kuri Mbere"
+
+#: main.c:299
+#, fuzzy
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr "-D Bya Ibisobanuro"
+
+#: main.c:301
+#, fuzzy
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr "--Kosora amakosa Bya Ibisobanuro"
+
+#: main.c:303
+#, fuzzy
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr "-E Ibihinduka"
+
+#: main.c:306
+#, fuzzy
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr "-F IDOSIYE Nka a"
+
+#: main.c:309
+#, fuzzy
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr "-h Ifashayobora iyi Ubutumwa Na Gusohoka"
+
+#: main.c:311
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+msgstr "-i Kwirengagiza Amakosa Amakosa Bivuye Amabwiriza"
+
+#: main.c:313
+#, fuzzy
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr "-Gushyiramo kugirango"
+
+#: main.c:316
+#, fuzzy
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr "-j ku Rimwe Bidashira Na: Oya"
+
+#: main.c:318
+#, fuzzy
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr "-K Gumana: Ryari:"
+
+#: main.c:320
+#, fuzzy
+msgid ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+"-L Ibirimo Impuzandengo KININI Ibirimo Gutangira Igikubo Ibirimo ni munsi"
+
+#: main.c:323
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+
+#: main.c:325
+#, fuzzy
+msgid ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Don't actually run any commands; just print "
+"them.\n"
+msgstr "-N Gucapa Gukoresha Gukoresha Amabwiriza Gucapa"
+
+#: main.c:328
+#, fuzzy
+msgid ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr "-o ki/ bishaje IDOSIYE ki/ bishaje Kuri ki/ bishaje Na"
+
+#: main.c:331
+#, fuzzy
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr "-P Gucapa Ibyatanzwe SHINGIRO By'imbere Ububikoshingiro"
+
+#: main.c:333
+#, fuzzy
+msgid ""
+"  -q, --question              Run no commands; exit status says if up to "
+"date.\n"
+msgstr "-Q Oya Amabwiriza Gusohoka Imimerere NIBA Hejuru Kuri Itariki"
+
+#: main.c:335
+#, fuzzy
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr "-R Oya i in"
+
+#: main.c:337
+#, fuzzy
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr "-Oya Ibihinduka i in IMPINDURAGACIRO Amagenamiterere"
+
+#: main.c:339
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+msgstr "-S Amabwiriza"
+
+#: main.c:341
+#, fuzzy
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr "-Oya Gumana: Bidakora K"
+
+#: main.c:344
+#, fuzzy
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr "-T Bya"
+
+#: main.c:346
+#, fuzzy
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr "-v Verisiyo i Verisiyo Umubare Bya Ubwoko Na Gusohoka"
+
+#: main.c:348
+#, fuzzy
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr "-W Gucapa bushyinguro i KIGEZWEHO bushyinguro"
+
+#: main.c:350
+#, fuzzy
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr "--Oya Gucapa bushyinguro Bidakora W ATARIIGIHARWE NIBA ku"
+
+#: main.c:352
+#, fuzzy
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr "-NIBA Gishya IDOSIYE Gishya Kuri Gishya"
+
+#: main.c:355
+#, fuzzy
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr "--kidasobanuye Ibihinduka Ryari: kidasobanuye IMPINDURAGACIRO ni"
+
+#: main.c:549
+#, fuzzy
+msgid "empty string invalid as file name"
+msgstr "ubusa Ikurikiranyanyuguti Sibyo Nka IDOSIYE Izina:"
+
+#: main.c:630
+#, fuzzy, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "Kitazwi Kosora amakosa urwego"
+
+#: main.c:670
+#, fuzzy, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgstr "%s:ITEGEKONGENGA Aderesi"
+
+#: main.c:677
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
+msgstr "Irengayobora(-) Muyunguruzi... Bivuye Porogaramu"
+
+#: main.c:685
+#, fuzzy, c-format
+msgid "Access violation: write operation at address %lx\n"
+msgstr "Kwandika ku Aderesi"
+
+#: main.c:686
+#, fuzzy, c-format
+msgid "Access violation: read operation at address %lx\n"
+msgstr "Gusoma ku Aderesi"
+
+#: main.c:762 main.c:773
+#, fuzzy, c-format
+msgid "find_and_set_shell setting default_shell = %s\n"
+msgstr "Igenamiterere"
+
+#: main.c:814
+#, fuzzy, c-format
+msgid "find_and_set_shell path search set default_shell = %s\n"
+msgstr "Inzira Gushaka Gushyiraho"
+
+#: main.c:1236
+#, fuzzy, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "%sni kugirango amasogonda"
+
+#: main.c:1238
+#, fuzzy, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr "Byakozwe"
+
+#: main.c:1466
+#, fuzzy
+msgid "Makefile from standard input specified twice."
+msgstr "Bivuye Bisanzwe Iyinjiza"
+
+#: main.c:1505 vmsjobs.c:486
+#, fuzzy
+msgid "fopen (temporary file)"
+msgstr "By'igihe gito IDOSIYE"
+
+#: main.c:1511
+#, fuzzy
+msgid "fwrite (temporary file)"
+msgstr "By'igihe gito IDOSIYE"
+
+#: main.c:1640
+#, fuzzy
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "j OYA ku iyi"
+
+#: main.c:1641
+#, fuzzy
+msgid "Resetting to single job (-j1) mode."
+msgstr "Kuri UMWE Ubwoko"
+
+#: main.c:1656
+#, fuzzy
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "By'imbere Ikosa Igikubo Amahitamo"
+
+#: main.c:1664
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr "By'imbere Ikosa Sibyo Ikurikiranyanyuguti"
+
+#: main.c:1674
+#, fuzzy
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "Iburira in Ubwoko"
+
+#: main.c:1684
+msgid "dup jobserver"
+msgstr ""
+
+#: main.c:1687
+#, fuzzy
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr "Iburira ikoresha Kuri Ubwoko"
+
+#: main.c:1710
+msgid "creating jobs pipe"
+msgstr ""
+
+#: main.c:1725
+msgid "init jobserver pipe"
+msgstr ""
+
+#: main.c:1744
+msgid "Symbolic links not supported: disabling -L."
+msgstr ""
+
+#: main.c:1820
+msgid "Updating makefiles....\n"
+msgstr ""
+
+#: main.c:1845
+#, fuzzy, c-format
+msgid "Makefile `%s' might loop; not remaking it.\n"
+msgstr "OYA"
+
+#: main.c:1924
+#, fuzzy, c-format
+msgid "Failed to remake makefile `%s'."
+msgstr "Kuri"
+
+#: main.c:1941
+#, fuzzy, c-format
+msgid "Included makefile `%s' was not found."
+msgstr "OYA Byabonetse"
+
+#: main.c:1946
+#, fuzzy, c-format
+msgid "Makefile `%s' was not found"
+msgstr "OYA Byabonetse"
+
+#: main.c:2016
+#, fuzzy
+msgid "Couldn't change back to original directory."
+msgstr "Guhindura>> Inyuma Kuri Umwimerere bushyinguro"
+
+#: main.c:2024
+#, fuzzy, c-format
+msgid "Re-executing[%u]:"
+msgstr "Gukora:%s"
+
+#: main.c:2140
+#, fuzzy
+msgid "unlink (temporary file): "
+msgstr "Kureka guhuza By'igihe gito IDOSIYE"
+
+#: main.c:2169
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ""
+
+#: main.c:2189
+#, fuzzy
+msgid "No targets specified and no makefile found"
+msgstr "Na Oya Byabonetse"
+
+#: main.c:2191
+msgid "No targets"
+msgstr ""
+
+#: main.c:2196
+msgid "Updating goal targets....\n"
+msgstr ""
+
+#: main.c:2222
+#, fuzzy
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr "Iburira SKEW Gicurasi"
+
+#: main.c:2383
+#, fuzzy, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Amahitamo Intego"
+
+#: main.c:2389
+#, fuzzy, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr "Porogaramu kugirango"
+
+#: main.c:2391
+#, fuzzy, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr "Porogaramu kugirango"
+
+#: main.c:2394
+#, fuzzy, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "Kuri Ubwoko org"
+
+#: main.c:2466
+#, fuzzy, c-format
+msgid "the `-%c' option requires a non-empty string argument"
+msgstr "i Ihitamo a Umubare Wuzuye"
+
+#: main.c:2518
+#, fuzzy, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "i Ihitamo a Umubare Wuzuye"
+
+#: main.c:2942
+#, fuzzy, c-format
+msgid ""
+"%sThis is free software; see the source for copying conditions.\n"
+"%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
+"%sPARTICULAR PURPOSE.\n"
+msgstr ""
+"%sThisni Kigenga i Inkomoko kugirango ni OYA ATARIIGIHARWE kugirango Cyangwa"
+
+#: main.c:2948
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%sThis program built for %s\n"
+msgstr "Porogaramu kugirango"
+
+#: main.c:2950
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%sThis program built for %s (%s)\n"
+msgstr "Porogaramu kugirango"
+
+#: main.c:2968
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr "#Ibyatanzwe SHINGIRO Byacapwe ku"
+
+#: main.c:2978
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr "#Ibyatanzwe SHINGIRO ku"
+
+#: main.c:3101
+#, fuzzy, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s:Kitazwi bushyinguro"
+
+#: main.c:3103
+#, fuzzy, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s:Kitazwi bushyinguro"
+
+#: main.c:3106
+#, fuzzy, c-format
+msgid "%s: Entering directory `%s'\n"
+msgstr "%s:bushyinguro"
+
+#: main.c:3109
+#, fuzzy, c-format
+msgid "%s: Leaving directory `%s'\n"
+msgstr "%s:bushyinguro"
+
+#: main.c:3114
+#, fuzzy, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]:Kitazwi bushyinguro"
+
+#: main.c:3117
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]:Kitazwi bushyinguro"
+
+#: main.c:3121
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory `%s'\n"
+msgstr "%s[%u]:bushyinguro"
+
+#: main.c:3124
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory `%s'\n"
+msgstr "%s[%u]:bushyinguro"
+
+#: misc.c:285
+#, fuzzy
+msgid ".  Stop.\n"
+msgstr ".Hagarara"
+
+# # @name OTHER
+# # @loc none
+#: misc.c:306
+#, fuzzy, c-format
+msgid "Unknown error %d"
+msgstr "Ikosa itazwi"
+
+#: misc.c:316
+#, c-format
+msgid "%s%s: %s"
+msgstr ""
+
+# desktop/source\app\ssodlg.src:DLG_SSOLOGIN.text
+#: misc.c:324
+#, fuzzy, c-format
+msgid "%s: %s"
+msgstr "%s:%s"
+
+#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#, fuzzy
+msgid "virtual memory exhausted"
+msgstr "Kitaboneka Ububiko"
+
+#: misc.c:646
+#, fuzzy, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s:Ukoresha: Itsinda"
+
+#: misc.c:667
+msgid "Initialized access"
+msgstr ""
+
+#: misc.c:746
+msgid "User access"
+msgstr ""
+
+#: misc.c:794
+msgid "Make access"
+msgstr ""
+
+#: misc.c:828
+msgid "Child access"
+msgstr ""
+
+#: misc.c:892
+#, fuzzy, c-format
+msgid "write error: %s"
+msgstr "Ikosa Kuri"
+
+#: misc.c:894
+#, fuzzy
+msgid "write error"
+msgstr "Kwandika"
+
+#: read.c:160
+msgid "Reading makefiles...\n"
+msgstr ""
+
+#: read.c:315
+#, c-format
+msgid "Reading makefile `%s'"
+msgstr ""
+
+#: read.c:317
+#, fuzzy, c-format
+msgid " (no default goal)"
+msgstr "(Oya Mburabuzi"
+
+#: read.c:319
+#, fuzzy, c-format
+msgid " (search path)"
+msgstr "(Gushaka Inzira"
+
+#: read.c:321
+#, c-format
+msgid " (don't care)"
+msgstr ""
+
+#: read.c:323
+#, fuzzy, c-format
+msgid " (no ~ expansion)"
+msgstr "(Oya"
+
+#: read.c:623
+#, fuzzy
+msgid "invalid syntax in conditional"
+msgstr "Sibyo in"
+
+#: read.c:633
+msgid "extraneous `endef'"
+msgstr ""
+
+#: read.c:645 read.c:673 variable.c:1316
+#, fuzzy
+msgid "empty variable name"
+msgstr "ubusa IMPINDURAGACIRO Izina:"
+
+#: read.c:662
+#, fuzzy
+msgid "empty `override' directive"
+msgstr "ubusa"
+
+#: read.c:687
+#, fuzzy
+msgid "invalid `override' directive"
+msgstr "Sibyo"
+
+#: read.c:854
+#, fuzzy
+msgid "commands commence before first target"
+msgstr "Amabwiriza Mbere Itangira Intego"
+
+#: read.c:905
+#, fuzzy
+msgid "missing rule before commands"
+msgstr "Ibuze Mbere Amabwiriza"
+
+#: read.c:992
+#, fuzzy, c-format
+msgid "missing separator%s"
+msgstr "Ibuze Mutandukanya"
+
+#: read.c:994
+#, fuzzy
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr "(Impuzandengo- Bya 8 Imyanya"
+
+#: read.c:1152
+#, fuzzy
+msgid "missing target pattern"
+msgstr "Ibuze Intego Ishusho"
+
+#: read.c:1154
+#, fuzzy
+msgid "multiple target patterns"
+msgstr "Igikubo Intego"
+
+#: read.c:1158
+#, fuzzy, c-format
+msgid "target pattern contains no `%%'"
+msgstr "Intego Ishusho Kirimo Oya"
+
+#: read.c:1286
+#, fuzzy
+msgid "missing `endif'"
+msgstr "Ibuze"
+
+#: read.c:1377
+#, fuzzy
+msgid "Extraneous text after `endef' directive"
+msgstr "Umwandiko Nyuma"
+
+#: read.c:1411
+#, fuzzy
+msgid "missing `endef', unterminated `define'"
+msgstr "Ibuze"
+
+#: read.c:1454
+#, fuzzy, c-format
+msgid "Extraneous text after `%s' directive"
+msgstr "Umwandiko Nyuma"
+
+#: read.c:1463 read.c:1477
+#, c-format
+msgid "extraneous `%s'"
+msgstr ""
+
+#: read.c:1482
+msgid "only one `else' per conditional"
+msgstr ""
+
+#: read.c:1824
+#, fuzzy
+msgid "Malformed target-specific variable definition"
+msgstr "Intego IMPINDURAGACIRO Insobanuro"
+
+#: read.c:1886
+msgid "prerequisites cannot be defined in command scripts"
+msgstr ""
+
+#: read.c:1921
+#, fuzzy
+msgid "mixed implicit and static pattern rules"
+msgstr "Bivanze Na Ishusho"
+
+#: read.c:1924
+#, fuzzy
+msgid "mixed implicit and normal rules"
+msgstr "Bivanze Na Bisanzwe"
+
+#: read.c:1954
+#, fuzzy, c-format
+msgid "target `%s' doesn't match the target pattern"
+msgstr "Intego BIHUYE i Intego Ishusho"
+
+#: read.c:1973 read.c:2074
+#, fuzzy, c-format
+msgid "target file `%s' has both : and :: entries"
+msgstr "Intego IDOSIYE Byombi Na Ibyinjijwe"
+
+#: read.c:1979
+#, fuzzy, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr "Intego Birenzeho Rimwe in i"
+
+#: read.c:1988
+#, fuzzy, c-format
+msgid "warning: overriding commands for target `%s'"
+msgstr "Iburira Amabwiriza kugirango Intego"
+
+#: read.c:1991
+#, fuzzy, c-format
+msgid "warning: ignoring old commands for target `%s'"
+msgstr "Iburira ki/ bishaje Amabwiriza kugirango Intego"
+
+#: read.c:2575
+#, fuzzy
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "Iburira Inyuguti Bya Umurongo"
+
+#: remake.c:229
+#, fuzzy, c-format
+msgid "Nothing to be done for `%s'."
+msgstr "Kuri Byakozwe kugirango"
+
+#: remake.c:230
+#, fuzzy, c-format
+msgid "`%s' is up to date."
+msgstr "`%s'ni Hejuru Kuri Itariki"
+
+#: remake.c:297
+#, fuzzy, c-format
+msgid "Pruning file `%s'.\n"
+msgstr "IDOSIYE"
+
+#: remake.c:349
+#, fuzzy, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr "%sNoKuri Ubwoko Intego"
+
+#: remake.c:351
+#, fuzzy, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr "%sNoKuri Ubwoko Intego ku"
+
+#: remake.c:378
+#, fuzzy, c-format
+msgid "Considering target file `%s'.\n"
+msgstr "Intego IDOSIYE"
+
+#: remake.c:385
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file `%s'.\n"
+msgstr "Na Byanze Kuri Kuvugurura IDOSIYE"
+
+#: remake.c:400
+#, fuzzy, c-format
+msgid "File `%s' was considered already.\n"
+msgstr "Idosiye"
+
+#: remake.c:410
+#, fuzzy, c-format
+msgid "Still updating file `%s'.\n"
+msgstr "Ivugurura IDOSIYE"
+
+#: remake.c:413
+#, fuzzy, c-format
+msgid "Finished updating file `%s'.\n"
+msgstr "Ivugurura IDOSIYE"
+
+#: remake.c:434
+#, fuzzy, c-format
+msgid "File `%s' does not exist.\n"
+msgstr "Idosiye OYA"
+
+#: remake.c:441
+#, fuzzy, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+msgstr "***IDOSIYE a kirekire Imikemurire Igihe"
+
+#: remake.c:454 remake.c:962
+#, fuzzy, c-format
+msgid "Found an implicit rule for `%s'.\n"
+msgstr "kugirango"
+
+#: remake.c:456 remake.c:964
+#, fuzzy, c-format
+msgid "No implicit rule found for `%s'.\n"
+msgstr "Byabonetse kugirango"
+
+#: remake.c:462 remake.c:970
+#, fuzzy, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Mburabuzi Amabwiriza kugirango"
+
+#: remake.c:484 remake.c:996
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr ""
+
+#: remake.c:601
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
+msgstr "Bya Intego IDOSIYE"
+
+#: remake.c:607
+#, fuzzy, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr "Bya"
+
+#: remake.c:620
+#, fuzzy, c-format
+msgid "Giving up on target file `%s'.\n"
+msgstr "Hejuru ku Intego IDOSIYE"
+
+#: remake.c:625
+#, fuzzy, c-format
+msgid "Target `%s' not remade because of errors."
+msgstr "OYA Bya Amakosa"
+
+#: remake.c:677
+#, fuzzy, c-format
+msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgstr "ni Itondekanya kugirango Intego"
+
+#: remake.c:682
+#, fuzzy, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr "Bya Intego OYA"
+
+#: remake.c:687
+#, fuzzy, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr "ni Intego"
+
+#: remake.c:690
+#, fuzzy, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr "ni Intego"
+
+#: remake.c:708
+#, fuzzy, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgstr "ni MAHARAKUBIRI Na Oya"
+
+#: remake.c:715
+#, fuzzy, c-format
+msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgstr "Amabwiriza kugirango Na Oya Byahinduwe"
+
+#: remake.c:720
+#, fuzzy, c-format
+msgid "Making `%s' due to always-make flag.\n"
+msgstr "Kuri Buri gihe Ubwoko Ibendera"
+
+#: remake.c:728
+#, fuzzy, c-format
+msgid "No need to remake target `%s'"
+msgstr "Kuri Intego"
+
+#: remake.c:730
+#, fuzzy, c-format
+msgid "; using VPATH name `%s'"
+msgstr ";ikoresha Izina:"
+
+#: remake.c:750
+#, fuzzy, c-format
+msgid "Must remake target `%s'.\n"
+msgstr "Intego"
+
+#: remake.c:756
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr "Kwirengagiza Izina:"
+
+#: remake.c:765
+#, fuzzy, c-format
+msgid "Commands of `%s' are being run.\n"
+msgstr "Bya Gukoresha"
+
+#: remake.c:772
+#, fuzzy, c-format
+msgid "Failed to remake target file `%s'.\n"
+msgstr "Kuri Intego IDOSIYE"
+
+#: remake.c:775
+#, fuzzy, c-format
+msgid "Successfully remade target file `%s'.\n"
+msgstr "Intego IDOSIYE"
+
+#: remake.c:778
+#, fuzzy, c-format
+msgid "Target file `%s' needs remade under -q.\n"
+msgstr "IDOSIYE Q"
+
+#: remake.c:1306
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time in the future"
+msgstr "Idosiye Igihe in i"
+
+#: remake.c:1313
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgstr "Idosiye Igihe S in i"
+
+#: remake.c:1511
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr ""
+".Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: remote-cstms.c:125
+#, fuzzy, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Kohereza"
+
+#: rule.c:548
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+
+#: rule.c:563
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+
+#: rule.c:566
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+
+#: rule.c:575
+msgid " terminal."
+msgstr ""
+
+#: rule.c:583
+#, c-format
+msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgstr ""
+
+#: signame.c:85
+#, fuzzy
+msgid "unknown signal"
+msgstr "Kitazwi"
+
+#: signame.c:93
+msgid "Hangup"
+msgstr ""
+
+#: signame.c:96
+msgid "Interrupt"
+msgstr "Hagarikira aho"
+
+#: signame.c:99
+msgid "Quit"
+msgstr "Kuvamo"
+
+#: signame.c:102
+msgid "Illegal Instruction"
+msgstr ""
+
+#: signame.c:105
+#, fuzzy
+msgid "Trace/breakpoint trap"
+msgstr "Aho bahagarara"
+
+#: signame.c:110
+msgid "Aborted"
+msgstr ""
+
+#: signame.c:113
+msgid "IOT trap"
+msgstr ""
+
+#: signame.c:116
+msgid "EMT trap"
+msgstr ""
+
+#: signame.c:119
+#, fuzzy
+msgid "Floating point exception"
+msgstr "Akadomo Irengayobora(-)"
+
+#: signame.c:122
+msgid "Killed"
+msgstr ""
+
+#: signame.c:125
+#, fuzzy
+msgid "Bus error"
+msgstr "Ikosa"
+
+#: signame.c:128
+msgid "Segmentation fault"
+msgstr ""
+
+#: signame.c:131
+#, fuzzy
+msgid "Bad system call"
+msgstr "Sisitemu"
+
+#: signame.c:134
+msgid "Broken pipe"
+msgstr ""
+
+#: signame.c:137
+msgid "Alarm clock"
+msgstr ""
+
+#: signame.c:140
+msgid "Terminated"
+msgstr ""
+
+#: signame.c:143
+#, fuzzy
+msgid "User defined signal 1"
+msgstr "1."
+
+#: signame.c:146
+#, fuzzy
+msgid "User defined signal 2"
+msgstr "2."
+
+#: signame.c:151 signame.c:154
+msgid "Child exited"
+msgstr ""
+
+#: signame.c:157
+msgid "Power failure"
+msgstr ""
+
+#: signame.c:160
+msgid "Stopped"
+msgstr "Kyahagariswe"
+
+#: signame.c:163
+#, fuzzy
+msgid "Stopped (tty input)"
+msgstr "Iyinjiza"
+
+#: signame.c:166
+#, fuzzy
+msgid "Stopped (tty output)"
+msgstr "Ibisohoka"
+
+#: signame.c:169
+msgid "Stopped (signal)"
+msgstr ""
+
+#: signame.c:172
+#, fuzzy
+msgid "CPU time limit exceeded"
+msgstr "Igihe"
+
+#: signame.c:175
+#, fuzzy
+msgid "File size limit exceeded"
+msgstr "Idosiye Ingano"
+
+#: signame.c:178
+#, fuzzy
+msgid "Virtual timer expired"
+msgstr "Byarengeje igihe"
+
+#: signame.c:181
+#, fuzzy
+msgid "Profiling timer expired"
+msgstr "Byarengeje igihe"
+
+#: signame.c:187
+#, fuzzy
+msgid "Window changed"
+msgstr "Byahinduwe"
+
+#: signame.c:190
+msgid "Continued"
+msgstr ""
+
+#: signame.c:193
+#, fuzzy
+msgid "Urgent I/O condition"
+msgstr "Ibisabwa"
+
+#: signame.c:200 signame.c:209
+msgid "I/O possible"
+msgstr ""
+
+#: signame.c:203
+msgid "SIGWIND"
+msgstr ""
+
+#: signame.c:206
+msgid "SIGPHONE"
+msgstr ""
+
+#: signame.c:212
+msgid "Resource lost"
+msgstr ""
+
+#: signame.c:215
+msgid "Danger signal"
+msgstr ""
+
+#: signame.c:218
+#, fuzzy
+msgid "Information request"
+msgstr "Kubaza..."
+
+#: signame.c:221
+#, fuzzy
+msgid "Floating point co-processor not available"
+msgstr "Akadomo OYA Bihari"
+
+#: strcache.c:210
+#, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d\n"
+msgstr ""
+
+#: strcache.c:211
+#, c-format
+msgid "%s # of strcache buffers: %d\n"
+msgstr ""
+
+#: strcache.c:212
+#, c-format
+msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:214
+#, c-format
+msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+# Lock column values
+#: variable.c:1369
+msgid "default"
+msgstr "mburabuzi"
+
+#: variable.c:1372
+msgid "environment"
+msgstr ""
+
+#: variable.c:1375
+msgid "makefile"
+msgstr ""
+
+#: variable.c:1378
+#, fuzzy
+msgid "environment under -e"
+msgstr "E"
+
+#: variable.c:1381
+#, fuzzy
+msgid "command line"
+msgstr "Komandi: Umurongo"
+
+#: variable.c:1384
+msgid "`override' directive"
+msgstr ""
+
+#: variable.c:1387
+msgid "automatic"
+msgstr "Byikoresha"
+
+#: variable.c:1396
+#, fuzzy, c-format
+msgid " (from `%s', line %lu)"
+msgstr "(Bivuye Umurongo"
+
+#: variable.c:1438
+#, fuzzy
+msgid "# variable set hash-table stats:\n"
+msgstr "#IMPINDURAGACIRO Gushyiraho imbonerahamwe# stats"
+
+#: variable.c:1449
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+
+#: variable.c:1453
+#, fuzzy
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr "#IMPINDURAGACIRO Uduciro"
+
+#: variable.c:1467
+#, fuzzy
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr "#Ishusho IMPINDURAGACIRO Uduciro"
+
+#: variable.c:1469
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr "#%uIshusho IMPINDURAGACIRO Uduciro"
+
+#: variable.h:189
+#, c-format
+msgid "warning: undefined variable `%.*s'"
+msgstr ""
+
+#: vmsfunctions.c:94
+#, fuzzy, c-format
+msgid "sys$search failed with %d\n"
+msgstr "sys Gushaka Byanze Na:"
+
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr ""
+
+#: vmsjobs.c:175
+#, fuzzy, c-format
+msgid "internal error: `%s' command_state"
+msgstr "By'imbere Ikosa"
+
+#: vmsjobs.c:268
+#, fuzzy, c-format
+msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+msgstr "-Iburira"
+
+#: vmsjobs.c:284
+#, fuzzy, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr "-Iburira Gicurasi Kuri Gushoboza Bivuye"
+
+#: vmsjobs.c:407
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr ""
+
+#: vmsjobs.c:418
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr ""
+
+#: vmsjobs.c:436
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr ""
+
+#: vmsjobs.c:457
+#, fuzzy, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "Komandi:"
+
+#: vmsjobs.c:479
+#, fuzzy, c-format
+msgid "Error, empty command\n"
+msgstr "ubusa"
+
+#: vmsjobs.c:491
+#, fuzzy, c-format
+msgid "Redirected input from %s\n"
+msgstr "Iyinjiza Bivuye"
+
+#: vmsjobs.c:498
+#, fuzzy, c-format
+msgid "Redirected error to %s\n"
+msgstr "Ikosa Kuri"
+
+#: vmsjobs.c:505
+#, fuzzy, c-format
+msgid "Redirected output to %s\n"
+msgstr "Ibisohoka Kuri"
+
+#: vmsjobs.c:568
+#, c-format
+msgid "Executing %s instead\n"
+msgstr ""
+
+#: vmsjobs.c:668
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr ""
+
+#: vpath.c:571
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+
+#: vpath.c:588
+#, fuzzy
+msgid "# No `vpath' search paths."
+msgstr "#Gushaka Inzira"
+
+#: vpath.c:590
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# %u `vpath' search paths.\n"
+msgstr "#%u`Gushaka Inzira"
+
+#: vpath.c:593
+#, fuzzy
+msgid ""
+"\n"
+"# No general (`VPATH' variable) search path."
+msgstr "#Rusange IMPINDURAGACIRO Gushaka Inzira"
+
+#: vpath.c:599
+#, fuzzy
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr "#IMPINDURAGACIRO Gushaka Inzira"
+
+#, fuzzy
+#~ msgid "Syntax error, still inside '\"'\n"
+#~ msgstr "Ikosa Mo Imbere"
+
+#, fuzzy
+#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
+#~ msgstr "a"
+
+#, fuzzy
+#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
+#~ msgstr "OYA j Cyangwa NIBA exe ni OYA Bihari"
+
+#, fuzzy
+#~ msgid "Resetting make for single job mode."
+#~ msgstr "Ubwoko kugirango UMWE Ubwoko"
+
+#, fuzzy
+#~ msgid "no file name for `%sinclude'"
+#~ msgstr "Oya IDOSIYE Izina: kugirango"
+
+#, fuzzy
+#~ msgid "target `%s' leaves prerequisite pattern empty"
+#~ msgstr "Intego Ibibabi Ishusho ubusa"
Index: trunk/src/gmake/po/vi.po
===================================================================
--- trunk/src/gmake/po/vi.po	(revision 503)
+++ trunk/src/gmake/po/vi.po	(revision 503)
@@ -0,0 +1,2051 @@
+# Vietnamese translation for Make.
+# Copyright Â© 2006 Free Software Foundation, Inc.
+# Clytie Siddall <clytie@riverland.net.au>, 2006.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: make-3.81-b3\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"PO-Revision-Date: 2006-02-05 19:19+1030\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: LocFactoryEditor 1.6b36\n"
+
+#: ar.c:53
+#, c-format
+msgid "attempt to use unsupported feature: `%s'"
+msgstr "ÄÃ£ cá» sá»­ dá»¥ng tÃ­nh nÄng khÃŽng ÄÆ°á»£c há» trá»£ Â« %s Â»"
+
+#: ar.c:137
+msgid "touch archive member is not available on VMS"
+msgstr "bá» pháº¡n kho touch chÆ°a sáºµn sÃ ng trÃªn VMS"
+
+#: ar.c:168
+#, c-format
+msgid "touch: Archive `%s' does not exist"
+msgstr "touch: kho Â« %s Â» khÃŽng tá»n táº¡i"
+
+#: ar.c:171
+#, c-format
+msgid "touch: `%s' is not a valid archive"
+msgstr "touch: Â« %s Â» khÃŽng pháº£i lÃ  má»t kho há»£p lá»"
+
+#: ar.c:178
+#, c-format
+msgid "touch: Member `%s' does not exist in `%s'"
+msgstr "touch: bá» pháº¡n Â« %s Â» khÃŽng tá»n táº¡i trong Â« %s Â»"
+
+#: ar.c:185
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgstr "touch: má»i nháº­n mÃ£ tráº£ láº¡i sai tá»« Â« ar_member_touch Â» trÃªn Â« %s Â»"
+
+#: arscan.c:69
+#, c-format
+msgid "lbr$set_module failed to extract module info, status = %d"
+msgstr "Â« lbr$set_module Â» ÄÃ£ khÃŽng rÃºt ÄÆ°á»£c thÃŽng tin mÃŽ-Äun, tráº¡ng thÃ¡i = %d"
+
+#: arscan.c:154
+#, c-format
+msgid "lbr$ini_control failed with status = %d"
+msgstr "Â« lbr$ini_control Â» bá» lá»i vá»i tráº¡ng thÃ¡i = %d"
+
+#: arscan.c:165
+#, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr "khÃŽng thá» má» thÆ° viÃªn Â« %s Â» Äá» tra tÃ¬m bá» pháº¡n Â« %s Â»"
+
+#: arscan.c:825
+#, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Bá» pháº¡n Â« %s Â»%s: %ld byte vá»i %ld (%ld).\n"
+
+#: arscan.c:826
+msgid " (name might be truncated)"
+msgstr "(cÃ³ láºœ tÃªn bá» cá»¥t)"
+
+#: arscan.c:828
+#, c-format
+msgid "  Date %s"
+msgstr "  NgÃ y %s"
+
+#: arscan.c:829
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr "  uid = %d, gid = %d, cháº¿ Äá» = 0%o.\n"
+
+#: commands.c:422
+msgid "*** Break.\n"
+msgstr "*** Ngáº¯t\n"
+
+#: commands.c:545
+#, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr "*** [%s] CÃ³ láºœ bá» pháº¡n Â« %s Â» lÃ  giáº£; chÆ°a bá» xÃ³a bá»"
+
+#: commands.c:548
+#, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr "*** CÃ³ láºœ bá» pháº¡n Â« %s Â» lÃ  giáº£; chÆ°a bá» xÃ³a bá»"
+
+#: commands.c:561
+#, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "*** [%s] Äang xÃ³a bá» táº­p tin Â« %s Â»..."
+
+#: commands.c:563
+#, c-format
+msgid "*** Deleting file `%s'"
+msgstr "*** Äang xÃ³a bá» táº­p tin Â« %s Â»..."
+
+#: commands.c:599
+msgid "#  commands to execute"
+msgstr "# cÃ¡c lá»nh cáº§n thi hÃ nh"
+
+#: commands.c:602
+msgid " (built-in):"
+msgstr " (sáºµn cÃ³):"
+
+#: commands.c:604
+#, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr " (tá»« Â« %s Â», dÃ²ng %lu):\n"
+
+#: dir.c:983
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# ThÆ° má»¥c\n"
+
+#: dir.c:995
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: khÃŽng thá» láº¥y cÃ¡c thÃŽng tin vá» nÃ³.\n"
+
+#: dir.c:999
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (khÃ³a %s, giá»_m %d): khÃŽng thá» ÄÆ°á»£c má».\n"
+
+#: dir.c:1003
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (thiáº¿t bá» %d, nÃºt thÃŽng tin [%d,%d,%d]): khÃŽng thá» ÄÆ°á»£c má».\n"
+
+#: dir.c:1008
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (thiáº¿t bá» %ld, nÃºt thÃŽng tin %ld): khÃŽng thá» ÄÆ°á»£c má».\n"
+
+#: dir.c:1035
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "# %s (khÃ³a %s, giá»_m %d): "
+
+#: dir.c:1039
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (thiáº¿t bá» %d, nÃºt thÃŽng tin [%d,%d,%d]): "
+
+#: dir.c:1044
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (thiáº¿t bá» %ld, nÃºt thÃŽng tin %ld): "
+
+#: dir.c:1050 dir.c:1071
+msgid "No"
+msgstr "KhÃŽng"
+
+#: dir.c:1053 dir.c:1074
+msgid " files, "
+msgstr " táº­p tin, "
+
+#: dir.c:1055 dir.c:1076
+msgid "no"
+msgstr "khÃŽng"
+
+#: dir.c:1058
+msgid " impossibilities"
+msgstr " Äiá»u khÃŽng thá»"
+
+#: dir.c:1062
+msgid " so far."
+msgstr " cho Äáº¿n ÄÃ¢y."
+
+#: dir.c:1079
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " Äiá»u khÃŽng thá» trong %lu thÆ° má»¥c.\n"
+
+#: expand.c:128
+#, c-format
+msgid "Recursive variable `%s' references itself (eventually)"
+msgstr "Biáº¿n Äá» qui Â« %s Â» tham chiáº¿u chÃ­nh nÃ³ (cuá»i cÃ¹ng)"
+
+#: expand.c:266
+msgid "unterminated variable reference"
+msgstr "tham chiáº¿u biáº¿n chÆ°a cÃ³ káº¿t thÃºc"
+
+#: file.c:270
+#, c-format
+msgid "Commands were specified for file `%s' at %s:%lu,"
+msgstr "CÃ¡c lá»nh ÄÆ°á»£c ghi rÃµ cho táº­p tin Â« %s Â» vÃ o %s:%lu,"
+
+#: file.c:275
+#, c-format
+msgid "Commands for file `%s' were found by implicit rule search,"
+msgstr ""
+"CÃ¡c lá»nh cho táº­p tin Â« %s Â» ÄÃ£ ÄÆ°á»£c tÃ¬m báº±ng viá»c tÃ¬m kiáº¿m quy táº¯c ngáº§m,"
+
+#: file.c:278
+#, c-format
+msgid "but `%s' is now considered the same file as `%s'."
+msgstr "nhÆ°ng Â« %s Â» hiá»n thá»i ÄÆ°á»£c xem lÃ  cÃ¹ng má»t táº­p tin vá»i Â« %s Â»."
+
+#: file.c:281
+#, c-format
+msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgstr "CÃ¡c lá»nh cho Â« %s Â» sáºœ bá» bá» qua Äá» á»§ng há» cÃ¡c Äiá»u cho Â« %s Â»."
+
+#: file.c:301
+#, c-format
+msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgstr ""
+"khÃŽng thá» thay Äá»i tÃªn dáº¥u hai cháº¥m ÄÆ¡n Â« %s Â» thÃ nh dáº¥u hai cháº¥m ÄÃŽi Â« %s Â»"
+
+#: file.c:306
+#, c-format
+msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgstr ""
+"khÃŽng thá» thay Äá»i tÃªn dáº¥u hai cháº¥m ÄÃŽi Â« %s Â» thÃ nh dáº¥u hai cháº¥m ÄÆ¡n Â« %s Â»"
+
+#: file.c:381
+#, c-format
+msgid "*** Deleting intermediate file `%s'"
+msgstr "*** Äang xÃ³a bá» táº­p tin trung cáº¥p Â« %s Â»..."
+
+#: file.c:385
+msgid "Removing intermediate files...\n"
+msgstr "Äang gá»¡ bá» cÃ¡c táº­p tin trung cáº¥p...\n"
+
+#: file.c:781
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: NhÃ£n thá»i gian á» ngoáº¡i pháº¡m vá» nÃªn thay tháº¿ %s"
+
+#: file.c:782
+msgid "Current time"
+msgstr "Giá» hiá»n thá»i"
+
+#: file.c:881
+msgid "# Not a target:"
+msgstr "# KhÃŽng pháº£i lÃ  ÄÄ©ch:"
+
+#: file.c:903
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "# Táº­p tin qÃºy (Äiá»u kiá»n tiÃªn quyáº¿t cá»§a .PRECIOUS)."
+
+#: file.c:905
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "# ÄÃ­ch giáº£ (Äiá»u kiá»n tiÃªn quyáº¿t cá»§a .PHONY)."
+
+#: file.c:907
+msgid "#  Command-line target."
+msgstr "# ÄÃ­ch dÃ²ng lá»nh."
+
+#: file.c:909
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr ""
+"#  Táº­p tin táº¡o (makefile) máº·c Äá»nh, kiá»u MAKEFILES, hay kiá»u Â« -include/"
+"sinclude Â»."
+
+#: file.c:911
+msgid "#  Implicit rule search has been done."
+msgstr "# Má»i tÃ¬m kiáº¿m kiá»u quy táº¯c ngáº§m."
+
+#: file.c:912
+msgid "#  Implicit rule search has not been done."
+msgstr "# ChÆ°a tÃ¬m kiáº¿m kiá»u quy táº¯c ngáº§m."
+
+#: file.c:914
+#, c-format
+msgid "#  Implicit/static pattern stem: `%s'\n"
+msgstr "# Cuá»ng máº«u ngáº§m/tÄ©nh: Â« %s Â»\n"
+
+#: file.c:916
+msgid "#  File is an intermediate prerequisite."
+msgstr "# Táº­p tin lÃ  Äiá»u kiá»n tiÃªn quyáº¿t trung cáº¥p."
+
+#: file.c:919
+msgid "#  Also makes:"
+msgstr "# CÅ©ng táº¡o :"
+
+#: file.c:925
+msgid "#  Modification time never checked."
+msgstr "# ChÆ°a bao giá» kiá»m tra giá» sá»­a Äá»i."
+
+#: file.c:927
+msgid "#  File does not exist."
+msgstr "# Táº­p tin khÃŽng tá»n táº¡i."
+
+#: file.c:929
+msgid "#  File is very old."
+msgstr "# Táº­p tin ráº¥t cÅ©."
+
+#: file.c:934
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "# Sá»­a Äá»i cuá»i cÃ¹ng %s\n"
+
+#: file.c:937
+msgid "#  File has been updated."
+msgstr "# Táº­p tin ÄÃ£ ÄÆ°á»£c cáº­p nháº­t."
+
+#: file.c:937
+msgid "#  File has not been updated."
+msgstr "# Táº­p tin chÆ°a ÄÆ°á»£c cáº­p nháº­t."
+
+#: file.c:941
+msgid "#  Commands currently running (THIS IS A BUG)."
+msgstr "# CÃ¡c lá»nh Äang cháº¡y (ÄÃY LÃ Lá»I)."
+
+#: file.c:944
+msgid "#  Dependencies commands running (THIS IS A BUG)."
+msgstr "# CÃ¡c lá»nh phá»¥ thuá»c Äang cháº¡y (ÄÃY LÃ Lá»I)."
+
+#: file.c:953
+msgid "#  Successfully updated."
+msgstr "# ÄÃ£ ÄÆ°á»£c cáº­p nháº­t."
+
+#: file.c:957
+msgid "#  Needs to be updated (-q is set)."
+msgstr "# Cáº§n thiáº¿t cáº­p nháº­t (Â« -q Â» ÄÃ£ láº­p)."
+
+#: file.c:960
+msgid "#  Failed to be updated."
+msgstr "# Viá»c cáº­p nháº­t bá» lá»i."
+
+#: file.c:963
+msgid "#  Invalid value in `update_status' member!"
+msgstr ""
+"#  GiÃ¡ trá» khÃŽng há»£p lá» trong bá» pháº¡n Â« update_status Â» (tráº¡ng thÃ¡i cáº­p "
+"nháº­t)!"
+
+#: file.c:970
+msgid "#  Invalid value in `command_state' member!"
+msgstr ""
+"#  GiÃ¡ trá» khÃŽng há»£p lá» trong bá» pháº¡n Â« command_state Â» (tÃ­nh tráº¡ng lá»nh)!"
+
+#: file.c:989
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Táº­p tin"
+
+#: file.c:993
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# thá»ng kÃª báº£ng bÄm cÃ¡c táº­p tin:\n"
+"# "
+
+#: function.c:759
+msgid "non-numeric first argument to `word' function"
+msgstr "Äá»i sá» thá»© nháº¥t khÃŽng dáº¡ng sá» Äá»i vá»i hÃ m Â« word Â» (tá»«)"
+
+#: function.c:764
+msgid "first argument to `word' function must be greater than 0"
+msgstr "Äá»i sá» thá»© nháº¥t Äá»i vá»i hÃ m Â« word Â» (tá»«) pháº£i lÃ  lá»n hÆ¡n 0"
+
+#: function.c:785
+msgid "non-numeric first argument to `wordlist' function"
+msgstr "Äá»i sá» thá»© nháº¥t khÃŽng dáº¡ng sá» Äá»i vá»i hÃ m Â« wordlist Â» (danh sÃ¡ch tá»«)"
+
+#: function.c:787
+msgid "non-numeric second argument to `wordlist' function"
+msgstr "Äá»i sá» thá»© hai khÃŽng dáº¡ng sá» Äá»i vá»i hÃ m Â« wordlist Â» (danh sÃ¡ch tá»«)"
+
+#: function.c:1453
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr ""
+"Viá»c Â« create_child_process: DuplicateHandle(In) Â» (táº¡o tiáº¿n trÃ¬nh con: bá» "
+"quáº£n lÃœ trÃ¹ng) bá» lá»i (e=%d)\n"
+
+#: function.c:1464
+#, fuzzy, c-format
+msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr ""
+"Viá»c Â« create_child_process: DuplicateHandle(Err) Â» (táº¡o tiáº¿n trÃ¬nh con: bá» "
+"quáº£n lÃœ trÃ¹ng(lá»i)) bá» lá»i (e=%d)\n"
+
+#: function.c:1469
+#, fuzzy, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "Viá»c Â« CreatePipe() Â» (táº¡o á»ng dáº«n) bá» lá»i (e=%d)\n"
+
+#: function.c:1474
+msgid "windows32_openpipe (): process_init_fd() failed\n"
+msgstr ""
+"Viá»c Â« windows32_openpipe (): process_init_fd() Â» (má» á»ng dáº«n windows32: "
+"tiáº¿n trÃ¬nh sá» khá»i fd) bá» lá»i\n"
+
+#: function.c:1725
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Äang lÃ m sáº¡ch táº­p tin bÃ³ táº¡m thá»i %s...\n"
+
+#: function.c:2101
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr "KhÃŽng cÃ³ Äá»§ Äá»i sá» (%d) Äá»i vá»i hÃ m Â« %s Â»"
+
+#: function.c:2113
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr "ChÆ°a ÄÆ°á»£c thá»±c hiá»n trÃªn ná»n táº£ng nÃ y: hÃ m Â« %s Â»"
+
+#: function.c:2163
+#, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr "cuá»c gá»i chÆ°a ÄÆ°á»£c káº¿t thÃºc cho hÃ m Â« %s Â»: thiáº¿u Â« %c Â»"
+
+#: getopt.c:663
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: tÃ¹y chá»n Â« %s Â» lÃ  mÆ¡ há»\n"
+
+#: getopt.c:687
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: tÃ¹y chá»n Â« --%s Â» khÃŽng cho phÃ©p Äá»i sá»\n"
+
+#: getopt.c:692
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: tÃ¹y chá»n Â« %c%s Â» khÃŽng cho phÃ©p Äá»i sá»\n"
+
+#: getopt.c:709 getopt.c:882
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: tÃ¹y chá»n Â« %s Â» cáº§n Äáº¿n Äá»i sá»\n"
+
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: khÃŽng nháº­n ra tÃ¹y chá»n Â« --%s Â»\n"
+
+#: getopt.c:742
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: khÃŽng nháº­n ra tÃ¹y chá»n Â« %c%s Â»\n"
+
+#: getopt.c:768
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: khÃŽng cho phÃ©p tÃ¹y chá»n Â« -- %c Â»\n"
+
+#: getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: tÃ¹y chá»n khÃŽng há»£p lá» Â« -- %c Â»\n"
+
+#: getopt.c:801 getopt.c:931
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: tÃ¹y chá»n cáº§n Äáº¿n Äá»i sá» Â« -- %c Â»\n"
+
+#: getopt.c:848
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: tÃ¹y chá»n Â« -W %s Â» lÃ  mÆ¡ há»\n"
+
+#: getopt.c:866
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: tÃ¹y chá»n Â« -W %s Â» khÃŽng cho phÃ©p Äá»i sá»\n"
+
+#: hash.c:51
+#, c-format
+msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgstr "khÃŽng thá» cáº¥p phÃ¡t %ld byte cho báº£ng bÄm: háº¿t bá» nhá» hoÃ n toÃ n"
+
+#: hash.c:282
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr "Trá»ng táº£i=%ld/%ld=%.0f%%, "
+
+#: hash.c:284
+#, c-format
+msgid "Rehash=%d, "
+msgstr "BÄm láº¡i=%d, "
+
+#: hash.c:285
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr "Xung Äá»t=%ld/%ld=%.0f%%"
+
+#: implicit.c:41
+#, c-format
+msgid "Looking for an implicit rule for `%s'.\n"
+msgstr "Äang tÃ¬m quy táº¯c nguáº§m cho Â« %s Â».\n"
+
+#: implicit.c:57
+#, c-format
+msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgstr "Äang tÃ¬m quy táº¯c ngáº§m vá» bá» pháº¡n kho cho Â« %s Â».\n"
+
+#: implicit.c:319
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Äang trÃ¡nh sá»± Äá» qui quy táº¯c ngáº§m.\n"
+
+#: implicit.c:476
+#, c-format
+msgid "Trying pattern rule with stem `%.*s'.\n"
+msgstr "Äang thá»­ quy táº¯c máº«u vá»i cuá»ng Â« %.*s Â».\n"
+
+#: implicit.c:667
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Äang tá»« chá»i Äiá»u kiá»n tiÃªn quyáº¿t ngáº§m khÃŽng thá» Â« %s Â».\n"
+
+#: implicit.c:668
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr "Äang tá»« chá»i Äiá»u kiá»n tiÃªn quyáº¿t khÃŽng thá» Â« %s Â».\n"
+
+#: implicit.c:678
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Äang thá»­ Äiá»u kiá»n tiÃªn quyáº¿t ngáº§m Â« %s Â».\n"
+
+#: implicit.c:679
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr "Äang thá»­ Äiá»u kiá»n tiÃªn quyáº¿t quy táº¯c Â« %s Â».\n"
+
+#: implicit.c:710
+#, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr "Má»i tÃ¬m Äiá»u kiá»n tiÃªn quyáº¿t Â« %s Â» dáº¡ng VPATH Â« %s Â»\n"
+
+#: implicit.c:730
+#, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr "Äang tÃ¬m quy táº¯c vá»i táº­p tin trung cáº¥p Â« %s Â».\n"
+
+#: job.c:321
+msgid "Cannot create a temporary file\n"
+msgstr "KhÃŽng thá» táº¡o tÃªn táº­p tin táº¡m thá»i\n"
+
+#: job.c:388
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr "*** [%s] Lá»i 0x%x (bá» bá» qua)"
+
+#: job.c:389
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr "*** [%s] Lá»i 0x%x"
+
+#: job.c:393
+#, c-format
+msgid "[%s] Error %d (ignored)"
+msgstr "[%s] Lá»i %d (bá» bá» qua)"
+
+#: job.c:394
+#, c-format
+msgid "*** [%s] Error %d"
+msgstr "*** [%s] Lá»i %d"
+
+#: job.c:399
+msgid " (core dumped)"
+msgstr " (lÃµi bá» Äá»)"
+
+#: job.c:488
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Äang Äá»£i cÃ¡c viá»c chÆ°a xong..."
+
+#: job.c:518
+#, c-format
+msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgstr "Äiá»u con Äá»ng 0x%08lx (%s) PID %ld %s\n"
+
+#: job.c:520 job.c:701 job.c:804 job.c:1457
+msgid " (remote)"
+msgstr " (tá»« xa)"
+
+#: job.c:698
+#, c-format
+msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgstr "Äang báº¯t Äiá»u con thua 0x%08lx PID %ld %s\n"
+
+#: job.c:699
+#, c-format
+msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgstr "Äang báº¯t Äiá»u con tháº¯ng 0x%08lx PID %ld %s\n"
+
+#: job.c:704
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Äang lÃ m sáº¡ch táº­p tin bÃ³ táº¡m thá»i: %s\n"
+
+#: job.c:802
+#, c-format
+msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgstr "Äang gá»¡ bá» Äiá»u con 0x%08lx PID %ld%s ra dÃ¢y.\n"
+
+#: job.c:862
+msgid "write jobserver"
+msgstr "ghi trÃ¬nh phá»¥c vá»¥ cÃŽng viá»c"
+
+#: job.c:864
+#, c-format
+msgid "Released token for child 0x%08lx (%s).\n"
+msgstr "Má»i nháº£ hiá»u bÃ i cho Äiá»u con 0x%08lx (%s).\n"
+
+#: job.c:1383
+#, fuzzy, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr ""
+"Viá»c Â« process_easy() Â» (tiáº¿n trÃ¬nh dá»
+) bá» lá»i khi cá» khá»i cháº¡y tiáº¿n trÃ¬nh "
+"(e=%d)\n"
+
+#: job.c:1387 job.c:2020
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"ÄÃ£ Äáº¿m %d Äá»i sá» trong viá»c khá»i cháº¡y bá» lá»i\n"
+
+#: job.c:1455
+#, c-format
+msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgstr "Äang Äá» Äiá»u con 0x%08lx (%s) PID %ld%s trÃªn dÃ¢y.\n"
+
+#: job.c:1709
+#, c-format
+msgid "Obtained token for child 0x%08lx (%s).\n"
+msgstr "ÄÃ£ láº¥y hiá»u bÃ i cho Äiá»u con 0x%08lx (%s).\n"
+
+#: job.c:1718
+msgid "read jobs pipe"
+msgstr "Äá»c á»ng dáº«n cá»§a cÃ¡c cá»ng viá»c"
+
+#: job.c:1832
+msgid "cannot enforce load limits on this operating system"
+msgstr "khÃŽng thá» buá»c háº¡n cháº¿ trá»ng táº£i vá»i há» Äiá»u hÃ nh nÃ y"
+
+#: job.c:1834
+msgid "cannot enforce load limit: "
+msgstr "khÃŽng thá» buá»c háº¡n cháº¿ trá»ng táº£i: "
+
+#: job.c:1907
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr ""
+"khÃŽng cÃ³ bá» quáº£n lÃœ táº­p tin ná»¯a: khÃŽng thá» nhÃ¢n báº£n thiáº¿t bá» nháº­p chuáº©n\n"
+
+#: job.c:1909
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr ""
+"khÃŽng cÃ³ bá» quáº£n lÃœ táº­p tin ná»¯a: khÃŽng thá» nhÃ¢n báº£n thiáº¿t bá» xuáº¥t chuáº©n\n"
+
+#: job.c:1937
+msgid "Could not restore stdin\n"
+msgstr "KhÃŽng thá» phá»¥c há»i thiáº¿t bá» nháº­p chuáº©n\n"
+
+#: job.c:1945
+msgid "Could not restore stdout\n"
+msgstr "KhÃŽng thá» phá»¥c há»i thiáº¿t bá» xuáº¥t chuáº©n\n"
+
+#: job.c:2016
+#, fuzzy, c-format
+msgid "process_easy() failed failed to launch process (e=%ld)\n"
+msgstr ""
+"Viá»c Â« process_easy() Â» (tiáº¿n trÃ¬nh dá»
+) bá» lá»i khi cá» khá»i cháº¡y tiáº¿n trÃ¬nh "
+"(e=%d)\n"
+
+#: job.c:2046
+#, fuzzy, c-format
+msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgstr "láº­p Äiá»u con ÄÃ£ báº¯t lÃ  PID %d, váº«n cÃ²n Äá»£i PID %d\n"
+
+#: job.c:2085
+#, c-format
+msgid "%s: Command not found"
+msgstr "%s: KhÃŽng tÃ¬m tháº¥y lá»nh."
+
+#: job.c:2145
+#, c-format
+msgid "%s: Shell program not found"
+msgstr "%s: KhÃŽng tÃ¬m tháº¥y chÆ°Æ¡ng trÃ¬nh há» vá»"
+
+#: job.c:2154
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: cÃ³ láºœ háº¿t sá»©c chá»©a mÃŽi trÆ°á»ng hoÃ n toÃ n"
+
+#: job.c:2363
+#, c-format
+msgid "$SHELL changed (was `%s', now `%s')\n"
+msgstr "$SHELL ÄÃ£ thay Äá»i (ÄÃ£ Â« %s Â», lÃ  Â« %s Â»)\n"
+
+#: job.c:2789
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Äang táº¡o táº­p tin bÃ³ táº¡m thá»i: %s\n"
+
+#: job.c:2902
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (dÃ²ng %d) Ngá»¯ cáº£nh há» vá» sai (!unixy && !batch_mode_shell)\n"
+
+#: main.c:291
+msgid "Options:\n"
+msgstr "TÃ¹y chá»n:\n"
+
+#: main.c:292
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr "  -b, -m                      Bá» bá» qua Äá» tÆ°Æ¡ng thÃ­ch.\n"
+
+#: main.c:294
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr ""
+"  -B, --always-make           _LuÃŽn luÃŽn táº¡o_ má»i ÄÃ­ch (khÃŽng Äiá»u kiá»n).\n"
+
+#: main.c:296
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr ""
+"  -C THÆ¯_Má»€C, --directory=THÆ¯_Má»€C\n"
+"                              Chuyá»n Äá»i sang thÆ° má»¥c nÃ y, trÆ°á»c háº¿t.\n"
+
+#: main.c:299
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr "  -d                          In ra ráº¥t nhiá»u thÃŽng tin _gá»¡ lá»i_.\n"
+
+#: main.c:301
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr ""
+"  --debug[=Cá»...]             In ra cÃ¡c kiá»u thÃŽng tin _gá»¡ lá»i_ khÃ¡c nhau.\n"
+
+#: main.c:303
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr ""
+"  -e, --environment-overrides\n"
+"                              CÃ¡c biáº¿n _mÃŽi trÆ°á»ng cÃ³ quyá»n cao hÆ¡n_\n"
+"\t\t\t\t\tcÃ¡c táº­p tin táº¡o (makefile).\n"
+
+#: main.c:306
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr ""
+"  -f Táº¬P_TIN, --file=Táº¬P_TIN, --makefile=Táº¬P_TIN\n"
+"                              Äá»c táº­p tin nÃ y dáº¡ng táº­p tin táº¡o (makefile).\n"
+
+#: main.c:309
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr "  -h, --help                  Hiá»n thá» _trá»£ giÃºp_ nÃ y rá»i thoÃ¡t.\n"
+
+#: main.c:311
+msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+msgstr "  -i, --ignore-errors         _Bá» qua cÃ¡c lá»i_ tá»« cÃ¡c lá»nh.\n"
+
+#: main.c:313
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr ""
+"  -I THÆ¯_Má»€C, --include-dir=THÆ¯_Má»€C\n"
+"                              TÃ¬m kiáº¿m táº­p tin táº¡o (makefile) ÄÃ£ _bao gá»m_\n"
+"\t\t\t\t\ttrong _thÆ° má»¥c_ nÃ y.\n"
+
+#: main.c:316
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+"  -j [N], --jobs[=N]          Cho phÃ©p N (sá») _cÃŽng viá»c_ Äá»ng thá»i;\n"
+"\t\t\t\t\t\tvÃŽ háº¡n khi khÃŽng cÃ³ Äá»i sá»\n"
+
+#: main.c:318
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr ""
+"  -k, --keep-going            _Cá»© lÃ m_ khi khÃŽng thá» táº¡o má»t sá» ÄÃ­ch.\n"
+
+#: main.c:320
+msgid ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                       Äá»«ng khá»i cháº¡y nhiá»u cÃŽng viá»c, trá»« trá»ng táº£i dÆ°á»i N "
+"(sá»).\n"
+
+#: main.c:323
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+"  -L, --check-symlink-times\n"
+"\t\t\tDÃ¹ng giá»_m cuá»i cÃ¹ng giá»¯a liÃªn káº¿t tÆ°á»£ng trÆ°ng vÃ  ÄÃ­ch.\n"
+"\t(_kiá»m tra giá» liÃªn káº¿t tÆ°á»£ng trÆ°ng_)\n"
+
+#: main.c:325
+msgid ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Don't actually run any commands; just print "
+"them.\n"
+msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                             Äá»«ng tháº­t cháº¡y lá»nh nÃ o, chá» in ra háº¿t.\n"
+"\t(_chá» in, cháº¡y thá»±c hÃ nh, sá»± thÄm dÃ²_)\n"
+
+#: main.c:328
+msgid ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+"  -o Táº¬P_TIN, --old-file=Táº¬P_TIN, --assume-old=Táº¬P_TIN\n"
+"                             Xem táº­p tin nÃ y lÃ  ráº¥t cÅ© nÃªn Äá»«ng táº¡o láº¡i nÃ³.\n"
+"\t(_cÅ©, táº­p tin cÅ©, giáº£ sá»­ cÅ©_)\n"
+
+#: main.c:331
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr ""
+"  -p, --print-data-base      _In ra cÆ¡ sá» dá»¯ liá»u_ ná»i bá» cá»§a trÃ¬nh make.\n"
+
+#: main.c:333
+msgid ""
+"  -q, --question              Run no commands; exit status says if up to "
+"date.\n"
+msgstr ""
+"  -q, --question\n"
+"\tÄá»«ng cháº¡y lá»nh nÃ o; tráº¡ng thÃ¡i thoÃ¡t nÃ³i náº¿u hiá»n thá»i hay khÃŽng.\n"
+"\t(_cÃ¢u há»i_)\n"
+
+#: main.c:335
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr ""
+"  -r, --no-builtin-rules      \t\tTáº¯t cÃ¡c quy táº¯c ngáº§m cÃ³ sáºµn.\n"
+"\t(_khÃŽng cÃ³ quy táº¯c cÃ³ sáºµn_)\n"
+
+#: main.c:337
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr ""
+"  -R, --no-builtin-variables  \tTáº¯t cÃ¡c thiáº¿t láº­p biáº¿n cÃ³ sáºµn.\n"
+"\t(_khÃŽng cÃ³ biáº¿n cÃ³ sáºµn_)\n"
+
+#: main.c:339
+msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+msgstr ""
+"  -s, --silent, --quiet       Äá»«ng vá»ng (hiá»n thá») lá»nh.\n"
+"\t(_cÃ¢m, im_)\n"
+
+#: main.c:341
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr ""
+"  -S, --no-keep-going, --stop\t\tTáº¯t Â« -k Â».\n"
+"\t(khÃŽng cá»© lÃ m, dá»«ng)\n"
+
+#: main.c:344
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr ""
+"  -t, --touch                 Touch cÃ¡c ÄÃ­ch thay vÃ o táº¡o láº¡i chÃºng.\n"
+"\t(_sá»_)\n"
+
+#: main.c:346
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr ""
+"  -v, --version               In ra sá» thá»© tá»± _phiÃªn báº£n_ cá»§a trÃ¬nh make, "
+"rá»i thoÃ¡t.\n"
+
+#: main.c:348
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr "  -w, --print-directory       _In ra thÆ° má»¥c_ hiá»n thá»i.\n"
+
+#: main.c:350
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+"  --no-print-directory        Táº¯t Â« -w Â», dÃ¹ khi nÃ³ ÄÆ°á»£c báº­t ngáº§m\n"
+"\t(_khÃŽng in ra thÆ° má»¥c_)\n"
+
+#: main.c:352
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr ""
+"  -W Táº¬P_TIN\n"
+"  --what-if=Táº¬P_TIN\n"
+"  --new-file=Táº¬P_TIN\n"
+"  --assume-new=Táº¬P_TIN\n"
+"                              \t\t\tXem lÃ  táº­p tin nÃ y lÃ  má»i vÃŽ háº¡n.\n"
+"\t(_gÃ¬ náº¿u, táº­p tin má»i, giáº£ sá»­ má»i_)\n"
+
+#: main.c:355
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+"  --warn-undefined-variables\n"
+"\t\t_Cáº£nh bÃ¡o_ khi tham chiáº¿u má»t _biáº¿n chÆ°a ÄÆ°á»£c Äá»nh nghÄ©a_.\n"
+
+#: main.c:549
+msgid "empty string invalid as file name"
+msgstr "chuá»i rá»ng khÃŽng há»£p lá» dáº¡ng tÃªn táº­p tin"
+
+#: main.c:630
+#, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "khÃŽng biáº¿t Äáº·c táº£ cáº¥p gá»¡ lá»i Â« %s Â»"
+
+#: main.c:670
+#, fuzzy, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgstr ""
+"%s: Má»i báº¯t Interrupt/Exception (ngáº¯t/ngoÃ i lá») (mÃ£ = 0x%x, Äá»a chá» = 0x%x)\n"
+
+#: main.c:677
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
+msgstr ""
+"\n"
+"Bá» lá»c ngoÃ i lá» khÃŽng ÄÆ°á»£c quáº£n lÃœ ÄÆ°á»£c gá»i tá»« chÆ°Æ¡ng trÃ¬nh %s\n"
+"ExceptionCode \t\tmÃ£ ngoÃ i lá»\t       %x\n"
+"ExceptionFlags \t\tcÃ¡c cá» ngoÃ i lá»      %x\n"
+"ExceptionAddress \t\tÄá»a chá» ngoÃ i lá»     %x\n"
+
+#: main.c:685
+#, fuzzy, c-format
+msgid "Access violation: write operation at address %lx\n"
+msgstr "Vi pháº¡m truy cáº­p: thao tÃ¡c ghi táº¡i Äá»a chá» %x\n"
+
+#: main.c:686
+#, fuzzy, c-format
+msgid "Access violation: read operation at address %lx\n"
+msgstr "Vi pháº¡m truy cáº­p: thao tÃ¡c Äá»c táº¡i Äá»a chá» %x\n"
+
+#: main.c:762 main.c:773
+#, c-format
+msgid "find_and_set_shell setting default_shell = %s\n"
+msgstr ""
+"Â« find_and_set_shell Â» (tÃ¬m vÃ  láº­p há» vá») Äang láº­p Â« default_shell Â» (há» vá» "
+"máº·c Äá»nh) = %s\n"
+
+#: main.c:814
+#, c-format
+msgid "find_and_set_shell path search set default_shell = %s\n"
+msgstr ""
+"Viá»c tÃ¬m kiáº¿m ÄÆ°á»ng dáº«n Â« find_and_set_shell Â» (tÃ¬m vÃ  láº­p há» vá») Äang láº­p Â« "
+"default_shell Â» (há» vá» máº·c Äá»nh) = %s\n"
+
+#: main.c:1236
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "%s Äang ngÆ°ng ÄÆ°á»£c 30 giÃ¢y..."
+
+#: main.c:1238
+#, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr "ÄÃ£ ngá»§(30). Äang tiáº¿p tá»¥c.\n"
+
+#: main.c:1466
+msgid "Makefile from standard input specified twice."
+msgstr "Táº­p tin táº¡o (makefile) tá»« thiáº¿t bá» nháº­p chuáº©n ÄÃ£ ÄÆ°á»£c ghi rÃµ hai láº§n."
+
+#: main.c:1505 vmsjobs.c:486
+msgid "fopen (temporary file)"
+msgstr ""
+"fopen (táº­p tin táº¡m thá»i)\n"
+"  (_má» táº­p tin_)"
+
+#: main.c:1511
+msgid "fwrite (temporary file)"
+msgstr ""
+"fwrite (táº­p tin táº¡m thá»i)\n"
+"  (_ghi táº­p tin_)"
+
+#: main.c:1640
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "CÃŽng viá»c song song (-j) khÃŽng ÄÆ°á»£c há» trá»£ trÃªn ná»n táº£ng nÃ y."
+
+#: main.c:1641
+msgid "Resetting to single job (-j1) mode."
+msgstr "Äang láº­p láº¡i thÃ nh cháº¿ Äá» cÃŽng viá»c ÄÆ¡n (-j1)."
+
+#: main.c:1656
+msgid "internal error: multiple --jobserver-fds options"
+msgstr ""
+"lá»i ná»i bá»: cÃ³ nhiá»u tÃ¹y chá»n Â« --jobserver-fds Â» (trÃ¬nh phá»¥c vá»¥ cÃŽng viá»c -"
+"fds)."
+
+#: main.c:1664
+#, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr ""
+"lá»i ná»i bá»: gáº·p chuá»i Â« --jobserver-fds Â» (trÃ¬nh phá»¥c vá»¥ cÃŽng viá»c -fds) "
+"khÃŽng há»£p lá» Â« %s Â»."
+
+#: main.c:1674
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr ""
+"cáº£nh bÃ¡o : Â« -jN Â» bá» buá»c trong tiáº¿n trÃ¬nh submake: nÃªn táº¯t cháº¿ Äá» trÃ¬nh "
+"phá»¥c vá»¥ cÃŽng viá»c (jobserver)."
+
+#: main.c:1684
+msgid "dup jobserver"
+msgstr "dup jobserver (sao lá»¥c trÃ¬nh phá»¥c vá»¥ cÃŽng viá»c)"
+
+#: main.c:1687
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr ""
+"cáº£nh bÃ¡o : trÃ¬nh phá»¥c vá»¥ cÃŽng viá»c khÃŽng sáºµn sÃ ng: nÃªn dÃ¹ng Â« -j1 Â». HÃ£y "
+"thÃªm Â« + Â» vÃ o quy táº¯c make máº¹."
+
+#: main.c:1710
+msgid "creating jobs pipe"
+msgstr "Äang táº¡o á»ng dáº«n cÃŽng viá»c"
+
+#: main.c:1725
+msgid "init jobserver pipe"
+msgstr "init jobserver pipe (sá» khá»i á»ng dáº«n trÃ¬nh phá»¥c vá»¥ cÃŽng viá»c)"
+
+#: main.c:1744
+msgid "Symbolic links not supported: disabling -L."
+msgstr "KhÃŽng há» trá»£ liÃªn káº¿t tÆ°á»£ng trÆ°ng: nÃªn táº¯t Â« -L Â»."
+
+#: main.c:1820
+msgid "Updating makefiles....\n"
+msgstr "Äáº¡ng cáº­p nháº­t cÃ¡c táº­p tin táº¡o (makefile)...\n"
+
+#: main.c:1845
+#, c-format
+msgid "Makefile `%s' might loop; not remaking it.\n"
+msgstr ""
+"Táº­p tin táº¡o (makefile) Â« %s Â» cÃ³ láºœ sáºœ vÃ²ng láº·p; sáºœ khÃŽng táº¡o láº¡i nÃ³.\n"
+
+#: main.c:1924
+#, c-format
+msgid "Failed to remake makefile `%s'."
+msgstr "Viá»c táº¡o láº¡i táº­p tin táº¡o (makefile) Â« %s Â» bá» lá»i."
+
+#: main.c:1941
+#, c-format
+msgid "Included makefile `%s' was not found."
+msgstr "KhÃŽng tÃ¬m tháº¥y táº­p tin táº¡o (makefile) ÄÃ£ bao gá»m Â« %s Â»."
+
+#: main.c:1946
+#, c-format
+msgid "Makefile `%s' was not found"
+msgstr "KhÃŽng tÃ¬m tháº¥y táº­p tin táº¡o (makefile) Â« %s Â»."
+
+#: main.c:2016
+msgid "Couldn't change back to original directory."
+msgstr "KhÃŽng thá» chuyá»n Äá»i vá» thÆ° má»¥c gá»c."
+
+#: main.c:2024
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "Äang thá»±c hiá»n láº¡i[%u]:"
+
+#: main.c:2140
+msgid "unlink (temporary file): "
+msgstr "unlink (bá» liÃªn káº¿t) (táº­p tin táº¡m thá»i): "
+
+#: main.c:2169
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr "Â« .DEFAULT_GOAL Â» (ÄÃ­ch máº·c Äá»nh) chá»©a nhiá»u ÄÃ­ch."
+
+#: main.c:2189
+msgid "No targets specified and no makefile found"
+msgstr "ChÆ°a ghi rÃµ ÄÃ­ch nÃ o, vÃ  khÃŽng tÃ¬m tháº¥y táº­p tin táº¡o (makefile) nÃ o"
+
+#: main.c:2191
+msgid "No targets"
+msgstr "KhÃŽng cÃ³ ÄÃ­ch"
+
+#: main.c:2196
+msgid "Updating goal targets....\n"
+msgstr "Äáº¡ng cáº­p nháº­t cÃ¡c ÄÃ­ch má»¥c tiÃªu...\n"
+
+#: main.c:2222
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr ""
+"cáº£nh bÃ¡o : má»i phÃ¡t hiá»n Äá»i xá»©ng lá»ch Äá»ng há». NhÆ° tháº¿ thÃ¬ báº£n xÃ¢y dá»¥ng cÃ³ "
+"láºœ khÃŽng hoÃ n toÃ n."
+
+#: main.c:2383
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "CÃ¡ch sá»­ dá»¥ng: %s [tÃ¹y_chá»n...] [ÄÃ­ch] ...\n"
+
+#: main.c:2389
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"ChÆ°Æ¡ng trÃ¬nh nÃ y ÄÃ£ ÄÆ°á»£c xÃ¢y dá»¥ng cho %s\n"
+
+#: main.c:2391
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"ChÆ°Æ¡ng trÃ¬nh nÃ y ÄÃ£ ÄÆ°á»£c xÃ¢y dá»¥ng cho %s (%s)\n"
+
+#: main.c:2394
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "HÃ£y thÃŽng bÃ¡o lá»i cho <bug-make@gnu.org>.\n"
+
+#: main.c:2466
+#, c-format
+msgid "the `-%c' option requires a non-empty string argument"
+msgstr "tÃ¹y chá»n Â« -%c Â» cáº§n Äáº¿n má»t Äá»i sá» dáº¡ng chuá»i khÃŽng rá»ng"
+
+#: main.c:2518
+#, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "tÃ¹y chá»n Â« -%c Â» cáº§n Äáº¿n má»t Äá»i sá» dáº¡ng sá» nguyÃªn dÆ°Æ¡ng"
+
+#: main.c:2942
+#, c-format
+msgid ""
+"%sThis is free software; see the source for copying conditions.\n"
+"%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
+"%sPARTICULAR PURPOSE.\n"
+msgstr ""
+"%sPháº§n má»m nÃ y tá»± do; hÃ£y xem mÃ£ nguá»n Äá» tÃ¬m tháº¥y Äiá»u kiá»n sao chÃ©p.\n"
+"%sKhÃŽng báº£o Äáº£m gÃ¬ cáº£, dÃ¹ kháº£ nÄng bÃ¡n hay kháº£ nÄng lÃ m viá»c dá»©t khoÃ¡t.\n"
+"%s\n"
+
+#: main.c:2948
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s\n"
+msgstr ""
+"\n"
+"%sChÆ°Æ¡ng trÃ¬nh nÃ y ÄÃ£ ÄÆ°á»£c xÃ¢y dá»¥ng cho %s\n"
+
+#: main.c:2950
+#, c-format
+msgid ""
+"\n"
+"%sThis program built for %s (%s)\n"
+msgstr ""
+"\n"
+"%sChÆ°Æ¡ng trÃ¬nh nÃ y ÄÃ£ ÄÆ°á»£c xÃ¢y dá»¥ng cho %s (%s)\n"
+
+#: main.c:2968
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# CÆ¡ sá» dá»¯ liá»u Make, ÄÆ°á»£c in ra vÃ o %s"
+
+#: main.c:2978
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Má»i xong cÆ¡ sá» dá»¯ liá»u Make vÃ o %s\n"
+
+#: main.c:3101
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Äang vÃ o má»t thÆ° má»¥c láº¡\n"
+
+#: main.c:3103
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Äang rá»i khá»i má»t thÆ° má»¥c láº¡\n"
+
+#: main.c:3106
+#, c-format
+msgid "%s: Entering directory `%s'\n"
+msgstr "%s: Äang vÃ o thÆ° má»¥c Â« %s Â»\n"
+
+#: main.c:3109
+#, c-format
+msgid "%s: Leaving directory `%s'\n"
+msgstr "%s: Äang rá»i khá»i thÆ° má»¥c Â« %s Â»\n"
+
+#: main.c:3114
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Äang vÃ o má»t thÆ° má»¥c láº¡\n"
+
+#: main.c:3117
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Äang rá»i khá»i má»t thÆ° má»¥c láº¡\n"
+
+#: main.c:3121
+#, c-format
+msgid "%s[%u]: Entering directory `%s'\n"
+msgstr "%s[%u]: Äang vÃ o thÆ° má»¥c Â« %s Â»\n"
+
+#: main.c:3124
+#, c-format
+msgid "%s[%u]: Leaving directory `%s'\n"
+msgstr "%s[%u]: Äang rá»i khá»i thÆ° má»¥c Â« %s Â»\n"
+
+#: misc.c:285
+msgid ".  Stop.\n"
+msgstr ".  Dá»«ng.\n"
+
+#: misc.c:306
+#, c-format
+msgid "Unknown error %d"
+msgstr "KhÃŽng biáº¿t lá»i: %d"
+
+# Variable: don't translate / Biáº¿n: Äá»«ng dá»ch
+#: misc.c:316
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+# Variable: do not translate/ biáº¿n: Äá»«ng dá»ch
+#: misc.c:324
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+msgid "virtual memory exhausted"
+msgstr "háº¿t bá» nhá» áº£o hoÃ n toÃ n"
+
+#: misc.c:646
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: ngÆ°á»i dÃ¹ng %lu (tháº­t %lu), nhÃ³m %lu (tháº­t %lu)\n"
+
+#: misc.c:667
+msgid "Initialized access"
+msgstr "Truy cáº¥p ÄÃ£ sá» khá»i"
+
+#: misc.c:746
+msgid "User access"
+msgstr "Truy cáº­p ngÆ°á»i dÃ¹ng"
+
+#: misc.c:794
+msgid "Make access"
+msgstr "Truy cáº­p Make"
+
+#: misc.c:828
+msgid "Child access"
+msgstr "Truy cáº­p Äiá»u con"
+
+#: misc.c:892
+#, c-format
+msgid "write error: %s"
+msgstr "lá»i ghi: %s"
+
+#: misc.c:894
+msgid "write error"
+msgstr "lá»i ghi"
+
+#: read.c:160
+msgid "Reading makefiles...\n"
+msgstr "Äáº¡ng Äá»c cÃ¡c táº­p tin táº¡o (makefile)...\n"
+
+#: read.c:315
+#, c-format
+msgid "Reading makefile `%s'"
+msgstr "Äáº¡ng Äá»c táº­p tin táº¡o (makefile) Â« %s Â»..."
+
+#: read.c:317
+#, c-format
+msgid " (no default goal)"
+msgstr " (khÃŽng cÃ³ má»¥c tiÃªu máº·c Äá»nh)"
+
+#: read.c:319
+#, c-format
+msgid " (search path)"
+msgstr " (ÄÆ°á»ng dáº«n tÃ¬m kiáº¿m)"
+
+#: read.c:321
+#, c-format
+msgid " (don't care)"
+msgstr " (cÅ©ng ÄÆ°á»£c)"
+
+#: read.c:323
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (khÃŽng má» rá»ng ~)"
+
+#: read.c:623
+msgid "invalid syntax in conditional"
+msgstr "gáº·p cÃº phÃ¡p khÃŽng há»£p lá» trong Äá» Äiá»u kiá»n "
+
+#: read.c:633
+msgid "extraneous `endef'"
+msgstr "gáº·p Â« endef Â» báº¯t nguá»n á» ngoÃ i"
+
+#: read.c:645 read.c:673 variable.c:1316
+msgid "empty variable name"
+msgstr "tÃªn biáº¿n rá»ng"
+
+#: read.c:662
+msgid "empty `override' directive"
+msgstr "chá» thá» Â« override Â» (ÄÃš) rá»ng"
+
+#: read.c:687
+msgid "invalid `override' directive"
+msgstr "chá» thá» Â« override Â» (ÄÃš) khÃŽng há»£p lá»"
+
+#: read.c:854
+msgid "commands commence before first target"
+msgstr "lá»nh báº¯t Äáº§u trÆ°á»c ÄÃ­ch thá»© nháº¥t"
+
+#: read.c:905
+msgid "missing rule before commands"
+msgstr "thiáº¿u quy táº¯c trÆ°á»c cÃ¡c lá»nh"
+
+#: read.c:992
+#, c-format
+msgid "missing separator%s"
+msgstr "thiáº¿u bá» phÃ¢n cÃ¡ch%s"
+
+#: read.c:994
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr " (báº¡n cÃ³ muá»n dÃ¹ng TAB thay vÃ o 8 dáº¥u cÃ¡ch chá»©?)"
+
+#: read.c:1152
+msgid "missing target pattern"
+msgstr "thiáº¿u máº«u ÄÃ­ch"
+
+#: read.c:1154
+msgid "multiple target patterns"
+msgstr "nhiá»u máº«u ÄÃ­ch"
+
+#: read.c:1158
+#, c-format
+msgid "target pattern contains no `%%'"
+msgstr "máº«u ÄÃ­ch khÃŽng chá»©a Â« %% Â»"
+
+#: read.c:1286
+msgid "missing `endif'"
+msgstr "thiáº¿u Â« endif Â»"
+
+#: read.c:1377
+msgid "Extraneous text after `endef' directive"
+msgstr "Gáº·p chuá»i chá»¯ báº¯t nguá»n á» ngoÃ i sau chi thá» Â« endef Â»"
+
+#: read.c:1411
+msgid "missing `endef', unterminated `define'"
+msgstr "thiáº¿u Â« endef Â», Â« define Â» (Äá»nh nghÄ©a) chÆ°a káº¿t thÃºc"
+
+#: read.c:1454
+#, c-format
+msgid "Extraneous text after `%s' directive"
+msgstr "Gáº·p chuá»i chá»¯ báº¯t nguá»n á» ngoÃ i sau chi thá» Â« %s Â»"
+
+#: read.c:1463 read.c:1477
+#, c-format
+msgid "extraneous `%s'"
+msgstr "gáº·p Â« %s Â» báº¯t nguá»n á» ngoÃ i"
+
+#: read.c:1482
+msgid "only one `else' per conditional"
+msgstr "chá» cho phÃ©p má»t Â« else Â» (náº¿u khÃŽng thÃ¬) cho má»i Äá» Äiá»u kiá»n thÃŽi"
+
+#: read.c:1824
+msgid "Malformed target-specific variable definition"
+msgstr "Lá»i Äá»nh nghÄ©a biáº¿n Äáº·c trÆ°ng cho ÄÃ­ch dáº¡ng sai"
+
+#: read.c:1886
+msgid "prerequisites cannot be defined in command scripts"
+msgstr "khÃŽng thá» Äá»nh nghÄ©a Äiá»u kiá»n tiÃªn quyáº¿t trong táº­p lá»nh kiá»u lá»nh"
+
+#: read.c:1921
+msgid "mixed implicit and static pattern rules"
+msgstr "gáº·p quy táº¯c máº«u kiá»u ngáº§m vÃ  tÄ©nh ÄÆ°á»£c trá»n vá»i nhau"
+
+#: read.c:1924
+msgid "mixed implicit and normal rules"
+msgstr "gáº·p quy táº¯c máº«u kiá»u ngáº§m vÃ  chuáº©n ÄÆ°á»£c trá»n vá»i nhau"
+
+#: read.c:1954
+#, c-format
+msgid "target `%s' doesn't match the target pattern"
+msgstr "ÄÃ­ch Â« %s Â» khÃŽng khá»p vá»i máº«u ÄÃ­ch"
+
+#: read.c:1973 read.c:2074
+#, c-format
+msgid "target file `%s' has both : and :: entries"
+msgstr "táº­p tin ÄÃ­ch Â« %s Â» cÃ³ má»¥c nháº­p kiá»u cáº£ Â« : Â» láº«n Â« :: Â» Äá»u"
+
+#: read.c:1979
+#, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr "ÄÃ­ch Â« %s Â» ÄÆ°á»£c ÄÆ°a ra nhiá»u láº§n trong cÃ¹ng má»t quy táº¯c"
+
+#: read.c:1988
+#, c-format
+msgid "warning: overriding commands for target `%s'"
+msgstr "cáº£nh bÃ¡o : Äang ÄÃš lÃªn cÃ¡c lá»nh cho ÄÃ­ch Â« %s Â»"
+
+#: read.c:1991
+#, c-format
+msgid "warning: ignoring old commands for target `%s'"
+msgstr "cáº£nh bÃ¡o : Äang bá» qua cÃ¡c lá»nh cÅ© cho ÄÃ­ch Â« %s Â»"
+
+#: read.c:2575
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "cáº£nh bÃ¡o : ÄÃ£ xem kÃœ tá»± NUL (rá»ng) nÃªn bá» qua pháº§n cÃ²n láº¡i cá»§a dÃ²ng ÄÃ³"
+
+#: remake.c:229
+#, c-format
+msgid "Nothing to be done for `%s'."
+msgstr "KhÃŽng cÃ³ gÃ¬ cáº§n lÃ m cho Â« %s Â»."
+
+#: remake.c:230
+#, c-format
+msgid "`%s' is up to date."
+msgstr "Â« %s Â» lÃ  hiá»n thá»i."
+
+#: remake.c:297
+#, c-format
+msgid "Pruning file `%s'.\n"
+msgstr "Äang xÃ©n bá»t táº­p tin Â« %s Â».\n"
+
+#: remake.c:349
+#, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr "%sKhÃŽng cÃ³ quy táº¯c tá»i ÄÃ­ch make Â« %s Â»%s"
+
+#: remake.c:351
+#, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr "%sKhÃŽng cÃ³ quy táº¯c tá»i ÄÃ­ch make Â« %s Â», cáº§n thiáº¿t bá»i Â« %s Â»%s"
+
+#: remake.c:378
+#, c-format
+msgid "Considering target file `%s'.\n"
+msgstr "Äang suy nghÄ© táº­p tin ÄÃ­ch Â« %s Â».\n"
+
+#: remake.c:385
+#, c-format
+msgid "Recently tried and failed to update file `%s'.\n"
+msgstr "Vá»«a cá» cáº­p nháº­t táº­p tin Â« %s Â» nhÆ°ng bá» lá»i.\n"
+
+#: remake.c:400
+#, c-format
+msgid "File `%s' was considered already.\n"
+msgstr "Táº­p tin Â« %s Â» ÄÃ£ ÄÆ°á»£c suy nghÄ©.\n"
+
+#: remake.c:410
+#, c-format
+msgid "Still updating file `%s'.\n"
+msgstr "Váº«n cÃ²n Äang cáº­p nháº­t táº­p tin Â« %s Â»...\n"
+
+#: remake.c:413
+#, c-format
+msgid "Finished updating file `%s'.\n"
+msgstr "Má»i cáº­p nháº­t xong táº­p tin Â« %s Â».\n"
+
+#: remake.c:434
+#, c-format
+msgid "File `%s' does not exist.\n"
+msgstr "Táº­p tin Â« %s Â» khÃŽng tá»n táº¡i.\n"
+
+#: remake.c:441
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+msgstr ""
+"*** Cáº£nh bÃ¡o : táº­p tin Â« .LOW_RESOLUTION_TIME Â» (thá»i gian giáº£i phÃ¡p tháº¥p) Â« "
+"%s Â» cÃ³ nhÃ£n thá»i gian cao"
+
+#: remake.c:454 remake.c:962
+#, c-format
+msgid "Found an implicit rule for `%s'.\n"
+msgstr "TÃ¬m tháº¥y má»t quy táº¯c ngáº§m cho Â« %s Â».\n"
+
+#: remake.c:456 remake.c:964
+#, c-format
+msgid "No implicit rule found for `%s'.\n"
+msgstr "KhÃŽng tÃ¬m tháº¥y quy táº¯c ngáº§m cho Â« %s Â»\n"
+
+#: remake.c:462 remake.c:970
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Äang dÃ¹ng cÃ¡c lá»nh máº·c Äá»nh cho Â« %s Â».\n"
+
+#: remake.c:484 remake.c:996
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "CÃ¡ch phá»¥ thuá»c vÃ²ng trÃ²n Â« %s â %s Â» bá» gá»¡ bá»."
+
+#: remake.c:601
+#, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
+msgstr "Má»i xong cÃ¡c Äiá»u kiá»n tiÃªn quyáº¿t cá»§a táº­p tin ÄÃ­ch Â« %s Â».\n"
+
+#: remake.c:607
+#, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr "Äang táº¡o cÃ¡c Äiá»u kiá»n tiÃªn quyáº¿t cá»§a Â« %s Â».\n"
+
+#: remake.c:620
+#, c-format
+msgid "Giving up on target file `%s'.\n"
+msgstr "Äang chá»u thua vá» táº­p tin ÄÃ­ch Â« %s Â».\n"
+
+#: remake.c:625
+#, c-format
+msgid "Target `%s' not remade because of errors."
+msgstr "ÄÃ­ch Â« %s Â» khÃŽng ÄÆ°á»£c táº¡o láº¡i vÃ¬ gáº·p lá»i."
+
+#: remake.c:677
+#, c-format
+msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgstr ""
+"Äiá»u kiá»n tiÃªn quyáº¿t Â« %s Â» lÃ  order-only (chá» thá»© tá»±) cho ÄÃ­ch Â« %s Â».\n"
+
+#: remake.c:682
+#, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr "Äiá»u kiá»n tiÃªn quyáº¿t Â« %s Â» cá»§a ÄÃ­ch Â« %s Â» khÃŽng tá»n táº¡i.\n"
+
+#: remake.c:687
+#, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr "Äiá»u kiá»n tiÃªn quyáº¿t Â« %s Â» lÃ  má»i hÆ¡n ÄÃ­ch Â« %s Â» .\n"
+
+#: remake.c:690
+#, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr "Äiá»u kiá»n tiÃªn quyáº¿t Â« %s Â» lÃ  cÅ© hÆ¡n ÄÃ­ch Â« %s Â» .\n"
+
+#: remake.c:708
+#, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgstr ""
+"ÄÃ­ch Â« %s Â» lÃ  kiá»u dáº¥u hai cháº¥m ÄÃŽi vÃ  khÃŽng cÃ³ Äiá»u kiá»n tiÃªn quyáº¿t nÃ o.\n"
+
+#: remake.c:715
+#, c-format
+msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgstr ""
+"KhÃŽng cÃ³ lá»nh cho Â« %s Â», vÃ  chÆ°a tháº­t sá»± thay Äá»i Äiá»u kiá»n tiÃªn quyáº¿t "
+"nÃ o.\n"
+
+#: remake.c:720
+#, c-format
+msgid "Making `%s' due to always-make flag.\n"
+msgstr "Äang táº¡o Â« %s Â» vÃ¬ gáº·p cá» always-make (luÃŽn luÃŽn táº¡o).\n"
+
+#: remake.c:728
+#, c-format
+msgid "No need to remake target `%s'"
+msgstr "KhÃŽng cáº§n táº¡o láº¡i ÄÃ­ch Â« %s Â»."
+
+#: remake.c:730
+#, c-format
+msgid "; using VPATH name `%s'"
+msgstr "; Äang dÃ¹ng tÃªn VPATH (ÄÆ°á»ng dáº«n V) Â« %s Â»"
+
+#: remake.c:750
+#, c-format
+msgid "Must remake target `%s'.\n"
+msgstr "Pháº£i táº¡o láº¡i ÄÃ­ch Â« %s Â».\n"
+
+#: remake.c:756
+#, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr "  Äang bá» qua tÃªn ÄÆ°á»ng dáº«n VPATH Â« %s Â».\n"
+
+#: remake.c:765
+#, c-format
+msgid "Commands of `%s' are being run.\n"
+msgstr "Äang cháº¡y cÃ¡c lá»nh cá»§a Â« %s Â».\n"
+
+#: remake.c:772
+#, c-format
+msgid "Failed to remake target file `%s'.\n"
+msgstr "Viá»c táº¡o láº¡i táº­p tin ÄÃ­ch Â« %s Â» bá» lá»i.\n"
+
+#: remake.c:775
+#, c-format
+msgid "Successfully remade target file `%s'.\n"
+msgstr "Má»i  táº¡o láº¡i táº­p tin ÄÃ­ch Â« %s Â».\n"
+
+#: remake.c:778
+#, c-format
+msgid "Target file `%s' needs remade under -q.\n"
+msgstr "Táº­p tin ÄÃ­ch Â« %s Â» cáº§n ÄÆ°á»£c táº¡o láº¡i dÆ°á»i Â« -q Â».\n"
+
+#: remake.c:1306
+#, c-format
+msgid "Warning: File `%s' has modification time in the future"
+msgstr "Cáº£nh bÃ¡o : táº­p tin Â« %s Â» cÃ³ giá» sá»­a Äá»i trong tÆ°Æ¡ng lai."
+
+#: remake.c:1313
+#, c-format
+msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgstr "Cáº£nh bÃ¡o : táº­p tin Â« %s Â» cÃ³ giá» sá»­a Äá»i Â« %.2g s Â» trong tÆ°Æ¡ng lai."
+
+#: remake.c:1511
+#, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr "Yáº¿u tá» Â« .LIBPATTERNS Â» (cÃ¡c máº«u thÆ° viÃªn) Â« %s Â» khÃŽng pháº£i lÃ  máº«u"
+
+#: remote-cstms.c:125
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Thuáº¿ quan khÃŽng xuáº¥t ÄÆ°á»£c: %s\n"
+
+#: rule.c:548
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Quy táº¯c ngáº§m"
+
+#: rule.c:563
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# KhÃŽng cÃ³ quy táº¯c ngáº§m."
+
+#: rule.c:566
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+"\n"
+"# %u quy táº¯c ngáº§m, %u"
+
+#: rule.c:575
+msgid " terminal."
+msgstr " thiáº¿t bá» cuá»i"
+
+#: rule.c:583
+#, c-format
+msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgstr "Lá»I: Â« num_pattern_rules Â» (sá» quy táº¯c máº«u) khÃŽng ÄÃºng!  %u != %u"
+
+#: signame.c:85
+msgid "unknown signal"
+msgstr "tÃ­n hiá»u láº¡"
+
+#: signame.c:93
+msgid "Hangup"
+msgstr "Ngá»«ng nÃ³i"
+
+#: signame.c:96
+msgid "Interrupt"
+msgstr "Ngáº¯t"
+
+#: signame.c:99
+msgid "Quit"
+msgstr "ThoÃ¡t"
+
+#: signame.c:102
+msgid "Illegal Instruction"
+msgstr "Lá»nh cáº¥m"
+
+#: signame.c:105
+msgid "Trace/breakpoint trap"
+msgstr "Báº«y váº¿t/Äiá»m ngáº¯t"
+
+#: signame.c:110
+msgid "Aborted"
+msgstr "Bá» há»§y bá»"
+
+#: signame.c:113
+msgid "IOT trap"
+msgstr "Báº«y IOT"
+
+#: signame.c:116
+msgid "EMT trap"
+msgstr "Báº«y EMT"
+
+#: signame.c:119
+msgid "Floating point exception"
+msgstr "Ngoáº¡i lá» Äiá»m phÃ¹ Äá»ng"
+
+#: signame.c:122
+msgid "Killed"
+msgstr "Bá» buá»c káº¿t thÃºc"
+
+#: signame.c:125
+msgid "Bus error"
+msgstr "Lá»i máº¡ch ná»i"
+
+#: signame.c:128
+msgid "Segmentation fault"
+msgstr "Lá»i phÃ¢n Äoáº¡n"
+
+#: signame.c:131
+msgid "Bad system call"
+msgstr "Cuá»c gá»i há» thá»ng sai"
+
+#: signame.c:134
+msgid "Broken pipe"
+msgstr "á»ng dáº«n bá» ngáº¯t"
+
+#: signame.c:137
+msgid "Alarm clock"
+msgstr "Äá»ng há» bÃ¡o Äá»ng"
+
+#: signame.c:140
+msgid "Terminated"
+msgstr "Bá» káº¿t thÃºc"
+
+#: signame.c:143
+msgid "User defined signal 1"
+msgstr "TÃ­n hiá»u tá»± Äá»nh nghÄ©a 1"
+
+#: signame.c:146
+msgid "User defined signal 2"
+msgstr "TÃ­n hiá»u tá»± Äá»nh nghÄ©a 2"
+
+#: signame.c:151 signame.c:154
+msgid "Child exited"
+msgstr "Tiáº¿n trÃ¬nh con ÄÃ£ thoÃ¡t"
+
+#: signame.c:157
+msgid "Power failure"
+msgstr "Bá» cÃºp Äiá»n Äá»t ngá»t"
+
+#: signame.c:160
+msgid "Stopped"
+msgstr "Bá» ngá»«ng"
+
+#: signame.c:163
+msgid "Stopped (tty input)"
+msgstr "Bá» ngá»«ng (káº¿t nháº­p tty)"
+
+#: signame.c:166
+msgid "Stopped (tty output)"
+msgstr "Bá» ngá»«ng (káº¿t xuáº¥t tty)"
+
+#: signame.c:169
+msgid "Stopped (signal)"
+msgstr "Bá» ngá»«ng (tÃ­n hiá»u)"
+
+#: signame.c:172
+msgid "CPU time limit exceeded"
+msgstr "Giá»i háº¡n thá»i gian CPU (ÄÆ¡n vá» xá»­ lÃœ trung tÃ¢m) bá» vÆ°á»£t quÃ¡"
+
+#: signame.c:175
+msgid "File size limit exceeded"
+msgstr "Giá»i háº¡n kÃ­ch cá»¡ táº­p tin bá» vÆ°á»£t quÃ¡"
+
+#: signame.c:178
+msgid "Virtual timer expired"
+msgstr "Bá» Äáº¿m thá»i gian áº£o ÄÃ£ mÃ£n háº¡n"
+
+#: signame.c:181
+msgid "Profiling timer expired"
+msgstr "Bá» Äáº¿m khi theo dÃµi cÃ¡ch sá»­ dá»¥ng tiá»m nÄng há» thá»ng ÄÃ£ mÃ£n háº¡n"
+
+#: signame.c:187
+msgid "Window changed"
+msgstr "Cá»­a sá» ÄÃ£ thay Äá»i"
+
+#: signame.c:190
+msgid "Continued"
+msgstr "ÄÃ£ tiáº¿p tá»¥c"
+
+#: signame.c:193
+msgid "Urgent I/O condition"
+msgstr "TÃ¬nh tráº¡ng I/O (nháº­p/xuáº¥t) kháº©n cáº¥p"
+
+#: signame.c:200 signame.c:209
+msgid "I/O possible"
+msgstr "I/O (nháº­p/xuáº¥t) cÃ³ thá»"
+
+# Literal: don't translate / NghÄ©a chá»¯: Äá»«ng dá»ch
+#: signame.c:203
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+# Literal: don't translate / NghÄ©a chá»¯: Äá»«ng dá»ch
+#: signame.c:206
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: signame.c:212
+msgid "Resource lost"
+msgstr "TÃ i nguyÃªn bá» máº¥t"
+
+#: signame.c:215
+msgid "Danger signal"
+msgstr "TÃ­n hiá»u nguy hiá»m"
+
+#: signame.c:218
+msgid "Information request"
+msgstr "YÃªu cáº§u thÃŽng tin"
+
+#: signame.c:221
+msgid "Floating point co-processor not available"
+msgstr "KhÃŽng cÃ³ sáºµn sÃ ng bá» Äá»ng xá»­ lÃœ Äiá»m phÃ¹ Äá»ng"
+
+#: strcache.c:210
+#, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d\n"
+msgstr ""
+
+#: strcache.c:211
+#, c-format
+msgid "%s # of strcache buffers: %d\n"
+msgstr ""
+
+#: strcache.c:212
+#, c-format
+msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:214
+#, c-format
+msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: variable.c:1369
+msgid "default"
+msgstr "máº·c Äá»nh"
+
+#: variable.c:1372
+msgid "environment"
+msgstr "mÃŽi trÆ°á»ng"
+
+#: variable.c:1375
+msgid "makefile"
+msgstr "táº­p tin táº¡o"
+
+#: variable.c:1378
+msgid "environment under -e"
+msgstr "mÃŽi trÆ°á»ng dÆ°á»i Â« -e Â»"
+
+#: variable.c:1381
+msgid "command line"
+msgstr "dÃ²ng lá»nh"
+
+#: variable.c:1384
+msgid "`override' directive"
+msgstr "chá» thá» Â« override Â» (ÄÃš)"
+
+#: variable.c:1387
+msgid "automatic"
+msgstr "tá»± Äá»ng"
+
+#: variable.c:1396
+#, c-format
+msgid " (from `%s', line %lu)"
+msgstr " (tá»« Â« %s Â», dÃ²ng %lu)"
+
+#: variable.c:1438
+msgid "# variable set hash-table stats:\n"
+msgstr "# thá»ng kÃª báº£ng bÄm láº­p biáº¿n:\n"
+
+#: variable.c:1449
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Biáº¿n\n"
+
+#: variable.c:1453
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# GiÃ¡ trá» biáº¿n Äáº·c trÆ°ng cho máº«u"
+
+#: variable.c:1467
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# KhÃŽng cÃ³ giÃ¡ trá» biáº¿n Äáº·c trÆ°ng cho máº«u"
+
+#: variable.c:1469
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u giÃ¡ trá» biáº¿n Äáº·c trÆ°ng cho máº«u"
+
+#: variable.h:189
+#, c-format
+msgid "warning: undefined variable `%.*s'"
+msgstr "cáº£nh bÃ¡o : chÆ°a Äá»nh nghÄ©a biáº¿n Â« %.*s Â»"
+
+#: vmsfunctions.c:94
+#, c-format
+msgid "sys$search failed with %d\n"
+msgstr "viá»c Â« search Â» (tÃ¬m kiáº¿m há» thá»ng) bá» lá»i vá»i %d\n"
+
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr "Cáº£nh bÃ¡o : viá»c chuyá»n hÆ°á»ng rá»ng\n"
+
+#: vmsjobs.c:175
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr "lá»i ná»i bá» : tÃ­nh tráº¡ng lá»nh Â« %s Â»"
+
+#: vmsjobs.c:268
+#, c-format
+msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+msgstr "â¢ cáº£nh bÃ¡o, CTRL-Y sáºœ Äá» má»t sá» tiáº¿n trÃ¬nh con cÃ²n láº¡i.\n"
+
+#: vmsjobs.c:284
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+"â¢ cáº£nh bÃ¡o, cÃ³ láºœ báº¡n sáºœ pháº£i báº­t láº¡i kháº£ nÄng quáº£n lÃœ báº±ng CTRL-Y tá»« DCL.\n"
+
+#: vmsjobs.c:407
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr "BUILTIN [%s][%s]\n"
+
+#: vmsjobs.c:418
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "BUILTIN CD %s\n"
+
+#: vmsjobs.c:436
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr "BUILTIN RM %s\n"
+
+#: vmsjobs.c:457
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "KhÃŽng biáº¿t lá»nh builtin (cÃ³ sáºµn) Â« %s Â»\n"
+
+#: vmsjobs.c:479
+#, c-format
+msgid "Error, empty command\n"
+msgstr "Lá»i, lá»nh rá»ng\n"
+
+#: vmsjobs.c:491
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr "Káº¿t nháº­p ÄÃ£ ÄÆ°á»£c chuyá»n hÆ°á»ng tá»« %s\n"
+
+#: vmsjobs.c:498
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr "Lá»i ÄÃ£ ÄÆ°á»£c chuyá»n hÆ°á»ng Äáº¿n %s\n"
+
+#: vmsjobs.c:505
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr "Káº¿t xuáº¥t ÄÃ£ ÄÆ°á»£c chuyá»n hÆ°á»ng Äáº¿n %s\n"
+
+#: vmsjobs.c:568
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "Äang thá»±c hiá»n %s thay tháº¿\n"
+
+#: vmsjobs.c:668
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr "Gáº·p lá»i khi táº¡o vÃ  thá»±c hiá»n (spawn), %d\n"
+
+#: vpath.c:571
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# ÄÆ°á»ng dáº«n tÃ¬m kiáº¿m VPATH\n"
+
+#: vpath.c:588
+msgid "# No `vpath' search paths."
+msgstr "# KhÃŽng cÃ³ ÄÆ°á»ng dáº«n tÃ¬m kiáº¿m VPATH nÃ o"
+
+#: vpath.c:590
+#, c-format
+msgid ""
+"\n"
+"# %u `vpath' search paths.\n"
+msgstr ""
+"\n"
+"# %u ÄÆ°á»ng dáº«n tÃ¬m kiáº¿m Â« vpath Â».\n"
+
+#: vpath.c:593
+msgid ""
+"\n"
+"# No general (`VPATH' variable) search path."
+msgstr ""
+"\n"
+"# KhÃŽng cÃ³ ÄÆ°á»ng dáº«n tÃ¬m kiáº¿m chung (biáº¿n Â« VPATH Â»)."
+
+#: vpath.c:599
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# ÄÆ°á»ng dáº«n tÃ¬m kiáº¿m chung (biáº¿n Â« VPATH Â»).\n"
+"# "
+
+#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
+#~ msgstr "Äá»«ng ghi rÃµ Â« -j Â» hay Â« --jobs Â» náº¿u <sh.exe> khÃŽng sáºµn sÃ ng."
+
+#~ msgid "Resetting make for single job mode."
+#~ msgstr "Äang láº­p láº¡i trÃ¬nh make cho cháº¿ Äá» cÃŽng viá»c ÄÆ¡n."
Index: trunk/src/gmake/read.c
===================================================================
--- trunk/src/gmake/read.c	(revision 466)
+++ trunk/src/gmake/read.c	(revision 503)
@@ -1,21 +1,19 @@
 /* Reading and parsing of makefiles for GNU Make.
 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-2002 Free Software Foundation, Inc.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -144,4 +142,7 @@
 static enum make_word_type get_next_mword PARAMS ((char *buffer, char *delim,
                         char **startp, unsigned int *length));
+static void remove_comments PARAMS ((char *line));
+static char *find_char_unquote PARAMS ((char *string, int stop1,
+                                        int stop2, int blank, int ignorevars));
 
 
@@ -187,8 +188,5 @@
 	if (*p != '\0')
 	  *p++ = '\0';
-        name = xstrdup (name);
-	if (eval_makefile (name,
-                           RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE) < 2)
-          free (name);
+	eval_makefile (name, RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE);
       }
 
@@ -253,10 +251,7 @@
 	  for (p = default_makefiles; *p != 0; ++p)
 	    {
-	      struct dep *d = (struct dep *) xmalloc (sizeof (struct dep));
-	      d->name = 0;
+	      struct dep *d = alloc_dep ();
 	      d->file = enter_file (*p);
 	      d->file->dontcare = 1;
-              d->ignore_mtime = 0;
-              d->need_2nd_expansion = 0;
 	      /* Tell update_goal_chain to bail out as soon as this file is
 		 made, and main not to die if we can't make this file.  */
@@ -312,8 +307,10 @@
   struct ebuffer ebuf;
   const struct floc *curfile;
+  char *expanded = 0;
+  char *included = 0;
   int makefile_errno;
   int r;
 
-  ebuf.floc.filenm = filename;
+  ebuf.floc.filenm = strcache_add (filename);
   ebuf.floc.lineno = 1;
 
@@ -338,5 +335,5 @@
   if (!(flags & RM_NO_TILDE) && filename[0] == '~')
     {
-      char *expanded = tilde_expand (filename);
+      expanded = tilde_expand (filename);
       if (expanded != 0)
 	filename = expanded;
@@ -355,32 +352,34 @@
       for (i = 0; include_directories[i] != 0; ++i)
 	{
-	  char *name = concat (include_directories[i], "/", filename);
-	  ebuf.fp = fopen (name, "r");
-	  if (ebuf.fp == 0)
-	    free (name);
-	  else
+	  included = concat (include_directories[i], "/", filename);
+	  ebuf.fp = fopen (included, "r");
+	  if (ebuf.fp)
 	    {
-	      filename = name;
+	      filename = included;
 	      break;
 	    }
-	}
+          free (included);
+	}
+      /* If we're not using it, we already freed it above.  */
+      if (filename != included)
+        included = 0;
     }
 
   /* Add FILENAME to the chain of read makefiles.  */
-  deps = (struct dep *) xmalloc (sizeof (struct dep));
+  deps = alloc_dep ();
   deps->next = read_makefiles;
   read_makefiles = deps;
-  deps->name = 0;
   deps->file = lookup_file (filename);
   if (deps->file == 0)
     deps->file = enter_file (xstrdup (filename));
-  if (filename != ebuf.floc.filenm)
-    free (filename);
   filename = deps->file->name;
   deps->changed = flags;
-  deps->ignore_mtime = 0;
-  deps->need_2nd_expansion = 0;
   if (flags & RM_DONTCARE)
     deps->file->dontcare = 1;
+
+  if (expanded)
+    free (expanded);
+  if (included)
+    free (included);
 
   /* If the makefile can't be found at all, give up entirely.  */
@@ -803,10 +802,11 @@
 
 	  p = allocated_variable_expand (p2);
+
+          /* If no filenames, it's a no-op.  */
 	  if (*p == '\0')
-	    {
-	      error (fstart,
-                     _("no file name for `%sinclude'"), noerror ? "-" : "");
-	      continue;
-	    }
+            {
+              free (p);
+              continue;
+            }
 
 	  /* Parse the list of file names.  */
@@ -838,10 +838,7 @@
               r = eval_makefile (name, (RM_INCLUDED | RM_NO_TILDE
                                         | (noerror ? RM_DONTCARE : 0)));
-	      if (!r)
-                {
-                  if (!noerror)
-                    error (fstart, "%s: %s", name, strerror (errno));
-                  free (name);
-                }
+	      if (!r && !noerror)
+                error (fstart, "%s: %s", name, strerror (errno));
+              free (name);
 	    }
 
@@ -888,5 +885,5 @@
         /* Search the line for an unquoted ; that is not after an
            unquoted #.  */
-        cmdleft = find_char_unquote (line, ';', '#', 0);
+        cmdleft = find_char_unquote (line, ';', '#', 0, 1);
         if (cmdleft != 0 && *cmdleft == '#')
           {
@@ -935,5 +932,5 @@
               {
                 /* Look for a semicolon in the expanded line.  */
-                cmdleft = find_char_unquote (p2, ';', 0, 0);
+                cmdleft = find_char_unquote (p2, ';', 0, 0, 0);
 
                 if (cmdleft != 0)
@@ -962,5 +959,5 @@
               }
 
-            colonp = find_char_unquote(p2, ':', 0, 0);
+            colonp = find_char_unquote(p2, ':', 0, 0, 0);
 #ifdef HAVE_DOS_PATHS
             /* The drive spec brain-damage strikes again...  */
@@ -971,5 +968,5 @@
                    colonp > p2 && isalpha ((unsigned char)colonp[-1]) &&
                    (colonp == p2 + 1 || strchr (" \t(", colonp[-2]) != 0))
-              colonp = find_char_unquote(colonp + 1, ':', 0, 0);
+              colonp = find_char_unquote(colonp + 1, ':', 0, 0, 0);
 #endif
             if (colonp != 0)
@@ -1085,5 +1082,5 @@
         /* This is a normal target, _not_ a target-specific variable.
            Unquote any = in the dependency list.  */
-        find_char_unquote (lb_next, '=', 0, 0);
+        find_char_unquote (lb_next, '=', 0, 0, 0);
 
         /* We have some targets, so don't ignore the following commands.  */
@@ -1100,5 +1097,5 @@
             if (cmdleft == 0)
               {
-                cmdleft = find_char_unquote (p2, ';', 0, 0);
+                cmdleft = find_char_unquote (p2, ';', 0, 0, 0);
                 if (cmdleft != 0)
                   *(cmdleft++) = '\0';
@@ -1165,5 +1162,5 @@
             if (pattern_percent == 0)
               fatal (fstart, _("target pattern contains no `%%' (target `%s')"), target->name);
-            free((char *)target);
+            free ((char *)target);
           }
         else
@@ -1177,20 +1174,7 @@
         if (beg <= end && *beg != '\0')
           {
-            char *top;
-            const char *fromp = beg;
-
-            /* Make a copy of the dependency string.  Note if we find '$'.  */
-            deps = (struct dep*) xmalloc (sizeof (struct dep));
-            deps->next = 0;
-            deps->name = top = (char *) xmalloc (end - beg + 2);
-            deps->need_2nd_expansion = 0;
-            while (fromp <= end)
-              {
-                if (*fromp == '$')
-                  deps->need_2nd_expansion = 1;
-                *(top++) = *(fromp++);
-              }
-            *top = '\0';
-            deps->file = 0;
+            /* Put all the prerequisites here; they'll be parsed later.  */
+            deps = alloc_dep ();
+            deps->name = savestring (beg, end - beg + 1);
           }
         else
@@ -1319,4 +1303,19 @@
 
 
+/* Remove comments from LINE.
+   This is done by copying the text at LINE onto itself.  */
+
+static void
+remove_comments (char *line)
+{
+  char *comment;
+
+  comment = find_char_unquote (line, '#', 0, 0, 0);
+
+  if (comment != 0)
+    /* Cut off the line at the #.  */
+    *comment = '\0';
+}
+
 /* Execute a `define' directive.
    The first line has already been read, and NAME is the name of
@@ -1839,6 +1838,5 @@
       v->origin = origin;
       v->per_target = 1;
-      if (exported)
-        v->export = v_export;
+      v->export = exported ? v_export : v_default;
 
       /* If it's not an override, check to see if there was a command-line
@@ -1913,6 +1911,5 @@
       char *name = filenames->name;
       struct file *f;
-      struct dep *d;
-      struct dep *this;
+      struct dep *this = 0;
       char *implicit_percent;
 
@@ -1920,10 +1917,11 @@
       free (filenames);
 
-      /* Check for .POSIX.  We used to do this in snap_deps() but that's not
-         good enough: it doesn't happen until after the makefile is read,
-         which means we cannot use its value during parsing.  */
+      /* Check for special targets.  Do it here instead of, say, snap_deps()
+         so that we can immediately use the value.  */
 
       if (streq (name, ".POSIX"))
         posix_pedantic = 1;
+      else if (streq (name, ".SECONDEXPANSION"))
+        second_expansion = 1;
 
       implicit_percent = find_percent (name);
@@ -1960,38 +1958,18 @@
 	}
 
-      /* If there are multiple filenames, copy the chain DEPS
-	 for all but the last one.  It is not safe for the same deps
-	 to go in more than one place in the database.  */
-      this = nextf != 0 ? copy_dep_chain (deps) : deps;
-
-      if (pattern != 0)
-	{
-	  /* If this is an extended static rule:
-	     `targets: target%pattern: dep%pattern; cmds',
-	     translate each dependency pattern into a plain filename
-	     using the target pattern and this target's name.  */
-	  if (!pattern_matches (pattern, pattern_percent, name))
-	    {
-	      /* Give a warning if the rule is meaningless.  */
-	      error (flocp,
-		     _("target `%s' doesn't match the target pattern"), name);
-	      this = 0;
-	    }
-	  else
-            /* We use subst_expand to do the work of translating % to $* in
-               the dependency line.  */
-
-            if (this != 0 && find_percent (this->name) != 0)
-              {
-                char *o;
-                char *buffer = variable_expand ("");
-
-                o = subst_expand (buffer, this->name, "%", "$*", 1, 2, 0);
-
-                free (this->name);
-                this->name = savestring (buffer, o - buffer);
-                this->need_2nd_expansion = 1;
-              }
-	}
+      /* If this is a static pattern rule:
+         `targets: target%pattern: dep%pattern; cmds',
+         make sure the pattern matches this target name.  */
+      if (pattern && !pattern_matches (pattern, pattern_percent, name))
+        error (flocp, _("target `%s' doesn't match the target pattern"), name);
+      else if (deps)
+        {
+          /* If there are multiple filenames, copy the chain DEPS for all but
+             the last one.  It is not safe for the same deps to go in more
+             than one place in the database.  */
+          this = nextf != 0 ? copy_dep_chain (deps) : deps;
+          this->need_2nd_expansion = (second_expansion
+				      && strchr (this->name, '$'));
+        }
 
       if (!two_colon)
@@ -2033,16 +2011,9 @@
 	    f->cmds = cmds;
 
-	  /* Defining .SUFFIXES with no dependencies
-	     clears out the list of suffixes.  */
+	  /* Defining .SUFFIXES with no dependencies clears out the list of
+	     suffixes.  */
 	  if (f == suffix_file && this == 0)
 	    {
-	      d = f->deps;
-	      while (d != 0)
-		{
-		  struct dep *nextd = d->next;
- 		  free (d->name);
- 		  free ((char *)d);
-		  d = nextd;
-		}
+              free_dep_chain (f->deps);
 	      f->deps = 0;
 	    }
@@ -2059,20 +2030,17 @@
 
                   if (cmds != 0)
-                    {
-                      /* This is the rule with commands, so put its deps
-                         last. The rationale behind this is that $< expands
-                         to the first dep in the chain, and commands use $<
-                         expecting to get the dep that rule specifies.
-                         However the second expansion algorithm reverses
-                         the order thus we need to make it last here.  */
-
-                      (*d_ptr)->next = this;
-                    }
+                    /* This is the rule with commands, so put its deps
+                       last. The rationale behind this is that $< expands to
+                       the first dep in the chain, and commands use $<
+                       expecting to get the dep that rule specifies.  However
+                       the second expansion algorithm reverses the order thus
+                       we need to make it last here.  */
+                    (*d_ptr)->next = this;
                   else
                     {
                       /* This is the rule without commands. Put its
-                         dependencies at the end but before dependencies
-                         from the rule with commands (if any). This way
-                         everything appears in makefile order.  */
+                         dependencies at the end but before dependencies from
+                         the rule with commands (if any). This way everything
+                         appears in makefile order.  */
 
                       if (f->cmds != 0)
@@ -2104,22 +2072,10 @@
                 f->updating = 1;
 	    }
-
-	  /* If this is a static pattern rule, set the file's stem to
-	     the part of its name that matched the `%' in the pattern,
-	     so you can use $* in the commands.  */
-	  if (pattern != 0)
-	    {
-	      static char *percent = "%";
-	      char *buffer = variable_expand ("");
-	      char *o = patsubst_expand (buffer, name, pattern, percent,
-					 pattern_percent+1, percent+1);
-	      f->stem = savestring (buffer, o - buffer);
-	    }
 	}
       else
 	{
-	  /* Double-colon.  Make a new record
-	     even if the file already has one.  */
+	  /* Double-colon.  Make a new record even if there already is one.  */
 	  f = lookup_file (name);
+
 	  /* Check for both : and :: rules.  Check is_target so
 	     we don't lose on default suffix rules or makefiles.  */
@@ -2128,11 +2084,11 @@
                    _("target file `%s' has both : and :: entries"), f->name);
 	  f = enter_file (name);
-	  /* If there was an existing entry and it was a double-colon
-	     entry, enter_file will have returned a new one, making it the
-	     prev pointer of the old one, and setting its double_colon
-	     pointer to the first one.  */
+	  /* If there was an existing entry and it was a double-colon entry,
+	     enter_file will have returned a new one, making it the prev
+	     pointer of the old one, and setting its double_colon pointer to
+	     the first one.  */
 	  if (f->double_colon == 0)
-	    /* This is the first entry for this name, so we must
-	       set its double_colon pointer to itself.  */
+	    /* This is the first entry for this name, so we must set its
+	       double_colon pointer to itself.  */
 	    f->double_colon = f;
 	  f->is_target = 1;
@@ -2141,4 +2097,21 @@
 	}
 
+      /* If this is a static pattern rule, set the stem to the part of its
+         name that matched the `%' in the pattern, so you can use $* in the
+         commands.  */
+      if (pattern)
+        {
+          static char *percent = "%";
+          char *buffer = variable_expand ("");
+          char *o = patsubst_expand (buffer, name, pattern, percent,
+                                     pattern_percent+1, percent+1);
+          f->stem = savestring (buffer, o - buffer);
+          if (this)
+            {
+              this->staticpattern = 1;
+              this->stem = xstrdup (f->stem);
+            }
+        }
+
       /* Free name if not needed further.  */
       if (f != 0 && name != f->name
@@ -2150,7 +2123,7 @@
 
       /* If this target is a default target, update DEFAULT_GOAL_FILE.  */
-      if (strcmp (*default_goal_name, name) == 0
+      if (streq (*default_goal_name, name)
           && (default_goal_file == 0
-              || strcmp (default_goal_file->name, name) != 0))
+              || ! streq (default_goal_file->name, name)))
         default_goal_file = f;
     }
@@ -2160,4 +2133,6 @@
       targets[target_idx] = 0;
       target_percents[target_idx] = 0;
+      if (deps)
+        deps->need_2nd_expansion = second_expansion;
       create_pattern_rule (targets, target_percents, two_colon, deps, cmds, 1);
       free ((char *) target_percents);
@@ -2170,32 +2145,70 @@
    Quoting backslashes are removed from STRING by compacting it into
    itself.  Returns a pointer to the first unquoted STOPCHAR if there is
-   one, or nil if there are none.  */
-
-char *
-find_char_unquote (char *string, int stop1, int stop2, int blank)
+   one, or nil if there are none.  STOPCHARs inside variable references are
+   ignored if IGNOREVARS is true.
+
+   STOPCHAR _cannot_ be '$' if IGNOREVARS is true.  */
+
+static char *
+find_char_unquote (char *string, int stop1, int stop2, int blank,
+                   int ignorevars)
 {
   unsigned int string_len = 0;
   register char *p = string;
-  register int ch;
+  register int ch; /* bird */
+
+  if (ignorevars)
+    ignorevars = '$';
 
   while (1)
     {
       if (stop2 && blank)
-	while ((ch = *p) != '\0' && ch != stop1 && ch != stop2
+	while ((ch = *p) != '\0' && ch != ignorevars && ch != stop1 && ch != stop2
 	       && ! isblank ((unsigned char) ch))
 	  ++p;
       else if (stop2)
-	while ((ch = *p) != '\0' && ch != stop1 && ch != stop2)
+	while ((ch = *p) != '\0' && ch != ignorevars && ch != stop1 && ch != stop2)
 	  ++p;
       else if (blank)
-	while ((ch = *p) != '\0' && ch != stop1
+	while ((ch = *p) != '\0' && ch != ignorevars && ch != stop1
 	       && ! isblank ((unsigned char) ch))
 	  ++p;
       else
-	while ((ch = *p) != '\0' && ch != stop1)
+	while ((ch = *p) != '\0' && ch != ignorevars && ch != stop1)
 	  ++p;
 
       if (ch == '\0')
 	break;
+
+      /* If we stopped due to a variable reference, skip over its contents.  */
+      if (ch == ignorevars)
+        {
+          char openparen = p[1];
+
+          p += 2;
+
+          /* Skip the contents of a non-quoted, multi-char variable ref.  */
+          if (openparen == '(' || openparen == '{')
+            {
+              unsigned int pcount = 1;
+              char closeparen = (openparen == '(' ? ')' : '}');
+
+              while ((ch = *p))
+                {
+                  if (ch == openparen)
+                    ++pcount;
+                  else if (ch == closeparen)
+                    if (--pcount == 0)
+                      {
+                        ++p;
+                        break;
+                      }
+                  ++p;
+                }
+            }
+
+          /* Skipped the variable reference: look for STOPCHARS again.  */
+          continue;
+        }
 
       if (p > string && p[-1] == '\\')
@@ -2234,5 +2247,5 @@
 find_percent (char *pattern)
 {
-  return find_char_unquote (pattern, '%', 0, 0);
+  return find_char_unquote (pattern, '%', 0, 0, 0);
 }
 
@@ -2254,7 +2267,7 @@
 parse_file_seq (char **stringp, int stopchar, unsigned int size, int strip)
 {
-  register struct nameseq *new = 0;
-  register struct nameseq *new1, *lastnew1;
-  register char *p = *stringp;
+  struct nameseq *new = 0;
+  struct nameseq *new1, *lastnew1;
+  char *p = *stringp;
   char *q;
   char *name;
@@ -2277,5 +2290,5 @@
       /* Yes, find end of next name.  */
       q = p;
-      p = find_char_unquote (q, stopchar, VMS_COMMA, 1);
+      p = find_char_unquote (q, stopchar, VMS_COMMA, 1, 0);
 #ifdef VMS
 	/* convert comma separated list to space separated */
@@ -2288,5 +2301,5 @@
                || isspace ((unsigned char)p[-1])))
       {
-	p = find_char_unquote (p+1, stopchar, VMS_COMMA, 1);
+	p = find_char_unquote (p+1, stopchar, VMS_COMMA, 1, 0);
       }
 #endif
@@ -2299,5 +2312,5 @@
       while (p != 0 && !isspace ((unsigned char)*p) &&
              (p[1] == '\\' || p[1] == '/') && isalpha ((unsigned char)p[-1]))
-        p = find_char_unquote (p + 1, stopchar, VMS_COMMA, 1);
+        p = find_char_unquote (p + 1, stopchar, VMS_COMMA, 1, 0);
 #endif
       if (p == 0)
@@ -2909,5 +2922,6 @@
   dirs[idx] = 0;
 
-  /* Now compute the maximum length of any name in it.  */
+  /* Now compute the maximum length of any name in it. Also add each
+     dir to the .INCLUDE_DIRS variable.  */
 
   max_incl_len = 0;
@@ -2922,4 +2936,8 @@
       if (len > max_incl_len)
 	max_incl_len = len;
+
+      /* Append to .INCLUDE_DIRS.   */
+      do_variable_definition (NILF, ".INCLUDE_DIRS", dirs[i],
+                              o_default, f_append, 0);
     }
 
Index: trunk/src/gmake/readme.vms
===================================================================
--- trunk/src/gmake/readme.vms	(revision 466)
+++ trunk/src/gmake/readme.vms	(revision 503)
@@ -50,4 +50,66 @@
 with a simple change in makefile.vms.
 
+Some notes on case sensitive names in rules and on the disk. In the VMS
+template for CONFIG.H case sensitive rules can be enabled with defining
+WANT_CASE_SENSITIVE_TARGETS. For recent version of VMS there is a case
+sensitive file system: ODS5. To make use of that, additionally un-defining
+the HAVE_CASE_INSENSITIVE_FS is required. As these are C macros, different
+versions of make need to be built to have any case sensitivity for VMS
+working. Unfortunately, for ODS5 disks that's not all.
+
+- Usually DCL upcases command line tokens (except strings) and usually the
+  file system is case blind (similar to how Windows systems work)
+	$ set proc/parse=extended/case=sensitive
+  preserves lower and UPPER on the command line and (for this process and all
+  sub-processes) enables case sensitivity in the file system
+
+- Usually the CRTL tries to reverse what DCL did with command line tokens, it
+  lowercases all tokens (except strings)
+	$ define DECC$ARGV_PARSE_STYLE enable
+  passes (the now preserved) lower and UPPER from the command line to main()
+
+- Usually the CRTL upcases the arguments to open() and friends
+	$ define DECC$EFS_CASE_PRESERVE enable
+  preserves the names as is.
+
+It is important to know that not all VMS tools are ready for case sensitivity.
+With this setup some tools may not work as expected. The setup should not
+blindly be applied for all users in default login procedures.
+
+Example? The poor coding gives a compiler message, showing that there are
+different files:
+
+$ dir
+
+Directory ODS5DISK[HB]
+
+A.c;1               B.c;1               c.c;1               X.c;1
+x.c;1
+
+Total of 5 files.
+$ ods5make x.obj
+cc    /obj=x.obj x.c
+
+foo(){lowercase_x();}
+......^
+%CC-I-IMPLICITFUNC, In this statement, the identifier "lowercase_x" is implicitly declared as a function.
+at line number 1 in file ODS5DISK[HB]x.c;1
+$ mc SYS$SYSDEVICE:[HARTMUT.MAKE_3_80P]ods5make X.obj
+cc    /obj=X.obj X.c
+
+foo() {UPPERCASE_X();}
+.......^
+%CC-I-IMPLICITFUNC, In this statement, the identifier "UPPERCASE_X" is implicitly declared as a function.
+at line number 1 in file ODS5DISK[HB]X.c;1
+$ dir
+
+Directory ODS5DISK[HB]
+
+A.c;1               B.c;1               c.c;1               X.c;1
+x.c;1               X.obj;1             x.obj;1
+
+Total of 7 files.
+$
+
 
 This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com.
@@ -235,2 +297,19 @@
 
 Comma (',') as a separator is now allowed. See makefile.vms for an example.
+
+-------------------------------------------------------------------------------
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/remake.c
===================================================================
--- trunk/src/gmake/remake.c	(revision 466)
+++ trunk/src/gmake/remake.c	(revision 503)
@@ -1,21 +1,19 @@
 /* Basic dependency engine for GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999,
-2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -161,5 +159,6 @@
 		 by calling update_file above.  We check this flag below to
 		 decide when to give an "up to date" diagnostic.  */
-	      g->changed += commands_started - ocommands_started;
+              if (commands_started > ocommands_started)
+                g->changed = 1;
 
               /* If we updated a file and STATUS was not already 1, set it to
@@ -267,4 +266,5 @@
       job_slots = j;
     }
+
   return status;
 }
@@ -309,4 +309,7 @@
       status |= update_file_1 (f, depth);
       check_renamed (f);
+
+      /* Clean up any alloca() used during the update.  */
+      alloca (0);
 
       /* If we got an error, don't bother with double_colon etc.  */
@@ -534,5 +537,10 @@
 
       if (!running)
-	d->changed = file_mtime (d->file) != mtime;
+        /* 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.  */
+	d->changed = ((file_mtime (d->file) != mtime)
+                      /* || (mtime == NONEXISTENT_MTIME) */);
 
       lastd = d;
@@ -857,5 +865,4 @@
   if ((ran && !file->phony) || touched)
     {
-      struct file *f;
       int i = 0;
 
@@ -877,9 +884,32 @@
 
       file->last_mtime = i == 0 ? UNKNOWN_MTIME : NEW_MTIME;
-
-      /* Propagate the change of modification time to all the double-colon
-	 entries for this file.  */
-      for (f = file->double_colon; f != 0; f = f->prev)
-	f->last_mtime = file->last_mtime;
+    }
+
+  if (file->double_colon)
+    {
+      /* If this is a double colon rule and it is the last one to be
+         updated, propagate the change of modification time to all the
+         double-colon entries for this file.
+
+         We do it on the last update because it is important to handle
+         individual entries as separate rules with separate timestamps
+         while they are treated as targets and then as one rule with the
+         unified timestamp when they are considered as a prerequisite
+         of some target.  */
+
+      struct file *f;
+      FILE_TIMESTAMP max_mtime = file->last_mtime;
+
+      /* Check that all rules were updated and at the same time find
+         the max timestamp.  We assume UNKNOWN_MTIME is newer then
+         any other value.  */
+      for (f = file->double_colon; f != 0 && f->updated; f = f->prev)
+        if (max_mtime != UNKNOWN_MTIME
+            && (f->last_mtime == UNKNOWN_MTIME || f->last_mtime > max_mtime))
+          max_mtime = f->last_mtime;
+
+      if (f == 0)
+        for (f = file->double_colon; f != 0; f = f->prev)
+          f->last_mtime = max_mtime;
     }
 
@@ -987,5 +1017,5 @@
 		    {
 		      file->deps = d->next;
-		      free ((char *) d);
+                      free_dep (d);
 		      d = file->deps;
 		    }
@@ -993,5 +1023,5 @@
 		    {
 		      lastd->next = d->next;
-		      free ((char *) d);
+                      free_dep (d);
 		      d = lastd->next;
 		    }
@@ -1244,68 +1274,69 @@
 	      rehash_file (file, name);
 	      check_renamed (file);
-	      mtime = name_mtime (name);
+              /* If the result of a vpath search is -o or -W, preserve it.
+                 Otherwise, find the mtime of the resulting file.  */
+              if (mtime != OLD_MTIME && mtime != NEW_MTIME)
+                mtime = name_mtime (name);
 	    }
 	}
     }
 
-  {
-    /* Files can have bogus timestamps that nothing newly made will be
-       "newer" than.  Updating their dependents could just result in loops.
-       So notify the user of the anomaly with a warning.
-
-       We only need to do this once, for now. */
-
-    if (!clock_skew_detected
-	&& mtime != NONEXISTENT_MTIME
-	&& !file->updated)
-      {
-	static FILE_TIMESTAMP adjusted_now;
-
-	FILE_TIMESTAMP adjusted_mtime = mtime;
+  /* Files can have bogus timestamps that nothing newly made will be
+     "newer" than.  Updating their dependents could just result in loops.
+     So notify the user of the anomaly with a warning.
+
+     We only need to do this once, for now. */
+
+  if (!clock_skew_detected
+      && mtime != NONEXISTENT_MTIME && mtime != NEW_MTIME
+      && !file->updated)
+    {
+      static FILE_TIMESTAMP adjusted_now;
+
+      FILE_TIMESTAMP adjusted_mtime = mtime;
 
 #if defined(WINDOWS32) || defined(__MSDOS__)
-	/* Experimentation has shown that FAT filesystems can set file times
-	   up to 3 seconds into the future!  Play it safe.  */
+      /* Experimentation has shown that FAT filesystems can set file times
+         up to 3 seconds into the future!  Play it safe.  */
 
 #define FAT_ADJ_OFFSET  (FILE_TIMESTAMP) 3
 
-	FILE_TIMESTAMP adjustment = FAT_ADJ_OFFSET << FILE_TIMESTAMP_LO_BITS;
-	if (ORDINARY_MTIME_MIN + adjustment <= adjusted_mtime)
-	  adjusted_mtime -= adjustment;
+      FILE_TIMESTAMP adjustment = FAT_ADJ_OFFSET << FILE_TIMESTAMP_LO_BITS;
+      if (ORDINARY_MTIME_MIN + adjustment <= adjusted_mtime)
+        adjusted_mtime -= adjustment;
 #elif defined(__EMX__)
-	/* FAT filesystems round time to the nearest even second!
-	   Allow for any file (NTFS or FAT) to perhaps suffer from this
-	   brain damage.  */
-	FILE_TIMESTAMP adjustment = (((FILE_TIMESTAMP_S (adjusted_mtime) & 1) == 0
-		       && FILE_TIMESTAMP_NS (adjusted_mtime) == 0)
-		      ? (FILE_TIMESTAMP) 1 << FILE_TIMESTAMP_LO_BITS
-		      : 0);
+      /* FAT filesystems round time to the nearest even second!
+         Allow for any file (NTFS or FAT) to perhaps suffer from this
+         brain damage.  */
+      FILE_TIMESTAMP adjustment = (((FILE_TIMESTAMP_S (adjusted_mtime) & 1) == 0
+                     && FILE_TIMESTAMP_NS (adjusted_mtime) == 0)
+                    ? (FILE_TIMESTAMP) 1 << FILE_TIMESTAMP_LO_BITS
+                    : 0);
 #endif
 
-	/* If the file's time appears to be in the future, update our
-	   concept of the present and try once more.  */
-	if (adjusted_now < adjusted_mtime)
-	  {
-	    int resolution;
-	    FILE_TIMESTAMP now = file_timestamp_now (&resolution);
-	    adjusted_now = now + (resolution - 1);
-	    if (adjusted_now < adjusted_mtime)
-	      {
+      /* If the file's time appears to be in the future, update our
+         concept of the present and try once more.  */
+      if (adjusted_now < adjusted_mtime)
+        {
+          int resolution;
+          FILE_TIMESTAMP now = file_timestamp_now (&resolution);
+          adjusted_now = now + (resolution - 1);
+          if (adjusted_now < adjusted_mtime)
+            {
 #ifdef NO_FLOAT
-		error (NILF, _("Warning: File `%s' has modification time in the future"),
-                       file->name);
+              error (NILF, _("Warning: File `%s' has modification time in the future"),
+                     file->name);
 #else
-		double from_now =
-		  (FILE_TIMESTAMP_S (mtime) - FILE_TIMESTAMP_S (now)
-		   + ((FILE_TIMESTAMP_NS (mtime) - FILE_TIMESTAMP_NS (now))
-		      / 1e9));
-		error (NILF, _("Warning: File `%s' has modification time %.2g s in the future"),
-		       file->name, from_now);
+              double from_now =
+                (FILE_TIMESTAMP_S (mtime) - FILE_TIMESTAMP_S (now)
+                 + ((FILE_TIMESTAMP_NS (mtime) - FILE_TIMESTAMP_NS (now))
+                    / 1e9));
+              error (NILF, _("Warning: File `%s' has modification time %.2g s in the future"),
+                     file->name, from_now);
 #endif
-		clock_skew_detected = 1;
-	      }
-          }
-      }
-  }
+              clock_skew_detected = 1;
+            }
+        }
+    }
 
   /* Store the mtime into all the entries for this file.  */
@@ -1350,11 +1381,16 @@
 
   EINTRLOOP (e, stat (name, &st));
-  if (e != 0)
-    {
-      if (errno != ENOENT && errno != ENOTDIR)
-        perror_with_name ("stat: ", name);
+  if (e == 0)
+    mtime = FILE_TIMESTAMP_STAT_MODTIME (name, st);
+  else if (errno == ENOENT || errno == ENOTDIR)
+    mtime = NONEXISTENT_MTIME;
+  else
+    {
+      perror_with_name ("stat: ", name);
       return NONEXISTENT_MTIME;
     }
-  mtime = FILE_TIMESTAMP_STAT_MODTIME (name, st);
+
+  /* If we get here we either found it, or it doesn't exist.
+     If it doesn't exist see if we can use a symlink mtime instead.  */
 
 #ifdef MAKE_SYMLINKS
@@ -1383,6 +1419,7 @@
           if (e)
             {
-              /* Eh?  Just take what we have.  */
-              perror_with_name ("lstat: ", lpath);
+              /* Just take what we have so far.  */
+              if (errno != ENOENT && errno != ENOTDIR)
+                perror_with_name ("lstat: ", lpath);
               break;
             }
Index: trunk/src/gmake/remote-cstms.c
===================================================================
--- trunk/src/gmake/remote-cstms.c	(revision 466)
+++ trunk/src/gmake/remote-cstms.c	(revision 503)
@@ -4,21 +4,20 @@
    the Make maintainers.
 
-Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
Index: trunk/src/gmake/remote-stub.c
===================================================================
--- trunk/src/gmake/remote-stub.c	(revision 466)
+++ trunk/src/gmake/remote-stub.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Template for the remote job exportation interface to GNU Make.
-Copyright (C) 1988, 1989, 1992, 1993, 1996 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
Index: trunk/src/gmake/rule.c
===================================================================
--- trunk/src/gmake/rule.c	(revision 466)
+++ trunk/src/gmake/rule.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Pattern and suffix rule internals for GNU Make.
-Copyright (C) 1988,89,90,91,92,93, 1998 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -206,9 +205,6 @@
       depname[0] = '%';
       bcopy (source, depname + 1, len + 1);
-      deps = (struct dep *) xmalloc (sizeof (struct dep));
-      deps->next = 0;
+      deps = alloc_dep ();
       deps->name = depname;
-      deps->ignore_mtime = 0;
-      deps->need_2nd_expansion = 0;
     }
 
@@ -432,5 +428,6 @@
       /* We might leak dep->name here, but I'm not sure how to fix this: I
          think that pointer might be shared (e.g., in the file hash?)  */
-      free ((char *) dep);
+      dep->name = 0; /* Make sure free_dep does not free name.  */
+      free_dep (dep);
       dep = t;
     }
@@ -481,6 +478,6 @@
                      struct commands *commands, int override)
 {
-  register struct rule *r = (struct rule *) xmalloc (sizeof (struct rule));
-  register unsigned int max_targets, i;
+  unsigned int max_targets, i;
+  struct rule *r = (struct rule *) xmalloc (sizeof (struct rule));
 
   r->cmds = commands;
Index: trunk/src/gmake/rule.h
===================================================================
--- trunk/src/gmake/rule.h	(revision 466)
+++ trunk/src/gmake/rule.h	(revision 503)
@@ -1,20 +1,19 @@
 /* Definitions for using pattern rules in GNU Make.
-Copyright (C) 1988, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 /* Structure used for pattern rules.  */
Index: trunk/src/gmake/signame.c
===================================================================
--- trunk/src/gmake/signame.c	(revision 466)
+++ trunk/src/gmake/signame.c	(revision 503)
@@ -1,20 +1,18 @@
 /* Convert between signal names and numbers.
-Copyright (C) 1990,92,93,95,96,99, 2002 Free Software Foundation, Inc.
-This file was part of the GNU C Library, but is now part of GNU make.
-
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -22,5 +20,5 @@
 /* If the system provides strsignal, we don't need it. */
 
-#if !defined(HAVE_STRSIGNAL)
+#if !HAVE_STRSIGNAL
 
 /* If the system provides sys_siglist, we'll use that.
@@ -28,5 +26,5 @@
  */
 
-#if !defined(HAVE_DECL_SYS_SIGLIST)
+#if !HAVE_DECL_SYS_SIGLIST
 
 /* Some systems do not define NSIG in <signal.h>.  */
@@ -236,8 +234,14 @@
 
 #if ! HAVE_DECL_SYS_SIGLIST
+# if HAVE_DECL__SYS_SIGLIST
+#  define sys_siglist _sys_siglist
+# elif HAVE_DECL___SYS_SIGLIST
+#  define sys_siglist __sys_siglist
+# else
   static char sig_initted = 0;
 
   if (!sig_initted)
     sig_initted = signame_init ();
+# endif
 #endif
 
Index: trunk/src/gmake/strcache.c
===================================================================
--- trunk/src/gmake/strcache.c	(revision 503)
+++ trunk/src/gmake/strcache.c	(revision 503)
@@ -0,0 +1,216 @@
+/* Constant string caching for GNU Make.
+Copyright (C) 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
+#include "make.h"
+
+#include <assert.h>
+
+#include "hash.h"
+
+/* The size (in bytes) of each cache buffer.  */
+#define CACHE_BUFFER_SIZE   (4096)
+
+
+/* A string cached here will never be freed, so we don't need to worry about
+   reference counting.  We just store the string, and then remember it in a
+   hash so it can be looked up again. */
+
+struct strcache {
+  struct strcache *next;    /* The next block of strings.  */
+  char *end;                /* Pointer to the beginning of the free space.  */
+  int count;                /* # of strings in this buffer (for stats).  */
+  int bytesfree;            /* The amount of the buffer that is free.  */
+  char buffer[1];           /* The buffer comes after this.  */
+};
+
+static int bufsize = CACHE_BUFFER_SIZE;
+static struct strcache *strcache = NULL;
+
+static struct strcache *
+new_cache()
+{
+  struct strcache *new;
+  new = (struct strcache *) xmalloc (sizeof (*new) + bufsize);
+  new->end = new->buffer;
+  new->count = 0;
+  new->bytesfree = bufsize;
+
+  new->next = strcache;
+  strcache = new;
+
+  return new;
+}
+
+static const char *
+add_string(const char *str, int len)
+{
+  struct strcache *best = NULL;
+  struct strcache *sp;
+  const char *res;
+
+  /* If the string we want is too large to fit into a single buffer, then we're
+     screwed; nothing will ever fit!  Change the maximum size of the cache to
+     be big enough.  */
+  if (len > bufsize)
+    bufsize = len * 2;
+
+  /* First, find a cache with enough free space.  We always look through all
+     the blocks and choose the one with the best fit (the one that leaves the
+     least amount of space free).  */
+  for (sp = strcache; sp != NULL; sp = sp->next)
+    if (sp->bytesfree > len && (!best || best->bytesfree > sp->bytesfree))
+      best = sp;
+
+  /* If nothing is big enough, make a new cache.  */
+  if (!best)
+    best = new_cache();
+
+  assert (best->bytesfree > len);
+
+  /* Add the string to the best cache.  */
+  res = best->end;
+  memcpy (best->end, str, len);
+  best->end += len;
+  *(best->end++) = '\0';
+  best->bytesfree -= len + 1;
+  ++best->count;
+
+  return res;
+}
+
+
+/* Hash table of strings in the cache.  */
+
+static unsigned long
+str_hash_1 (const void *key)
+{
+  return_ISTRING_HASH_1 ((const char *) key);
+}
+
+static unsigned long
+str_hash_2 (const void *key)
+{
+  return_ISTRING_HASH_2 ((const char *) key);
+}
+
+static int
+str_hash_cmp (const void *x, const void *y)
+{
+  return_ISTRING_COMPARE ((const char *) x, (const char *) y);
+}
+
+static struct hash_table strings;
+
+static const char *
+add_hash (const char *str, int len)
+{
+  /* Look up the string in the hash.  If it's there, return it.  */
+  char **slot = (char **) hash_find_slot (&strings, str);
+  const char *key = *slot;
+
+  if (!HASH_VACANT (key))
+    return key;
+
+  /* Not there yet so add it to a buffer, then into the hash table.  */
+  key = add_string (str, len);
+  hash_insert_at (&strings, key, slot);
+  return key;
+}
+
+/* Returns true if the string is in the cache; false if not.  */
+int
+strcache_iscached (const char *str)
+{
+  struct strcache *sp;
+
+  for (sp = strcache; sp != 0; sp = sp->next)
+    if (str >= sp->buffer && str < sp->end)
+      return 1;
+
+  return 0;
+}
+
+/* If the string is already in the cache, return a pointer to the cached
+   version.  If not, add it then return a pointer to the cached version.
+   Note we do NOT take control of the string passed in.  */
+const char *
+strcache_add (const char *str)
+{
+  return add_hash (str, strlen (str));
+}
+
+const char *
+strcache_add_len (const char *str, int len)
+{
+  char *key = alloca (len + 1);
+  memcpy (key, str, len);
+  key[len] = '\0';
+
+  return add_hash (key, len);
+}
+
+int
+strcache_setbufsize(int size)
+{
+  if (size > bufsize)
+    bufsize = size;
+  return bufsize;
+}
+
+void
+strcache_init (void)
+{
+  hash_init (&strings, 1000, str_hash_1, str_hash_2, str_hash_cmp);
+}
+
+
+/* Generate some stats output.  */
+
+void
+strcache_print_stats (const char *prefix)
+{
+  int numbuffs = 0, numstrs = 0;
+  int totsize = 0, avgsize, maxsize = 0, minsize = bufsize;
+  int totfree = 0, avgfree, maxfree = 0, minfree = bufsize;
+  const struct strcache *sp;
+
+  for (sp = strcache; sp != NULL; sp = sp->next)
+    {
+      int bf = sp->bytesfree;
+      int sz = (sp->end - sp->buffer) + bf;
+
+      ++numbuffs;
+      numstrs += sp->count;
+
+      totsize += sz;
+      maxsize = (sz > maxsize ? sz : maxsize);
+      minsize = (sz < minsize ? sz : minsize);
+
+      totfree += bf;
+      maxfree = (bf > maxfree ? bf : maxfree);
+      minfree = (bf < minfree ? bf : minfree);
+    }
+
+  avgsize = numbuffs ? (int)(totsize / numbuffs) : 0;
+  avgfree = numbuffs ? (int)(totfree / numbuffs) : 0;
+
+  printf (_("\n%s # of strings in strcache: %d\n"), prefix, numstrs);
+  printf (_("%s # of strcache buffers: %d\n"), prefix, numbuffs);
+  printf (_("%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"),
+          prefix, totsize, maxsize, minsize, avgsize);
+  printf (_("%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"),
+          prefix, totfree, maxfree, minfree, avgfree);
+}
Index: trunk/src/gmake/subproc.bat
===================================================================
--- trunk/src/gmake/subproc.bat	(revision 466)
+++ trunk/src/gmake/subproc.bat	(revision 503)
@@ -1,2 +1,21 @@
+@echo off
+rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+rem 2005, 2006 Free Software Foundation, Inc.
+rem This file is part of GNU Make.
+
+rem GNU Make is free software; you can redistribute it and/or modify it under
+rem the terms of the GNU General Public License as published by the Free
+rem Software Foundation; either version 2, or (at your option) any later
+rem version.
+
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+rem more details.
+
+rem You should have received a copy of the GNU General Public License along
+rem with GNU Make; see the file COPYING.  If not, write to the Free Software
+rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 cd w32\subproc
 set MAKE=%2
Index: trunk/src/gmake/tests/.cvsignore
===================================================================
--- trunk/src/gmake/tests/.cvsignore	(revision 466)
+++ 	(revision )
@@ -1,1 +1,0 @@
-work
Index: trunk/src/gmake/tests/ChangeLog
===================================================================
--- trunk/src/gmake/tests/ChangeLog	(revision 466)
+++ trunk/src/gmake/tests/ChangeLog	(revision 503)
@@ -1,2 +1,229 @@
+2006-04-01  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/functions/realpath: Don't run tests with multiple
+	initial slashes on Windows: those paths mean something different.
+
+2006-03-19  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/features/parallelism: Test that the jobserver is
+	properly managed when we have to re-exec the master instance of
+	make.
+
+2006-03-17  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/features/statipattrules: Add tests for bug #16053.
+
+2006-03-09  Paul Smith  <psmith@gnu.org>
+
+	* scripts/features/escape: Use "pre:" not "p:" to avoid conflicts
+	with DOS drive letters.  Fixes Savannah bug #15947.
+
+	* test_driver.pl (run_each_test): Set the status properly even
+	when a test fails to execute.  Fixes Savannah bug #15942.
+
+	* scripts/functions/foreach: Use a different environment variable
+	other than PATH to avoid differences with Windows platforms.
+	Fixes Savannah bug #15938.
+
+2006-03-05  Paul D. Smith  <psmith@gnu.org>
+
+	* run_make_tests.pl (set_more_defaults): Add CYGWIN_NT as a port
+	type W32.  Fixed Savannah bug #15937.
+
+	* scripts/features/default_names: Don't call error() when the test
+	fails.  Fixes Savannah bug #15941.
+
+2006-02-17  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/features/targetvars: Test a complex construction which
+	guarantees that we have to merge variable lists of different
+	sizes.  Tests for Savannah bug #15757.
+
+2006-02-15  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/functions/error: Make sure filename/lineno information
+	is related to where the error is expanded, not where it's set.
+	* scripts/functions/warning: Ditto.
+	* scripts/functions/foreach: Check for different error conditions.
+	* scripts/functions/word: Ditto.
+	* scripts/variables/negative: Test some variable reference failure
+	conditions.
+	* scripts/options/warn-undefined-variables: Test the
+	--warn-undefined-variables flag.
+
+2006-02-09  Paul D. Smith  <psmith@gnu.org>
+
+	* run_make_tests.pl (set_more_defaults): Update valgrind support
+	for newer versions.
+	* test_driver.pl (toplevel): Skip all hidden files/directories (ones
+	beginning with ".").
+
+	* scripts/functions/andor: Tests for $(and ..) and $(or ...)
+	functions.
+
+2006-02-08  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/features/parallelism: Add a test for bug #15641.
+
+2006-02-06  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/options/dash-W: Add a test for bug #15341.
+
+2006-01-03  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/variables/automatic: Add a test for bug #8154.
+
+	* README: Update to reflect the current state of the test suite.
+
+2005-12-12  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/features/parallelism, scripts/functions/wildcard,
+	scripts/targets/FORCE, scripts/targets/PHONY,
+	scripts/targets/SILENT: Use the default setting for
+	$delete_command.  Fixes bug #15085.
+
+	* run_make_tests.pl (get_this_pwd) [VMS]: Use -no_ask with delete_file.
+
+2005-12-11  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/misc/general4: Test implicit rules with '$' in the
+	prereq list & prereq patterns.
+	* scripts/features/se_implicit: Add in .SECONDEXPANSION settings.
+
+2005-12-09  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/features/patternrules: Add a test for bug #13022.
+
+2005-12-07  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/features/double_colon: Add a test for bug #14334.
+
+2005-11-17  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/functions/flavor: Add a test for the flavor function.
+
+2005-11-14  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/variables/INCLUDE_DIRS: Add a test for the .INCLUDE_DIRS
+	special variable.
+
+2005-10-24  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/misc/general4: Test '$$' in prerequisites list.
+	* scripts/features/statipattrules: Rewrite to use run_make_test().
+	Add various static pattern info.
+	* scripts/features/se_statpat: Enable .SECONDEXPANSION target.
+	* scripts/features/se_explicit: Add tests for handling '$$' in
+	prerequisite lists with and without setting .SECONDEXPANSION.
+	* scripts/features/order_only: Convert to run_make_test().
+	* run_make_tests.pl (set_more_defaults): If we can't get the value
+	of $(MAKE) from make, then fatal immediately.
+
+2005-08-31  Paul D. Smith  <psmith@gnu.org>
+
+	* run_make_tests.pl (get_this_pwd): Require the POSIX module (in
+	an eval to trap errors) and if it exists, use POSIX::getcwd to
+	find the working directory.  If it doesn't exist, go back to the
+	previous methods.  This tries to be more accurate on Windows
+	systems.
+
+2005-08-29  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/functions/abspath: Add some text to the error messages
+	to get a better idea of what's wrong.  Make warnings instead of
+	errors.
+
+	* scripts/features/patspecific_vars: Don't use "test", which is
+	UNIX specific.  Print the values and let the test script match
+	them.
+
+2005-08-25  Paul Smith  <psmith@gnu.org>
+
+	* scripts/variables/SHELL: Use a /./ prefix instead of //: the
+	former works better with non-UNIX environments.  Fixes Savannah
+	bug #14129.
+
+2005-08-13  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/functions/wildcard: Wrap calls to $(wildcard ) with
+	$(sort) so that the resulting order is no longer filesystem-
+	dependant.
+
+2005-08-10  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/features/statipattrules: Add a test for Savannah bug #13881.
+
+2005-08-07  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/features/parallelism: Add a test for a bug reported by
+	Michael Matz (matz@suse.de) in which make exits without waiting
+	for all its children in some situations during parallel builds.
+
+2005-07-08  Paul D. Smith  <psmith@gnu.org>
+
+	* test_driver.pl: Reset the environment to a clean value every
+	time before we invoke make.  I'm suspicious that the environment
+	isn't handled the same way in Windows as it is in UNIX, and some
+	variables are leaking out beyond the tests they are intended for.
+	Create an %extraENV hash tests can set to add more env. vars.
+	* tests/scripts/features/export: Change to use %extraENV.
+	* tests/scripts/functions/eval: Ditto.
+	* tests/scripts/functions/origin: Ditto.
+	* tests/scripts/options/dash-e: Ditto.
+	* tests/scripts/variables/SHELL: Ditto.
+
+2005-06-27  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/options/dash-W: Use 'echo >>' instead of touch to update
+	files.
+	* scripts/features/reinvoke: Rewrite to be safer on systems with
+	subsecond timestamps.
+	* scripts/features/patternrules: False exits with different error
+	codes on different systems (for example, Linux => 1, Solaris => 255).
+
+	* scripts/options/dash-W: Set the timestamp to foo.x in the future,
+	to be sure it will be considered updated when it's remade.
+
+2005-06-26  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/functions/shell: New test suite for the shell function.
+
+2005-06-25  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/features/include: Test include/-include/sinclude with no
+	arguments.  Tests fix for Savannah bug #1761.
+
+	* scripts/misc/general3: Implement comprehensive testing of
+	backslash-newline behavior in command scripts: various types of
+	quoting, fast path / slow path, etc.
+	Tests fix for Savannah bug #1332.
+
+	* scripts/options/symlinks: Test symlinks to non-existent files.
+	Tests fix for Savannah bug #13280.
+
+	* scripts/misc/general3: Test semicolons in variable references.
+	Tests fix for Savannah bug #1454.
+
+	* scripts/variables/MAKE_RESTARTS: New file: test the
+	MAKE_RESTARTS variable.
+	* scripts/options/dash-B: Test re-exec doesn't loop infinitely.
+	Tests fix for Savannah bug #7566.
+	* scripts/options/dash-W: New file: test the -W flag, including
+	re-exec infinite looping.
+
+2005-06-12  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/misc/close_stdout: Add a test for Savannah bug #1328.
+	This test only works on systems that have /dev/full (e.g., Linux).
+
+2005-06-09  Paul D. Smith  <psmith@gnu.org>
+
+        * scripts/functions/foreach: Add a test for Savannah bug #11913.
+
+2005-05-31  Boris Kolpackov  <boris@kolpackov.net>
+
+	* scripts/features/include: Add a test for Savannah bug #13216.
+	* scripts/features/patternrules: Add a test for Savannah bug #13218.
+
 2005-05-13  Paul D. Smith  <psmith@gnu.org>
 
@@ -308,7 +535,6 @@
 2002-07-11  Paul D. Smith  <psmith@gnu.org>
 
-	* run_make_tests.pl (valid_option): Add support for Valgrind
-	<http://developer.kde.org/~sewardj/>.  Use -valgrind option to the
-	test suite.
+	* run_make_tests.pl (valid_option): Add support for Valgrind.  Use
+	-valgrind option to the test suite.
 	(set_more_defaults): Set up the file descriptor to capture
 	Valgrind output.  We have to unset its close-on-exec flag; we
@@ -594,2 +820,20 @@
 
 	ChangeLog file for the test suite created.
+
+
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/tests/NEWS
===================================================================
--- trunk/src/gmake/tests/NEWS	(revision 466)
+++ trunk/src/gmake/tests/NEWS	(revision 503)
@@ -160,2 +160,21 @@
 
     Some new tests were added.
+
+
+
+-------------------------------------------------------------------------------
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/tests/README
===================================================================
--- trunk/src/gmake/tests/README	(revision 466)
+++ trunk/src/gmake/tests/README	(revision 503)
@@ -1,32 +1,35 @@
-This is release 3.78 (September 6, 1999) of the GNU make test
-suite.  See the file NEWS for some of the changes since the last
-release.
+The test suite was originally written by Steve McGee and Chris Arthur.
+It is covered by the GNU General Public License (Version 2), described
+in the file COPYING.  It has been maintained as part of GNU make proper
+since GNU make 3.78.
 
-This release is made by psmith@gnu.org to correspond to GNU make 3.78.
-It won't work correctly for versions before that.  In addition to some
-infrastructure changes I've added a number of new tests.
+This entire test suite, including all test files, are copyright and
+distributed under the following terms:
 
-Rob Tulloh has contributed changes to get the suite running on NT.
+ -----------------------------------------------------------------------------
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This file is part of GNU Make.
 
-Eli Zaretskii and Esa A E Peuha <peuha@cc.helsinki.fi> have contributed
-changes to get the suite running on DJGPP/DOS.
+ GNU Make is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2, or (at your option) any later version.
 
-This package has a number of problems which preclude me from
-distributing it with make as a default "make check" test suite.  The
-most serious of these is that it's not parallelizable: it scribbles all
-over its installation directory and so can only test one make at a
-time.  I simply don't have time to do more with this than I am so far;
-I'm very actively interested in finding someone willing to overhaul the
-test suite infrastructure.  If you're interested, contact me (see below)!
+ GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-The test suite thus far has been written by Steve McGee, Chris Arthur,
-and Paul D. Smith.  It is covered by the GNU General Public License
-(Version 2), described in the file COPYING.
+ You should have received a copy of the GNU General Public License along with
+ GNU Make; see the file COPYING.  If not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ -----------------------------------------------------------------------------
 
-The test suite requires Perl and is known to work with Perl 4.036 and
-Perl 5.004 (available from ftp.gnu.org, and portable to many machines).
-Earlier or later versions may work; I don't know.  It assumes that the
-first "diff" it finds is GNU diff, but that only matters if a test
-fails.
+The test suite requires Perl.  These days, you should have at least Perl
+5.004 (available from ftp.gnu.org, and portable to many machines).  It
+used to work with Perl 4.036 but official support for Perl 4.x was
+abandoned a long time ago, due to lack of testbeds, as well as interest.
+
+The test suite assumes that the first "diff" it finds on your PATH is
+GNU diff, but that only matters if a test fails.
 
 To run the test suite on a UNIX system, use "perl ./run_make_tests"
@@ -44,16 +47,12 @@
 
 Tests cannot end with a "~" character, as the test suite will ignore any
-that do (I was tired of having it run my Emacs backup files as test :)
-
-If you want to run the tests in parallel, you should use the mkshadow
-script included here to create temporary "copies" (via symbolic links)
-of the test suite, one for each parallel job.  This is a pain and one
-day maybe the test suite will be rewritten so it's no longer
-necessary--volunteers welcome!
+that do (I was tired of having it run my Emacs backup files as tests :))
 
 Also, sometimes the tests may behave strangely on networked
 filesystems.  You can use mkshadow to create a copy of the test suite in
 /tmp or similar, and try again.  If the error disappears, it's an issue
-with your network or file server, not GNU make (I believe).
+with your network or file server, not GNU make (I believe).  This
+shouldn't happen very often anymore: I've done a lot of work on the
+tests to reduce the impacts of this situation.
 
 The options/dash-l test will not really test anything if the copy of
@@ -73,7 +72,32 @@
 other possible options for the test suite.
 
+
+Open Issues
+-----------
+
+The test suite has a number of problems which should be addressed.  One
+VERY serious one is that there is no real documentation.  You just have
+to see the existing tests.  Use the newer tests: many of the tests
+haven't been updated to use the latest/greatest test methods.  See the
+ChangeLog in the tests directory for pointers.
+
+The second serious problem is that it's not parallelizable: it scribbles
+all over its installation directory and so can only test one make at a
+time.  The third serious problem is that it's not relocatable: the only
+way it works when you build out of the source tree is to create
+symlinks, which doesn't work on every system and is bogus to boot.  The
+fourth serious problem is that it doesn't create its own sandbox when
+running tests, so that if a test forgets to clean up after itself that
+can impact future tests.
+
+
+Bugs
+----
+
 Any complaints/suggestions/bugs/etc. for the test suite itself (as
-opposed to problems in make that the suite finds) should be sent to
-psmith@gnu.org.  Enjoy!
+opposed to problems in make that the suite finds) should be handled the
+same way as normal GNU make bugs/problems (see the README for GNU make).
+
+
                                                 Paul D. Smith
 						Chris Arthur
Index: trunk/src/gmake/tests/mkshadow
===================================================================
--- trunk/src/gmake/tests/mkshadow	(revision 466)
+++ trunk/src/gmake/tests/mkshadow	(revision 503)
@@ -4,4 +4,19 @@
 # Typically you'd put the shadow in /tmp or another local disk
 #
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 case "$1" in
Index: trunk/src/gmake/tests/run_make_tests.pl
===================================================================
--- trunk/src/gmake/tests/run_make_tests.pl	(revision 466)
+++ trunk/src/gmake/tests/run_make_tests.pl	(revision 503)
@@ -12,8 +12,28 @@
 #                        (and others)
 
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 $valgrind = 0;              # invoke make with valgrind
+$valgrind_args = '--num-callers=15 --tool=memcheck --leak-check=full';
 $pure_log = undef;
 
 require "test_driver.pl";
+
+# Some target systems might not have the POSIX module...
+$has_POSIX = eval { require "POSIX.pm" };
 
 #$SIG{INT} = sub { print STDERR "Caught a signal!\n"; die @_; };
@@ -181,10 +201,12 @@
 
 sub get_this_pwd {
-  if ($vos) {
-    $delete_command = "delete_file";
+  $delete_command = 'rm -f';
+  if ($has_POSIX) {
+    $__pwd = POSIX::getcwd();
+  } elsif ($vos) {
+    $delete_command = "delete_file -no_ask";
     $__pwd = `++(current_dir)`;
-  }
-  else {
-    $delete_command = "rm";
+  } else {
+    # No idea... just try using pwd as a last resort.
     chop ($__pwd = `pwd`);
   }
@@ -217,5 +239,5 @@
    # This is probably not specific enough.
    #
-   if ($osname =~ /Windows/i || $osname =~ /MINGW32/i) {
+   if ($osname =~ /Windows/i || $osname =~ /MINGW32/i || $osname =~ /CYGWIN_NT/i) {
      $port_type = 'W32';
    }
@@ -249,6 +271,9 @@
    # Find the full pathname of Make.  For DOS systems this is more
    # complicated, so we ask make itself.
-   $make_path = `sh -c 'echo "all:;\@echo \\\$(MAKE)" | $make_path -f-'`;
-   chop $make_path;
+   my $mk = `sh -c 'echo "all:;\@echo \\\$(MAKE)" | $make_path -f-'`;
+   chop $mk;
+   $mk or die "FATAL ERROR: Cannot determine the value of \$(MAKE):\n
+'echo \"all:;\@echo \\\$(MAKE)\" | $make_path -f-' failed!\n";
+   $make_path = $mk;
    print "Make\t= `$make_path'\n" if $debug;
 
@@ -304,10 +329,9 @@
 
    if ($valgrind) {
-#     use POSIX qw(:fcntl_h);
-#     require Fcntl;
      open(VALGRIND, "> valgrind.out")
        || die "Cannot open valgrind.out: $!\n";
      #  -q --leak-check=yes
-     $make_path = "valgrind --num-callers=15 --logfile-fd=".fileno(VALGRIND)." $make_path";
+     exists $ENV{VALGRIND_ARGS} and $valgrind_args = $ENV{VALGRIND_ARGS};
+     $make_path = "valgrind --log-fd=".fileno(VALGRIND)." $valgrind_args $make_path";
      # F_SETFD is 2
      fcntl(VALGRIND, 2, 0) or die "fcntl(setfd) failed: $!\n";
Index: trunk/src/gmake/tests/scripts/features/default_names
===================================================================
--- trunk/src/gmake/tests/scripts/features/default_names	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/default_names	(revision 503)
@@ -8,58 +8,34 @@
 
 open(MAKEFILE,"> $makefile");
-
 print MAKEFILE "FIRST: ; \@echo It chose GNUmakefile\n";
-
 close(MAKEFILE);
 
 # DOS/WIN32 platforms preserve case, but Makefile is the same file as makefile.
 # Just test what we can here (avoid Makefile versus makefile test).
-#
-if ($port_type eq 'UNIX')
-{
+
+if ($port_type eq 'UNIX') {
   # Create another makefile called "makefile"
   open(MAKEFILE,"> makefile");
-
   print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
-
   close(MAKEFILE);
 }
 
-
 # Create another makefile called "Makefile"
 open(MAKEFILE,"> Makefile");
-
 print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
-
 close(MAKEFILE);
 
 
 &run_make_with_options("","",&get_logfile);
-
-# Create the answer to what should be produced by this Makefile
-$answer = "It chose GNUmakefile\n";
-
-# COMPARE RESULTS
-
-&compare_output($answer,&get_logfile(1)) || &error("abort");
+&compare_output("It chose GNUmakefile\n",&get_logfile(1));
 unlink $makefile;
 
-# DOS/WIN32 platforms preserve case, but Makefile is the same file as makefile.
-# Just test what we can here (avoid Makefile versus makefile test).
-#
-if ($port_type eq 'UNIX')
-{
-  $answer = "It chose makefile\n";
-
+if ($port_type eq 'UNIX') {
   &run_make_with_options("","",&get_logfile);
-
-  &compare_output($answer,&get_logfile(1)) || &error("abort");
+  &compare_output("It chose makefile\n",&get_logfile(1));
   unlink "makefile";
 }
 
-$answer = "It chose Makefile\n";
-
 &run_make_with_options("","",&get_logfile);
-
-&compare_output($answer,&get_logfile(1)) || &error("abort");
+&compare_output("It chose Makefile\n",&get_logfile(1));
 unlink "Makefile";
Index: trunk/src/gmake/tests/scripts/features/double_colon
===================================================================
--- trunk/src/gmake/tests/scripts/features/double_colon	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/double_colon	(revision 503)
@@ -125,3 +125,31 @@
 unlink('foo','f1.h','f2.h');
 
+
+# TEST 9: make sure all rules in s double colon family get executed
+#         (Savannah bug #14334).
+#
+
+&touch('one');
+&touch('two');
+
+run_make_test('
+.PHONY: all
+all: result
+
+result:: one
+	@echo $^ >>$@
+	@echo $^
+
+result:: two
+	@echo $^ >>$@
+	@echo $^
+
+',
+'',
+'one
+two');
+
+unlink('result','one','two');
+
+# This tells the test driver that the perl test script executed properly.
 1;
Index: trunk/src/gmake/tests/scripts/features/errors
===================================================================
--- trunk/src/gmake/tests/scripts/features/errors	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/errors	(revision 503)
@@ -1,2 +1,4 @@
+#                                                                    -*-perl-*-
+
 $description = "The following tests the -i option and the '-' in front of \n"
               ."commands to test that make ignores errors in these commands\n"
@@ -15,9 +17,9 @@
 if ($vos)
 {
-   $delete_command = "delete_file";
+   $rm_command = "delete_file";
 }
 else
 {
-   $delete_command = "rm";
+   $rm_command = "rm";
 }
 
@@ -27,9 +29,9 @@
 
 print MAKEFILE "clean:\n"
-              ."\t-$delete_command cleanit\n"
-              ."\t$delete_command foo\n"
+              ."\t-$rm_command cleanit\n"
+              ."\t$rm_command foo\n"
 	      ."clean2: \n"
-              ."\t$delete_command cleanit\n"
-              ."\t$delete_command foo\n";
+              ."\t$rm_command cleanit\n"
+              ."\t$rm_command foo\n";
 
 # END of Contents of MAKEFILE
@@ -40,5 +42,5 @@
 
 unlink("cleanit");
-$cleanit_error = `sh -c "$delete_command cleanit 2>&1"`;
+$cleanit_error = `sh -c "$rm_command cleanit 2>&1"`;
 $delete_error_code = $? >> 8;
 
@@ -46,8 +48,8 @@
 # -------
 
-$answer = "$delete_command cleanit\n"
+$answer = "$rm_command cleanit\n"
          . $cleanit_error
          ."$make_name: [clean] Error $delete_error_code (ignored)\n"
-         ."$delete_command foo\n";
+         ."$rm_command foo\n";
 
 &run_make_with_options($makefile,"",&get_logfile);
@@ -73,8 +75,8 @@
 # -------
 
-$answer = "$delete_command cleanit\n"
+$answer = "$rm_command cleanit\n"
          . $cleanit_error
          ."$make_name: [clean2] Error $delete_error_code (ignored)\n"
-         ."$delete_command foo\n";
+         ."$rm_command foo\n";
 
 &run_make_with_options($makefile,"clean2 -i",&get_logfile);
Index: trunk/src/gmake/tests/scripts/features/escape
===================================================================
--- trunk/src/gmake/tests/scripts/features/escape	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/escape	(revision 503)
@@ -7,14 +7,4 @@
 Make sure that escaping of '#' works.";
 
-open(MAKEFILE,"> $makefile");
-
-print MAKEFILE <<'EOF';
-$(path)foo : ; @echo cp $^ $@
-
-foo\ bar: ; @echo 'touch "$@"'
-
-sharp: foo\#bar.ext
-foo\#bar.ext: ; @echo foo\#bar.ext = '$@'
-EOF
 
 close(MAKEFILE);
@@ -23,37 +13,45 @@
 # TEST 1
 
-&run_make_with_options($makefile, "", &get_logfile);
-$answer = "cp foo\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test('
+$(path)foo : ; @echo "touch ($@)"
+
+foo\ bar: ; @echo "touch ($@)"
+
+sharp: foo\#bar.ext
+foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"',
+	      '',
+	      'touch (foo)');
 
 # TEST 2: This one should fail, since the ":" is unquoted.
 
-&run_make_with_options($makefile, "path=p:", &get_logfile, 512);
-$answer = "$makefile:1: *** target pattern contains no `%'.  Stop.\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef,
+	      'path=pre:',
+	      "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
+	      512);
 
 # TEST 3: This one should work, since we escape the ":".
 
-&run_make_with_options($makefile, "'path=p\\:'", &get_logfile, 0);
-$answer = "cp p:foo\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef,
+	      "'path=pre\\:'",
+	      'touch (pre:foo)');
 
 # TEST 4: This one should fail, since the escape char is escaped.
 
-&run_make_with_options($makefile, "'path=p\\\\:'", &get_logfile, 512);
-$answer = "$makefile:1: *** target pattern contains no `%'.  Stop.\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef,
+	      "'path=pre\\\\:'",
+	      "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
+	      512);
 
 # TEST 5: This one should work
 
-&run_make_with_options($makefile, "'foo bar'", &get_logfile, 0);
-$answer = "touch \"foo bar\"\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef,
+	      "'foo bar'",
+	      'touch (foo bar)');
 
 # TEST 6: Test escaped comments
 
-&run_make_with_options($makefile, "sharp", &get_logfile, 0);
-$answer = "foo#bar.ext = foo#bar.ext\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef,
+	      'sharp',
+	      'foo#bar.ext = (foo#bar.ext)');
 
 # This tells the test driver that the perl test script executed properly.
Index: trunk/src/gmake/tests/scripts/features/export
===================================================================
--- trunk/src/gmake/tests/scripts/features/export	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/export	(revision 503)
@@ -57,5 +57,5 @@
 # TEST 1: make sure vars inherited from the parent are exported
 
-$ENV{FOO} = 1;
+$extraENV{FOO} = 1;
 
 &run_make_with_options($makefile,"",&get_logfile,0);
@@ -65,6 +65,4 @@
 
 &compare_output($answer,&get_logfile(1));
-
-delete $ENV{FOO};
 
 # TEST 2: global export.  Explicit unexport takes precedence.
@@ -238,5 +236,5 @@
 close(MAKEFILE);
 
-@ENV{qw(A B C D E F G H I J)} = qw(1 2 3 4 5 6 7 8 9 10);
+@extraENV{qw(A B C D E F G H I J)} = qw(1 2 3 4 5 6 7 8 9 10);
 
 &run_make_with_options($makefile5,"",&get_logfile,0);
@@ -244,6 +242,4 @@
 &compare_output($answer,&get_logfile(1));
 
-delete @ENV{qw(A B C D E F G H I J)};
-
 
 # This tells the test driver that the perl test script executed properly.
Index: trunk/src/gmake/tests/scripts/features/include
===================================================================
--- trunk/src/gmake/tests/scripts/features/include	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/include	(revision 503)
@@ -79,4 +79,5 @@
   );
 
+
 # Test inheritance of dontcare flag when rebuilding makefiles.
 #
@@ -91,2 +92,29 @@
 
 1;
+
+
+# Make sure that we don't die when the command fails but we dontcare.
+# (Savannah bug #13216).
+#
+run_make_test('
+.PHONY: all
+all:; @:
+
+-include foo
+
+foo: bar; @:
+
+bar:; @exit 1
+', '', '');
+
+# Check include, sinclude, -include with no filenames.
+# (Savannah bug #1761).
+
+run_make_test('
+.PHONY: all
+all:; @:
+include
+-include
+sinclude', '', '');
+
+1;
Index: trunk/src/gmake/tests/scripts/features/order_only
===================================================================
--- trunk/src/gmake/tests/scripts/features/order_only	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/order_only	(revision 503)
@@ -6,7 +6,16 @@
 prerequisites and ensure they behave properly.  Test the \$| variable.";
 
-open(MAKEFILE,"> $makefile");
+# TEST #0 -- Basics
 
-print MAKEFILE <<'EOF';
+run_make_test('
+%r: | baz ; @echo $< $^ $|
+bar: foo
+foo:;@:
+baz:;@:',
+              '', "foo foo baz\n");
+
+# TEST #1 -- First try: the order-only prereqs need to be built.
+
+run_make_test(q!
 foo: bar | baz
 	@echo '$$^ = $^'
@@ -17,32 +26,17 @@
 
 bar baz:
-	touch $@
-EOF
-
-close(MAKEFILE);
-
-
-# TEST #1 -- just the syntax
-
-&run_make_with_options($makefile, "", &get_logfile);
-$answer = "touch bar\ntouch baz\n\$^ = bar\n\$| = baz\ntouch foo\n";
-&compare_output($answer,&get_logfile(1));
+	touch $@!,
+              '', "touch bar\ntouch baz\n\$^ = bar\n\$| = baz\ntouch foo\n");
 
 
 # TEST #2 -- now we do it again: baz is PHONY but foo should _NOT_ be updated
 
-&run_make_with_options($makefile, "", &get_logfile);
-$answer = "touch baz\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, '', "touch baz\n");
 
 unlink(qw(foo bar baz));
 
-# Test prereqs that are both order and non-order
+# TEST #3 -- Make sure the order-only prereq was promoted to normal.
 
-$makefile2 = &get_tmpfile;
-
-open(MAKEFILE,"> $makefile2");
-
-print MAKEFILE <<'EOF';
+run_make_test(q!
 foo: bar | baz
 	@echo '$$^ = $^'
@@ -55,21 +49,11 @@
 
 bar baz:
-	touch $@
-EOF
-
-close(MAKEFILE);
-
-# TEST #3 -- Make sure the order-only prereq was promoted to normal.
-
-&run_make_with_options($makefile2, "", &get_logfile);
-$answer = "touch bar\ntouch baz\n\$^ = bar baz\n\$| = \ntouch foo\n";
-&compare_output($answer,&get_logfile(1));
+	touch $@!,
+              '', "touch bar\ntouch baz\n\$^ = bar baz\n\$| = \ntouch foo\n");
 
 
 # TEST #4 -- now we do it again
 
-&run_make_with_options($makefile2, "", &get_logfile);
-$answer = "touch baz\n\$^ = bar baz\n\$| = \ntouch foo\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, '', "touch baz\n\$^ = bar baz\n\$| = \ntouch foo\n");
 
 unlink(qw(foo bar baz));
@@ -77,9 +61,7 @@
 # Test empty normal prereqs
 
-$makefile3 = &get_tmpfile;
+# TEST #5 -- make sure the parser was correct.
 
-open(MAKEFILE,"> $makefile3");
-
-print MAKEFILE <<'EOF';
+run_make_test(q!
 foo:| baz
 	@echo '$$^ = $^'
@@ -90,21 +72,10 @@
 
 baz:
-	touch $@
-EOF
-
-close(MAKEFILE);
-
-# TEST #5 -- make sure the parser was correct.
-
-&run_make_with_options($makefile3, "", &get_logfile);
-$answer = "touch baz\n\$^ = \n\$| = baz\ntouch foo\n";
-&compare_output($answer,&get_logfile(1));
-
+	touch $@!,
+              '', "touch baz\n\$^ = \n\$| = baz\ntouch foo\n");
 
 # TEST #6 -- now we do it again: this time foo won't be built
 
-&run_make_with_options($makefile3, "", &get_logfile);
-$answer = "touch baz\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, '', "touch baz\n");
 
 unlink(qw(foo baz));
@@ -112,9 +83,7 @@
 # Test order-only in pattern rules
 
-$makefile4 = &get_tmpfile;
+# TEST #7 -- make sure the parser was correct.
 
-open(MAKEFILE,"> $makefile4");
-
-print MAKEFILE <<'EOF';
+run_make_test(q!
 %.w : %.x | baz
 	@echo '$$^ = $^'
@@ -126,20 +95,11 @@
 .PHONY: baz
 foo.x baz:
-	touch $@
-EOF
-
-close(MAKEFILE);
-
-# TEST #7 -- make sure the parser was correct.
-
-&run_make_with_options($makefile4, "", &get_logfile);
-$answer = "touch foo.x\ntouch baz\n\$^ = foo.x\n\$| = baz\ntouch foo.w\n";
-&compare_output($answer,&get_logfile(1));
+	touch $@!,
+              '',
+              "touch foo.x\ntouch baz\n\$^ = foo.x\n\$| = baz\ntouch foo.w\n");
 
 # TEST #8 -- now we do it again: this time foo.w won't be built
 
-&run_make_with_options($makefile4, "", &get_logfile);
-$answer = "touch baz\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, '', "touch baz\n");
 
 unlink(qw(foo.w foo.x baz));
@@ -152,6 +112,6 @@
 bar: foo
 foo:;@:
-baz:;@:
-', '', "foo foo baz\n");
+baz:;@:',
+              '', "foo foo baz\n");
 
 
Index: trunk/src/gmake/tests/scripts/features/parallelism
===================================================================
--- trunk/src/gmake/tests/scripts/features/parallelism	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/parallelism	(revision 503)
@@ -19,9 +19,7 @@
 
 if ($vos) {
-  $delete_command = "delete_file -no_ask";
   $sleep_command = "sleep -seconds";
 }
 else {
-  $delete_command = "rm -f";
   $sleep_command = "sleep";
 }
@@ -84,3 +82,83 @@
               '-j2', "first\nfirst\nsecond\nsecond");
 
+# Michael Matz <matz@suse.de> reported a bug where if make is running in
+# parallel without -k and two jobs die in a row, but not too close to each
+# other, then make will quit without waiting for the rest of the jobs to die.
+
+run_make_test("
+.PHONY: all fail.1 fail.2 fail.3 ok
+all: fail.1 ok fail.2 fail.3
+
+fail.1 fail.2 fail.3:
+	\@sleep \$(patsubst fail.%,%,\$\@)
+	\@echo Fail
+	\@exit 1
+
+ok:
+	\@sleep 4
+	\@echo Ok done",
+              '-rR -j5', 'Fail
+#MAKE#: *** [fail.1] Error 1
+#MAKE#: *** Waiting for unfinished jobs....
+Fail
+#MAKE#: *** [fail.2] Error 1
+Fail
+#MAKE#: *** [fail.3] Error 1
+Ok done',
+             512);
+
+
+# Test for Savannah bug #15641.
+#
+run_make_test('
+.PHONY: all
+all:; @:
+
+-include foo.d
+
+foo.d: comp
+	@echo building $@
+
+comp: mod_a.o mod_b.o; @:
+
+mod_a.o mod_b.o:
+	@exit 1
+', '-j2', '');
+
+
+# Make sure that all jobserver FDs are closed if we need to re-exec the
+# master copy.
+#
+# First, find the "default" file descriptors we normally use
+# Then make sure they're still used.
+#
+# Right now we don't have a way to run a makefile and capture the output
+# without checking it, so we can't really write this test.
+
+# run_make_test('
+# submake: ; @$(MAKE) --no-print-directory -f #MAKEFILE# fdprint 5>output
+
+# dependfile: ; @echo FOO=bar > $@
+
+# INCL := true
+
+# FOO=foo
+# ifeq ($(INCL),true)
+# -include dependfile
+# endif
+
+# fdprint: ; @echo $(filter --jobserver%,$(MAKEFLAGS))
+
+# recurse: ; @$(MAKE) --no-print-directory -f #MAKEFILE# submake INCL=true',
+#               '-j2 INCL=false fdprint',
+#               'bar');
+
+# unlink('dependfile', 'output');
+
+
+# # Do it again, this time where the include is done by the non-master make.
+# run_make_test(undef, '-j2 recurse INCL=false', 'bar');
+
+# unlink('dependfile', 'output');
+
 1;
Index: trunk/src/gmake/tests/scripts/features/patspecific_vars
===================================================================
--- trunk/src/gmake/tests/scripts/features/patspecific_vars	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/patspecific_vars	(revision 503)
@@ -68,6 +68,6 @@
 
 /bar:
-	@test "$(foo)" = "$$foo"
-', '', '');
+	@echo $(foo) $$foo
+', '', 'foo foo');
 
 
Index: trunk/src/gmake/tests/scripts/features/patternrules
===================================================================
--- trunk/src/gmake/tests/scripts/features/patternrules	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/patternrules	(revision 503)
@@ -24,20 +24,20 @@
 # 1 - existing file
 %.1: void
-	@false
+	@exit 1
 %.1: #MAKEFILE#
-	@true
+	@exit 0
 
 # 2 - phony
 %.2: void
-	@false
+	@exit 1
 %.2: 2.phony
-	@true
+	@exit 0
 .PHONY: 2.phony
 
 # 3 - implicit-phony
 %.3: void
-	@false
+	@exit 1
 %.3: 3.implicit-phony
-	@true
+	@exit 0
 
 3.implicit-phony:
@@ -96,4 +96,54 @@
 unlink("$dir/foo.c");
 
+
+# TEST #4: make sure precious flag is set properly for targets
+#          that are built via implicit rules (Savannah bug #13218).
+#
+run_make_test('
+.DELETE_ON_ERROR:
+
+.PRECIOUS: %.bar
+
+%.bar:; @touch $@ && exit 1
+
+$(dir)/foo.bar:
+
+',
+"dir=$dir",
+"#MAKE#: *** [$dir/foo.bar] Error 1",
+512);
+
+unlink("$dir/foo.bar");
+
+
+# TEST #5: make sure targets of a macthed implicit pattern rule never
+#          never considered intermediate (Savannah bug #13022).
+#
+run_make_test('
+.PHONY: all
+all: foo.c foo.o
+
+%.h %.c: %.in
+	touch $*.h
+	touch $*.c
+
+%.o: %.c %.h
+	echo $+ >$@
+
+%.o: %.c
+	@echo wrong rule
+
+foo.in:
+	touch $@
+
+',
+'',
+'touch foo.in
+touch foo.h
+touch foo.c
+echo foo.c foo.h >foo.o');
+
+unlink('foo.in', 'foo.h', 'foo.c', 'foo.o');
+
 # This tells the test driver that the perl test script executed properly.
 1;
Index: trunk/src/gmake/tests/scripts/features/reinvoke
===================================================================
--- trunk/src/gmake/tests/scripts/features/reinvoke	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/reinvoke	(revision 503)
@@ -8,42 +8,38 @@
 file, then touch the temp file to make it newer than the makefile.";
 
-$makefile2 = &get_tmpfile;
-$makefile_orig = &get_tmpfile;
+$omkfile = $makefile;
 
-open(MAKEFILE,"> $makefile");
+&utouch(-600, 'incl.mk');
+# For some reason if we don't do this then the test fails for systems
+# with sub-second timestamps, maybe + NFS?  Not sure.
+&utouch(-1, 'incl-1.mk');
 
-print MAKEFILE <<EOM;
+run_make_test('
+all: ; @echo running rules.
 
-all: ; \@echo 'running rules.'
+#MAKEFILE# incl.mk: incl-1.mk
+	@echo rebuilding $@
+	@echo >> $@
 
-$makefile $makefile2: $makefile_orig
-	\@echo 'rebuilding \$\@.'
-	\@echo >> \$\@
+include incl.mk',
+              '', "rebuilding incl.mk\nrunning rules.\n");
 
-include $makefile2
+# Make sure updating the makefile itself also works
 
-EOM
+&utouch(-600, $omkfile);
 
-close(MAKEFILE);
+run_make_test(undef, '', "rebuilding #MAKEFILE#\nrunning rules.\n");
 
-&utouch(-10, $makefile, $makefile2);
-&touch($makefile_orig);
+&rmfiles('incl.mk', 'incl-1.mk');
 
-&run_make_with_options($makefile, "", &get_logfile, 0);
-
-# Create the answer to what should be produced by this Makefile
-
-$answer = "rebuilding $makefile2.\nrebuilding $makefile.\nrunning rules.\n";
-
-&compare_output($answer,&get_logfile(1))
-  && unlink "$makefile_orig";
 
 # In this test we create an included file that's out-of-date, but then
 # the rule doesn't update it.  Make shouldn't re-exec.
 
-$makefile3 = &get_tmpfile;
+&utouch(-600, 'b','a');
+#&utouch(-10, 'a');
+&touch('c');
 
-open(MAKEFILE, "> $makefile3");
-print MAKEFILE <<'EOM';
+run_make_test('
 SHELL = /bin/sh
 
@@ -56,30 +52,13 @@
 c: ; echo >> $@
 
-include $(F)
-EOM
-
-close(MAKEFILE);
-
-&utouch(-20, 'b','a');
-#&utouch(-10, 'a');
-&touch('c');
-
-# First try with the file that's not updated "once removed" from the
-# file we're including.
-
-&run_make_with_options($makefile3, "F=a", &get_logfile, 0);
-
-$answer = "[ -f b ] || echo >> b\nhello\n";
-&compare_output($answer,&get_logfile(1));
+include $(F)',
+              'F=a', "[ -f b ] || echo >> b\nhello\n");
 
 # Now try with the file we're not updating being the actual file we're
 # including: this and the previous one test different parts of the code.
 
-&run_make_with_options($makefile3, "F=b", &get_logfile, 0);
+run_make_test(undef, "F=b", "[ -f b ] || echo >> b\nhello\n")
 
-$answer = "[ -f b ] || echo >> b\nhello\n";
-&compare_output($answer,&get_logfile(1));
-
-unlink('a','b','c');
+&rmfiles('a','b','c');
 
 # This tells the test driver that the perl test script executed properly.
Index: trunk/src/gmake/tests/scripts/features/se_explicit
===================================================================
--- trunk/src/gmake/tests/scripts/features/se_explicit	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/se_explicit	(revision 503)
@@ -4,7 +4,27 @@
 $details = "";
 
-# Test #1: automatic variables.
+# TEST #0: Test handing of '$' in prerequisites with and without second
+# expansion.
+
+run_make_test(q!
+ifdef SE
+  .SECONDEXPANSION:
+endif
+foo$$bar: bar$$baz bar$$biz ; @echo '$@ : $^'
+PRE = one two
+bar$$baz: $$(PRE)
+baraz: $$(PRE)
+PRE = three four
+.DEFAULT: ; @echo '$@'
+!,
+              '',
+              "\$\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz");
+
+run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz");
+
+# TEST #1: automatic variables.
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
@@ -42,4 +62,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
@@ -60,4 +81,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
Index: trunk/src/gmake/tests/scripts/features/se_implicit
===================================================================
--- trunk/src/gmake/tests/scripts/features/se_implicit	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/se_implicit	(revision 503)
@@ -13,4 +13,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
@@ -61,4 +62,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 foo.x:
 
@@ -82,4 +84,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
@@ -133,4 +136,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 $(dir)/tmp/bar.o:
 
@@ -154,4 +158,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 $(dir)/tmp/foo.o: $(dir)/tmp/foo.c
 $(dir)/tmp/foo.c: ; @echo $@
@@ -172,4 +177,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 foo.o: foo.c
 foo.c: ; @echo $@
@@ -187,4 +193,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 foobarbaz:
 
@@ -205,4 +212,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 foo$$bar:
 
Index: trunk/src/gmake/tests/scripts/features/se_statpat
===================================================================
--- trunk/src/gmake/tests/scripts/features/se_statpat	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/se_statpat	(revision 503)
@@ -7,4 +7,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
@@ -42,4 +43,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
@@ -61,4 +63,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 .DEFAULT: ; @echo $@
 
@@ -107,4 +110,5 @@
 #
 run_make_test('
+.SECONDEXPANSION:
 foo$$bar: f%r: % $$*.1
 	@echo \'$*\'
Index: trunk/src/gmake/tests/scripts/features/statipattrules
===================================================================
--- trunk/src/gmake/tests/scripts/features/statipattrules	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/statipattrules	(revision 503)
@@ -10,6 +10,10 @@
 to emacs a .el file";
 
-open(MAKEFILE,"> $makefile");
-print MAKEFILE <<'EOF';
+&touch('bar.c', 'lose.c');
+
+#   TEST #0
+#   -------
+
+run_make_test('
 files = foo.elc bar.o lose.o
 
@@ -17,60 +21,91 @@
 
 $(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $<
-EOF
-close(MAKEFILE);
+',
+              '',
+              'CC -c bar.c -o bar.o');
+
+#  TEST #1
+#  -------
+
+run_make_test(undef, 'lose.o', 'CC -c lose.c -o lose.o');
 
 
-&touch('bar.c', 'lose.c');
-
-#   TEST #1
-#   -------
-
-&run_make_with_options($makefile, '', &get_logfile);
-$answer = "CC -c bar.c -o bar.o\n";
-&compare_output($answer, &get_logfile(1));
-
-
-#  TEST #2
-#  -------
-
-&run_make_with_options($makefile, 'lose.o', &get_logfile);
-$answer = "CC -c lose.c -o lose.o\n";
-&compare_output($answer, &get_logfile(1));
-
-
-#   TEST #3
+#   TEST #2
 #   -------
 &touch("foo.el");
 
-&run_make_with_options($makefile, 'foo.elc', &get_logfile);
-$answer = "emacs foo.el\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test(undef, 'foo.elc', 'emacs foo.el');
 
-
+# Clean up after the first tests.
 unlink('foo.el', 'bar.c', 'lose.c');
 
 
-# TEST #4 -- PR/1670: don't core dump on invalid static pattern rules
+# TEST #3 -- PR/1670: don't core dump on invalid static pattern rules
 # -------
 
-$makefile2 = &get_tmpfile;
-open(MAKEFILE, "> $makefile2");
-print MAKEFILE "foo: foo%: % ; \@echo \$@\n";
-close(MAKEFILE);
+run_make_test('
+.DEFAULT: ; @echo $@
+foo: foo%: % %.x % % % y.% % ; @echo $@
+',
+              '', ".x\ny.\nfoo");
 
-&run_make_with_options($makefile2, '', &get_logfile);
-$answer = "foo\n";
-&compare_output($answer, &get_logfile(1));
 
-# TEST #5 -- bug #12180: core dump on a stat pattern rule with an empty
+# TEST #4 -- bug #12180: core dump on a stat pattern rule with an empty
 #                        prerequisite list.
-#
 run_make_test('
 foo.x bar.x: %.x : ; @echo $@
 
 ',
+              '', 'foo.x');
+
+
+# TEST #5 -- bug #13881: double colon static pattern rule does not
+#                        substitute %.
+run_make_test('
+foo.bar:: %.bar: %.baz
+foo.baz: ;@:
+',
+              '', '');
+
+
+# TEST #6: make sure the second stem does not overwrite the first
+#          perprerequisite's stem (Savannah bug #16053).
+#
+run_make_test('
+all.foo.bar: %.foo.bar: %.one
+
+all.foo.bar: %.bar: %.two
+
+all.foo.bar:
+	@echo $*
+	@echo $^
+
+.DEFAULT:;@:
+',
 '',
-'foo.x
-');
+'all.foo
+all.one all.foo.two');
+
+
+# TEST #7: make sure the second stem does not overwrite the first
+#          perprerequisite's stem when second expansion is enabled
+#          (Savannah bug #16053).
+#
+run_make_test('
+.SECONDEXPANSION:
+
+all.foo.bar: %.foo.bar: %.one $$*-one
+
+all.foo.bar: %.bar: %.two $$*-two
+
+all.foo.bar:
+	@echo $*
+	@echo $^
+
+.DEFAULT:;@:
+',
+'',
+'all.foo
+all.one all-one all.foo.two all.foo-two');
 
 1;
Index: trunk/src/gmake/tests/scripts/features/targetvars
===================================================================
--- trunk/src/gmake/tests/scripts/features/targetvars	(revision 466)
+++ trunk/src/gmake/tests/scripts/features/targetvars	(revision 503)
@@ -268,3 +268,40 @@
 &compare_output($answer, &get_logfile(1));
 
+# TEST #17
+
+# Test a merge of set_lists for files, where one list is much longer
+# than the other.  See Savannah bug #15757.
+
+mkdir('t1', 0777);
+touch('t1/rules.mk');
+
+run_make_test('
+VPATH = t1
+include rules.mk
+.PHONY: all
+all: foo.x
+foo.x : rules.mk ; @echo MYVAR=$(MYVAR) FOOVAR=$(FOOVAR) ALLVAR=$(ALLVAR)
+all: ALLVAR = xxx
+foo.x: FOOVAR = bar
+rules.mk : MYVAR = foo
+.INTERMEDIATE: foo.x rules.mk
+',
+              '-I t1',
+              'MYVAR= FOOVAR=bar ALLVAR=xxx');
+
+rmfiles('t1/rules.mk');
+rmdir('t1');
+
+# TEST #18
+
+# Test appending to a simple variable containing a "$": avoid a
+# double-expansion.  See Savannah bug #15913.
+
+run_make_test("
+VAR := \$\$FOO
+foo: VAR += BAR
+foo: ; \@echo '\$(VAR)'",
+              '',
+              '$FOO BAR');
+
 1;
Index: trunk/src/gmake/tests/scripts/functions/abspath
===================================================================
--- trunk/src/gmake/tests/scripts/functions/abspath	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/abspath	(revision 503)
@@ -6,66 +6,66 @@
 run_make_test('
 ifneq ($(realpath $(abspath .)),$(CURDIR))
-  $(error )
+  $(warning .: abs="$(abspath .)" real="$(realpath $(abspath .))" curdir="$(CURDIR)")
 endif
 
 ifneq ($(realpath $(abspath ./)),$(CURDIR))
-  $(error )
+  $(warning ./: abs="$(abspath ./)" real="$(realpath $(abspath ./))" curdir="$(CURDIR)")
 endif
 
 ifneq ($(realpath $(abspath .///)),$(CURDIR))
-  $(error )
+  $(warning .///: abs="$(abspath .///)" real="$(realpath $(abspath .///))" curdir="$(CURDIR)")
 endif
 
 ifneq ($(abspath /),/)
-  $(error )
+  $(warning /: abspath="$(abspath /)")
 endif
 
 ifneq ($(abspath ///),/)
-  $(error )
+  $(warning ///: abspath="$(abspath ///)")
 endif
 
 ifneq ($(abspath /.),/)
-  $(error )
+  $(warning /.: abspath="$(abspath /.)")
 endif
 
 ifneq ($(abspath ///.),/)
-  $(error )
+  $(warning ///.: abspath="$(abspath ///.)")
 endif
 
 ifneq ($(abspath /./),/)
-  $(error )
+  $(warning /./: abspath="$(abspath /./)")
 endif
 
 ifneq ($(abspath /.///),/)
-  $(error )
+  $(warning /.///: abspath="$(abspath /.///)")
 endif
 
 ifneq ($(abspath /..),/)
-  $(error )
+  $(warning /..: abspath="$(abspath /..)")
 endif
 
 ifneq ($(abspath ///..),/)
-  $(error )
+  $(warning ///..: abspath="$(abspath ///..)")
 endif
 
 ifneq ($(abspath /../),/)
-  $(error )
+  $(warning /../: abspath="$(abspath /../)")
 endif
 
 ifneq ($(abspath /..///),/)
-  $(error )
+  $(warning /..///: abspath="$(abspath /..///)")
 endif
 
 
 ifneq ($(abspath /foo/bar/..),/foo)
-  $(error )
+  $(warning /foo/bar/..: abspath="$(abspath /foo/bar/..)")
 endif
 
 ifneq ($(abspath /foo/bar/../../../baz),/baz)
-  $(error )
+  $(warning /foo/bar/../../../baz: abspath="$(abspath /foo/bar/../../../baz)")
 endif
 
 ifneq ($(abspath /foo/bar/../ /..),/foo /)
-  $(error )
+  $(warning /foo/bar/../ /..: abspath="$(abspath /foo/bar/../ /..)")
 endif
 
Index: trunk/src/gmake/tests/scripts/functions/andor
===================================================================
--- trunk/src/gmake/tests/scripts/functions/andor	(revision 503)
+++ trunk/src/gmake/tests/scripts/functions/andor	(revision 503)
@@ -0,0 +1,50 @@
+#                                                                    -*-perl-*-
+$description = "Test the and & or functions.\n";
+
+$details = "Try various uses of and & or to ensure they all give the correct
+results.\n";
+
+# TEST #0
+# For $(and ...), it will either be empty or the last value
+run_make_test('
+NEQ = $(subst $1,,$2)
+f =
+t = true
+
+all:
+	@echo 1 $(and    ,$t)
+	@echo 2 $(and $t)
+	@echo 3 $(and $t,)
+	@echo 4 $(and z,true,$f,false)
+	@echo 5 $(and $t,$f,$(info bad short-circuit))
+	@echo 6 $(and $(call NEQ,a,b),true)
+	@echo 7 $(and $(call NEQ,a,a),true)
+	@echo 8 $(and z,true,fal,se) hi
+	@echo 9 $(and ,true,fal,se)there
+	@echo 10 $(and   $(e) ,$t)',
+              '',
+              "1\n2 true\n3\n4\n5\n6 true\n7\n8 se hi\n9 there\n10\n");
+
+# TEST #1
+# For $(or ...), it will either be empty or the first true value
+run_make_test('
+NEQ = $(subst $1,,$2)
+f =
+t = true
+
+all:
+	@echo 1 $(or    ,    )
+	@echo 2 $(or $t)
+	@echo 3 $(or ,$t)
+	@echo 4 $(or z,true,$f,false)
+	@echo 5 $(or $t,$(info bad short-circuit))
+	@echo 6 $(or $(info short-circuit),$t)
+	@echo 7 $(or $(call NEQ,a,b),true)
+	@echo 8 $(or $(call NEQ,a,a),true)
+	@echo 9 $(or z,true,fal,se) hi
+	@echo 10 $(or ,true,fal,se)there
+	@echo 11 $(or   $(e) ,$f)',
+              '',
+              "short-circuit\n1\n2 true\n3 true\n4 z\n5 true\n6 true\n7 b\n8 true\n9 z hi\n10 truethere\n11\n");
+
+1;
Index: trunk/src/gmake/tests/scripts/functions/error
===================================================================
--- trunk/src/gmake/tests/scripts/functions/error	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/error	(revision 503)
@@ -1,2 +1,4 @@
+#                                                                    -*-Perl-*-
+
 $description = "\
 The following test creates a makefile to test the error function.";
@@ -6,5 +8,6 @@
 open(MAKEFILE,"> $makefile");
 
-print MAKEFILE <<'EOF';
+print MAKEFILE 'err = $(error Error found!)
+
 ifdef ERROR1
 $(error error is $(ERROR1))
@@ -26,5 +29,6 @@
 some: ; @echo Some stuff
 
-EOF
+testvar: ; @: $(err)
+';
 
 close(MAKEFILE);
@@ -33,5 +37,5 @@
 
 &run_make_with_options($makefile, "ERROR1=yes", &get_logfile, 512);
-$answer = "$makefile:2: *** error is yes.  Stop.\n";
+$answer = "$makefile:4: *** error is yes.  Stop.\n";
 &compare_output($answer,&get_logfile(1));
 
@@ -39,5 +43,5 @@
 
 &run_make_with_options($makefile, "ERROR2=no", &get_logfile, 512);
-$answer = "$makefile:6: *** error is no.  Stop.\n";
+$answer = "$makefile:8: *** error is no.  Stop.\n";
 &compare_output($answer,&get_logfile(1));
 
@@ -45,5 +49,5 @@
 
 &run_make_with_options($makefile, "ERROR3=maybe", &get_logfile, 512);
-$answer = "Some stuff\n$makefile:10: *** error is maybe.  Stop.\n";
+$answer = "Some stuff\n$makefile:12: *** error is maybe.  Stop.\n";
 &compare_output($answer,&get_logfile(1));
 
@@ -51,5 +55,11 @@
 
 &run_make_with_options($makefile, "ERROR4=definitely", &get_logfile, 512);
-$answer = "Some stuff\n$makefile:14: *** error is definitely.  Stop.\n";
+$answer = "Some stuff\n$makefile:16: *** error is definitely.  Stop.\n";
+&compare_output($answer,&get_logfile(1));
+
+# Test #5
+
+&run_make_with_options($makefile, "testvar", &get_logfile, 512);
+$answer = "$makefile:22: *** Error found!.  Stop.\n";
 &compare_output($answer,&get_logfile(1));
 
Index: trunk/src/gmake/tests/scripts/functions/eval
===================================================================
--- trunk/src/gmake/tests/scripts/functions/eval	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/eval	(revision 503)
@@ -128,10 +128,8 @@
 close(MAKEFILE);
 
-$ENV{EVAR} = '1';
+$extraENV{EVAR} = '1';
 &run_make_with_options($makefile4, "", &get_logfile);
 $answer = "OK\n";
 &compare_output($answer,&get_logfile(1));
-
-delete $ENV{EVAR};
 
 
@@ -152,9 +150,9 @@
 run_make_test('
 define FOO
-all: ; @echo he\llo
+all: ; @echo '."'".'he\llo'."'".'
 	@echo world
 endef
 $(eval $(FOO))
-', '', 'hello
+', '', 'he\llo
 world');
 
Index: trunk/src/gmake/tests/scripts/functions/flavor
===================================================================
--- trunk/src/gmake/tests/scripts/functions/flavor	(revision 503)
+++ trunk/src/gmake/tests/scripts/functions/flavor	(revision 503)
@@ -0,0 +1,44 @@
+#                                                                    -*-perl-*-
+$description = "Test the flavor function.";
+
+$details = "";
+
+
+# Test #1: Test general logic.
+#
+run_make_test('
+s := s
+r = r
+
+$(info u $(flavor u))
+$(info s $(flavor s))
+$(info r $(flavor r))
+
+ra += ra
+rc ?= rc
+
+$(info ra $(flavor ra))
+$(info rc $(flavor rc))
+
+s += s
+r += r
+
+$(info s $(flavor s))
+$(info r $(flavor r))
+
+
+.PHONY: all
+all:;@:
+',
+'',
+'u undefined
+s simple
+r recursive
+ra recursive
+rc recursive
+s simple
+r recursive');
+
+
+# This tells the test driver that the perl test script executed properly.
+1;
Index: trunk/src/gmake/tests/scripts/functions/foreach
===================================================================
--- trunk/src/gmake/tests/scripts/functions/foreach	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/foreach	(revision 503)
@@ -1,9 +1,6 @@
 #                                                                    -*-perl-*-
+# $Id: foreach,v 1.5 2006/03/10 02:20:46 psmith Exp $
 
-# Updated 6.16.93  variable "MAKE" is default was environment override
-# For make 3.63 and above
-
-$description = "The following test creates a makefile to verify
-test the foreach function.";
+$description = "Test the foreach function.";
 
 $details = "This is a test of the foreach function in gnu make.
@@ -15,39 +12,66 @@
 
 
-open(MAKEFILE,"> $makefile");
+# TEST 0
 
-# The Contents of the MAKEFILE ...
+# Set an environment variable that we can test in the makefile.
+$extraENV{FOOFOO} = 'foo foo';
 
-# On WIN32 systems, the user's path is found in %Path% ($Path)
-#
-$pathvar = (($port_type eq 'Windows') ? "Path" : "PATH");
+run_make_test("space = ' '".'
+null :=
+auto_var = udef space CC null FOOFOO MAKE foo CFLAGS WHITE @ <
+foo = bletch null @ garf
+av = $(foreach var, $(auto_var), $(origin $(var)) )
+override WHITE := BLACK
+for_var = $(addsuffix .c,foo $(null) $(foo) $(space) $(av) )
+fe = $(foreach var2, $(for_var),$(subst .c,.o, $(var2) ) )
+all: auto for2
+auto : ; @echo $(av)
+for2: ; @echo $(fe)',
+              '-e WHITE=WHITE CFLAGS=',
+              "undefined file default file environment default file command line override automatic automatic
+foo.o bletch.o null.o @.o garf.o .o    .o undefined.o file.o default.o file.o environment.o default.o file.o command.o line.o override.o automatic.o automatic.o");
 
-print MAKEFILE <<EOF;
-foo = bletch null \@ garf
-null :=
-space = ' '
-auto_var = udef space CC null $pathvar MAKE foo CFLAGS WHITE \@ <
-av = \$(foreach var, \$(auto_var), \$(origin \$(var)) )
-override WHITE := BLACK
-for_var = \$(addsuffix .c,foo \$(null) \$(foo) \$(space) \$(av) )
-fe = \$(foreach var2, \$(for_var),\$(subst .c,.o, \$(var2) ) )
-all: auto for2
-auto :
-\t\@echo \$(av)
-for2:
-\t\@echo \$(fe)
-EOF
+delete $extraENV{FOOFOO};
 
-close(MAKEFILE);
+# TEST 1: Test that foreach variables take precedence over global
+# variables in a global scope (like inside an eval).  Tests bug #11913
 
-&run_make_with_options($makefile,
-                      "-e WHITE=WHITE CFLAGS=",
-                      &get_logfile);
+run_make_test('
+.PHONY: all target
+all: target
 
-# Create the answer to what should be produced by this Makefile
-$answer = "undefined file default file environment default file command line override automatic automatic
-foo.o bletch.o null.o @.o garf.o .o    .o undefined.o file.o default.o file.o environment.o default.o file.o command.o line.o override.o automatic.o automatic.o\n";
+x := BAD
 
-&compare_output($answer,&get_logfile(1));
+define mktarget
+target: x := $(x)
+target: ; @echo "$(x)"
+endef
+
+x := GLOBAL
+
+$(foreach x,FOREACH,$(eval $(value mktarget)))',
+              '',
+              'FOREACH');
+
+
+# TEST 2: Check some error conditions.
+
+run_make_test('
+x = $(foreach )
+y = $x
+
+all: ; @echo $y',
+              '',
+              "#MAKEFILE#:2: *** insufficient number of arguments (1) to function `foreach'.  Stop.",
+              512);
+
+run_make_test('
+x = $(foreach )
+y := $x
+
+all: ; @echo $y',
+              '',
+              "#MAKEFILE#:2: *** insufficient number of arguments (1) to function `foreach'.  Stop.",
+              512);
 
 1;
Index: trunk/src/gmake/tests/scripts/functions/origin
===================================================================
--- trunk/src/gmake/tests/scripts/functions/origin	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/origin	(revision 503)
@@ -17,34 +17,24 @@
 
 # Set an environment variable
-$ENV{MAKETEST} = 1;
+$extraENV{MAKETEST} = 1;
 
-open(MAKEFILE,"> $makefile");
-
-print MAKEFILE <<EOF;
+run_make_test('
 foo := bletch garf
-auto_var = udef CC MAKETEST MAKE foo CFLAGS WHITE \@
-av = \$(foreach var, \$(auto_var), \$(origin \$(var)) )
+auto_var = undefined CC MAKETEST MAKE foo CFLAGS WHITE @
+av = $(foreach var, $(auto_var), $(origin $(var)) )
 override WHITE := BLACK
 all: auto
-\t\@echo \$(origin undefined)
-\t\@echo \$(origin CC)
-\t\@echo \$(origin MAKETEST)
-\t\@echo \$(origin MAKE)
-\t\@echo \$(origin foo)
-\t\@echo \$(origin CFLAGS)
-\t\@echo \$(origin WHITE)
-\t\@echo \$(origin \@)
+	@echo $(origin undefined)
+	@echo $(origin CC)
+	@echo $(origin MAKETEST)
+	@echo $(origin MAKE)
+	@echo $(origin foo)
+	@echo $(origin CFLAGS)
+	@echo $(origin WHITE)
+	@echo $(origin @)
 auto :
-\t\@echo \$(av)
-EOF
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile,
-                      "-e WHITE=WHITE CFLAGS=",
-                      &get_logfile);
-
-# Create the answer to what should be produced by this Makefile
-$answer = "undefined default environment default file command line override automatic
+	@echo $(av)',
+	      '-e WHITE=WHITE CFLAGS=',
+	      'undefined default environment default file command line override automatic
 undefined
 default
@@ -54,8 +44,8 @@
 command line
 override
-automatic\n";
+automatic');
 
-
-&compare_output($answer,&get_logfile(1));
+# Reset an environment variable
+delete $extraENV{MAKETEST};
 
 1;
Index: trunk/src/gmake/tests/scripts/functions/realpath
===================================================================
--- trunk/src/gmake/tests/scripts/functions/realpath	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/realpath	(revision 503)
@@ -21,13 +21,5 @@
 endif
 
-ifneq ($(realpath ///),/)
-  $(error )
-endif
-
 ifneq ($(realpath /.),/)
-  $(error )
-endif
-
-ifneq ($(realpath ///.),/)
   $(error )
 endif
@@ -42,8 +34,4 @@
 
 ifneq ($(realpath /..),/)
-  $(error )
-endif
-
-ifneq ($(realpath ///..),/)
   $(error )
 endif
@@ -64,6 +52,29 @@
 all: ; @:
 ',
-'',
-'');
+              '',
+              '');
+
+# On Windows platforms, "//" means something special.  So, don't do these
+# tests there.
+
+if ($port_type ne 'W32') {
+  run_make_test('
+ifneq ($(realpath ///),/)
+  $(error )
+endif
+
+ifneq ($(realpath ///.),/)
+  $(error )
+endif
+
+ifneq ($(realpath ///..),/)
+  $(error )
+endif
+
+.PHONY: all
+all: ; @:',
+                '',
+                '');
+}
 
 
Index: trunk/src/gmake/tests/scripts/functions/shell
===================================================================
--- trunk/src/gmake/tests/scripts/functions/shell	(revision 503)
+++ trunk/src/gmake/tests/scripts/functions/shell	(revision 503)
@@ -0,0 +1,23 @@
+#                                                                    -*-perl-*-
+
+$description = 'Test the $(shell ...) function.';
+
+$details = '';
+
+
+# Test shells inside rules.
+run_make_test('.PHONY: all
+all: ; @echo $(shell echo hi)
+','','hi');
+
+
+# Test shells inside exported environment variables.
+# This is the test that fails if we try to put make exported variables into
+# the environment for a $(shell ...) call.
+run_make_test('
+export HI = $(shell echo hi)
+.PHONY: all
+all: ; @echo $$HI
+','','hi');
+
+1;
Index: trunk/src/gmake/tests/scripts/functions/warning
===================================================================
--- trunk/src/gmake/tests/scripts/functions/warning	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/warning	(revision 503)
@@ -1,2 +1,4 @@
+#                                                                    -*-Perl-*-
+
 $description = "\
 The following test creates a makefile to test the warning function.";
Index: trunk/src/gmake/tests/scripts/functions/wildcard
===================================================================
--- trunk/src/gmake/tests/scripts/functions/wildcard	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/wildcard	(revision 503)
@@ -14,14 +14,4 @@
 the '*' wildcard as in the first test";
 
-if ($vos)
-{
-   $delete_command = "delete_file -no_ask";
-}
-else
-{
-   $delete_command = "rm";
-}
-
-
 open(MAKEFILE,"> $makefile");
 
@@ -30,11 +20,11 @@
 print MAKEFILE <<EOM;
 .PHONY: print1 print2 clean
-print1: ;\@echo \$(wildcard example.*)
+print1: ;\@echo \$(sort \$(wildcard example.*))
 print2:
-\t\@echo \$(wildcard example.?)
-\t\@echo \$(wildcard example.[a-z0-9])
-\t\@echo \$(wildcard example.[!A-Za-z_\\!])
+\t\@echo \$(sort \$(wildcard example.?))
+\t\@echo \$(sort \$(wildcard example.[a-z0-9]))
+\t\@echo \$(sort \$(wildcard example.[!A-Za-z_\\!]))
 clean:
-\t$delete_command \$(wildcard example.*)
+\t$delete_command \$(sort \$(wildcard example.*))
 EOM
 
Index: trunk/src/gmake/tests/scripts/functions/word
===================================================================
--- trunk/src/gmake/tests/scripts/functions/word	(revision 466)
+++ trunk/src/gmake/tests/scripts/functions/word	(revision 503)
@@ -47,9 +47,5 @@
 # Test error conditions
 
-$makefile2 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile2");
-print MAKEFILE <<'EOF';
-FOO = foo bar biz baz
+run_make_test('FOO = foo bar biz baz
 
 word-e1: ; @echo $(word ,$(FOO))
@@ -59,33 +55,76 @@
 wordlist-e1: ; @echo $(wordlist ,,$(FOO))
 wordlist-e2: ; @echo $(wordlist abc ,,$(FOO))
-wordlist-e3: ; @echo $(wordlist 1, 12a ,$(FOO))
+wordlist-e3: ; @echo $(wordlist 1, 12a ,$(FOO))',
+              'word-e1',
+              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''.  Stop.",
+              512);
 
-EOF
+run_make_test(undef,
+              'word-e2',
+              "#MAKEFILE#:4: *** non-numeric first argument to `word' function: 'abc '.  Stop.",
+              512);
 
-close(MAKEFILE);
+run_make_test(undef,
+              'word-e3',
+              "#MAKEFILE#:5: *** non-numeric first argument to `word' function: '1a'.  Stop.",
+              512);
 
-&run_make_with_options($makefile2, 'word-e1', &get_logfile, 512);
-$answer = "$makefile2:3: *** non-numeric first argument to `word' function: ''.  Stop.\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test(undef,
+              'wordlist-e1',
+              "#MAKEFILE#:7: *** non-numeric first argument to `wordlist' function: ''.  Stop.",
+              512);
 
-&run_make_with_options($makefile2, 'word-e2', &get_logfile, 512);
-$answer = "$makefile2:4: *** non-numeric first argument to `word' function: 'abc '.  Stop.\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test(undef,
+              'wordlist-e2',
+              "#MAKEFILE#:8: *** non-numeric first argument to `wordlist' function: 'abc '.  Stop.",
+              512);
 
-&run_make_with_options($makefile2, 'word-e3', &get_logfile, 512);
-$answer = "$makefile2:5: *** non-numeric first argument to `word' function: '1a'.  Stop.\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test(undef,
+              'wordlist-e3',
+              "#MAKEFILE#:9: *** non-numeric second argument to `wordlist' function: ' 12a '.  Stop.",
+              512);
 
-&run_make_with_options($makefile2, 'wordlist-e1', &get_logfile, 512);
-$answer = "$makefile2:7: *** non-numeric first argument to `wordlist' function: ''.  Stop.\n";
-&compare_output($answer, &get_logfile(1));
+# Test error conditions again, but this time in a variable reference
 
-&run_make_with_options($makefile2, 'wordlist-e2', &get_logfile, 512);
-$answer = "$makefile2:8: *** non-numeric first argument to `wordlist' function: 'abc '.  Stop.\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test('FOO = foo bar biz baz
 
-&run_make_with_options($makefile2, 'wordlist-e3', &get_logfile, 512);
-$answer = "$makefile2:9: *** non-numeric second argument to `wordlist' function: ' 12a '.  Stop.\n";
-&compare_output($answer, &get_logfile(1));
+W = $(word $x,$(FOO))
+WL = $(wordlist $s,$e,$(FOO))
+
+word-e: ; @echo $(W)
+wordlist-e: ; @echo $(WL)',
+              'word-e x=',
+              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''.  Stop.",
+              512);
+
+run_make_test(undef,
+              'word-e x=abc',
+              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: 'abc'.  Stop.",
+              512);
+
+run_make_test(undef,
+              'word-e x=0',
+              "#MAKEFILE#:3: *** first argument to `word' function must be greater than 0.  Stop.",
+              512);
+
+run_make_test(undef,
+              'wordlist-e s= e=',
+              "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: ''.  Stop.",
+              512);
+
+run_make_test(undef,
+              'wordlist-e s=abc e=',
+              "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: 'abc'.  Stop.",
+              512);
+
+run_make_test(undef,
+              'wordlist-e s=4 e=12a',
+              "#MAKEFILE#:4: *** non-numeric second argument to `wordlist' function: '12a'.  Stop.",
+              512);
+
+run_make_test(undef,
+              'wordlist-e s=0 e=12',
+              "#MAKEFILE#:4: *** invalid first argument to `wordlist' function: `0'.  Stop.",
+              512);
 
 
Index: trunk/src/gmake/tests/scripts/misc/close_stdout
===================================================================
--- trunk/src/gmake/tests/scripts/misc/close_stdout	(revision 503)
+++ trunk/src/gmake/tests/scripts/misc/close_stdout	(revision 503)
@@ -0,0 +1,9 @@
+#                                                                    -*-perl-*-
+
+$description = "Make sure make exits with an error if stdout is full.";
+
+if (-e '/dev/full') {
+  run_make_test('', '-v > /dev/full', '#MAKE#: write error', 256);
+}
+
+1;
Index: trunk/src/gmake/tests/scripts/misc/general3
===================================================================
--- trunk/src/gmake/tests/scripts/misc/general3	(revision 466)
+++ trunk/src/gmake/tests/scripts/misc/general3	(revision 503)
@@ -6,11 +6,5 @@
 break.";
 
-$makefile2 = &get_tmpfile;
-
-open(MAKEFILE,"> $makefile");
-
-# The contents of the Makefile ...
-
-print MAKEFILE <<EOF;
+run_make_test("
 # We want to allow both empty commands _and_ commands that resolve to empty.
 EMPTY =
@@ -32,18 +26,13 @@
 \$(STR)
 
-\$(STR) \$(TAB)
-
-EOF
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile,"",&get_logfile);
-$answer = "$make_name: Nothing to be done for `all'.\n";
-&compare_output($answer,&get_logfile(1));
-
+\$(STR) \$(TAB)",
+              '', "#MAKE#: Nothing to be done for `all'.");
 
 # TEST 2
 
 # Make sure files without trailing newlines are handled properly.
+# Have to use the old style invocation to test this.
+
+$makefile2 = &get_tmpfile;
 
 open(MAKEFILE, "> $makefile2");
@@ -55,4 +44,270 @@
 &compare_output($answer,&get_logfile(1));
 
+# TEST 3
+
+# Check semicolons in variable references
+
+run_make_test('
+$(if true,$(info true; true))
+all: ; @:
+',
+              '', 'true; true');
+
+# TEST 4
+
+# Check that backslashes in command scripts are handled according to POSIX.
+# Checks Savannah bug # 1332.
+
+# Test the fastpath / no quotes
+run_make_test('
+all:
+	@echo foo\
+bar
+	@echo foo\
+	bar
+	@echo foo\
+    bar
+	@echo foo\
+	    bar
+	@echo foo \
+bar
+	@echo foo \
+	bar
+	@echo foo \
+    bar
+	@echo foo \
+	    bar
+',
+              '', 'foobar
+foobar
+foo bar
+foo bar
+foo bar
+foo bar
+foo bar
+foo bar');
+
+# Test the fastpath / single quotes
+run_make_test("
+all:
+	\@echo 'foo\\
+bar'
+	\@echo 'foo\\
+	bar'
+	\@echo 'foo\\
+    bar'
+	\@echo 'foo\\
+	    bar'
+	\@echo 'foo \\
+bar'
+	\@echo 'foo \\
+	bar'
+	\@echo 'foo \\
+    bar'
+	\@echo 'foo \\
+	    bar'
+",
+              '', 'foo\
+bar
+foo\
+bar
+foo\
+    bar
+foo\
+    bar
+foo \
+bar
+foo \
+bar
+foo \
+    bar
+foo \
+    bar');
+
+# Test the fastpath / double quotes
+run_make_test('
+all:
+	@echo "foo\
+bar"
+	@echo "foo\
+	bar"
+	@echo "foo\
+    bar"
+	@echo "foo\
+	    bar"
+	@echo "foo \
+bar"
+	@echo "foo \
+	bar"
+	@echo "foo \
+    bar"
+	@echo "foo \
+	    bar"
+',
+              '', 'foobar
+foobar
+foo    bar
+foo    bar
+foo bar
+foo bar
+foo     bar
+foo     bar');
+
+# Test the slow path / no quotes
+run_make_test('
+all:
+	@echo hi; echo foo\
+bar
+	@echo hi; echo foo\
+	bar
+	@echo hi; echo foo\
+ bar
+	@echo hi; echo foo\
+	 bar
+	@echo hi; echo foo \
+bar
+	@echo hi; echo foo \
+	bar
+	@echo hi; echo foo \
+ bar
+	@echo hi; echo foo \
+	 bar
+',
+              '', 'hi
+foobar
+hi
+foobar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar');
+
+# Test the slow path / no quotes.  This time we put the slow path
+# determination _after_ the backslash-newline handling.
+run_make_test('
+all:
+	@echo foo\
+bar; echo hi
+	@echo foo\
+	bar; echo hi
+	@echo foo\
+ bar; echo hi
+	@echo foo\
+	 bar; echo hi
+	@echo foo \
+bar; echo hi
+	@echo foo \
+	bar; echo hi
+	@echo foo \
+ bar; echo hi
+	@echo foo \
+	 bar; echo hi
+',
+              '', 'foobar
+hi
+foobar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar
+hi
+foo bar
+hi');
+
+# Test the slow path / single quotes
+run_make_test("
+all:
+	\@echo hi; echo 'foo\\
+bar'
+	\@echo hi; echo 'foo\\
+	bar'
+	\@echo hi; echo 'foo\\
+    bar'
+	\@echo hi; echo 'foo\\
+	    bar'
+	\@echo hi; echo 'foo \\
+bar'
+	\@echo hi; echo 'foo \\
+	bar'
+	\@echo hi; echo 'foo \\
+    bar'
+	\@echo hi; echo 'foo \\
+	    bar'
+",
+              '', 'hi
+foo\
+bar
+hi
+foo\
+bar
+hi
+foo\
+    bar
+hi
+foo\
+    bar
+hi
+foo \
+bar
+hi
+foo \
+bar
+hi
+foo \
+    bar
+hi
+foo \
+    bar');
+
+# Test the slow path / double quotes
+run_make_test('
+all:
+	@echo hi; echo "foo\
+bar"
+	@echo hi; echo "foo\
+	bar"
+	@echo hi; echo "foo\
+    bar"
+	@echo hi; echo "foo\
+	    bar"
+	@echo hi; echo "foo \
+bar"
+	@echo hi; echo "foo \
+	bar"
+	@echo hi; echo "foo \
+    bar"
+	@echo hi; echo "foo \
+	    bar"
+',
+              '', 'hi
+foobar
+hi
+foobar
+hi
+foo    bar
+hi
+foo    bar
+hi
+foo bar
+hi
+foo bar
+hi
+foo     bar
+hi
+foo     bar');
 
 1;
Index: trunk/src/gmake/tests/scripts/misc/general4
===================================================================
--- trunk/src/gmake/tests/scripts/misc/general4	(revision 466)
+++ trunk/src/gmake/tests/scripts/misc/general4	(revision 503)
@@ -6,6 +6,5 @@
 break.";
 
-open(MAKEFILE,"> $makefile");
-print MAKEFILE <<'EOF';
+run_make_test('
 # Make sure that subdirectories built as prerequisites are actually handled
 # properly.
@@ -17,11 +16,6 @@
 dir/subdir/file.b: dir/subdir ; @echo touch dir/subdir/file.b
 
-dir/subdir/%.a: dir/subdir/%.b ; @echo cp $< $@
-EOF
-close(MAKEFILE);
-
-&run_make_with_options($makefile,"",&get_logfile);
-$answer = "mkdir -p dir/subdir\ntouch dir/subdir/file.b\ncp dir/subdir/file.b dir/subdir/file.a\n";
-&compare_output($answer,&get_logfile(1));
+dir/subdir/%.a: dir/subdir/%.b ; @echo cp $< $@',
+              '', "mkdir -p dir/subdir\ntouch dir/subdir/file.b\ncp dir/subdir/file.b dir/subdir/file.a\n");
 
 # Test implicit rules
@@ -48,3 +42,42 @@
 unlink('bar');
 
+
+# Test implicit rules with '$' in the name (see se_implicit)
+
+run_make_test(q!
+%.foo : baz$$bar ; @echo 'done $<'
+%.foo : bar$$baz ; @echo 'done $<'
+test.foo:
+baz$$bar bar$$baz: ; @echo '$@'
+!,
+              '',
+              "baz\$bar\ndone baz\$bar");
+
+
+# Test implicit rules with '$' in the name (see se_implicit)
+# Use the '$' in the pattern.
+
+run_make_test(q!
+%.foo : %$$bar ; @echo 'done $<'
+test.foo:
+test$$bar: ; @echo '$@'
+!,
+              '',
+              "test\$bar\ndone test\$bar");
+
+# Make sure that subdirectories built as prerequisites are actually handled
+# properly... this time with '$'
+
+run_make_test(q!
+
+all: dir/subdir/file.$$a
+
+dir/subdir: ; @echo mkdir -p '$@'
+
+dir/subdir/file.$$b: dir/subdir ; @echo touch '$@'
+
+dir/subdir/%.$$a: dir/subdir/%.$$b ; @echo 'cp $< $@'
+!,
+              '', "mkdir -p dir/subdir\ntouch dir/subdir/file.\$b\ncp dir/subdir/file.\$b dir/subdir/file.\$a\n");
+
 1;
Index: trunk/src/gmake/tests/scripts/options/dash-B
===================================================================
--- trunk/src/gmake/tests/scripts/options/dash-B	(revision 466)
+++ trunk/src/gmake/tests/scripts/options/dash-B	(revision 503)
@@ -32,8 +32,42 @@
 run_make_test(undef, '-B', 'cp bar.x foo');
 
-
 # Clean up
 
 rmfiles('bar.x', 'foo');
 
+# Test -B with the re-exec feature: we don't want to re-exec forever
+# Savannah bug # 7566
+
+run_make_test('
+all: ; @:
+$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
+include foo.x
+foo.x: ; @touch $@
+',
+              '-B', 'MAKE_RESTARTS=
+#MAKEFILE#:4: foo.x: No such file or directory
+MAKE_RESTARTS=1');
+
+rmfiles('foo.x');
+
+# Test -B with the re-exec feature: we DO want -B in the "normal" part of the
+# makefile.
+
+&touch('blah.x');
+
+run_make_test('
+all: blah.x ; @echo $@
+$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
+include foo.x
+foo.x: ; @touch $@
+blah.x: ; @echo $@
+',
+              '-B', 'MAKE_RESTARTS=
+#MAKEFILE#:4: foo.x: No such file or directory
+MAKE_RESTARTS=1
+blah.x
+all');
+
+rmfiles('foo.x', 'blah.x');
+
 1;
Index: trunk/src/gmake/tests/scripts/options/dash-I
===================================================================
--- trunk/src/gmake/tests/scripts/options/dash-I	(revision 466)
+++ trunk/src/gmake/tests/scripts/options/dash-I	(revision 503)
@@ -1,2 +1,4 @@
+#                                                                    -*-perl-*-
+
 $description ="The following test creates a makefile to test the -I option.";
 
Index: trunk/src/gmake/tests/scripts/options/dash-W
===================================================================
--- trunk/src/gmake/tests/scripts/options/dash-W	(revision 503)
+++ trunk/src/gmake/tests/scripts/options/dash-W	(revision 503)
@@ -0,0 +1,88 @@
+#                                                                    -*-perl-*-
+
+$description = "Test make -W (what if) option.\n";
+
+# Basic build
+
+run_make_test('
+a.x: b.x
+a.x b.x: ; echo >> $@
+',
+              '', "echo >> b.x\necho >> a.x");
+
+# Run it again: nothing should happen
+
+run_make_test(undef, '', "#MAKE#: `a.x' is up to date.");
+
+# Now run it with -W b.x: should rebuild a.x
+
+run_make_test(undef, '-W b.x', 'echo >> a.x');
+
+# Put the timestamp for a.x into the future; it should still be remade.
+
+utouch(1000, 'a.x');
+run_make_test(undef, '', "#MAKE#: `a.x' is up to date.");
+run_make_test(undef, '-W b.x', 'echo >> a.x');
+
+# Clean up
+
+rmfiles('a.x', 'b.x');
+
+# Test -W with the re-exec feature: we don't want to re-exec forever
+# Savannah bug # 7566
+
+# First set it up with a normal build
+
+run_make_test('
+all: baz.x ; @:
+include foo.x
+foo.x: bar.x
+	@echo "\$$(info restarts=\$$(MAKE_RESTARTS))" > $@
+	@echo "touch $@"
+bar.x: ; echo >> $@
+baz.x: bar.x ; @echo "touch $@"
+',
+              '', '#MAKEFILE#:3: foo.x: No such file or directory
+echo >> bar.x
+touch foo.x
+restarts=1
+touch baz.x');
+
+# Now run with -W bar.x
+
+# Tweak foo.x's timestamp so the update will change it.
+&utouch(1000, 'foo.x');
+
+run_make_test(undef, '-W bar.x', "restarts=\ntouch foo.x\nrestarts=1\ntouch baz.x");
+
+rmfiles('foo.x', 'bar.x');
+
+# Test -W on vpath-found files: it should take effect.
+# Savannah bug # 15341
+
+mkdir('x-dir', 0777);
+utouch(-20, 'x-dir/x');
+touch('y');
+
+run_make_test('
+y: x ; @echo cp $< $@
+',
+              '-W x-dir/x VPATH=x-dir',
+              'cp x-dir/x y');
+
+# Make sure ./ stripping doesn't interfere with the match.
+
+run_make_test('
+y: x ; @echo cp $< $@
+',
+              '-W ./x-dir/x VPATH=x-dir',
+              'cp x-dir/x y');
+
+run_make_test(undef,
+              '-W x-dir/x VPATH=./x-dir',
+              'cp ./x-dir/x y');
+
+unlink(qw(y x-dir/x));
+rmdir('x-dir');
+
+1;
Index: trunk/src/gmake/tests/scripts/options/dash-e
===================================================================
--- trunk/src/gmake/tests/scripts/options/dash-e	(revision 466)
+++ trunk/src/gmake/tests/scripts/options/dash-e	(revision 503)
@@ -5,5 +5,5 @@
 $details = "";
 
-$ENV{GOOGLE} = 'boggle';
+$extraENV{GOOGLE} = 'boggle';
 
 open(MAKEFILE,"> $makefile");
Index: trunk/src/gmake/tests/scripts/options/symlinks
===================================================================
--- trunk/src/gmake/tests/scripts/options/symlinks	(revision 466)
+++ trunk/src/gmake/tests/scripts/options/symlinks	(revision 503)
@@ -6,5 +6,13 @@
 
 # Only run these tests if the system sypports symlinks
-if (eval { symlink("",""); 1 }) {
+
+# Apparently the Windows port of Perl reports that it does support symlinks
+# (in that the symlink() function doesn't fail) but it really doesn't, so
+# check for it explicitly.
+
+if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) {
+  # This test is N/A 
+  -1;
+} else {
 
   # Set up a symlink sym -> dep
@@ -43,5 +51,18 @@
 
   rmfiles('targ', 'dep', 'sym', 'dep1');
+
+  # Check handling when symlinks point to non-existent files.  Without -L we
+  # should get an error: with -L we should use the timestamp of the symlink.
+
+  symlink("../$dirname/dep", 'sym');
+  run_make_test('targ: sym ; @echo make $@ from $<', '',
+                "#MAKE#: *** No rule to make target `sym', needed by `targ'.  Stop.", 512);
+
+  run_make_test('targ: sym ; @echo make $@ from $<', '-L',
+                'make targ from sym');
+
+
+  rmfiles('targ', 'sym');
+
+  1;
 }
-
-1;
Index: trunk/src/gmake/tests/scripts/options/warn-undefined-variables
===================================================================
--- trunk/src/gmake/tests/scripts/options/warn-undefined-variables	(revision 503)
+++ trunk/src/gmake/tests/scripts/options/warn-undefined-variables	(revision 503)
@@ -0,0 +1,25 @@
+#                                                                    -*-perl-*-
+
+$description = "Test the --warn-undefined-variables option.";
+
+$details = "Verify that warnings are printed for referencing undefined variables.";
+
+# Without --warn-undefined-variables, nothing should happen
+run_make_test('
+EMPTY =
+EREF = $(EMPTY)
+UREF = $(UNDEFINED)
+
+SEREF := $(EREF)
+SUREF := $(UREF)
+
+all: ; @echo ref $(EREF) $(UREF)',
+              '', 'ref');
+
+# With --warn-undefined-variables, it should warn me
+run_make_test(undef, '--warn-undefined-variables',
+              "#MAKEFILE#:7: warning: undefined variable `UNDEFINED'
+#MAKEFILE#:9: warning: undefined variable `UNDEFINED'
+ref");
+
+1;
Index: trunk/src/gmake/tests/scripts/targets/FORCE
===================================================================
--- trunk/src/gmake/tests/scripts/targets/FORCE	(revision 466)
+++ trunk/src/gmake/tests/scripts/targets/FORCE	(revision 503)
@@ -1,14 +1,7 @@
+#                                                                    -*-perl-*-
+
 $description = "The following tests rules without Commands or Dependencies.";
 
 $details = "If the rule ...\n";
-
-if ($vos)
-{
-   $delete_command = "delete_file";
-}
-else
-{
-   $delete_command = "rm";
-}
 
 open(MAKEFILE,"> $makefile");
Index: trunk/src/gmake/tests/scripts/targets/PHONY
===================================================================
--- trunk/src/gmake/tests/scripts/targets/PHONY	(revision 466)
+++ trunk/src/gmake/tests/scripts/targets/PHONY	(revision 503)
@@ -1,2 +1,4 @@
+#                                                                    -*-perl-*-
+
 $description = "The following tests the use of a PHONY target.  It makes\n"
               ."sure that the rules under a target get executed even if\n"
@@ -8,13 +10,4 @@
           ."directory.  Although this file exists, the rule under the target\n"
           ."clean should still execute because of it's phony status.";
-
-if ($vos)
-{
-   $delete_command = "delete_file";
-}
-else
-{
-   $delete_command = "rm";
-}
 
 $example = "EXAMPLE_FILE";
Index: trunk/src/gmake/tests/scripts/targets/SILENT
===================================================================
--- trunk/src/gmake/tests/scripts/targets/SILENT	(revision 466)
+++ trunk/src/gmake/tests/scripts/targets/SILENT	(revision 503)
@@ -1,2 +1,4 @@
+#                                                                    -*-perl-*-
+
 $description = "The following tests the special target .SILENT.  By simply\n"
               ."mentioning this as a target, it tells make not to print\n"
@@ -5,13 +7,4 @@
 $details = "This test is the same as the clean test except that it should\n"
           ."not echo its command before deleting the specified file.\n";
-
-if ($vos)
-{
-   $delete_command = "delete_file";
-}
-else
-{
-   $delete_command = "rm";
-}
 
 $example = "EXAMPLE_FILE";
Index: trunk/src/gmake/tests/scripts/variables/INCLUDE_DIRS
===================================================================
--- trunk/src/gmake/tests/scripts/variables/INCLUDE_DIRS	(revision 503)
+++ trunk/src/gmake/tests/scripts/variables/INCLUDE_DIRS	(revision 503)
@@ -0,0 +1,46 @@
+#                                                                    -*-perl-*-
+$description = "Test the .INCLUDE_DIRS special variable.";
+
+$details = "";
+
+use Cwd;
+
+$dir = cwd;
+$dir =~ s,.*/([^/]+)$,../$1,;
+
+# Test #1: The content of .INCLUDE_DIRS depends on the platform for which
+#          make was built. What we know for sure is that it shouldn't be
+#          empty.
+#
+run_make_test('
+ifeq ($(.INCLUDE_DIRS),)
+$(warning .INCLUDE_DIRS is empty)
+endif
+
+.PHONY: all
+all:;@:
+',
+'',
+'');
+
+
+# Test #2: Make sure -I paths end up in .INCLUDE_DIRS.
+#
+run_make_test('
+ifeq ($(dir),)
+$(warning dir is empty)
+endif
+
+ifeq ($(filter $(dir),$(.INCLUDE_DIRS)),)
+$(warning .INCLUDE_DIRS does not contain $(dir))
+endif
+
+.PHONY: all
+all:;@:
+',
+"-I$dir dir=$dir",
+'');
+
+
+# This tells the test driver that the perl test script executed properly.
+1;
Index: trunk/src/gmake/tests/scripts/variables/MAKE_RESTARTS
===================================================================
--- trunk/src/gmake/tests/scripts/variables/MAKE_RESTARTS	(revision 503)
+++ trunk/src/gmake/tests/scripts/variables/MAKE_RESTARTS	(revision 503)
@@ -0,0 +1,62 @@
+#                                                                    -*-perl-*-
+
+$description = "Test the MAKE_RESTARTS variable.";
+
+# Test basic capability
+
+run_make_test('
+all: ; @:
+$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
+include foo.x
+foo.x: ; @touch $@
+',
+              '', 'MAKE_RESTARTS=
+#MAKEFILE#:4: foo.x: No such file or directory
+MAKE_RESTARTS=1');
+
+rmfiles('foo.x');
+
+# Test multiple restarts
+
+run_make_test('
+all: ; @:
+$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
+include foo.x
+foo.x: ; @echo "include bar.x" > $@
+bar.x: ; @touch $@
+',
+              '', 'MAKE_RESTARTS=
+#MAKEFILE#:4: foo.x: No such file or directory
+MAKE_RESTARTS=1
+foo.x:1: bar.x: No such file or directory
+MAKE_RESTARTS=2');
+
+rmfiles('foo.x', 'bar.x');
+
+# Test multiple restarts and make sure the variable is cleaned up
+
+run_make_test('
+recurse:
+	@echo recurse MAKE_RESTARTS=$$MAKE_RESTARTS
+	@$(MAKE) -f #MAKEFILE# all
+all:
+	@echo all MAKE_RESTARTS=$$MAKE_RESTARTS
+$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
+include foo.x
+foo.x: ; @echo "include bar.x" > $@
+bar.x: ; @touch $@
+',
+              '', "MAKE_RESTARTS=
+#MAKEFILE#:8: foo.x: No such file or directory
+MAKE_RESTARTS=1
+foo.x:1: bar.x: No such file or directory
+MAKE_RESTARTS=2
+recurse MAKE_RESTARTS=
+MAKE_RESTARTS=
+#MAKE#[1]: Entering directory `#PWD#'
+all MAKE_RESTARTS=
+#MAKE#[1]: Leaving directory `#PWD#'");
+
+rmfiles('foo.x', 'bar.x');
+
+1;
Index: trunk/src/gmake/tests/scripts/variables/SHELL
===================================================================
--- trunk/src/gmake/tests/scripts/variables/SHELL	(revision 466)
+++ trunk/src/gmake/tests/scripts/variables/SHELL	(revision 503)
@@ -5,13 +5,14 @@
 # Find the default value when SHELL is not set.  On UNIX it will be /bin/sh,
 # but on other platforms who knows?
-$oshell = $ENV{SHELL};
+resetENV();
 delete $ENV{SHELL};
-$mshell = `echo 'all:;\@echo \$(SHELL)' | $make_name -f-`;
+$mshell = `echo 'all:;\@echo \$(SHELL)' | $make_path -f-`;
 chop $mshell;
 
 # According to POSIX, the value of SHELL in the environment has no impact on
 # the value in the makefile.
+# Note %extraENV takes precedence over the default value for the shell.
 
-$ENV{SHELL} = '/dev/null';
+$extraENV{SHELL} = '/dev/null';
 run_make_test('all:;@echo "$(SHELL)"', '', $mshell);
 
@@ -19,19 +20,21 @@
 # exported to the subshell!  I wanted to set SHELL to be $^X (perl) in the
 # makefile, but make runs $(SHELL) -c 'commandline' and that doesn't work at
-# all when $(SHELL) is perl :-/.  So, we just add an extra initial / and hope
-# for the best on non-UNIX platforms :-/.
+# all when $(SHELL) is perl :-/.  So, we just add an extra initial /./ which
+# works well on UNIX and seems to work OK on at least some non-UNIX systems.
 
-$ENV{SHELL} = $mshell;
+$extraENV{SHELL} = $mshell;
 
-run_make_test("SHELL := /$mshell\n".'
+run_make_test("SHELL := /./$mshell\n".'
 all:;@echo "$(SHELL) $$SHELL"
-', '', "/$mshell $mshell");
+', '', "/./$mshell $mshell");
 
 # As a GNU make extension, if make's SHELL variable is explicitly exported,
 # then we really _DO_ export it.
 
-run_make_test("export SHELL := /$mshell\n".'
+$extraENV{SHELL} = $mshell;
+
+run_make_test("export SHELL := /./$mshell\n".'
 all:;@echo "$(SHELL) $$SHELL"
-', '', "/$mshell /$mshell");
+', '', "/./$mshell /./$mshell");
 
 
@@ -39,11 +42,15 @@
 # variable.
 
-run_make_test("all: SHELL := /$mshell\n".'
+$extraENV{SHELL} = $mshell;
+
+run_make_test("all: SHELL := /./$mshell\n".'
 all:;@echo "$(SHELL) $$SHELL"
-', '', "/$mshell $mshell");
+', '', "/./$mshell $mshell");
 
-run_make_test("all: export SHELL := /$mshell\n".'
+$extraENV{SHELL} = $mshell;
+
+run_make_test("all: export SHELL := /./$mshell\n".'
 all:;@echo "$(SHELL) $$SHELL"
-', '', "/$mshell $mshell");
+', '', "/./$mshell $mshell");
 
 1;
Index: trunk/src/gmake/tests/scripts/variables/automatic
===================================================================
--- trunk/src/gmake/tests/scripts/variables/automatic	(revision 466)
+++ trunk/src/gmake/tests/scripts/variables/automatic	(revision 503)
@@ -28,5 +28,5 @@
 close(MAKEFILE);
 
-# TEST #1 -- simple test
+# TEST #0 -- simple test
 # -------
 
@@ -47,5 +47,5 @@
 unlink(qw(foo.x bar.y baz.z));
 
-# TEST #2 -- test the SysV emulation of $$@ etc.
+# TEST #1 -- test the SysV emulation of $$@ etc.
 # -------
 
@@ -55,4 +55,5 @@
 print MAKEFILE "dir = $dir\n";
 print MAKEFILE <<'EOF';
+.SECONDEXPANSION:
 .SUFFIXES:
 .DEFAULT: ; @echo '$@'
@@ -79,5 +80,5 @@
 &compare_output($answer, &get_logfile(1));
 
-# TEST #3 -- test for Savannah bug #12320.
+# TEST #2 -- test for Savannah bug #12320.
 #
 run_make_test('
@@ -87,10 +88,24 @@
 	@echo $*
 
-mbr.src: ; @:
+mbr.src: ; @:',
+              '',
+              'mbr');
 
-',
-'',
-'mbr
-');
+# TEST #3 -- test for Savannah bug #8154
+# 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.
+
+#touch('foo');
+#
+#run_make_test('
+#foo: bar ; @echo "\$$? = $?"
+#bar: ;',
+#              '',
+#              '$? = bar');
+#
+#unlink('foo');
 
 1;
Index: trunk/src/gmake/tests/scripts/variables/negative
===================================================================
--- trunk/src/gmake/tests/scripts/variables/negative	(revision 503)
+++ trunk/src/gmake/tests/scripts/variables/negative	(revision 503)
@@ -0,0 +1,46 @@
+#                                                                    -*-perl-*-
+
+$description = "Run some negative tests (things that should fail).";
+
+# TEST #0
+# Check that non-terminated variable references are detected (and
+# reported using the best filename/lineno info
+run_make_test('
+foo = bar
+x = $(foo
+y = $x
+
+all: ; @echo $y
+',
+              '', '#MAKEFILE#:3: *** unterminated variable reference.  Stop.',
+              512);
+
+# TEST #1
+# Bogus variable value passed on the command line.
+run_make_test(undef,
+              'x=\$\(other',
+              '#MAKEFILE#:4: *** unterminated variable reference.  Stop.',
+              512);
+
+# TEST #2
+# Again, but this time while reading the makefile.
+run_make_test('
+foo = bar
+x = $(foo
+y = $x
+
+z := $y
+
+all: ; @echo $y
+',
+              '', '#MAKEFILE#:3: *** unterminated variable reference.  Stop.',
+              512);
+
+# TEST #3
+# Bogus variable value passed on the command line.
+run_make_test(undef,
+              'x=\$\(other',
+              '#MAKEFILE#:4: *** unterminated variable reference.  Stop.',
+              512);
+
+1;
Index: trunk/src/gmake/tests/test_driver.pl
===================================================================
--- trunk/src/gmake/tests/test_driver.pl	(revision 466)
+++ trunk/src/gmake/tests/test_driver.pl	(revision 503)
@@ -1,17 +1,33 @@
 #!/usr/bin/perl
 # -*-perl-*-
-
+#
 # Modification history:
 # Written 91-12-02 through 92-01-01 by Stephen McGee.
 # Modified 92-02-11 through 92-02-22 by Chris Arthur to further generalize.
-# End of modification history
+#
+# Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+# 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
 
 # Test driver routines used by a number of test suites, including
 # those for SCS, make, roll_dir, and scan_deps (?).
-
+#
 # this routine controls the whole mess; each test suite sets up a few
 # variables and then calls &toplevel, which does all the real work.
 
-# $Id: test_driver.pl,v 1.14 2005/02/28 07:48:23 psmith Exp $
+# $Id: test_driver.pl,v 1.19 2006/03/10 02:20:45 psmith Exp $
 
 
@@ -33,10 +49,33 @@
 $test_passed = 1;
 
+
+# %makeENV is the cleaned-out environment.
+%makeENV = ();
+
+# %extraENV are any extra environment variables the tests might want to set.
+# These are RESET AFTER EVERY TEST!
+%extraENV = ();
+
+# %origENV is the caller's original environment
+%origENV = %ENV;
+
+sub resetENV
+{
+  # We used to say "%ENV = ();" but this doesn't work in Perl 5.000
+  # through Perl 5.004.  It was fixed in Perl 5.004_01, but we don't
+  # want to require that here, so just delete each one individually.
+  foreach $v (keys %ENV) {
+    delete $ENV{$v};
+  }
+
+  %ENV = %makeENV;
+  foreach $v (keys %extraENV) {
+    $ENV{$v} = $extraENV{$v};
+    delete $extraENV{$v};
+  }
+}
+
 sub toplevel
 {
-  # Get a clean environment
-
-  %makeENV = ();
-
   # Pull in benign variables from the user's environment
   #
@@ -58,13 +97,5 @@
   %origENV = %ENV;
 
-  # We used to say "%ENV = ();" but this doesn't work in Perl 5.000
-  # through Perl 5.004.  It was fixed in Perl 5.004_01, but we don't
-  # want to require that here, so just delete each one individually.
-
-  foreach $v (keys %ENV) {
-    delete $ENV{$v};
-  }
-
-  %ENV = %makeENV;
+  resetENV();
 
   $| = 1;                     # unbuffered output
@@ -134,10 +165,9 @@
     opendir (SCRIPTDIR, $scriptpath)
 	|| &error ("Couldn't opendir $scriptpath: $!\n");
-    @dirs = grep (!/^(\.\.?|CVS|RCS)$/, readdir (SCRIPTDIR) );
+    @dirs = grep (!/^(\..*|CVS|RCS)$/, readdir (SCRIPTDIR) );
     closedir (SCRIPTDIR);
     foreach $dir (@dirs)
     {
-      next if ($dir =~ /^\.\.?$/ || $dir eq 'CVS' || $dir eq 'RCS'
-               || ! -d "$scriptpath/$dir");
+      next if ($dir =~ /^(\..*|CVS|RCS)$/ || ! -d "$scriptpath/$dir");
       push (@rmdirs, $dir);
       mkdir ("$workpath/$dir", 0777)
@@ -145,9 +175,9 @@
       opendir (SCRIPTDIR, "$scriptpath/$dir")
 	  || &error ("Couldn't opendir $scriptpath/$dir: $!\n");
-      @files = grep (!/^(\.\.?|CVS|RCS)$/, readdir (SCRIPTDIR) );
+      @files = grep (!/^(\..*|CVS|RCS|.*~)$/, readdir (SCRIPTDIR) );
       closedir (SCRIPTDIR);
       foreach $test (@files)
       {
-        next if $test =~ /~$/ || -d $test;
+        -d $test and next;
 	push (@TESTS, "$dir/$test");
       }
@@ -398,6 +428,5 @@
       $baseext = 'b';
       $extext = '';
-   }
-    else {
+    } else {
       $logext = 'log';
       $diffext = 'diff';
@@ -430,10 +459,7 @@
     {
       $suite_passed = 0;
-      if (length ($@))
-      {
+      if (length ($@)) {
         warn "\n*** Test died ($testname): $@\n";
-      }
-      else
-      {
+      } else {
         warn "\n*** Couldn't run $perl_testname\n";
       }
@@ -461,5 +487,5 @@
       }
     }
-    elsif ($code > 0) {
+    elsif (!defined $code || $code > 0) {
       $status = "FAILED ($tests_passed/$tests_run passed)";
     }
@@ -745,4 +771,9 @@
   local ($code);
 
+  # We reset this before every invocation.  On Windows I think there is only
+  # one environment, not one per process, so I think that variables set in
+  # test scripts might leak into subsequent tests if this isn't reset--???
+  resetENV();
+
   print "\nrun_command: @_\n" if $debug;
   $code = system @_;
@@ -761,4 +792,9 @@
   local ($filename) = shift;
   local ($code);
+
+  # We reset this before every invocation.  On Windows I think there is only
+  # one environment, not one per process, so I think that variables set in
+  # test scripts might leak into subsequent tests if this isn't reset--???
+  resetENV();
 
   &attach_default_output ($filename);
Index: trunk/src/gmake/variable.c
===================================================================
--- trunk/src/gmake/variable.c	(revision 466)
+++ trunk/src/gmake/variable.c	(revision 503)
@@ -1,23 +1,24 @@
 /* Internals of variables for GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
-2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
+
+#include <assert.h>
+
 #include "dep.h"
 #include "filedef.h"
@@ -618,5 +619,5 @@
 initialize_file_variables (struct file *file, int reading)
 {
-  register struct variable_set_list *l = file->variables;
+  struct variable_set_list *l = file->variables;
 
   if (l == 0)
@@ -714,27 +715,4 @@
    and free all its storage.  */
 
-static void
-free_variable_name_and_value (const void *item)
-{
-  struct variable *v = (struct variable *) item;
-  free (v->name);
-  free (v->value);
-}
-
-void
-pop_variable_scope (void)
-{
-  struct variable_set_list *setlist = current_variable_set_list;
-  struct variable_set *set = setlist->set;
-
-  current_variable_set_list = setlist->next;
-  free ((char *) setlist);
-
-  hash_map (&set->table, free_variable_name_and_value);
-  hash_free (&set->table, 1);
-
-  free ((char *) set);
-}
-
 struct variable_set_list *
 create_new_variable_set (void)
@@ -755,10 +733,78 @@
 }
 
-/* Create a new variable set and push it on the current setlist.  */
+static void
+free_variable_name_and_value (const void *item)
+{
+  struct variable *v = (struct variable *) item;
+  free (v->name);
+  free (v->value);
+}
+
+void
+free_variable_set (struct variable_set_list *list)
+{
+  hash_map (&list->set->table, free_variable_name_and_value);
+  hash_free (&list->set->table, 1);
+  free ((char *) list->set);
+  free ((char *) list);
+}
+
+/* Create a new variable set and push it on the current setlist.
+   If we're pushing a global scope (that is, the current scope is the global
+   scope) then we need to "push" it the other way: file variable sets point
+   directly to the global_setlist so we need to replace that with the new one.
+ */
 
 struct variable_set_list *
 push_new_variable_scope (void)
 {
-  return (current_variable_set_list = create_new_variable_set());
+  current_variable_set_list = create_new_variable_set();
+  if (current_variable_set_list->next == &global_setlist)
+    {
+      /* It was the global, so instead of new -> &global we want to replace
+         &global with the new one and have &global -> new, with current still
+         pointing to &global  */
+      struct variable_set *set = current_variable_set_list->set;
+      current_variable_set_list->set = global_setlist.set;
+      global_setlist.set = set;
+      current_variable_set_list->next = global_setlist.next;
+      global_setlist.next = current_variable_set_list;
+      current_variable_set_list = &global_setlist;
+    }
+  return (current_variable_set_list);
+}
+
+void
+pop_variable_scope (void)
+{
+  struct variable_set_list *setlist;
+  struct variable_set *set;
+
+  /* Can't call this if there's no scope to pop!  */
+  assert(current_variable_set_list->next != NULL);
+
+  if (current_variable_set_list != &global_setlist)
+    {
+      /* We're not pointing to the global setlist, so pop this one.  */
+      setlist = current_variable_set_list;
+      set = setlist->set;
+      current_variable_set_list = setlist->next;
+    }
+  else
+    {
+      /* This set is the one in the global_setlist, but there is another global
+         set beyond that.  We want to copy that set to global_setlist, then
+         delete what used to be in global_setlist.  */
+      setlist = global_setlist.next;
+      set = global_setlist.set;
+      global_setlist.set = setlist->set;
+      global_setlist.next = setlist->next;
+    }
+
+  /* Free the one we no longer need.  */
+  free ((char *) setlist);
+  hash_map (&set->table, free_variable_name_and_value);
+  hash_free (&set->table, 1);
+  free ((char *) set);
 }
 
@@ -796,19 +842,26 @@
                           struct variable_set_list *setlist1)
 {
-  register struct variable_set_list *list0 = *setlist0;
+  struct variable_set_list *to = *setlist0;
   struct variable_set_list *last0 = 0;
 
-  while (setlist1 != 0 && list0 != 0)
-    {
-      struct variable_set_list *next = setlist1;
-      setlist1 = setlist1->next;
-
-      merge_variable_sets (list0->set, next->set);
-
-      last0 = list0;
-      list0 = list0->next;
-    }
-
-  if (setlist1 != 0)
+  /* If there's nothing to merge, stop now.  */
+  if (!setlist1)
+    return;
+
+  /* This loop relies on the fact that all setlists terminate with the global
+     setlist (before NULL).  If that's not true, arguably we SHOULD die.  */
+  if (to)
+    while (setlist1 != &global_setlist && to != &global_setlist)
+      {
+        struct variable_set_list *from = setlist1;
+        setlist1 = setlist1->next;
+
+        merge_variable_sets (to->set, from->set);
+
+        last0 = to;
+        to = to->next;
+      }
+
+  if (setlist1 != &global_setlist)
     {
       if (last0 == 0)
@@ -1310,5 +1363,6 @@
 #endif /* __MSDOS__ */
 #ifdef WINDOWS32
-  if ((origin == o_file || origin == o_override) && streq (varname, "SHELL"))
+  if ((origin == o_file || origin == o_override || origin == o_command)
+      && streq (varname, "SHELL"))
     {
       extern char *default_shell;
Index: trunk/src/gmake/variable.h
===================================================================
--- trunk/src/gmake/variable.h	(revision 466)
+++ trunk/src/gmake/variable.h	(revision 503)
@@ -1,20 +1,19 @@
 /* Definitions for using variables in GNU Make.
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 2002 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "hash.h"
@@ -142,4 +141,5 @@
 /* variable.c */
 extern struct variable_set_list *create_new_variable_set PARAMS ((void));
+extern void free_variable_set PARAMS ((struct variable_set_list *));
 extern struct variable_set_list *push_new_variable_scope PARAMS ((void));
 extern void pop_variable_scope PARAMS ((void));
Index: trunk/src/gmake/version.c
===================================================================
--- trunk/src/gmake/version.c	(revision 466)
+++ trunk/src/gmake/version.c	(revision 503)
@@ -1,2 +1,20 @@
+/* Record version and build host architecture for GNU make.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 /* We use <config.h> instead of "config.h" so that a compilation
    using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
Index: trunk/src/gmake/vmsdir.h
===================================================================
--- trunk/src/gmake/vmsdir.h	(revision 466)
+++ trunk/src/gmake/vmsdir.h	(revision 503)
@@ -1,3 +1,18 @@
-/* dirent.h for vms */
+/* dirent.h for vms
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #ifndef VMSDIR_H
Index: trunk/src/gmake/vmsfunctions.c
===================================================================
--- trunk/src/gmake/vmsfunctions.c	(revision 466)
+++ trunk/src/gmake/vmsfunctions.c	(revision 503)
@@ -1,3 +1,18 @@
-/* vmsfunctions.c */
+/* VMS functions
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -91,5 +106,8 @@
   strncpy (dentry->d_name, dnam->nam$l_name, dentry->d_namlen);
   dentry->d_name[dentry->d_namlen] = '\0';
+
+#ifdef HAVE_CASE_INSENSITIVE_FS
   uppercasify (dentry->d_name);
+#endif
 
   return (dentry);
Index: trunk/src/gmake/vmsify.c
===================================================================
--- trunk/src/gmake/vmsify.c	(revision 466)
+++ trunk/src/gmake/vmsify.c	(revision 503)
@@ -1,11 +1,22 @@
-/*
-  vmsify.c
-
-  Module for vms <-> unix file name conversion
-
-  Written by Klaus Kämpf (kkaempf@progis.de)
-  of proGIS Software, Aachen, Germany
-
-*/
+/* vmsify.c -- Module for vms <-> unix file name conversion
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
+/* Written by Klaus Kämpf (kkaempf@progis.de)
+   of proGIS Software, Aachen, Germany */
+
 
 #include <stdio.h>
@@ -80,7 +91,9 @@
       else
 	{
+#ifdef HAVE_CASE_INSENSITIVE_FS
 	  if (isupper ((unsigned char)**from))
 	    **to = tolower ((unsigned char)**from);
 	  else
+#endif
 	    **to = **from;
 	}
Index: trunk/src/gmake/vmsjobs.c
===================================================================
--- trunk/src/gmake/vmsjobs.c	(revision 466)
+++ trunk/src/gmake/vmsjobs.c	(revision 503)
@@ -1,13 +1,31 @@
-
-
-
 /* --------------- Moved here from job.c ---------------
    This file must be #included in job.c, as it accesses static functions.
-*/
+
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
+#include <string.h>
+#include <descrip.h>
+#include <clidef.h>
+
+extern char *vmsify PARAMS ((char *name, int type));
 
 static int vms_jobsefnmask = 0;
 
 /* Wait for nchildren children to terminate */
-void
+static void
 vmsWaitForChildren(int *status)
 {
@@ -92,7 +110,4 @@
   return p;
 }
-
-#include <descrip.h>
-#include <clidef.h>
 
 /* This is called as an AST when a child process dies (it won't get
@@ -198,4 +213,5 @@
 
 /* local helpers to make ctrl+c and ctrl+y working, see below */
+#include <iodef.h>
 #include <libclidef.h>
 #include <ssdef.h>
Index: trunk/src/gmake/vpath.c
===================================================================
--- trunk/src/gmake/vpath.c	(revision 466)
+++ trunk/src/gmake/vpath.c	(revision 503)
@@ -1,20 +1,19 @@
 /* Implementation of pattern-matching file search paths for GNU Make.
-Copyright (C) 1988,89,91,92,93,94,95,96,97 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "make.h"
@@ -471,9 +470,25 @@
 	 In December 1993 I loosened this restriction to allow a file
 	 to be chosen if it is mentioned as a target in a makefile.  This
-	 seem logical.  */
+	 seem logical.
+
+         Special handling for -W / -o: make sure we preserve the special
+         values here.  Actually this whole thing is a little bogus: I think
+         we should ditch the name/hname thing and look into the renamed
+         capability that already exists for files: that is, have a new struct
+         file* entry for the VPATH-found file, and set the renamed field if
+         we use it.
+      */
       {
 	struct file *f = lookup_file (name);
 	if (f != 0)
-	  exists = not_target || f->is_target;
+          {
+            exists = not_target || f->is_target;
+            if (exists && mtime_ptr
+                && (f->last_mtime == OLD_MTIME || f->last_mtime == NEW_MTIME))
+              {
+                *mtime_ptr = f->last_mtime;
+                mtime_ptr = 0;
+              }
+          }
       }
 
@@ -522,4 +537,11 @@
                   continue;
                 }
+
+              /* Store the modtime into *MTIME_PTR for the caller.  */
+              if (mtime_ptr != 0)
+                {
+                  *mtime_ptr = FILE_TIMESTAMP_STAT_MODTIME (name, st);
+                  mtime_ptr = 0;
+                }
             }
 
@@ -529,11 +551,8 @@
           *file = savestring (name, (n + 1 - name) + flen);
 
+          /* If we get here and mtime_ptr hasn't been set, record
+             UNKNOWN_MTIME to indicate this.  */
           if (mtime_ptr != 0)
-            /* Store the modtime into *MTIME_PTR for the caller.
-               If we have had no need to stat the file here,
-               we record UNKNOWN_MTIME to indicate this.  */
-            *mtime_ptr = (exists_in_cache
-                          ? FILE_TIMESTAMP_STAT_MODTIME (name, st)
-                          : UNKNOWN_MTIME);
+            *mtime_ptr = UNKNOWN_MTIME;
 
           free (name);
Index: trunk/src/gmake/w32/.cvsignore
===================================================================
--- trunk/src/gmake/w32/.cvsignore	(revision 466)
+++ 	(revision )
@@ -1,1 +1,0 @@
-Makefile Makefile.in
Index: trunk/src/gmake/w32/.deps/libw32_a-misc.Po
===================================================================
--- trunk/src/gmake/w32/.deps/libw32_a-misc.Po	(revision 503)
+++ trunk/src/gmake/w32/.deps/libw32_a-misc.Po	(revision 503)
@@ -0,0 +1,1 @@
+# dummy
Index: trunk/src/gmake/w32/.deps/libw32_a-pathstuff.Po
===================================================================
--- trunk/src/gmake/w32/.deps/libw32_a-pathstuff.Po	(revision 503)
+++ trunk/src/gmake/w32/.deps/libw32_a-pathstuff.Po	(revision 503)
@@ -0,0 +1,1 @@
+# dummy
Index: trunk/src/gmake/w32/.deps/libw32_a-sub_proc.Po
===================================================================
--- trunk/src/gmake/w32/.deps/libw32_a-sub_proc.Po	(revision 503)
+++ trunk/src/gmake/w32/.deps/libw32_a-sub_proc.Po	(revision 503)
@@ -0,0 +1,1 @@
+# dummy
Index: trunk/src/gmake/w32/.deps/libw32_a-w32err.Po
===================================================================
--- trunk/src/gmake/w32/.deps/libw32_a-w32err.Po	(revision 503)
+++ trunk/src/gmake/w32/.deps/libw32_a-w32err.Po	(revision 503)
@@ -0,0 +1,1 @@
+# dummy
Index: trunk/src/gmake/w32/Makefile
===================================================================
--- trunk/src/gmake/w32/Makefile	(revision 503)
+++ trunk/src/gmake/w32/Makefile	(revision 503)
@@ -0,0 +1,494 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# w32/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+# Makefile.am to create libw32.a for mingw32 host.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/make
+pkglibdir = $(libdir)/make
+pkgincludedir = $(includedir)/make
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = w32
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
+	$(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
+	$(top_srcdir)/config/lib-ld.m4 \
+	$(top_srcdir)/config/lib-link.m4 \
+	$(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
+	$(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libw32_a_AR = $(AR) $(ARFLAGS)
+libw32_a_LIBADD =
+am_libw32_a_OBJECTS = libw32_a-misc.$(OBJEXT) \
+	libw32_a-sub_proc.$(OBJEXT) libw32_a-w32err.$(OBJEXT) \
+	libw32_a-pathstuff.$(OBJEXT)
+libw32_a_OBJECTS = $(am_libw32_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libw32_a_SOURCES)
+DIST_SOURCES = $(libw32_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /opt/src/make/make-release/config/missing --run aclocal-1.9
+ALLOCA = 
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /opt/src/make/make-release/config/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /opt/src/make/make-release/config/missing --run autoconf
+AUTOHEADER = ${SHELL} /opt/src/make/make-release/config/missing --run autoheader
+AUTOMAKE = ${SHELL} /opt/src/make/make-release/config/missing --run automake-1.9
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = grep -E
+EXEEXT = 
+GETLOADAVG_LIBS = 
+GLOBINC = 
+GLOBLIB = 
+GMSGFMT = /usr/bin/msgfmt
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+INTLLIBS = 
+KMEM_GROUP = 
+LDFLAGS = 
+LIBICONV = -liconv
+LIBINTL = 
+LIBOBJS = 
+LIBS = -lrt 
+LTLIBICONV = -liconv
+LTLIBINTL = 
+LTLIBOBJS = 
+MAKEINFO = ${SHELL} /opt/src/make/make-release/config/missing --run makeinfo
+MAKE_HOST = i686-pc-linux-gnu
+MKINSTALLDIRS = $(top_builddir)/config/mkinstalldirs
+MSGFMT = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NEED_SETGID = false
+OBJEXT = o
+PACKAGE = make
+PACKAGE_BUGREPORT = bug-make@gnu.org
+PACKAGE_NAME = GNU make
+PACKAGE_STRING = GNU make 3.81
+PACKAGE_TARNAME = make
+PACKAGE_VERSION = 3.81
+PATH_SEPARATOR = :
+PERL = perl
+POSUB = po
+RANLIB = ranlib
+REMOTE = stub
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+U = 
+USE_CUSTOMS_FALSE = 
+USE_CUSTOMS_TRUE = #
+USE_LOCAL_GLOB_FALSE = 
+USE_LOCAL_GLOB_TRUE = #
+USE_NLS = yes
+VERSION = 3.81
+WINDOWSENV_FALSE = 
+WINDOWSENV_TRUE = #
+XGETTEXT = /usr/bin/xgettext
+ac_ct_CC = gcc
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = 
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias = 
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias = 
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /opt/src/make/make-release/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+noinst_LIBRARIES = libw32.a
+libw32_a_SOURCES = subproc/misc.c subproc/sub_proc.c subproc/w32err.c \
+		    pathstuff.c
+
+libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  w32/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  w32/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libw32.a: $(libw32_a_OBJECTS) $(libw32_a_DEPENDENCIES) 
+	-rm -f libw32.a
+	$(libw32_a_AR) libw32.a $(libw32_a_OBJECTS) $(libw32_a_LIBADD)
+	$(RANLIB) libw32.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/libw32_a-misc.Po
+include ./$(DEPDIR)/libw32_a-pathstuff.Po
+include ./$(DEPDIR)/libw32_a-sub_proc.Po
+include ./$(DEPDIR)/libw32_a-w32err.Po
+
+.c.o:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+libw32_a-misc.o: subproc/misc.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-misc.o -MD -MP -MF "$(DEPDIR)/libw32_a-misc.Tpo" -c -o libw32_a-misc.o `test -f 'subproc/misc.c' || echo '$(srcdir)/'`subproc/misc.c; \
+	then mv -f "$(DEPDIR)/libw32_a-misc.Tpo" "$(DEPDIR)/libw32_a-misc.Po"; else rm -f "$(DEPDIR)/libw32_a-misc.Tpo"; exit 1; fi
+#	source='subproc/misc.c' object='libw32_a-misc.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-misc.o `test -f 'subproc/misc.c' || echo '$(srcdir)/'`subproc/misc.c
+
+libw32_a-misc.obj: subproc/misc.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-misc.obj -MD -MP -MF "$(DEPDIR)/libw32_a-misc.Tpo" -c -o libw32_a-misc.obj `if test -f 'subproc/misc.c'; then $(CYGPATH_W) 'subproc/misc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/misc.c'; fi`; \
+	then mv -f "$(DEPDIR)/libw32_a-misc.Tpo" "$(DEPDIR)/libw32_a-misc.Po"; else rm -f "$(DEPDIR)/libw32_a-misc.Tpo"; exit 1; fi
+#	source='subproc/misc.c' object='libw32_a-misc.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-misc.obj `if test -f 'subproc/misc.c'; then $(CYGPATH_W) 'subproc/misc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/misc.c'; fi`
+
+libw32_a-sub_proc.o: subproc/sub_proc.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-sub_proc.o -MD -MP -MF "$(DEPDIR)/libw32_a-sub_proc.Tpo" -c -o libw32_a-sub_proc.o `test -f 'subproc/sub_proc.c' || echo '$(srcdir)/'`subproc/sub_proc.c; \
+	then mv -f "$(DEPDIR)/libw32_a-sub_proc.Tpo" "$(DEPDIR)/libw32_a-sub_proc.Po"; else rm -f "$(DEPDIR)/libw32_a-sub_proc.Tpo"; exit 1; fi
+#	source='subproc/sub_proc.c' object='libw32_a-sub_proc.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-sub_proc.o `test -f 'subproc/sub_proc.c' || echo '$(srcdir)/'`subproc/sub_proc.c
+
+libw32_a-sub_proc.obj: subproc/sub_proc.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-sub_proc.obj -MD -MP -MF "$(DEPDIR)/libw32_a-sub_proc.Tpo" -c -o libw32_a-sub_proc.obj `if test -f 'subproc/sub_proc.c'; then $(CYGPATH_W) 'subproc/sub_proc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/sub_proc.c'; fi`; \
+	then mv -f "$(DEPDIR)/libw32_a-sub_proc.Tpo" "$(DEPDIR)/libw32_a-sub_proc.Po"; else rm -f "$(DEPDIR)/libw32_a-sub_proc.Tpo"; exit 1; fi
+#	source='subproc/sub_proc.c' object='libw32_a-sub_proc.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-sub_proc.obj `if test -f 'subproc/sub_proc.c'; then $(CYGPATH_W) 'subproc/sub_proc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/sub_proc.c'; fi`
+
+libw32_a-w32err.o: subproc/w32err.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-w32err.o -MD -MP -MF "$(DEPDIR)/libw32_a-w32err.Tpo" -c -o libw32_a-w32err.o `test -f 'subproc/w32err.c' || echo '$(srcdir)/'`subproc/w32err.c; \
+	then mv -f "$(DEPDIR)/libw32_a-w32err.Tpo" "$(DEPDIR)/libw32_a-w32err.Po"; else rm -f "$(DEPDIR)/libw32_a-w32err.Tpo"; exit 1; fi
+#	source='subproc/w32err.c' object='libw32_a-w32err.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-w32err.o `test -f 'subproc/w32err.c' || echo '$(srcdir)/'`subproc/w32err.c
+
+libw32_a-w32err.obj: subproc/w32err.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-w32err.obj -MD -MP -MF "$(DEPDIR)/libw32_a-w32err.Tpo" -c -o libw32_a-w32err.obj `if test -f 'subproc/w32err.c'; then $(CYGPATH_W) 'subproc/w32err.c'; else $(CYGPATH_W) '$(srcdir)/subproc/w32err.c'; fi`; \
+	then mv -f "$(DEPDIR)/libw32_a-w32err.Tpo" "$(DEPDIR)/libw32_a-w32err.Po"; else rm -f "$(DEPDIR)/libw32_a-w32err.Tpo"; exit 1; fi
+#	source='subproc/w32err.c' object='libw32_a-w32err.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-w32err.obj `if test -f 'subproc/w32err.c'; then $(CYGPATH_W) 'subproc/w32err.c'; else $(CYGPATH_W) '$(srcdir)/subproc/w32err.c'; fi`
+
+libw32_a-pathstuff.o: pathstuff.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-pathstuff.o -MD -MP -MF "$(DEPDIR)/libw32_a-pathstuff.Tpo" -c -o libw32_a-pathstuff.o `test -f 'pathstuff.c' || echo '$(srcdir)/'`pathstuff.c; \
+	then mv -f "$(DEPDIR)/libw32_a-pathstuff.Tpo" "$(DEPDIR)/libw32_a-pathstuff.Po"; else rm -f "$(DEPDIR)/libw32_a-pathstuff.Tpo"; exit 1; fi
+#	source='pathstuff.c' object='libw32_a-pathstuff.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-pathstuff.o `test -f 'pathstuff.c' || echo '$(srcdir)/'`pathstuff.c
+
+libw32_a-pathstuff.obj: pathstuff.c
+	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-pathstuff.obj -MD -MP -MF "$(DEPDIR)/libw32_a-pathstuff.Tpo" -c -o libw32_a-pathstuff.obj `if test -f 'pathstuff.c'; then $(CYGPATH_W) 'pathstuff.c'; else $(CYGPATH_W) '$(srcdir)/pathstuff.c'; fi`; \
+	then mv -f "$(DEPDIR)/libw32_a-pathstuff.Tpo" "$(DEPDIR)/libw32_a-pathstuff.Po"; else rm -f "$(DEPDIR)/libw32_a-pathstuff.Tpo"; exit 1; fi
+#	source='pathstuff.c' object='libw32_a-pathstuff.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-pathstuff.obj `if test -f 'pathstuff.c'; then $(CYGPATH_W) 'pathstuff.c'; else $(CYGPATH_W) '$(srcdir)/pathstuff.c'; fi`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: trunk/src/gmake/w32/Makefile.am
===================================================================
--- trunk/src/gmake/w32/Makefile.am	(revision 466)
+++ trunk/src/gmake/w32/Makefile.am	(revision 503)
@@ -1,3 +1,18 @@
 # Makefile.am to create libw32.a for mingw32 host.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 noinst_LIBRARIES = libw32.a
Index: trunk/src/gmake/w32/Makefile.in
===================================================================
--- trunk/src/gmake/w32/Makefile.in	(revision 503)
+++ trunk/src/gmake/w32/Makefile.in	(revision 503)
@@ -0,0 +1,494 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile.am to create libw32.a for mingw32 host.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = w32
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
+	$(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
+	$(top_srcdir)/config/lib-ld.m4 \
+	$(top_srcdir)/config/lib-link.m4 \
+	$(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
+	$(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libw32_a_AR = $(AR) $(ARFLAGS)
+libw32_a_LIBADD =
+am_libw32_a_OBJECTS = libw32_a-misc.$(OBJEXT) \
+	libw32_a-sub_proc.$(OBJEXT) libw32_a-w32err.$(OBJEXT) \
+	libw32_a-pathstuff.$(OBJEXT)
+libw32_a_OBJECTS = $(am_libw32_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libw32_a_SOURCES)
+DIST_SOURCES = $(libw32_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GLOBINC = @GLOBINC@
+GLOBLIB = @GLOBLIB@
+GMSGFMT = @GMSGFMT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKE_HOST = @MAKE_HOST@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+REMOTE = @REMOTE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+U = @U@
+USE_CUSTOMS_FALSE = @USE_CUSTOMS_FALSE@
+USE_CUSTOMS_TRUE = @USE_CUSTOMS_TRUE@
+USE_LOCAL_GLOB_FALSE = @USE_LOCAL_GLOB_FALSE@
+USE_LOCAL_GLOB_TRUE = @USE_LOCAL_GLOB_TRUE@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WINDOWSENV_FALSE = @WINDOWSENV_FALSE@
+WINDOWSENV_TRUE = @WINDOWSENV_TRUE@
+XGETTEXT = @XGETTEXT@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libw32.a
+libw32_a_SOURCES = subproc/misc.c subproc/sub_proc.c subproc/w32err.c \
+		    pathstuff.c
+
+libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  w32/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  w32/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libw32.a: $(libw32_a_OBJECTS) $(libw32_a_DEPENDENCIES) 
+	-rm -f libw32.a
+	$(libw32_a_AR) libw32.a $(libw32_a_OBJECTS) $(libw32_a_LIBADD)
+	$(RANLIB) libw32.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-misc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-pathstuff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-sub_proc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-w32err.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+libw32_a-misc.o: subproc/misc.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-misc.o -MD -MP -MF "$(DEPDIR)/libw32_a-misc.Tpo" -c -o libw32_a-misc.o `test -f 'subproc/misc.c' || echo '$(srcdir)/'`subproc/misc.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-misc.Tpo" "$(DEPDIR)/libw32_a-misc.Po"; else rm -f "$(DEPDIR)/libw32_a-misc.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='subproc/misc.c' object='libw32_a-misc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-misc.o `test -f 'subproc/misc.c' || echo '$(srcdir)/'`subproc/misc.c
+
+libw32_a-misc.obj: subproc/misc.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-misc.obj -MD -MP -MF "$(DEPDIR)/libw32_a-misc.Tpo" -c -o libw32_a-misc.obj `if test -f 'subproc/misc.c'; then $(CYGPATH_W) 'subproc/misc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/misc.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-misc.Tpo" "$(DEPDIR)/libw32_a-misc.Po"; else rm -f "$(DEPDIR)/libw32_a-misc.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='subproc/misc.c' object='libw32_a-misc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-misc.obj `if test -f 'subproc/misc.c'; then $(CYGPATH_W) 'subproc/misc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/misc.c'; fi`
+
+libw32_a-sub_proc.o: subproc/sub_proc.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-sub_proc.o -MD -MP -MF "$(DEPDIR)/libw32_a-sub_proc.Tpo" -c -o libw32_a-sub_proc.o `test -f 'subproc/sub_proc.c' || echo '$(srcdir)/'`subproc/sub_proc.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-sub_proc.Tpo" "$(DEPDIR)/libw32_a-sub_proc.Po"; else rm -f "$(DEPDIR)/libw32_a-sub_proc.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='subproc/sub_proc.c' object='libw32_a-sub_proc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-sub_proc.o `test -f 'subproc/sub_proc.c' || echo '$(srcdir)/'`subproc/sub_proc.c
+
+libw32_a-sub_proc.obj: subproc/sub_proc.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-sub_proc.obj -MD -MP -MF "$(DEPDIR)/libw32_a-sub_proc.Tpo" -c -o libw32_a-sub_proc.obj `if test -f 'subproc/sub_proc.c'; then $(CYGPATH_W) 'subproc/sub_proc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/sub_proc.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-sub_proc.Tpo" "$(DEPDIR)/libw32_a-sub_proc.Po"; else rm -f "$(DEPDIR)/libw32_a-sub_proc.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='subproc/sub_proc.c' object='libw32_a-sub_proc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-sub_proc.obj `if test -f 'subproc/sub_proc.c'; then $(CYGPATH_W) 'subproc/sub_proc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/sub_proc.c'; fi`
+
+libw32_a-w32err.o: subproc/w32err.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-w32err.o -MD -MP -MF "$(DEPDIR)/libw32_a-w32err.Tpo" -c -o libw32_a-w32err.o `test -f 'subproc/w32err.c' || echo '$(srcdir)/'`subproc/w32err.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-w32err.Tpo" "$(DEPDIR)/libw32_a-w32err.Po"; else rm -f "$(DEPDIR)/libw32_a-w32err.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='subproc/w32err.c' object='libw32_a-w32err.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-w32err.o `test -f 'subproc/w32err.c' || echo '$(srcdir)/'`subproc/w32err.c
+
+libw32_a-w32err.obj: subproc/w32err.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-w32err.obj -MD -MP -MF "$(DEPDIR)/libw32_a-w32err.Tpo" -c -o libw32_a-w32err.obj `if test -f 'subproc/w32err.c'; then $(CYGPATH_W) 'subproc/w32err.c'; else $(CYGPATH_W) '$(srcdir)/subproc/w32err.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-w32err.Tpo" "$(DEPDIR)/libw32_a-w32err.Po"; else rm -f "$(DEPDIR)/libw32_a-w32err.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='subproc/w32err.c' object='libw32_a-w32err.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-w32err.obj `if test -f 'subproc/w32err.c'; then $(CYGPATH_W) 'subproc/w32err.c'; else $(CYGPATH_W) '$(srcdir)/subproc/w32err.c'; fi`
+
+libw32_a-pathstuff.o: pathstuff.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-pathstuff.o -MD -MP -MF "$(DEPDIR)/libw32_a-pathstuff.Tpo" -c -o libw32_a-pathstuff.o `test -f 'pathstuff.c' || echo '$(srcdir)/'`pathstuff.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-pathstuff.Tpo" "$(DEPDIR)/libw32_a-pathstuff.Po"; else rm -f "$(DEPDIR)/libw32_a-pathstuff.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pathstuff.c' object='libw32_a-pathstuff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-pathstuff.o `test -f 'pathstuff.c' || echo '$(srcdir)/'`pathstuff.c
+
+libw32_a-pathstuff.obj: pathstuff.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-pathstuff.obj -MD -MP -MF "$(DEPDIR)/libw32_a-pathstuff.Tpo" -c -o libw32_a-pathstuff.obj `if test -f 'pathstuff.c'; then $(CYGPATH_W) 'pathstuff.c'; else $(CYGPATH_W) '$(srcdir)/pathstuff.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libw32_a-pathstuff.Tpo" "$(DEPDIR)/libw32_a-pathstuff.Po"; else rm -f "$(DEPDIR)/libw32_a-pathstuff.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pathstuff.c' object='libw32_a-pathstuff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-pathstuff.obj `if test -f 'pathstuff.c'; then $(CYGPATH_W) 'pathstuff.c'; else $(CYGPATH_W) '$(srcdir)/pathstuff.c'; fi`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: trunk/src/gmake/w32/compat/dirent.c
===================================================================
--- trunk/src/gmake/w32/compat/dirent.c	(revision 466)
+++ trunk/src/gmake/w32/compat/dirent.c	(revision 503)
@@ -1,2 +1,20 @@
+/* Directory entry code for Window platforms.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
+
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -58,5 +76,5 @@
 	/* other values defaulted */
 	pDir->dir_nNumFiles = 0;
-	pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;	
+	pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;
 	pDir->dir_ulCookie = __DIRENT_COOKIE;
 
Index: trunk/src/gmake/w32/include/dirent.h
===================================================================
--- trunk/src/gmake/w32/include/dirent.h	(revision 466)
+++ trunk/src/gmake/w32/include/dirent.h	(revision 503)
@@ -1,20 +1,18 @@
 /* Windows version of dirent.h
-Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
 This file is part of GNU Make.
 
-GNU Make is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
 
-GNU Make is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU Make; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA.  */
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #ifndef _DIRENT_H
Index: trunk/src/gmake/w32/include/pathstuff.h
===================================================================
--- trunk/src/gmake/w32/include/pathstuff.h	(revision 466)
+++ trunk/src/gmake/w32/include/pathstuff.h	(revision 503)
@@ -1,2 +1,19 @@
+/* Definitions for Windows path manipulation.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 #ifndef _PATHSTUFF_H
 #define _PATHSTUFF_H
Index: trunk/src/gmake/w32/include/sub_proc.h
===================================================================
--- trunk/src/gmake/w32/include/sub_proc.h	(revision 466)
+++ trunk/src/gmake/w32/include/sub_proc.h	(revision 503)
@@ -1,2 +1,19 @@
+/* Definitions for Windows process invocation.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 #ifndef SUB_PROC_H
 #define SUB_PROC_H
@@ -5,12 +22,10 @@
  * Component Name:
  *
- * $Date: 2005/02/10 00:10:58 $
+ * $Date: 2006/02/11 22:16:05 $
  *
- * $Source: /cvsroot/make/make/w32/include/sub_proc.h,v $
+ * $Source: /sources/make/make/w32/include/sub_proc.h,v $
  *
- * $Revision: 1.5 $
+ * $Id: sub_proc.h,v 1.8 2006/02/11 22:16:05 psmith Exp $
  */
-
-/* $Id: sub_proc.h,v 1.5 2005/02/10 00:10:58 psmith Exp $ */
 
 #define EXTERN_DECL(entry, args) extern entry args
@@ -30,4 +45,5 @@
 EXTERN_DECL(HANDLE process_easy, (char** argv, char** env));
 EXTERN_DECL(BOOL process_kill, (HANDLE proc, int signal));
+EXTERN_DECL(int process_used_slots, (VOID_DECL));
 
 /* support routines */
Index: trunk/src/gmake/w32/include/w32err.h
===================================================================
--- trunk/src/gmake/w32/include/w32err.h	(revision 466)
+++ trunk/src/gmake/w32/include/w32err.h	(revision 503)
@@ -1,2 +1,19 @@
+/* Definitions for Windows error handling.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 #ifndef _W32ERR_H_
 #define _W32ERR_H_
Index: trunk/src/gmake/w32/pathstuff.c
===================================================================
--- trunk/src/gmake/w32/pathstuff.c	(revision 466)
+++ trunk/src/gmake/w32/pathstuff.c	(revision 503)
@@ -1,3 +1,20 @@
-#include <windows.h>
+/* Path conversion for Windows pathnames.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
+#include <Windows.h>
 #include <string.h>
 #include <stdlib.h>
@@ -206,7 +223,7 @@
 getcwd_fs(char* buf, int len)
 {
-	char *p;
-
-	if (p = getcwd(buf, len)) {
+	char *p = getcwd(buf, len);
+
+	if (p) {
 		char *q = w32ify(buf, 0);
 		strncpy(buf, q, len);
Index: trunk/src/gmake/w32/subproc/NMakefile
===================================================================
--- trunk/src/gmake/w32/subproc/NMakefile	(revision 466)
+++ trunk/src/gmake/w32/subproc/NMakefile	(revision 503)
@@ -2,20 +2,19 @@
 # `build.bat' instead.
 #
-# Copyright (C) 1988,89,91,92,93,94,95,96,97 Free Software Foundation, Inc
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+# 2006 Free Software Foundation, Inc.
 # This file is part of GNU Make.
 #
-# GNU Make is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# GNU Make is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
 #
-# GNU Make is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License
-# along with GNU Make; see the file COPYING.  If not, write to
-# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+# You should have received a copy of the GNU General Public License along with
+# GNU Make; see the file COPYING.  If not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
 #
@@ -29,5 +28,5 @@
 MAKEFILE=NMakefile
 
-CFLAGS_any = /nologo /MT /W3 /GX /Z7 /YX /D WIN32 /D WINDOWS32 /D _WINDOWS  -I. -I../include -I../../
+CFLAGS_any = /nologo /MT /W4 /GX /Z7 /YX /D WIN32 /D WINDOWS32 /D _WINDOWS  -I. -I../include -I../../
 CFLAGS_debug = $(CFLAGS_any) /Od /D _DEBUG /FR.\WinDebug\ /Fp.\WinDebug\subproc.pch /Fo.\WinDebug/
 CFLAGS_release = $(CFLAGS_any) /O2 /FR.\WinRel\ /Fp.\WinRel\subproc.pch /Fo.\WinRel/
Index: trunk/src/gmake/w32/subproc/build.bat
===================================================================
--- trunk/src/gmake/w32/subproc/build.bat	(revision 466)
+++ trunk/src/gmake/w32/subproc/build.bat	(revision 503)
@@ -1,10 +1,34 @@
+@if "%1" == "gcc" GoTo GCCBuild
 if not exist .\WinDebug\nul mkdir .\WinDebug
-cl.exe /nologo /MT /W3 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c misc.c
-cl.exe /nologo /MT /W3 /GX /Z7 /YX /Od /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c sub_proc.c
-cl.exe /nologo /MT /W3 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c w32err.c
+cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c misc.c
+cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c sub_proc.c
+cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c w32err.c
 lib.exe /NOLOGO /OUT:.\WinDebug\subproc.lib  .\WinDebug/misc.obj  .\WinDebug/sub_proc.obj  .\WinDebug/w32err.obj
 if not exist .\WinRel\nul mkdir .\WinRel
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c misc.c
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c sub_proc.c
-cl.exe /nologo /MT /W3 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c w32err.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c misc.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c sub_proc.c
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c w32err.c
 lib.exe /NOLOGO /OUT:.\WinRel\subproc.lib  .\WinRel/misc.obj  .\WinRel/sub_proc.obj  .\WinRel/w32err.obj
+GoTo BuildEnd
+:GCCBuild
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c misc.c -o ../../w32_misc.o
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c sub_proc.c -o ../../sub_proc.o
+gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c w32err.c -o ../../w32err.o
+:BuildEnd
+
+@echo off
+rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+rem 2005, 2006 Free Software Foundation, Inc.
+rem This file is part of GNU Make.
+
+rem GNU Make is free software; you can redistribute it and/or modify it under the
+rem terms of the GNU General Public License as published by the Free Software
+rem Foundation; either version 2, or (at your option) any later version.
+
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+rem WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+rem A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+rem You should have received a copy of the GNU General Public License along with
+rem GNU Make; see the file COPYING.  If not, write to the Free Software
+rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Index: trunk/src/gmake/w32/subproc/misc.c
===================================================================
--- trunk/src/gmake/w32/subproc/misc.c	(revision 466)
+++ trunk/src/gmake/w32/subproc/misc.c	(revision 503)
@@ -1,2 +1,19 @@
+/* Process handling for Windows
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 #include <stddef.h>
 #include <stdlib.h>
@@ -20,5 +37,5 @@
 }
 bool_t
-arr2envblk(char **arr, char **envblk_out) 
+arr2envblk(char **arr, char **envblk_out)
 {
 	char **tmp;
Index: trunk/src/gmake/w32/subproc/proc.h
===================================================================
--- trunk/src/gmake/w32/subproc/proc.h	(revision 466)
+++ trunk/src/gmake/w32/subproc/proc.h	(revision 503)
@@ -1,2 +1,19 @@
+/* Definitions for Windows
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 #ifndef  _PROC_H
 #define _PROC_H
Index: trunk/src/gmake/w32/subproc/sub_proc.c
===================================================================
--- trunk/src/gmake/w32/subproc/sub_proc.c	(revision 466)
+++ trunk/src/gmake/w32/subproc/sub_proc.c	(revision 503)
@@ -1,5 +1,23 @@
+/* Process handling for Windows.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <process.h>  /* for msvc _beginthreadex, _endthreadex */
+#include <signal.h>
 #include <windows.h>
 
@@ -31,5 +49,5 @@
 
 /* keep track of children so we can implement a waitpid-like routine */
-static sub_process *proc_array[256];
+static sub_process *proc_array[MAXIMUM_WAIT_OBJECTS];
 static int proc_index = 0;
 static int fake_exits_pending = 0;
@@ -66,5 +84,5 @@
 process_wait_for_any_private(void)
 {
-	HANDLE handles[256];
+	HANDLE handles[MAXIMUM_WAIT_OBJECTS];
 	DWORD retval, which;
 	int i;
@@ -120,5 +138,15 @@
 process_register(HANDLE proc)
 {
-	proc_array[proc_index++] = (sub_process *) proc;
+	if (proc_index < MAXIMUM_WAIT_OBJECTS)
+		proc_array[proc_index++] = (sub_process *) proc;
+}
+
+/*
+ * Return the number of processes that we are still waiting for.
+ */
+int
+process_used_slots(void)
+{
+	return proc_index;
 }
 
@@ -163,28 +191,32 @@
 
 long
-process_errno(HANDLE proc)
-{
-	return (((sub_process *)proc)->lerrno);
+process_signal(HANDLE proc)
+{
+        if (proc == INVALID_HANDLE_VALUE) return 0;
+        return (((sub_process *)proc)->signal);
 }
 
 long
-process_signal(HANDLE proc)
-{
-	return (((sub_process *)proc)->signal);
-}
-
-	long
 process_last_err(HANDLE proc)
 {
+        if (proc == INVALID_HANDLE_VALUE) return ERROR_INVALID_HANDLE;
 	return (((sub_process *)proc)->last_err);
 }
 
-	long
+long
 process_exit_code(HANDLE proc)
 {
+        if (proc == INVALID_HANDLE_VALUE) return EXIT_FAILURE;
 	return (((sub_process *)proc)->exit_code);
 }
 
-	char *
+/*
+2006-02:
+All the following functions are currently unused.
+All of them would crash gmake if called with argument INVALID_HANDLE_VALUE.
+Hence whoever wants to use one of this functions must invent and implement
+a reasonable error handling for this function.
+
+char *
 process_outbuf(HANDLE proc)
 {
@@ -192,5 +224,5 @@
 }
 
-	char *
+char *
 process_errbuf(HANDLE proc)
 {
@@ -198,5 +230,5 @@
 }
 
-	int
+int
 process_outcnt(HANDLE proc)
 {
@@ -204,5 +236,5 @@
 }
 
-	int
+int
 process_errcnt(HANDLE proc)
 {
@@ -210,5 +242,5 @@
 }
 
-	void
+void
 process_pipes(HANDLE proc, int pipes[3])
 {
@@ -218,5 +250,5 @@
 	return;
 }
-
+*/
 
 	HANDLE
@@ -369,5 +401,5 @@
  * Description:   Create the child process to be helped
  *
- * Returns:
+ * Returns: success <=> 0
  *
  * Notes/Dependencies:
@@ -523,5 +555,6 @@
 			pproc->last_err = GetLastError();
 			pproc->lerrno = E_FORK;
-			fprintf(stderr, "process_begin: CreateProcess(%s, %s, ...) failed.\n", exec_path, command_line);
+			fprintf(stderr, "process_begin: CreateProcess(%s, %s, ...) failed.\n",
+                                exec_path ? exec_path : "NULL", command_line);
 			if (envblk) free(envblk);
 			free( command_line );
@@ -535,16 +568,10 @@
 
 	/* Close the halves of the pipes we don't need */
-	if (pproc->sv_stdin) {
-		CloseHandle((HANDLE)pproc->sv_stdin[1]);
-		(HANDLE)pproc->sv_stdin[1] = 0;
-	}
-	if (pproc->sv_stdout) {
-		CloseHandle((HANDLE)pproc->sv_stdout[1]);
-		(HANDLE)pproc->sv_stdout[1] = 0;
-	}
-	if (pproc->sv_stderr) {
-		CloseHandle((HANDLE)pproc->sv_stderr[1]);
-		(HANDLE)pproc->sv_stderr[1] = 0;
-	}
+        CloseHandle((HANDLE)pproc->sv_stdin[1]);
+        CloseHandle((HANDLE)pproc->sv_stdout[1]);
+        CloseHandle((HANDLE)pproc->sv_stderr[1]);
+        pproc->sv_stdin[1] = 0;
+        pproc->sv_stdout[1] = 0;
+        pproc->sv_stderr[1] = 0;
 
 	free( command_line );
@@ -658,6 +685,6 @@
 	bool_t stdin_eof = FALSE, stdout_eof = FALSE, stderr_eof = FALSE;
 	HANDLE childhand = (HANDLE) pproc->pid;
-	HANDLE tStdin, tStdout, tStderr;
-	DWORD dwStdin, dwStdout, dwStderr;
+	HANDLE tStdin = NULL, tStdout = NULL, tStderr = NULL;
+	unsigned int dwStdin, dwStdout, dwStderr;
 	HANDLE wait_list[4];
 	DWORD wait_count;
@@ -675,9 +702,9 @@
 		stdin_eof = TRUE;
 		CloseHandle((HANDLE)pproc->sv_stdin[0]);
-		(HANDLE)pproc->sv_stdin[0] = 0;
+		pproc->sv_stdin[0] = 0;
 	} else {
 		tStdin = (HANDLE) _beginthreadex( 0, 1024,
-			(unsigned (__stdcall *) (void *))proc_stdin_thread, pproc, 0,
-			(unsigned int *) &dwStdin);
+			(unsigned (__stdcall *) (void *))proc_stdin_thread,
+						  pproc, 0, &dwStdin);
 		if (tStdin == 0) {
 			pproc->last_err = GetLastError();
@@ -692,8 +719,8 @@
 	tStdout = (HANDLE) _beginthreadex( 0, 1024,
 		(unsigned (__stdcall *) (void *))proc_stdout_thread, pproc, 0,
-		(unsigned int *) &dwStdout);
+		&dwStdout);
 	tStderr = (HANDLE) _beginthreadex( 0, 1024,
 		(unsigned (__stdcall *) (void *))proc_stderr_thread, pproc, 0,
-		(unsigned int *) &dwStderr);
+		&dwStderr);
 
 	if (tStdout == 0 || tStderr == 0) {
@@ -740,5 +767,5 @@
 		if (ready_hand == tStdin) {
 			CloseHandle((HANDLE)pproc->sv_stdin[0]);
-			(HANDLE)pproc->sv_stdin[0] = 0;
+			pproc->sv_stdin[0] = 0;
 			CloseHandle(tStdin);
 			tStdin = 0;
@@ -748,5 +775,5 @@
 
 		  	CloseHandle((HANDLE)pproc->sv_stdout[0]);
-			(HANDLE)pproc->sv_stdout[0] = 0;
+			pproc->sv_stdout[0] = 0;
 			CloseHandle(tStdout);
 			tStdout = 0;
@@ -756,5 +783,5 @@
 
 			CloseHandle((HANDLE)pproc->sv_stderr[0]);
-			(HANDLE)pproc->sv_stderr[0] = 0;
+			pproc->sv_stderr[0] = 0;
 			CloseHandle(tStderr);
 			tStderr = 0;
@@ -763,5 +790,11 @@
 		} else if (ready_hand == childhand) {
 
-			GetExitCodeResult = GetExitCodeProcess(childhand, (DWORD*)&pproc->exit_code);
+			DWORD ierr;
+			GetExitCodeResult = GetExitCodeProcess(childhand, &ierr);
+			if (ierr == CONTROL_C_EXIT) {
+				pproc->signal = SIGINT;
+			} else {
+				pproc->exit_code = ierr;
+			}
 			if (GetExitCodeResult == FALSE) {
 				pproc->last_err = GetLastError();
@@ -812,4 +845,5 @@
 	DWORD wait_return;
 	BOOL GetExitCodeResult;
+        DWORD ierr;
 
 	if (proc == NULL)
@@ -855,5 +889,10 @@
 	}
 
-	GetExitCodeResult = GetExitCodeProcess(childhand, (DWORD*)&pproc->exit_code);
+	GetExitCodeResult = GetExitCodeProcess(childhand, &ierr);
+	if (ierr == CONTROL_C_EXIT) {
+		pproc->signal = SIGINT;
+	} else {
+		pproc->exit_code = ierr;
+	}
 	if (GetExitCodeResult == FALSE) {
 		pproc->last_err = GetLastError();
@@ -1156,4 +1195,8 @@
   HANDLE hProcess;
 
+  if (proc_index >= MAXIMUM_WAIT_OBJECTS) {
+	DB (DB_JOBS, ("process_easy: All process slots used up\n"));
+	return INVALID_HANDLE_VALUE;
+  }
   if (DuplicateHandle(GetCurrentProcess(),
                       GetStdHandle(STD_INPUT_HANDLE),
@@ -1164,5 +1207,5 @@
                       DUPLICATE_SAME_ACCESS) == FALSE) {
     fprintf(stderr,
-            "process_easy: DuplicateHandle(In) failed (e=%d)\n",
+            "process_easy: DuplicateHandle(In) failed (e=%ld)\n",
             GetLastError());
     return INVALID_HANDLE_VALUE;
@@ -1176,5 +1219,5 @@
                       DUPLICATE_SAME_ACCESS) == FALSE) {
     fprintf(stderr,
-           "process_easy: DuplicateHandle(Out) failed (e=%d)\n",
+           "process_easy: DuplicateHandle(Out) failed (e=%ld)\n",
            GetLastError());
     return INVALID_HANDLE_VALUE;
@@ -1188,5 +1231,5 @@
                       DUPLICATE_SAME_ACCESS) == FALSE) {
     fprintf(stderr,
-            "process_easy: DuplicateHandle(Err) failed (e=%d)\n",
+            "process_easy: DuplicateHandle(Err) failed (e=%ld)\n",
             GetLastError());
     return INVALID_HANDLE_VALUE;
Index: trunk/src/gmake/w32/subproc/w32err.c
===================================================================
--- trunk/src/gmake/w32/subproc/w32err.c	(revision 466)
+++ trunk/src/gmake/w32/subproc/w32err.c	(revision 503)
@@ -1,2 +1,19 @@
+/* Error handling for Windows
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2, or (at your option) any later version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Make; see the file COPYING.  If not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
+
 #include <windows.h>
 #include "w32err.h"
